Commit Graph

161 Commits

Author SHA1 Message Date
Gabriel Craciunescu
47c167dc04 [bootloader] Resume from outer swap partition
- These fixes are similar to the other swap-from-LUKS changes,
  and just needed to be applied to a different module.
2020-03-18 17:21:20 +01:00
Kevin Kofler
ec7c5a4611 [bootloader] Fix sb-shim mode to write grub.cfg into the ESP
src/modules/bootloader/main.py (install_secureboot): Run the configured
grubMkconfig command (should be `grub-mkconfig` or `grub2-mkconfig`) to
create `/boot/efi/EFI/$efi_bootloader_id/grub.cfg`. The sb-shim is just
a chainloader to GRUB 2, which expects a grub.cfg in that location, so
something has to create it or the installed system will not boot beyond
the GRUB rescue shell.
(install_grub): Fix misleading comment above the grubMkconfig call: it
is not the file specified in grubCfg that should be already filled out
by the grubcfg job module, that file is written by `grub*-mkconfig`
using `/etc/default/grub` as the input file. It is that input file
`/etc/default/grub` that should already be filled out by the grubcfg job
module. (The same input file is used in install_secureboot.)
2019-05-12 16:11:35 +02:00
Adriaan de Groot
e972c175d8 [bootloader] Fix typo's
- There's a general "partititon" typo, but the variable
   name also is misused.
2019-05-10 18:26:59 -04:00
Adriaan de Groot
23ae6b77bd [bootloader] Convert to str
- The output of subprocess is a bytes object, which needs to
   be decoded so we can use it like a regular string (alternatively,
   we could have changed more code to manipulate bytes, but eventually
   we need a string to pass to a subsequent command anyway).
2019-05-10 15:35:00 -04:00
Adriaan de Groot
9bf1d83c2f [bootloader] Centralize the filename sanitizer
- Centralize the sanitizer so that it's consistent in different
   environments.
 - While here, add () to the sanitizer to avoid some distro's with
   parenthesized names from creating weird EFI dirs.
2019-05-10 15:28:37 -04:00
Adriaan de Groot
dd5c0d1629 [bootloader] Log when the bootloader-module does nothing 2019-04-19 16:47:53 +02:00
Adriaan de Groot
333f0d9215 [bootloader] Simplify finding the ESP 2019-04-19 16:43:07 +02:00
Adriaan de Groot
df37c51c1e [bootloader] [hwclock] Translate module name 2019-04-19 16:39:41 +02:00
Adriaan de Groot
a93df6fcfb [bootloader] Requires partition before it. 2019-03-11 17:07:05 -04:00
Arnaud Ferraris
a14968a646 [bootloader] Fix systemd-boot installation
When choosing `systemd-boot` as the bootloader, numerous problems
occurred:

- the kernel and initrd were not copied to the EFI System Partition,
and therefore could not be reached by the bootloader
- the fallback entry used the default initramfs image instead of the
fallback image

`systemd-boot` provides the `kernel-install` utility, which
automatically copies the kernel + initramfs to the EFI partition, and
creates the corresponding bootloader entry.

Unfortunately, `kernel-install` cannot be used here as the module is not
executed in a chroot. As setting up one only for running a single
command would be overkill, this patch re-creates what `kernel-install`
usually does:

- copy the kernel and initramfs to their own subdirectory at the root of
the EFI partition
- create the corresponding entry configuration file

To this end, the `systemd-boot` installation code in the `bootloader`
module has been largely refactored, including removing a few duplicate
LOCs.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
2019-02-08 18:00:58 +01:00
Adriaan de Groot
52f09f7f46 [modules] Minor documentation work on modules a-g 2018-06-26 05:47:23 -04:00
Philip Müller
18bd455ae1 [bootloader] make paths for executable optional and adjustable 2018-06-17 07:47:58 +02:00
Adriaan de Groot
fdda1ef840 [bootloader] Mimic openSUSE's efibootmgr calls 2018-05-28 11:47:47 -04:00
Adriaan de Groot
dad3669eae [bootloader] Take a stab at determining the shim name 2018-05-28 09:26:20 -04:00
Adriaan de Groot
e4bda546cf [bootloader] factor our EFI-platform-bitness discovery 2018-05-28 09:24:43 -04:00
Adriaan de Groot
903e77a908 [bootloader] Adjust documentation 2018-03-06 07:11:10 -05:00
Adriaan de Groot
06536b6a66 [bootloader] Refactor method for safe efi label 2018-02-20 10:47:14 -05:00
Adriaan de Groot
7f53e970fc [bootloader] Add secure-boot efiBootLoader
- add configuration option
 - check for sensible combinations of firmware, bootloader,
   and complain if it isn't.
