-
Notifications
You must be signed in to change notification settings - Fork 1
Boot Process
The boot process of IGEL OS is important when considering the structure of the file system.
In short, GRUB (via a shim on UEFI systems) loads igelfs.mod, which allows booting a kernel from a partition extent with an embedded initramfs, from where the rootfs is mounted and boot continues.
Once installed, the Linux kernel is stored as a partition extent of the sys (partition minor 1) partition.
When querying the file type, you should receive output similar to the following:
Linux kernel x86 boot executable bzImage, version 4.19.65 (IGEL@ITGA) #mainline-udos
Where the kernel version and OS edition, e.g. udos, lxos or lxos12, will vary.
For IGEL OS installation media, the kernel is stored as a separate bzImage file on disk - not as a partition extent.
Additionally, the IGEL filesystem image is stored alongside the kernel, named ddimage.bin.
For UEFI systems, the boot process is described below:
-
bootx64.efiorbootia32.efi(signed by/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Corporation UEFI CA 2011)- These images are signed (by Microsoft) shims to hand off execution to GRUB
- The source code for these images can be found at the following forks: igelboot and IGEL-Technology
- These were reviewed by the SHIM review board via issue #11 (review) and issue #434 (review) respectively
- These were then submitted and signed by Microsoft according to these instructions
-
igelx64.efiorigelia32.efi(signed by/CN=IGEL Secure Boot Signing CA/O=IGEL Technology GmbH/L=Bremen/C=DE)- These images are signed (by IGEL) GRUB binaries
- The kernel is also signed by this key
- These certificates can be downloaded from the following links: igel-efi-pub-key (2017-2047) and igel-uefi-ca (2024-2054)
- GRUB loads signed
igelfs.modto load and boot kernel from IGEL filesystem- The initramfs is embedded into the kernel (
bzImage) - For IGEL OS installation media, the kernel is stored as a separate file on disk, not within an IGEL filesystem (see above)
- The initramfs is embedded into the kernel (
- The system partition (squashfs, usually zstd compressed) is mounted from initramfs
- The root directory is changed to
/igfimage - Real
init(systemd) process is started
- The root directory is changed to
This extract from a Red Hat article describes the initial boot process clearly:
shim is a first-stage boot loader that embeds a self-signed Certificate Authority (CA) certificate. Microsoft signs shim binaries, which ensures that they can be booted on all machines with a pre-loaded Microsoft certificate. shim uses the embedded certificate to verify the signature of the GRUB 2 boot loader. shim also provides a protocol that GRUB 2 uses to verify the kernel signature.