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.
- Service units
- Socket units
- Target units
- Device units
- Mount units
- Automount units
- Snapshot units
- Swap units
- Path units
- Slice units
- 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
- Fedora 23 Administrators Guide: System Administrator's Guide