2018-02-20 05:10:32 -05:00
Adriaan de Groot
533031b3ca [bootloader] print() does not log
- use the right logging method; print just vanishes.
2018-01-30 11:26:29 +01:00
Adriaan de Groot
f869a0f263 [bootloader] Log the EFI fallback action 2018-01-30 11:22:36 +01:00
Adriaan de Groot
78108c5cda [bootloader] Allow skipping the EFI fallback 2018-01-29 22:55:07 +01:00
Adriaan de Groot
28d61c406e [bootloader] Improve description of *efiBootloaderId* option 2018-01-08 16:14:28 +01:00
Adriaan de Groot
762ad54344 Documentation: change http links to GitHub to https 2017-12-20 08:39:09 -05:00
Philip
b15d970845 [bootloader] fix regression introduced with d179a9e
- see also #840
2017-10-28 03:41:29 -04:00
Bezzy1999
17fb91cda5 added my name 2017-10-25 18:47:23 +01:00
Bezzy1999
cc6db5b808 pep8 2017-10-25 18:45:58 +01:00
crispg72
d179a9e3b1 Tidied up bitness check 2017-10-24 20:32:15 +01:00
Philip
10ede796f8 [bootloader] use generic file names instead of grub
- this fixes #839
2017-10-23 12:52:40 -04:00
Adriaan de Groot
cec7132d2c Swap + LUKS configuration.
Based on patches from crazy@frugalware.org and V3n3RiX.

(presumably) FIXES #730
2017-09-07 03:43:42 -04:00
Alf Gaida
d62eecd71e Fixed two typos that leads to pep8 whining 2017-03-29 20:19:41 +02:00
Alf Gaida
c12f7f1d4c fix mkdirs -> makedirs 2017-03-24 16:39:25 +01:00
Alf Gaida
50cefe2ca8 fixes #692 bootloader module fails when /EFI/Boot exists
- to make it short - it doesn't help much if one try to find and process any
  EFI related things in the live system. The better approach is to search in
  the chroot.
- use python builtins for mkdir and cp
- replacing some subprocess calls
- Some PEP8 changes
- added myself to the copyright section
2017-03-20 14:47:39 +01:00
Teo Mrnjavac
6d486bbc1f Improve EFI configuration check in bootloader. 2017-02-17 16:21:02 +01:00
Teo Mrnjavac
79fd88f948 Don't fail if no path. 2017-01-18 19:10:09 +01:00
Teo Mrnjavac
969e5c1d55 Improve check. 2017-01-17 18:13:51 +01:00
Teo Mrnjavac
7d2bd264b6 Useless check is useless. 2017-01-17 18:03:51 +01:00
Kevin Kofler
4f11faea52 [bootloader] Fix UEFI firmware workaround for 32-bit UEFI.
On 32-bit UEFI (note that the bitness of the firmware is what matters
here, not the bitness of the distribution), instead of copying
grubx64.efi to bootx64.efi, copy grubia32.efi to bootia32.efi.

Patch by TeHMoroS from SparkyLinux.

CAL-403 #close
2016-11-06 03:38:34 +01:00
Kevin Kofler
62bded1447 [bootloader] Fix vfat_correct_case.
If the directory already existed, vfat_correct_case was returning only
the last part rather than the full path as it is supposed to.
2016-11-05 17:41:38 +01:00
Kevin Kofler
5377003f89 Set the ESP flag in partition rather than bootloader.
The manual partitioning setup was already requiring the user to check
the ESP flag for the EFI System Partition. Now the autopartitioning also
sets it directly (a one-line change). The sgdisk call in the bootloader
module is thus no longer necessary (it was only a workaround because
kpmcore < 2.1.0 did not support FlagEsp), so remove that snippet.

