Jun's Blog

Output, activities, memo and etc.

Boot processes on Fedora Linux 23

Fedora 23 is using GRUB2 as boot loader, and systemd that was replaced from SysV Init Script.

Maybe because of systemd, the Linux's boot is very faster than past Fedora Linux (Fedora Core 2 or 3) that I used past time.

Today I want to write the boot processes.

Summary

GRUB2
  -> /etc/grub2.cfg
    -> Load Linux kernel image. (ex. /boot/vmlinuz-4.2.3-300.fc23.x86_64)
    -> Load initramfs image (ex. /boot/initramfs-4.2.3-300.fc23.x86_64.img) as initrd.
      -> systemd
        -> Service Units such as NetworkManager.service, sshd.service
        -> Sockets Units
      -> kernel modules

GRUB2

# view /etc/grub2.cfg
...
menuentry
    linux16 /vmlinuz-4.2.3-300.fc23.x86_64 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap rhgb quiet LANG=en_US.UTF-8
    initrd16 /initramfs-4.2.3-300.fc23.x86_64.img
...
  • grubby: Utility to manage grub info.

Load Linux Kernel Image

Below is a config file for kernel.
/etc/sysconfig/kernel

Load initramfs Image as initrd

Preload block device modules such as for IDE, SCSI, or RAID.

2 useful commands for initramfs

  • dracut: Utility to generate initramfs image.
  • lsinitrd: Tool to show the contents of an initramfs image

You can see systemd is loaded in initramfs image.

# lsinitrd /boot/initramfs-4.2.3-300.fc23.x86_64.img

dracut modules:
bash
systemd
systemd-initrd
i18n
drm
plymouth
dm
kernel-modules
lvm
resume
rootfs-block
terminfo
udev-rules
dracut-systemd
usrmount
base
fs-lib
shutdown
...

See $ man lsinitrd for detail.

Systemd and systemctl

systemctl is a utility to control systemd.

$ man systemd

systemd manages entries of 23 unit types.

  1. Service units
  2. Socket units
  3. Target units
  4. Device units
  5. Mount units
  6. Automount units
  7. Snapshot units
  8. Swap units
  9. Path units
  10. Slice units
  11. Scope units

Only display a list of service.
I installed the Fedora Linux as minimal package type.

$ systemctl -t service
UNIT                                                     LOAD   ACTIVE SUB     DESCRIPTION
auditd.service                                           loaded active running Security Auditing Service
chronyd.service                                          loaded active running NTP client/server
crond.service                                            loaded active running Command Scheduler
dbus.service                                             loaded active running D-Bus System Message Bus
dracut-shutdown.service                                  loaded active exited  Restore /run/initramfs on shutdown
fedora-readonly.service                                  loaded active exited  Configure read-only root support
firewalld.service                                        loaded active running firewalld - dynamic firewall daemon
getty@tty1.service                                       loaded active running Getty on tty1
kmod-static-nodes.service                                loaded active exited  Create list of required static device nodes for the curre
lvm2-lvmetad.service                                     loaded active running LVM2 metadata daemon
lvm2-monitor.service                                     loaded active exited  Monitoring of LVM2 mirrors, snapshots etc. using dmeventd
lvm2-pvscan@8:2.service                                  loaded active exited  LVM2 PV scan on device 8:2
NetworkManager.service                                   loaded active running Network Manager
polkit.service                                           loaded active running Authorization Manager
sshd.service                                             loaded active running OpenSSH server daemon
systemd-fsck@dev-disk-by\x2duuid-c8859b8a\x2d598e\x2d4fc2\x2d94e0\x2da2e080536713.service loaded active exited  File System Check on /de
systemd-journal-flush.service                            loaded active exited  Flush Journal to Persistent Storage
systemd-journald.service                                 loaded active running Journal Service
systemd-logind.service                                   loaded active running Login Service
systemd-random-seed.service                              loaded active exited  Load/Save Random Seed
systemd-remount-fs.service                               loaded active exited  Remount Root and Kernel File Systems
systemd-sysctl.service                                   loaded active exited  Apply Kernel Variables
systemd-tmpfiles-setup-dev.service                       loaded active exited  Create Static Device Nodes in /dev
systemd-tmpfiles-setup.service                           loaded active exited  Create Volatile Files and Directories
systemd-udev-trigger.service                             loaded active exited  udev Coldplug all Devices
systemd-udevd.service                                    loaded active running udev Kernel Device Manager
systemd-update-utmp.service                              loaded active exited  Update UTMP about System Boot/Shutdown
systemd-user-sessions.service                            loaded active exited  Permit User Sessions
systemd-vconsole-setup.service                           loaded active exited  Setup Virtual Console
user@1000.service                                        loaded active running User Manager for UID 1000

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

30 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.


See $ man systemd for detail.

Kernel modules

  • lsmod: Listing kernel modules
  • modinfo: display info for module_name.
  • modprobe: load, unload kernel modules

Notes