this post was submitted on 12 Nov 2023
676 points (94.6% liked)

linuxmemes

21263 readers
929 users here now

Hint: :q!


Sister communities:


Community rules (click to expand)

1. Follow the site-wide rules

2. Be civil
  • Understand the difference between a joke and an insult.
  • Do not harrass or attack members of the community for any reason.
  • 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.
  • These rules are somewhat loosened when the subject is a public figure. Still, do not attack their person or incite harrassment.
  • 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. Even if you watch it on a Linux machine.
  • 4. No recent reposts
  • Everybody uses Arch btw, can't quit Vim, and wants to interject for a moment. You can stop now.

  • Please report posts and comments that break these rules!

    founded 1 year ago
    MODERATORS
     

    I use plasma, BTW

    you are viewing a single comment's thread
    view the rest of the comments
    [โ€“] [email protected] 6 points 1 year ago* (last edited 1 year ago) (1 children)

    Or, asked another way, does systemd load the Linux kernel, and if not, what does?

    Immediately after the BIOS/POST, the first thing that starts is the boot loader. This is usually a piece of software called GRUB. There's a part of GRUB in the Master Boot Record on the drive, that the loads the rest of GRUB from /boot. /boot has to be a basic partition so that the MBR code can mount it, so for example if you use something a bit fancier (like LVM) then you'll usually have a separate small ext2 or FAT partition just for /boot.

    GRUB shows a list of available kernels, and other operating systems (if any are installed), based on a config in /boot.

    Once you select a kernel to boot (or wait a few seconds for it to automatically choose the default option), it starts loading the kernel. There is a small disk image called the "initial ramdisk" in /boot, usually with a name like initrd or initramfs. This is a small ramdisk that contains all the drivers needed to mount your root partition - for example, drive drivers (NVMe, SATA, etc), file system drivers (ext4, ZFS, XFS, etc), LVM, RAID drivers if needed, and so on. If the root disk is on an NFS network share (not as common any more, but still doable), it also needs to contain network drivers for your network card. It also contains a few basic utilities, usually provided by BusyBox.

    Some Linux distros (such as Debian) build a custom initramfs, whereas others (like Fedora) have a generic one containing all possible drivers.

    The initial ramdisk then mounts the root partition and hands control over to the Linux kernel, which starts actually booting the OS. The very first process the kernel starts running is the init process, which these days is usually systemd but can be a different one like sysvinit or runit.

    Hope that helps :)

    [โ€“] [email protected] 1 points 1 year ago

    Okay, yeah. This makes much more sense now. I really appreciate it. I've been seeing the GRUB menu in LiveUSB boots but didn't understand that it was part of the initial boot process for general Linux systems (for whatever reason I had it stuck in my head that it was just for USB booting). And you've placed systemd exactly where it makes sense to me as the init process for that OS.

    That is extremely helpful. Thank you so much for taking the time to write the entire boot order, because it just got crystal clear for me. Much appreciated!