this post was submitted on 30 Apr 2024
227 points (100.0% liked)
linuxmemes
24763 readers
1575 users here now
Hint: :q!
Sister communities:
Community rules (click to expand)
1. Follow the site-wide rules
- Instance-wide TOS: https://legal.lemmy.world/tos/
- Lemmy code of conduct: https://join-lemmy.org/docs/code_of_conduct.html
2. Be civil
- Understand the difference between a joke and an insult.
- Do not harrass or attack users for any reason. This includes using blanket terms, like "every user of thing".
- Don't get baited into back-and-forth insults. We are not animals.
- Leave remarks of "peasantry" to the PCMR community. If you dislike an OS/service/application, attack the thing you dislike, not the individuals who use it. Some people may not have a choice.
- Bigotry will not be tolerated.
3. Post Linux-related content
- Including Unix and BSD.
- Non-Linux content is acceptable as long as it makes a reference to Linux. For example, the poorly made mockery of
sudo
in Windows. - No porn, no politics, no trolling or ragebaiting.
4. No recent reposts
- Everybody uses Arch btw, can't quit Vim, <loves/tolerates/hates> systemd, and wants to interject for a moment. You can stop now.
5. π¬π§ Language/ΡΠ·ΡΠΊ/Sprache
- This is primarily an English-speaking community. π¬π§π¦πΊπΊπΈ
- Comments written in other languages are allowed.
- The substance of a post should be comprehensible for people who only speak English.
- Titles and post bodies written in other languages will be allowed, but only as long as the above rule is observed.
6. (NEW!) Regarding public figures
We all have our opinions, and certain public figures can be divisive. Keep in mind that this is a community for memes and light-hearted fun, not for airing grievances or leveling accusations. - Keep discussions polite and free of disparagement.
- We are never in possession of all of the facts. Defamatory comments will not be tolerated.
- Discussions that get too heated will be locked and offending comments removed. Β
Please report posts and comments that break these rules!
Important: never execute code or follow advice that you don't understand or can't verify, especially here. The word of the day is credibility. This is a meme community -- even the most helpful comments might just be shitposts that can damage your system. Be aware, be smart, don't remove France.
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
The kernel in the EFI partition is used as a tool to bootstrap hardware and memory for your proper kernel, which is chainloaded.
There is a simple reason for that: The Linux kernel can do anything a bootloader needs to do, especially for itself, so why not use it as one?
That said, in most setups there is another bootloader before that, which loads the kernel itself and the initramfs for that kernel. That can be for example systemd-boot, formerly known gummiboot, a minimal bootloader meant to (auto-)discover EFI compatible stuff it can load.
Dracut creates a setup / boot chain like that.
Thanks for explaining it! So systemd-boot finds the kernel in the EFI partition, which it then loads, and then that kernel loads another kernel from the main partition, which is then the full OS.
Is there a reason it's done this way, and not just the bootloader loads the main kernel?
Also, are the two kernels the same, or does this use two different kernels?
In the case of Dracut, I'm not sure what it does exactly, but the kernels will almost definitely not be identical. In the "EFI kernel", uneeded modules (meaning most of them) are usually omitted.
You could probably also have different kernels in terms of version number, although it might complicate things. Kinda depends on whether they recycle data structures from the first kernel and whether those remain compatible. I don't really know whether this is actually done tho.
The reason why multiple kernels (or bootloaders for that matter) are used is that there are different levels of "readiness" in your system. Say you have LVM and a LUKS encrypted partition (in whatever order). Systemctl-boot will load the kernel and it's initramfs, but can't be bothered to deal with complicated file system shenanigans. That would complicate the whole program significantly.
So it just loads a Linux kernel which has these capabilities. That kernel can deal with LVM, decrypt the LUKS partition (or ask for a password), mount whatever btrfs nonsense is inside and then hand it over to the proper kernel. The proper kernel can in turn rely on having all its stuff mounted and ready, instead of having to worry about all this.
You could do with just one kernel, but Dracut allows you to rapidly create bootable kernel + initramfs pairs of which you might need multiple (e.g. for dual booting, backup). Moreover, you probably wouldn't really want it to fiddle with your kernel all the time, especially when it's customised already.
That makes sense. It looks like a really clever way of letting the boot process allow for basically any arangement. Thanks!