this post was submitted on 17 Dec 2024
83 points (96.6% liked)
Linux
48705 readers
1193 users here now
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
GRUB gets installed on your harddisk in your root partition, it's configuration file on the boot partition and finally into your boot sector if I'm correct. UEFI is a standard for your firmware located outside your harddisk. You go from firmware -> partition layout -> bootloader (grub) -> kernel.
The firmware is closed source under BIOS or UEFI or if you're hardcore open source, libreboot/coreboot/'other options' and is located somewhere on your motherboard on some chip.
Then there's the partition layout and bootloader that are located inside
/dev/sda
I believe, so inside the device itself, which can be read if you want to take a peek at it.Now the bootloader located in the boot sector
/dev/sda
loaded by the firmware located in some chip in the motherboard, has access to the boot partition, where it loads the bootloader's configuration file usually located at/boot/grub/grub.cfg
for GRUB. I remember UEFI having some kind of standard bootloader by itself, so it doesn't even need a bootloader if I can remember correctly.This what I recall as it was quite complicated for me too. Especially with software being called firmware and not being called motherbootware or pre-bootware or anything that indicates that this piece of software is the very first thing that starts running during boot.
But you look at
/boot
and what you can find there. There will be at least two files there called initramfs and vmlinuz, which were also part of the boot process, but I forgot what role those two played.Short answer to your last paragraph:
vmlinuz is the kernel. It ends with z instead of x, because it's z-compressed to save space. (I've heard that it's possible to use an uncompressed kernel for that 1ms faster boot time)
Initramfs (not intramuscular, which my autocorrect thinks is appropriate) is a small filesystem blob, "initial ram filesystem", meant to be loaded directly into ram to allow the kernel to talk to your hardware via drivers. It also has a lot of binaries needed to perform other tasks that need to run before the root filesystem is mounted.
Oh wait, I see that vmlinuz file has a version to it. I couldn't remember if vmlinuz was the kernel or not, because I used to have multiples of them, but these days I only have one.
You have one per installed kernel. Not sure what (if any) automagic is common for removing old kernels, I guess this varies between distros, but at least on my computers, old kernel remain. At least the previous one, maybe more. It comes in handy in case a kernel upgrade breaks something, which it actually did recently on one of my laptops - makes it easier to boot from old kernel and revert.
EDIT: I just checked. I have just one on my daily driver. It's quite new, and I don't think I've had a kernel upgrade on that one, so it makes sense.
On my work laptop (the one with borked kernel upgrade) I have two.
So what you most likely have is one or more vmlinuz-version-numbers, and then simply a symlink named just vmlinuz to the version you boot from.
I'm pretty sure UEFI systems don't make use of a boot sector anymore. They look for the bootloader in the form of an .efi file in the ESP or EFI System Partition, of each sata drive (maybe other block devices too).
also, the disk it uses is not necessarily "/dev/sda". first because it can be on any of the disks, second because that's not a persistent ID but something that depends on detection order
firmware is a pretty common term for things like this (code on chip that manages low level startup)