[SETUP] Add support for selecting FS type in unattended setups

By default, we still fallback to FAT if nothing asked, or if there
is an invalid input.
0 is FAT, 1 is BtrFS. This can be grown as soon as we add more IFS.
This commit is contained in:
Pierre Schweitzer 2018-12-28 20:34:48 +01:00
parent c526f94b8c
commit 4ed6b1ffca
No known key found for this signature in database
GPG key ID: 7545556C3D585B0B
4 changed files with 41 additions and 9 deletions

View file

@ -196,6 +196,16 @@ CheckUnattendedSetup(
}
}
/* Search for FsType in the 'Unattend' section */
pSetupData->FsType = 0;
if (SpInfFindFirstLine(UnattendInf, L"Unattend", L"FsType", &Context))
{
if (SpInfGetIntField(&Context, 1, &IntValue))
{
pSetupData->FsType = IntValue;
}
}
Quit:
SpInfCloseInfFile(UnattendInf);
}

View file

@ -110,6 +110,7 @@ typedef struct _USETUP_DATA
LONG MBRInstallType;
LONG FormatPartition;
LONG AutoPartition;
LONG FsType;
/* Settings lists *****/
PGENERIC_LIST ComputerList;

View file

@ -2859,8 +2859,31 @@ SelectFileSystemPage(PINPUT_RECORD Ir)
if (FileSystemList == NULL)
{
/* Create the file system list, and by default select the "FAT" file system */
FileSystemList = CreateFileSystemList(6, 26, PartEntry->New, L"FAT");
PWSTR DefaultFs;
if (IsUnattendedSetup)
{
switch (USetupData.FsType)
{
/* 1 is for BtrFS */
case 1:
DefaultFs = L"BTRFS";
break;
/* If we don't understand input, default to FAT */
default:
DefaultFs = L"FAT";
break;
}
}
else
{
/* By default select the "FAT" file system */
DefaultFs = L"FAT";
}
/* Create the file system list */
FileSystemList = CreateFileSystemList(6, 26, PartEntry->New, DefaultFs);
if (FileSystemList == NULL)
{
/* FIXME: show an error dialog */
@ -2878,13 +2901,6 @@ SelectFileSystemPage(PINPUT_RECORD Ir)
{
if (USetupData.FormatPartition)
{
/*
* We use whatever currently selected file system we have
* (by default, this is "FAT", as per the initialization
* performed above). Note that it may be interesting to specify
* which file system to use in unattended installations, in the
* txtsetup.sif file.
*/
return FORMAT_PARTITION_PAGE;
}

View file

@ -38,6 +38,11 @@ FormatPartition=1
; 0 - disabled
AutoPartition = 1
; choose default file system type
; 0 - FAT
; 1 - BtrFS
FsType = 0
; set this option to automatically
; specify language in 2nd mode setup
; see hivesys.inf for available languages