X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=man%2Fbootup.xml;h=65c2cee70e4a44a06b3edee32da7c36b125c2513;hp=ae84cff0b79d82ba5c049b5652ba2418e24aa3c7;hb=accdd018ede77ef1c057775396c18c73406cbcb4;hpb=013d8a39a6178179080bcfee9122b29cf9d29259 diff --git a/man/bootup.xml b/man/bootup.xml index ae84cff0b..65c2cee70 100644 --- a/man/bootup.xml +++ b/man/bootup.xml @@ -44,36 +44,39 @@ bootup - The System Bootup Process + System bootup process Description - A number of different components are involved in the - system boot. Immediately after power-up, the system - BIOS will do minimal hardware initialization, and hand - control over to a boot loader stored on a persistant - storage device. This boot loader will then invoke an - OS kernel from disk (or the network). In the Linux - case this kernel now (optionally) extracts and - executes an initial RAM disk image (initrd) such as - dracut8 - which looks for the root file system. After the root - file system is found and mounted the initrd hands over - control to the system manager (such as + A number of different components are involved in + the system boot. Immediately after power-up, the + system BIOS will do minimal hardware initialization, + and hand control over to a boot loader stored on a + persistent storage device. This boot loader will then + invoke an OS kernel from disk (or the network). In the + Linux case, this kernel (optionally) extracts and + executes an initial RAM disk image (initrd), such as + generated by + dracut8, + which looks for the root file system (possibly using + systemd1 + for this). After the root file system is found and + mounted, the initrd hands over control to the host's + system manager (such as systemd1) - stored on the OS image which is then responsible for + stored on the OS image, which is then responsible for probing all remaining hardware, mounting all necessary file systems and spawning all configured services. - On shutdown the system manager stops all + On shutdown, the system manager stops all services, unmounts all file systems (detaching the storage technologies backing them), and then (optionally) jumps back into the initrd code which unmounts/detaches the root file system and the storage - it resides on. As last step the system powered down. + it resides on. As a last step, the system is powered down. Additional information about the system boot process may be found in @@ -88,7 +91,7 @@ systems, services and drivers that are necessary for operation of the system. On systemd1 - systems this process is split up in various discrete + systems, this process is split up in various discrete steps which are exposed as target units. (See systemd.target5 for detailed information about target units.) The @@ -97,21 +100,21 @@ deterministic, but still adheres to a limited amount of ordering structure. - When systemd starts up the system it will + When systemd starts up the system, it will activate all units that are dependencies of default.target (as well as recursively all dependencies of these - dependencies). Usually + dependencies). Usually, default.target is simply an alias of graphical.target or - multi-user.target depending on + multi-user.target, depending on whether the system is configured for a graphical UI or only for a text console. To enforce minimal ordering - between the units pulled in a number of well-known + between the units pulled in, a number of well-known target units are available, as listed on systemd.special7. - The follow chart is a structural overview of + The following chart is a structural overview of these well-known units and their position in the boot-up logic. The arrows describe which units are pulled in and ordered before which other units. Units @@ -132,35 +135,35 @@ v sysinit.target | - _________________/|\___________________ - / | \ - | | | - v | v - (various | rescue.service - sockets...) | | - | | v - v | rescue.target - sockets.target | - | | - \_________________ | - \| + ____________________________________/|\________________________________________ + / | | | \ + | | | | | + v v | v v + (various (various | (various rescue.service + timers...) paths...) | sockets...) | + | | | | v + v v | v rescue.target + timers.target paths.target | sockets.target + | | | | + \__________________|_________________ | ___________________/ + \|/ v basic.target | - _________________/| emergency.service - / | | - | | v - v v emergency.target - (various system (various system - services services) - required for | - graphical UIs) v - | multi-user.target - | | - | _________________/ - |/ + ____________________________________/| emergency.service + / | | | + | | | v + v v v emergency.target + display- (various system (various system + manager.service services services) + | required for | + | graphical UIs) v + | | multi-user.target + | | | + \_________________ | _________________/ + \|/ v - graphical.target + graphical.target Target units that are commonly used as boot targets are emphasized. These @@ -173,42 +176,130 @@ to them. + + Bootup in the Initial RAM Disk (initrd) + The initial RAM disk implementation (initrd) can + be set up using systemd as well. In this case, boot up + inside the initrd follows the following + structure. + + The default target in the initrd is + initrd.target. The bootup process + begins identical to the system manager bootup (see + above) until it reaches + basic.target. From there, systemd + approaches the special target + initrd.target. If the root device + can be mounted at /sysroot, the + sysroot.mount unit becomes active + and initrd-root-fs.target is + reached. The service + initrd-parse-etc.service scans + /sysroot/etc/fstab for a possible + /usr mount point and additional + entries marked with the + x-initrd.mount option. All + entries found are mounted below + /sysroot, and + initrd-fs.target is reached. The + service initrd-cleanup.service + isolates to the + initrd-switch-root.target, where + cleanup services can run. As the very last step, the + initrd-switch-root.service is + activated, which will cause the system to switch its + root to /sysroot. + + + : (beginning identical to above) + : + v + basic.target + | emergency.service + ______________________/| | + / | v + | sysroot.mount emergency.target + | | + | v + | initrd-root-fs.target + | | + | v + v initrd-parse-etc.service + (custom initrd | + services...) v + | (sysroot-usr.mount and + | various mounts marked + | with fstab option + | x-initrd.mount...) + | | + | v + | initrd-fs.target + \______________________ | + \| + v + initrd.target + | + v + initrd-cleanup.service + isolates to + initrd-switch-root.target + | + v + ______________________/| + / v + | initrd-udevadm-cleanup-db.service + v | + (custom initrd | + services...) | + \______________________ | + \| + v + initrd-switch-root.target + | + v + initrd-switch-root.service + | + v + Transition to Host OS + + + System Manager Shutdown - System shutdown also consists of various target - units with some minimal ordering structure - applied: - - - - - (conflicts with (conflicts with - all system all file system - services) mounts, swaps, - | cryptsetup - | devices, ...) - | | - v v - shutdown.target umount.target - | | - \_______ ______/ - \ / - v - (various low-level - services) - | - v - final.target - | - __________________________/ \_____________________ - / | | \ - | | | | - v v v v -reboot.service poweroff.service halt.service kexec.service - | | | | - v v v v -reboot.target poweroff.target halt.target kexec.target + System shutdown with systemd also consists of + various target units with some minimal ordering + structure applied: + + + + + (conflicts with (conflicts with + all system all file system + services) mounts, swaps, + | cryptsetup + | devices, ...) + | | + v v + shutdown.target umount.target + | | + \_______ ______/ + \ / + v + (various low-level + services) + | + v + final.target + | + _____________________________________/ \_________________________________ + / | | \ + | | | | + v v v v +systemd-reboot.service systemd-poweroff.service systemd-halt.service systemd-kexec.service + | | | | + v v v v + reboot.target poweroff.target halt.target kexec.target Commonly used system shutdown targets are emphasized. @@ -219,7 +310,8 @@ reboot.service poweroff.service halt.service kexec.service systemd1, boot7, systemd.special7, - systemd.target5 + systemd.target5, + dracut8