The GRUB_DISTRIBUTOR information can't be provided in a generic
way for all distributions. The information should be either placed
by a package post script (as done by most of the distributions)
or by a custom kiwi config.sh or images.sh script. Fixes#286
Fixes (bsc#1032119)
Depending on the distribution the grub tools are either named
grub2-tool or grub-tool. Additionally the grub configuration
data is expected to live in boot/grub2 or boot/grub. This commit
handles the tool calls and also the grub boot directory setup
in a generic way
Make sure grub theme data is populated in the boot directory.
Checking only for the presence of the theme directory is not
enough. If the theme directory in boot does not contain the
requested theme it must be provided including a warning if
the theme data could not be found in the system
The configuration files /etc/sysconfig/bootloader and
/etc/default/grub needs to be created/updated with the
relevant values regarding the bootloader setup done by
kiwi. This Fixes#226
The parameter for the uuid is not enough to handle all
supported disk geometries. If the disk has an extra boot
partition the bootloader setup must read the boot data
from the boot partition but must set the root for the
kernel cmdline to the root partition. Therefore the
interface needs to change and must provide both the
boot_uuid and the root_uuid in oder to allow the method
to setup the correct values
This addresses the following issues
* An image based on btrfs using the entire boot as a subvolume
causes grub to be unable to find its config file. Thus kiwi
now raises an exception in this situation
* Don't prefix the bootpath with the snapshot path if the
btrfs root is placed in a snapshot. Instead the file
etc/default/grub must be written/updated with the
SUSE_BTRFS_SNAPSHOT_BOOTING variable set to true. Once
this is done the bootpath is consistently set to /boot
no matter which snapshot is active
Provide the shim loader and the shim signed grub loader in the
required boot path. Normally this task is done by the shim-install
tool. However, shim-install does not exist on all distributions
and the script does not operate well in CD environments from which
we generate live and/or install media. Thus shim-install is used
if possible at install time of the bootloader because it requires
access to the target block device. In any other case the kiwi
fallback code applies
For EFI secure boot (uefi) the grub2 efi modules were not
copied to the target directory. shim-install normally does
that by invoking grub2-install. However shim-install does
not allow to call grub2-install with the required parameters
as needed for loop (image) based targets. Thus kiwi calls
shim-install but skips grub2-install and takes care to
provide the needed EFI modules.
The check for the theme was not always called, but this
is required since the theme check will reset the bootloader
console if no graphics theme could be found
Some bootloader e.g grub supports graphics, text and also
serial consoles to hand over the output of the bootloader
menu. With this patch we allow to customize the console
used by the bootloader. So far only grub makes use of the
new attribute
<type ... bootloader_console="serial|console|gfxterm"/>
This references Trello:
https://trello.com/c/q9EhNKKV/155-support-for-grub2-serial-console
We can't expect that specific fonts to exist for all theme packages
in all distributions. The code here should rely only on theme.txt
In addition we check if any theme or font related data is found
in the legacy grub location boot/grub which imho should not be
used for grub2
EFI support was target specific to the x86_64 architecture
This commit changes the structure to allow more architectures
supporting EFI. Thus the arm64 EFI support has been added
as a plus
nose is no longer maintained, thus we have to move to another
testing system. This commit updates the tox setup and all tests
to use pytest instead of nose.
Originally the file was written there as reference, but nothing
will ever update that file if the real grub configuration changes.
Thus it doesn't make sense to provide this information (bnc#968270)
Different distributions install grub2 to different places.
Therefore kiwi should not use a fixed location but allow
to lookup grub data at several places