This fixes configurations such as NVME disks where splitting boot_device
into boot_device[-1:] and boot_device[:-1] is not the correct split
(because the partition gets a 2-letter suffix) (reported by demmm on
IRC).
2016-10-29 00:52:38 +02:00
Teo Mrnjavac
3408eb5c56 Fix VFAT filename handling in bootloader module.
CAL-385 #close
2016-09-16 16:31:38 +02:00
Teo Mrnjavac
83b341b0f7 Handle a variety of case-insensitive situations on the VFAT ESP.
This fixes CAL-385 #close
2016-08-23 10:23:22 +02:00
Teo Mrnjavac
5ddd0f523b Use luksMapperName as check. 2016-05-06 18:59:51 +02:00
Teo Mrnjavac
f861c13dad Improve LUKS check and use luksUuid instead of uuid. 2016-05-06 18:59:51 +02:00
Teo Mrnjavac
e1ee6e181a Proper check for luksMapperName key. 2016-05-06 18:59:51 +02:00
Teo Mrnjavac
b6c2e0f4d7 Documentation 2016-05-06 18:59:51 +02:00
Teo Mrnjavac
a0350bbaaa Useless variable is useless. 2016-05-06 18:59:51 +02:00
Teo Mrnjavac
dd7cd42118 Fixes suggested by linter. 2016-05-06 18:59:51 +02:00
Teo Mrnjavac
282f1f9135 Add LUKS support to systemd-boot configuration. 2016-05-06 18:59:51 +02:00
JoernSchoenyan
7e8129a902 Enable support for 32bit UEFI systems with Grub
Read the UEFI bitness exposed to the file system and install the correct
variant of Grub, depending on the UEFI bitness.
2016-03-15 13:11:25 +01:00
Teo Mrnjavac
ed44f24048 Don't fail. 2016-03-10 17:35:20 +01:00
Teo Mrnjavac
965570af96 Skip installing EFI bootloader if no ESP with mount point is found. 2016-03-10 13:37:14 +01:00
Teo Mrnjavac
10ce42f35c Use target_env calls in Python modules. 2015-09-15 16:48:41 +02:00
Teo Mrnjavac
8c537daadc Do not try to install the bootloader if a path is not defined. 2015-07-07 19:15:48 +02:00
Gormogon
9f8a8f6a64 PEP and Unused Import 2015-06-14 08:22:35 -04:00
Gormogon
a4a22e3ad0 PEP Cleanup 2015-06-13 23:08:52 -04:00
Gormogon
6a7e219021 Small Python IO Cleanup 2015-06-13 21:00:42 -04:00
Teo Mrnjavac
7dd4104009 Replace Gummiboot with systemd-boot. 2015-06-11 00:32:50 +02:00
Daniel Hillenbrand
8612f427f1 bootloader: add --force argument for grub efi 2015-05-01 10:11:32 +02:00
Philip
e7a67b9c52 [dummypython] add python doc strings 2015-02-25 14:49:23 +01:00
Philip
0d8bdc6c4e [bootloader] add python doc strings 2015-02-25 14:49:23 +01:00
Gormogon
113d9db7cb Python Better Docstrings 2015-02-25 14:49:23 +01:00
Philip
0dadd19e51 [bootloader] use '--force' argument
- Note (Kevin Kofler): Grub will fall back to a LILO-style installation,
  using blocklists to reference the blocks inside a larger partition,
  with the same caveats LILO had (need to reinstall whenever you do
  anything to the partition that will move those blocks around).
- Setting flags (EF00, EF02) or creating grub boot partition should be
  handled within 'partition' module.
