Man page - bootup(7)
Packages contains this manual
- systemd-initctl.service(8)
- systemd-networkd.service(8)
- org.freedesktop.locale1(5)
- timedatectl(1)
- systemd.resource-control(5)
- systemd.journal-fields(7)
- systemd-logind.service(8)
- busctl(1)
- systemd-pstore(8)
- systemd.generator(7)
- hostname(5)
- systemd-path(1)
- systemd-random-seed.service(8)
- locale.conf(5)
- systemd-firstboot(1)
- systemd-sysv-generator(8)
- systemd.syntax(7)
- loginctl(1)
- tmpfiles.d(5)
- org.freedesktop.portable1(5)
- systemd-timedated(8)
- systemd-pstore.service(8)
- systemd-escape(1)
- systemd-system-update-generator(8)
- systemd-backlight@.service(8)
- systemd-udev-settle.service(8)
- systemd.directives(7)
- systemd.index(7)
- systemd.environment-generator(7)
- systemd-network-generator.service(8)
- org.freedesktop.systemd1(5)
- systemd-user-sessions.service(8)
- systemd-pcrlock(8)
- systemd-journald.socket(8)
- systemd-user-runtime-dir(5)
- systemd-logind(8)
- systemd-initctl.socket(8)
- systemd-pcrlock-make-policy.service(8)
- systemd(1)
- systemd-inhibit(1)
- networkctl(1)
- systemd-random-seed(8)
- sysusers.d(5)
- systemd-boot-check-no-failures(8)
- systemd.v(7)
- systemd-creds(1)
- systemd-networkd(8)
- systemd-makefs(8)
- systemd-fsck(8)
- systemd-localed.service(8)
- journald.conf.d(5)
- systemd-pcrfs@.service(8)
- systemd-cat(1)
- systemd-id128(1)
- user@.service(5)
- systemd.unit(5)
- systemd.net-naming-scheme(7)
- systemd-volatile-root(8)
- org.freedesktop.machine1(5)
- systemd-firstboot.service(1)
- localtime(5)
- systemd-timedated.service(8)
- systemd-ask-password-console.path(8)
- varlinkctl(1)
- org.freedesktop.timedate1(5)
- systemd-run-generator(8)
- systemd-system.conf(5)
- systemd-journald-varlink@.socket(8)
- systemd-rfkill.socket(8)
- systemd.exec(5)
- systemd-journald@.socket(8)
- systemd-shutdown(8)
- systemd-fsck-usr.service(8)
- systemd-sysctl.service(8)
- systemd-pcrphase.service(8)
- systemd-localed(8)
- systemd-journald(8)
- systemd-ssh-proxy(1)
- systemd.offline-updates(7)
- systemd-pcrlock-secureboot-authority.service(8)
- systemd-ac-power(1)
- pam_systemd_loadkey(8)
- systemd.device(5)
- systemd-quotacheck.service(8)
- systemd-machine-id-commit.service(8)
- systemd-backlight(8)
- binfmt.d(5)
- systemd-getty-generator(8)
- networkd.conf.d(5)
- systemd.path(5)
- systemd-networkd-wait-online.service(8)
- system.conf.d(5)
- systemd-detect-virt(1)
- systemd-sleep.conf(5)
- sysctl.d(5)
- systemd-vpick(1)
- systemd-pcrlock-secureboot-policy.service(8)
- systemd-update-done(8)
- systemd-sysctl(8)
- pstore.conf.d(5)
- hostnamectl(1)
- systemd-confext(8)
- logind.conf.d(5)
- capsule@.service(5)
- systemd-poweroff.service(8)
- systemd-modules-load(8)
- systemd.special(7)
- org.freedesktop.network1(5)
- systemd.pcrlock.d(5)
- systemd-kexec.service(8)
- systemd-stdio-bridge(1)
- systemd-umount(1)
- systemd-quotacheck(8)
- systemd-sysext.service(8)
- systemd-notify(1)
- systemd-suspend-then-hibernate.service(8)
- systemd-growfs(8)
- systemctl(1)
- systemd-hibernate-clear.service(8)
- systemd-run(1)
- systemd-pcrlock-firmware-code.service(8)
- systemd-sysusers.service(8)
- environment.d(5)
- systemd-networkd-wait-online(8)
- systemd-initctl(8)
- systemd-remount-fs.service(8)
- systemd.network(5)
- systemd-journald@.service(8)
- systemd-pcrlock-file-system.service(8)
- systemd-hibernate-resume.service(8)
- systemd-tty-ask-password-agent(1)
- systemd-growfs@.service(8)
- systemd-ask-password(1)
- systemd-hibernate-resume-generator(8)
- systemd-sleep(8)
- systemd.image-policy(7)
- systemd-hibernate.service(8)
- systemd.timer(5)
- systemd-boot-check-no-failures.service(8)
- networkd.conf(5)
- systemd-tpm2-setup(8)
- systemd-pcrphase-initrd.service(8)
- systemd-xdg-autostart-generator(8)
- systemd-tmpfiles-setup-dev-early.service(8)
- systemd-binfmt(8)
- systemd-user-sessions(8)
- file-hierarchy(7)
- systemd-socket-proxyd(8)
- localectl(1)
- modules-load.d(5)
- machine-id(5)
- systemd-battery-check.service(8)
- systemd-update-done.service(8)
- systemd.mount(5)
- systemd-machine-id-setup(1)
- systemd-storagetm.service(8)
- systemd-growfs-root.service(8)
- systemd.swap(5)
- systemd-hibernate-resume(8)
- initrd-release(5)
- systemd.target(5)
- sleep.conf.d(5)
- systemd-mkswap@.service(8)
- journald@.conf(5)
- systemd-reboot.service(8)
- systemd-journald.service(8)
- systemd-socket-activate(1)
- systemd-tmpfiles-clean.timer(8)
- systemd-debug-generator(8)
- systemd-cgtop(1)
- systemd-measure(1)
- systemd.service(5)
- systemd.slice(5)
- systemd-remount-fs(8)
- systemd-ssh-generator(8)
- systemd-bsod(8)
- systemd-pcrlock-firmware-config.service(8)
- systemd-bsod.service(8)
- systemd-pcrmachine.service(8)
- logind.conf(5)
- bootup(7)
- kernel-install(8)
- systemd-networkd-wait-online@.service(8)
- systemd-network-generator(8)
- kernel-command-line(7)
- pstore.conf(5)
- rc-local.service(8)
- systemd-confext.service(8)
- systemd-soft-reboot.service(8)
- systemd.system-credentials(7)
- systemd-fstab-generator(8)
- systemd-tpm2-setup-early.service(8)
- systemd-tmpfiles(8)
- systemd.preset(5)
- run0(1)
- user.conf.d(5)
- systemd-pcrlock-machine-id.service(8)
- os-release(5)
- systemd-fsck-root.service(8)
- systemd-battery-check(8)
- systemd.automount(5)
- systemd-pcrfs-root.service(8)
- systemd.kill(5)
- systemd-pcrphase-sysinit.service(8)
- journalctl(1)
- 30-systemd-environment-d-generator(8)
- systemd.socket(5)
- systemd-rc-local-generator(8)
- systemd-sysext(8)
- systemd-fsck@.service(8)
- systemd.time(7)
- systemd-rfkill(8)
- systemd-ask-password-wall.path(8)
- machine-info(5)
- systemd-tpm2-generator(8)
- systemd-binfmt.service(8)
- org.freedesktop.login1(5)
- systemd-delta(1)
- systemd-tmpfiles-clean.service(8)
- systemd-ask-password-wall.service(8)
- user-runtime-dir@.service(5)
- systemd-cgls(1)
- smbios-type-11(7)
- systemd-ask-password-console.service(8)
- systemd.netdev(5)
- systemd-journald-dev-log.socket(8)
- systemd-storagetm(8)
- systemd-journald-audit.socket(8)
- systemd-tmpfiles-setup-dev.service(8)
- systemd-hybrid-sleep.service(8)
- systemd-analyze(1)
- systemd-environment-d-generator(8)
- systemd-hostnamed(8)
- systemd-hostnamed.service(8)
- systemd-pcrextend(8)
- systemd-tmpfiles-setup.service(8)
- systemd.pcrlock(5)
- systemd-tpm2-setup.service(8)
- systemd-suspend.service(8)
- systemd-mount(1)
- org.freedesktop.hostname1(5)
- extension-release(5)
- systemd-makefs@.service(8)
- iocost.conf(5)
- systemd-gpt-auto-generator(8)
- systemd-halt.service(8)
- systemd-modules-load.service(8)
- systemd-sysusers(8)
- systemd-user.conf(5)
- systemd-rfkill.service(8)
- systemd-volatile-root.service(8)
- systemd.scope(5)
- daemon(7)
- journald.conf(5)
apt-get install systemd
Available languages:
en zh_TW zh_CN deManual
BOOTUP
NAME描 述
常 规 启 动 流 程
INITRD(INITIAL RAM DISK) 启 动 流 程
关 机 流 程
参 见
跋
NAME
bootup - 系 统 启 动 流 程
描 述
在 系 统 启 动 过 程 中 要 涉 及 多 个 不 同 的 组 件 。 按 下 电 源 按 钮 后 , 首 先 BIOS/UEFI做 最 基 本 的 硬 件 自 检 与 初 始 化 , 然 后 加 载 预 设 /手 动 选 择 的 磁 盘 /网 络 上 的 引 导 加 载 器 (例 如 GRUB2), 引 导 加 载 器 进 一 步 从 磁 盘 /网 络 上 加 载 操 作 系 统 内 核 (例 如 Linux)。 对 于 Linux来 说 , 内 核 将 会 (可 选 的 )解 压 一 个 initrd(initial RAM disk)镜 像 (可 以 用 dracut (8) 之 类 的 工 具 生 成 ), 并 执 行 由 "rdinit="内 核 引 导 选 项 指 定 的 init程 序 (例 如 systemd (1)) 以 寻 找 并 挂 载 根 文 件 系 统 。 完 成 根 文 件 系 统 的 挂 载 之 后 , 内 核 启 动 由 "init="内 核 引 导 选 项 指 定 的 init程 序 (例 如 systemd (1)) 以 接 管 系 统 的 控 制 权 。 该 init程 序 将 会 负 责 检 测 所 有 其 他 的 硬 件 设 备 、 挂 载 必 要 的 文 件 系 统 、 启 动 所 有 必 要 的 服 务 , 等 等 。
关 机 时 , init程 序 将 会 停 止 所 有 服 务 、 卸 载 所 有 文 件 系 统 、 (可 选 的 )返 回 initrd环 境 卸 载 根 文 件 系 统 , 最 后 关 闭 电 源 。
其 他 有 关 系 统 启 动 流 程 的 信 息 可 以 参 考 boot (7) 手 册 。
常 规 启 动 流 程
当 成 功 挂 载 了 "root="内 核 引 导 选 项 指 定 的 根 文 件 系 统 之 后 , 内 核 将 启 动 由 "init="内 核 引 导 选 项 指 定 的 init程 序 , 从 这 个 时 间 点 开 始 , 即 进 入 了 "常 规 启 动 流 程 ": 检 测 硬 件 设 备 并 加 载 驱 动 、 挂 载 必 要 的 文 件 系 统 、 启 动 所 有 必 要 的 服 务 , 等 等 。 对 于 systemd (1) 系 统 来 说 , 上 述 "init程 序 "就 是 systemd 进 程 , 而 整 个 "常 规 启 动 流 程 "也 以 几 个 特 殊 的 target 单 元 (详 见 systemd.target (5)) 作 为 节 点 , 被 划 分 为 几 个 阶 段 性 步 骤 。 在 每 个 阶 段 性 步 骤 内 部 , 任 务 是 高 度 并 行 的 , 所 以 无 法 准 确 预 测 同 一 阶 段 内 单 元 的 先 后 顺 序 , 但 是 不 同 阶 段 之 间 的 先 后 顺 序 总 是 固 定 的 。
当 启 动 系 统 时 , systemd 将 会 以 default.target 为 启 动 目 标 , 借 助 单 元 之 间 环 环 相 扣 的 依 赖 关 系 , 即 可 完 成 "常 规 启 动 流 程 "。 default.target 通 常 只 是 一 个 指 向 graphical.target(图 形 界 面 ) 或 multi-user.target(文 本 控 制 台 ) 的 软 连 接 。 为 了 强 制 启 动 流 程 的 规 范 性 以 及 提 高 单 元 的 并 行 性 , 预 先 定 义 了 一 些 具 有 特 定 含 义 的 target 单 元 。 详 见 systemd.special (7) 手 册 。
下 面 的 图 表 解 释 了 这 些 具 有 特 定 含 义 的 target 单 元 之 间 的 依 赖 关 系 以 及 各 自 在 启 动 流 程 中 的 位 置 。 图 中 的 箭 头 表 示 了 单 元 之 间 的 依 赖 关 系 与 先 后 顺 序 , 整 个 图 表 按 照 自 上 而 下 的 时 间 顺 序 执 行 。
local-fs-pre.target
|
v
(各 个 mounts 与 (各 个 swap
(各 个 加 密 块 设
备
fsck services...) devices...) devices...) (各 个
底 层 服 务 : (各 个
底 层 虚 拟
| | | udevd, tmpfiles, 文 件 系 统
mounts:
v v v random seed, mqueue, configfs,
local-fs.target swap.target cryptsetup.target sysctl, ...)
debugfs, ...)
| | | | |
\__________________|_________________ |
___________________|____________________/
\|/
v
sysinit.target
|
____________________________________/|\________________________________________
/ | | | \
| | | | |
v v | v v
(各 个 (各 个 | (各 个
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 v
emergency.target
display- (图 形 界 面 所
必 需 (各 个 系 统
服 务 )
manager.service 的 各 个 系 统
服 务 ) |
| | |
| | v
| |
multi-user.target
| | |
\_________________ | _________________/
\|/
v
graphical.target
用 斜 体 标 识 的 目 标 单 元 经 常 被 用 作 启 动 目 标 。 有 两 种 方 法 可 以 指 定 启 动 目 标 : (1)使 用 systemd.unit= 内 核 引 导 选 项 (参 见 systemd (1)); (2)使 用 default.target 软 连 接 。
因 为 timers.target 以 异 步 方 式 包 含 在 basic.target 中 , 所 以 timer 单 元 可 以 依 赖 于 在 basic.target 之 后 才 启 动 的 服 务 。
INITRD(INITIAL RAM DISK) 启 动 流 程
在 initrd内 部 , 也 可 以 将 systemd 用 作 init程 序 (由 "rdinit="内 核 引 导 选 项 指 定 )。
此 时 initrd.target 将 是 默 认 目 标 。 initrd内 部 启 动 流 程 的 上 半 部 分 与 前 一 小 节 basic.target 之 前 的 部 分 完 全 相 同 。 随 后 的 启 动 流 程 将 以 initrd.target 为 目 标 (如 下 图 所 示 )。 当 根 文 件 系 统 设 备 可 用 时 , 将 到 达 initd-root-device.target 目 标 。 如 果 成 功 的 将 根 文 件 系 统 挂 载 到 /sysroot 目 录 , 那 么 sysroot.mount 单 元 将 被 启 动 , 然 后 进 一 步 到 达 initrd-root-fs.target 目 标 。 initrd-parse-etc.service 将 会 分 析 /sysroot/etc/fstab 文 件 以 挂 载 /usr (若 需 要 ) 与 带 有 x-initrd.mount 标 记 的 挂 载 点 。 所 有 这 些 挂 载 点 都 将 被 挂 载 到 /sysroot 之 下 , 然 后 流 程 到 达 initrd-fs.target 目 标 。 再 接 下 来 initrd-cleanup.service 将 会 使 用 systemctl --no-block isolate 命 令 启 动 initrd-switch-root.target 目 标 。 因 为 isolate 表 示 立 即 停 止 所 有 在 新 的 目 标 单 元 中 不 需 要 的 进 程 , 所 以 此 动 作 实 际 上 是 为 接 下 来 切 换 根 目 录 做 预 先 的 准 备 (也 就 是 清 理 环 境 )。 最 后 , 启 动 initrd-switch-root.service 服 务 , 将 系 统 的 根 目 录 切 换 至 /sysroot 目 录 。
(之
前 的 流 程 与 上
一 小 节 完 全 相
同 )
:
v
basic.target
| emergency.service
______________________/| |
/ | v
| initrd-root-device.target
emergency.target
| |
| v
| sysroot.mount
| |
| v
| initrd-root-fs.target
| |
| v
v initrd-parse-etc.service
(各 个 自 定 义 的 |
initrd services...) v
| (sysroot-usr.mount 以 及
| fstab 中 带 有 x-initrd.mount
| 标 记 的 各 个 挂
载 点 )
| |
| v
| initrd-fs.target
\______________________ |
\|
v
initrd.target
|
v
initrd-cleanup.service
(使 用 isolates 启 动
initrd-switch-root.target)
|
v
______________________/|
/ v
| initrd-udevadm-cleanup-db.service
v |
(各 个 自 定 义 的 |
initrd services...) |
\______________________ |
\|
v
initrd-switch-root.target
|
v
initrd-switch-root.service
|
v
切 换 到 主 机 上
的 操 作 系 统
关 机 流 程
systemd 系 统 在 关 机 时 同 样 遵 循 固 定 的 流 程 , 具 体 如 下 图 所 示 :
(与
所 有 系 统 服 务
互 斥 ) (与 所 有 文
件 系 统 mounts, swaps, cryptsetup devices
互 斥 )
| |
v v
shutdown.target umount.target
| |
\____________________________________ ______/
\ /
v
(各 个 底 层 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
用 斜 体 标 识 的 目 标 单 元 经 常 被 用 作 关 机 目 标 。
参 见
systemd (1), boot (7), systemd.special (7), systemd.target (5), dracut (8)
跋
本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。
翻
译 人 员 : 金 步
国
金 步 国 作 品 集
: http://www.jinbuguo.com
中 文 man 手 册 页 计
划 :
https://github.com/man-pages-zh/manpages-zh