Refactor preparations for fs type and encryption (#3130)
This commit is contained in:
parent
19c390e072
commit
ee69e19f8b
|
|
@ -740,6 +740,38 @@ class Installer:
|
||||||
return vendor.get_ucode()
|
return vendor.get_ucode()
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def _prepare_fs_type(
|
||||||
|
self,
|
||||||
|
fs_type: disk.FilesystemType,
|
||||||
|
mountpoint: Path | None
|
||||||
|
) -> None:
|
||||||
|
if (pkg := fs_type.installation_pkg) is not None:
|
||||||
|
self._base_packages.append(pkg)
|
||||||
|
if (module := fs_type.installation_module) is not None:
|
||||||
|
self._modules.append(module)
|
||||||
|
if (binary := fs_type.installation_binary) is not None:
|
||||||
|
self._binaries.append(binary)
|
||||||
|
|
||||||
|
# https://github.com/archlinux/archinstall/issues/1837
|
||||||
|
if fs_type.fs_type_mount == 'btrfs':
|
||||||
|
self._disable_fstrim = True
|
||||||
|
|
||||||
|
# There is not yet an fsck tool for NTFS. If it's being used for the root filesystem, the hook should be removed.
|
||||||
|
if fs_type.fs_type_mount == 'ntfs3' and mountpoint == self.target:
|
||||||
|
if 'fsck' in self._hooks:
|
||||||
|
self._hooks.remove('fsck')
|
||||||
|
|
||||||
|
def _prepare_encrypt(self, before: str = 'filesystems') -> None:
|
||||||
|
if self._disk_encryption.hsm_device:
|
||||||
|
# Required by mkinitcpio to add support for fido2-device options
|
||||||
|
self.pacman.strap('libfido2')
|
||||||
|
|
||||||
|
if 'sd-encrypt' not in self._hooks:
|
||||||
|
self._hooks.insert(self._hooks.index(before), 'sd-encrypt')
|
||||||
|
else:
|
||||||
|
if 'encrypt' not in self._hooks:
|
||||||
|
self._hooks.insert(self._hooks.index(before), 'encrypt')
|
||||||
|
|
||||||
def _handle_partition_installation(self) -> None:
|
def _handle_partition_installation(self) -> None:
|
||||||
pvs = []
|
pvs = []
|
||||||
if self._disk_config.lvm_config:
|
if self._disk_config.lvm_config:
|
||||||
|
|
@ -750,32 +782,10 @@ class Installer:
|
||||||
if part in pvs or part.fs_type is None:
|
if part in pvs or part.fs_type is None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if (pkg := part.fs_type.installation_pkg) is not None:
|
self._prepare_fs_type(part.fs_type, part.mountpoint)
|
||||||
self._base_packages.append(pkg)
|
|
||||||
if (module := part.fs_type.installation_module) is not None:
|
|
||||||
self._modules.append(module)
|
|
||||||
if (binary := part.fs_type.installation_binary) is not None:
|
|
||||||
self._binaries.append(binary)
|
|
||||||
|
|
||||||
# https://github.com/archlinux/archinstall/issues/1837
|
|
||||||
if part.fs_type.fs_type_mount == 'btrfs':
|
|
||||||
self._disable_fstrim = True
|
|
||||||
|
|
||||||
# There is not yet an fsck tool for NTFS. If it's being used for the root filesystem, the hook should be removed.
|
|
||||||
if part.fs_type.fs_type_mount == 'ntfs3' and part.mountpoint == self.target:
|
|
||||||
if 'fsck' in self._hooks:
|
|
||||||
self._hooks.remove('fsck')
|
|
||||||
|
|
||||||
if part in self._disk_encryption.partitions:
|
if part in self._disk_encryption.partitions:
|
||||||
if self._disk_encryption.hsm_device:
|
self._prepare_encrypt()
|
||||||
# Required by mkinitcpio to add support for fido2-device options
|
|
||||||
self.pacman.strap('libfido2')
|
|
||||||
|
|
||||||
if 'sd-encrypt' not in self._hooks:
|
|
||||||
self._hooks.insert(self._hooks.index('filesystems'), 'sd-encrypt')
|
|
||||||
else:
|
|
||||||
if 'encrypt' not in self._hooks:
|
|
||||||
self._hooks.insert(self._hooks.index('filesystems'), 'encrypt')
|
|
||||||
|
|
||||||
def _handle_lvm_installation(self) -> None:
|
def _handle_lvm_installation(self) -> None:
|
||||||
if not self._disk_config.lvm_config:
|
if not self._disk_config.lvm_config:
|
||||||
|
|
@ -787,31 +797,10 @@ class Installer:
|
||||||
for vg in self._disk_config.lvm_config.vol_groups:
|
for vg in self._disk_config.lvm_config.vol_groups:
|
||||||
for vol in vg.volumes:
|
for vol in vg.volumes:
|
||||||
if vol.fs_type is not None:
|
if vol.fs_type is not None:
|
||||||
if (pkg := vol.fs_type.installation_pkg) is not None:
|
self._prepare_fs_type(vol.fs_type, vol.mountpoint)
|
||||||
self._base_packages.append(pkg)
|
|
||||||
if (module := vol.fs_type.installation_module) is not None:
|
|
||||||
self._modules.append(module)
|
|
||||||
if (binary := vol.fs_type.installation_binary) is not None:
|
|
||||||
self._binaries.append(binary)
|
|
||||||
|
|
||||||
if vol.fs_type.fs_type_mount == 'btrfs':
|
|
||||||
self._disable_fstrim = True
|
|
||||||
|
|
||||||
# There is not yet an fsck tool for NTFS. If it's being used for the root filesystem, the hook should be removed.
|
|
||||||
if vol.fs_type.fs_type_mount == 'ntfs3' and vol.mountpoint == self.target:
|
|
||||||
if 'fsck' in self._hooks:
|
|
||||||
self._hooks.remove('fsck')
|
|
||||||
|
|
||||||
if self._disk_encryption.encryption_type in [disk.EncryptionType.LvmOnLuks, disk.EncryptionType.LuksOnLvm]:
|
if self._disk_encryption.encryption_type in [disk.EncryptionType.LvmOnLuks, disk.EncryptionType.LuksOnLvm]:
|
||||||
if self._disk_encryption.hsm_device:
|
self._prepare_encrypt('lvm2')
|
||||||
# Required by mkinitcpio to add support for fido2-device options
|
|
||||||
self.pacman.strap('libfido2')
|
|
||||||
|
|
||||||
if 'sd-encrypt' not in self._hooks:
|
|
||||||
self._hooks.insert(self._hooks.index('lvm2'), 'sd-encrypt')
|
|
||||||
else:
|
|
||||||
if 'encrypt' not in self._hooks:
|
|
||||||
self._hooks.insert(self._hooks.index('lvm2'), 'encrypt')
|
|
||||||
|
|
||||||
def minimal_installation(
|
def minimal_installation(
|
||||||
self,
|
self,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue