diff --git a/archinstall/lib/bootloader/utils.py b/archinstall/lib/bootloader/utils.py index 3d77bafe..a732f4e1 100644 --- a/archinstall/lib/bootloader/utils.py +++ b/archinstall/lib/bootloader/utils.py @@ -3,9 +3,7 @@ from enum import Enum, auto from pathlib import Path from archinstall.lib.models.bootloader import Bootloader, BootloaderConfiguration -from archinstall.lib.models.device import DiskLayoutConfiguration, FilesystemType - -_FAT_FILESYSTEMS = (FilesystemType.FAT12, FilesystemType.FAT16, FilesystemType.FAT32) +from archinstall.lib.models.device import DiskLayoutConfiguration class BootloaderValidationFailureKind(Enum): @@ -39,7 +37,7 @@ def validate_bootloader_layout( # Limine reads its config and kernels from the boot partition, which # must be FAT. - if boot_part and boot_part.fs_type not in _FAT_FILESYSTEMS: + if boot_part and (boot_part.fs_type is None or not boot_part.fs_type.is_fat()): return BootloaderValidationFailure( kind=BootloaderValidationFailureKind.LimineNonFatBoot, description='Limine does not support booting with a non-FAT boot partition.', diff --git a/archinstall/lib/disk/device_handler.py b/archinstall/lib/disk/device_handler.py index 7ac05a31..2e51d3d2 100644 --- a/archinstall/lib/disk/device_handler.py +++ b/archinstall/lib/disk/device_handler.py @@ -250,7 +250,7 @@ class DeviceHandler: case FilesystemType.EXT2 | FilesystemType.EXT3 | FilesystemType.EXT4: # Force create options.append('-F') - case FilesystemType.FAT12 | FilesystemType.FAT16 | FilesystemType.FAT32: + case _ if fs_type.is_fat(): mkfs_type = 'fat' # Set FAT size options.extend(('-F', fs_type.value.removeprefix(mkfs_type))) diff --git a/archinstall/lib/global_menu.py b/archinstall/lib/global_menu.py index 57405985..3d94f31e 100644 --- a/archinstall/lib/global_menu.py +++ b/archinstall/lib/global_menu.py @@ -18,7 +18,7 @@ from archinstall.lib.mirror.mirror_menu import MirrorMenu from archinstall.lib.models.application import ApplicationConfiguration, ZramConfiguration from archinstall.lib.models.authentication import AuthenticationConfiguration from archinstall.lib.models.bootloader import Bootloader, BootloaderConfiguration -from archinstall.lib.models.device import DiskLayoutConfiguration, DiskLayoutType, FilesystemType, PartitionModification +from archinstall.lib.models.device import DiskLayoutConfiguration, DiskLayoutType, PartitionModification from archinstall.lib.models.locale import LocaleConfiguration from archinstall.lib.models.mirrors import MirrorConfiguration from archinstall.lib.models.network import NetworkConfiguration, NicType @@ -487,7 +487,7 @@ class GlobalMenu(AbstractMenu[None]): if efi_partition is None: return 'EFI system partition (ESP) not found' - if efi_partition.fs_type not in [FilesystemType.FAT12, FilesystemType.FAT16, FilesystemType.FAT32]: + if efi_partition.fs_type is None or not efi_partition.fs_type.is_fat(): return 'ESP must be formatted as a FAT filesystem' if bootloader == Bootloader.Refind and not self._uefi: diff --git a/archinstall/lib/models/device.py b/archinstall/lib/models/device.py index 3015833d..7fa05407 100644 --- a/archinstall/lib/models/device.py +++ b/archinstall/lib/models/device.py @@ -802,6 +802,9 @@ class FilesystemType(StrEnum): def is_crypto(self) -> bool: return self == FilesystemType.CRYPTO_LUKS + def is_fat(self) -> bool: + return self in (FilesystemType.FAT12, FilesystemType.FAT16, FilesystemType.FAT32) + @property def parted_value(self) -> str: return self.value + '(v1)' if self == FilesystemType.LINUX_SWAP else self.value