Make removable location the default for bootloader installation (#4030)
Also update the option's description to make it clear that it being enabled is the sane default.
This commit is contained in:
parent
6968a33508
commit
42a4ee8472
|
|
@ -185,7 +185,7 @@ class ArchConfig:
|
||||||
uki = args_config.get('uki', False)
|
uki = args_config.get('uki', False)
|
||||||
if uki and not bootloader.has_uki_support():
|
if uki and not bootloader.has_uki_support():
|
||||||
uki = False
|
uki = False
|
||||||
arch_config.bootloader_config = BootloaderConfiguration(bootloader=bootloader, uki=uki, removable=False)
|
arch_config.bootloader_config = BootloaderConfiguration(bootloader=bootloader, uki=uki, removable=True)
|
||||||
|
|
||||||
# deprecated: backwards compatibility
|
# deprecated: backwards compatibility
|
||||||
audio_config_args = args_config.get('audio_config', None)
|
audio_config_args = args_config.get('audio_config', None)
|
||||||
|
|
|
||||||
|
|
@ -83,8 +83,8 @@ class BootloaderMenu(AbstractSubMenu[BootloaderConfiguration]):
|
||||||
|
|
||||||
def _prev_removable(self, item: MenuItem) -> str | None:
|
def _prev_removable(self, item: MenuItem) -> str | None:
|
||||||
if item.value:
|
if item.value:
|
||||||
return tr('Will install to /EFI/BOOT/ (removable location)')
|
return tr('Will install to /EFI/BOOT/ (removable location, safe default)')
|
||||||
return tr('Will install to standard location with NVRAM entry')
|
return tr('Will install to custom location with NVRAM entry')
|
||||||
|
|
||||||
@override
|
@override
|
||||||
def run(
|
def run(
|
||||||
|
|
@ -114,6 +114,9 @@ class BootloaderMenu(AbstractSubMenu[BootloaderConfiguration]):
|
||||||
removable_item.value = False
|
removable_item.value = False
|
||||||
self._bootloader_conf.removable = False
|
self._bootloader_conf.removable = False
|
||||||
else:
|
else:
|
||||||
|
if not removable_item.enabled:
|
||||||
|
removable_item.value = True
|
||||||
|
self._bootloader_conf.removable = True
|
||||||
removable_item.enabled = True
|
removable_item.enabled = True
|
||||||
|
|
||||||
return bootloader
|
return bootloader
|
||||||
|
|
@ -147,18 +150,26 @@ class BootloaderMenu(AbstractSubMenu[BootloaderConfiguration]):
|
||||||
+ '\n\n'
|
+ '\n\n'
|
||||||
+ tr('This installs the bootloader to /EFI/BOOT/BOOTX64.EFI (or similar) which is useful for:')
|
+ tr('This installs the bootloader to /EFI/BOOT/BOOTX64.EFI (or similar) which is useful for:')
|
||||||
+ '\n\n • '
|
+ '\n\n • '
|
||||||
|
+ tr('Firmware that does not properly support NVRAM boot entries like most MSI motherboards,')
|
||||||
|
+ '\n '
|
||||||
|
+ tr('most Apple Macs, many laptops...')
|
||||||
|
+ '\n • '
|
||||||
+ tr('USB drives or other portable external media.')
|
+ tr('USB drives or other portable external media.')
|
||||||
+ '\n • '
|
+ '\n • '
|
||||||
+ tr('Systems where you want the disk to be bootable on any computer.')
|
+ tr('Systems where you want the disk to be bootable on any computer.')
|
||||||
+ '\n • '
|
|
||||||
+ tr('Firmware that does not properly support NVRAM boot entries.')
|
|
||||||
+ '\n\n'
|
+ '\n\n'
|
||||||
+ tr(
|
+ tr(
|
||||||
textwrap.dedent(
|
textwrap.dedent(
|
||||||
"""\
|
"""\
|
||||||
This is NOT recommended if none of the above apply, as it makes installing multiple
|
If you do not know what this means, LEAVE THIS OPTION ENABLED, as it is the safe default.
|
||||||
EFI bootloaders on the same disk more challenging, and it overwrites whatever bootloader
|
|
||||||
was previously installed on the default removable media search location, if any.
|
It is suggested to disable this if none of the above apply, as it makes installing multiple
|
||||||
|
EFI bootloaders on the same disk easier, and it will not overwrite whatever bootloader
|
||||||
|
was previously installed at the default removable media search location, if any.
|
||||||
|
|
||||||
|
It may also make the installation more resilient in case of dual-booting with Windows,
|
||||||
|
as Windows is known to sometimes erase or replace the bootloader installed at the removable
|
||||||
|
location.
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ class Bootloader(Enum):
|
||||||
class BootloaderConfiguration:
|
class BootloaderConfiguration:
|
||||||
bootloader: Bootloader
|
bootloader: Bootloader
|
||||||
uki: bool = False
|
uki: bool = False
|
||||||
removable: bool = False
|
removable: bool = True
|
||||||
|
|
||||||
def json(self) -> dict[str, Any]:
|
def json(self) -> dict[str, Any]:
|
||||||
return {'bootloader': self.bootloader.json(), 'uki': self.uki, 'removable': self.removable}
|
return {'bootloader': self.bootloader.json(), 'uki': self.uki, 'removable': self.removable}
|
||||||
|
|
@ -74,12 +74,14 @@ class BootloaderConfiguration:
|
||||||
def parse_arg(cls, config: dict[str, Any], skip_boot: bool) -> BootloaderConfiguration:
|
def parse_arg(cls, config: dict[str, Any], skip_boot: bool) -> BootloaderConfiguration:
|
||||||
bootloader = Bootloader.from_arg(config.get('bootloader', ''), skip_boot)
|
bootloader = Bootloader.from_arg(config.get('bootloader', ''), skip_boot)
|
||||||
uki = config.get('uki', False)
|
uki = config.get('uki', False)
|
||||||
removable = config.get('removable', False)
|
removable = config.get('removable', True)
|
||||||
return cls(bootloader=bootloader, uki=uki, removable=removable)
|
return cls(bootloader=bootloader, uki=uki, removable=removable)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_default(cls) -> BootloaderConfiguration:
|
def get_default(cls) -> BootloaderConfiguration:
|
||||||
return cls(bootloader=Bootloader.get_default(), uki=False, removable=False)
|
bootloader = Bootloader.get_default()
|
||||||
|
removable = SysInfo.has_uefi() and bootloader.has_removable_support()
|
||||||
|
return cls(bootloader=bootloader, uki=False, removable=removable)
|
||||||
|
|
||||||
def preview(self) -> str:
|
def preview(self) -> str:
|
||||||
text = f'{tr("Bootloader")}: {self.bootloader.value}'
|
text = f'{tr("Bootloader")}: {self.bootloader.value}'
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue