The rmware Exposes BUS access Rudimentary way to communicate list devices Looks for a bootloader in on devices Usually very basic environment (sometimes 16- bit) 7 . 1
The kernel Discovers devices on Buses Prepares environment to run process(es) using a common format Exposes standard facilities for programs: Abstracted I/O: open(2) Memory management: mmap(2), malloc(3) Process handling: fork(2), signal(2) Network abstractions: socket(2), bind(2), connect(2) 13 . 1
Init First process started by the kernel Runs boot sequence Mounts lesystems Starts the network Starts essential subsystems: syslog, ntpd, cron Starts background daemons: ssh, smtpd Root of process tree 15 . 1
Init simpli ed How would you? Mount lesystems Start the network Start essential subsystems: syslog, ntpd, cron Start background daemons: ssh, smtpd 26 . 1
Standard Init swapon -a umount -a >/dev/null 2>&1 mount -a -t nonfs . /etc/rc.conf sh /etc/netstart if [ X${rwhod} = X"YES" ]; then echo -n ' rwhod'; rwhod fi if [ X${lpd} = X"YES" ]; then echo -n ' printer'; lpd fi . /etc/rc.local 27 . 1
This isn't ideal It's hard to keep track of startup order Plenty of services didn't react well to standard signals No way to easily gather service status No way to ensure a critical service stays up This puts a lot on application packagers Especially on non-standardized systems Hello ! 33 . 1
System V You all know it /etc/init.d/rc5.d/S99blargh Introduces runlevels Enforces the concept of service startup, status, and shutdown. inittab(5) to de ne runlevels as state transitions Still leaves much to be desired 40 . 1
SystemD drawbacks Hard to avoid heated discussions Wide scope means more room for error Mixed focus on desktop & servers can be off-puting for admins Heavily coupled to DBUS That giant, little-known attack vector on your system 48 . 1