2015-02-23 02:35:50 +01:00
Philip
9ac0fc37b1 [bootloader] Modifications
- move fail-check out of loop
- add more debug lines
2015-02-22 18:06:15 +01:00
Philip
fe7c5bbe77 [bootloader] Modifications
- add more debug informations
- simplify gpt detection code
2015-02-22 17:34:12 +01:00
Philip
43ccfbd9bd [bootloader] Modifications
- add 'bios_grub' flag when gpt table got detected
- grub: add --recheck at installation
2015-02-22 15:26:29 +01:00
Philip
6ed8b1e4a4 [bootloader] actually use get_kernel_line() 2015-02-20 18:36:20 +01:00
Gormogon
7989267e81 Unused Imports 2015-02-20 09:24:05 -05:00
Philip Müller
d55d1c2fca [bootloader] fix typos in conf 2015-02-20 09:59:02 +01:00
Philip Müller
cb271d13ed [bootloader] use bootloader.conf values for overrides 2015-02-19 18:10:31 +01:00
Philip Müller
035ad6cbf9 [bootloader] use bootloaderEntryName 2015-02-19 17:59:52 +01:00
Philip Müller
cf1e5a8b51 [bootloader] fix typo 2015-02-19 17:40:36 +01:00
Philip Müller
93f0de3f7f [bootloader] make gummiboot entries more generic (use branding) 2015-02-19 17:39:11 +01:00
Philip
df9a2e38a8 [bootloader] proper arrangement 2015-02-20 01:00:31 +01:00
Philip
4759279fab [bootloader] default to grub for efi installations 2015-02-20 00:40:24 +01:00
Philip
5043bb4e0d [bootloader] update note regarding efiBootLoader in conf 2015-02-20 00:37:21 +01:00
Philip
c649ed4729 [bootloader] add efiBootLoader to conf 2015-02-20 00:34:56 +01:00
Philip
ebce8335bd [bootloader] move efi_(boot_loader|directory) to proper place 2015-02-20 00:33:16 +01:00
Philip
cd3e6a97de [bootloader] move efi_(boot_loader|directory) to proper place 2015-02-20 00:32:46 +01:00
Philip
e3a7fca6f4 [bootloader] join grub module with bootloader 2015-02-20 00:28:44 +01:00
Philip
4f089185fd [bootloader] fix 'dict' object is not callable 2015-02-19 22:32:27 +01:00
Philip
1542107d22 [bootloader] proper kernel_line in conf 2015-02-19 21:01:38 +01:00
Philip
7a10e14161 [bootloader] move values kernel_line and fallback_kernel_line up 2015-02-19 20:56:18 +01:00
Philip
cb78e74ae9 [bootloader] add quotes to config 2015-02-19 20:48:39 +01:00
Philip
568dd9422c [bootloader] simplify code
- remove unneeded double code
- add kernel lines to config
2015-02-19 20:46:02 +01:00
Philip
e0cccb892f [bootloader] fix typo 2015-02-19 20:24:07 +01:00
Philip
229b9b40cd [bootloader] make if statement more pythonic 2015-02-19 19:46:57 +01:00
Philip
b41ecf119d [bootloader] add meaningful debug lines 2015-02-19 19:42:09 +01:00
Philip
715112261d [bootloader] if boot_p or device is empty, break and throw an error 2015-02-19 19:09:13 +01:00
Gormogon
5c1ee7bbcb [PEP 8] General Style Part 3 2015-02-18 10:03:57 -05:00
Gormogon
8e1480431a [PEP 263] Corrected Encoding Headers 2015-02-18 09:06:10 -05:00
Philip Müller
6906ba0b59 [bootloader] modifications
- use --target=i386-pc flag for grub installs
- use str.format()
2015-02-17 13:53:51 +01:00
demmm
294b030b99 correct swap in fallback too 2015-02-14 18:03:50 -05:00
Kevin Kofler
8c98aeb04a Make efiSystemPartition mount point configurable in partition.conf.
Copy the setting into the global storage. Make the EraseDiskPage in the
partition module and the grub and bootloader modules read it from there.
Do not hardcode /boot as the path anymore.

I set the default path to /boot/efi because I think that's the most
common setting. At least Fedora and Debian use that path. But we can
change the default setting if you think I'm wrong, as long as it remains
configurable.

There is no separate setting for efi_directory_firmware anymore. The EFI
firmwares expect that directory to always be in the "EFI" path in the
EFI System Partition. Distributions using /boot/efi actually have that
directory under /boot/efi/EFI.
2015-02-14 22:53:00 +01:00
Teo Mrnjavac
220ea34aeb Fix sgdisk call 2014-12-31 19:37:07 +01:00
Teo Mrnjavac
1f9e7b5ae9 Update main.py 2014-12-31 19:33:07 +01:00
Teo Mrnjavac
7638f80373 Use UUID in resume 2014-12-31 19:30:58 +01:00
Teo Mrnjavac
3984bf0634 Merge pull request #156 from calamares/grub-efi-support-rfe-110
grub: Add EFI support (improved).
2014-12-02 14:24:41 +01:00
Kevin Kofler
ab4d31f1a6 bootloader: Allow overriding the bootloaderEntryName setting.
Allow setting bootloaderEntryName in bootloader.conf. If not specified
there, the setting will be taken from branding.desc.
2014-11-19 17:01:02 +01:00
Kevin Kofler
462819060b branding: Add a dedicated bootloaderEntryName setting.
Use it in the bootloader and grubcfg modules instead of
shortProductName.
2014-11-19 16:50:15 +01:00
Kevin Kofler
4df754ef29 Move detect_firmware_type to the prepare module.
This avoids the duplication between the bootloader and grub modules.
2014-11-19 13:58:18 +01:00