Difference between revisions of "How Linux Boots"
Line 24: | Line 24: | ||
* you can also directly boot a kernel without an initial ram-disk but that means that the kernel needs to have all necessary drives compiled in that are needed for at least reading the harddisk. |
* you can also directly boot a kernel without an initial ram-disk but that means that the kernel needs to have all necessary drives compiled in that are needed for at least reading the harddisk. |
||
* systemd is still a bit controversial and there are distributions out there that try to avoid it. e.g. devuan. |
* systemd is still a bit controversial and there are distributions out there that try to avoid it. e.g. devuan. |
||
− | * newer PCs support "UEFI/secure boot". Which does not offer much security but was intended to force the lock-in into proprietary operating systems. Most modern Linux Distributions can deal with UEFI-Boot but if you can turn this off in your BIOS settings it will make installing Linux much easier. |
+ | * newer PCs support "UEFI/secure boot". Which does not offer much security but was intended to force the lock-in into proprietary operating systems. Most modern Linux Distributions can deal with UEFI-Boot but if you can turn this off in your BIOS settings it will make installing Linux much easier. For an overview of how the UEFI/SecureBoot works see: [https://wiki.debian.org/SecureBoot wiki.debian.org/SecureBoot] |
Revision as of 14:54, 29 October 2020
Motivation
Nothing is more frustrating then not being able to boot into your system. If it hangs a boot with a cryptic message, then what do you do? People running other Operating Systems then tend to try to re-install their OS at this point. Once you know how Linux boots then it is almost always possible to boot into your system again as long as your hard-drive is not damaged.
Stages of Booting Linux
Simplified:
- your PC boots (BIOS from EEPROM chips on your motherboard. e.g when you press F12 during boot this is handled by the BIOS)
- loads the first ca 300 bytes from block 0 of your hard drive
- loads the rest of GRUB boot loader
- GRUB can readonly mount most filesystems and load kernel (vmlinuz) and initial-ramdisk (initrd)
- kernel unpacks itself and intializes hardware
- kernel unpacks initial ramdisk and starts script there (e.g. /init )
- initial ramdisk scripts loads additional modules and mount real /
- starts init process. (today usually systemd)
- systemd runs boot scripts for all configured items. (e.g. ssh, X11, ..) and mounts additional filesystems, ..
A few notes to the above:
- The BIOS is specific to PCs and this looks different on other hardware. E.g. Raspberry Pi and other ARM systems, etc..
- The initial boot blocks can also be loaded via network (PXE network boot).
- you can also directly boot a kernel without an initial ram-disk but that means that the kernel needs to have all necessary drives compiled in that are needed for at least reading the harddisk.
- systemd is still a bit controversial and there are distributions out there that try to avoid it. e.g. devuan.
- newer PCs support "UEFI/secure boot". Which does not offer much security but was intended to force the lock-in into proprietary operating systems. Most modern Linux Distributions can deal with UEFI-Boot but if you can turn this off in your BIOS settings it will make installing Linux much easier. For an overview of how the UEFI/SecureBoot works see: wiki.debian.org/SecureBoot