Debian进程的启动顺序有何讲究
导读:Debian 进程启动顺序的要点 一 启动流程概览 固件阶段:现代 PC 通常使用 UEFI,固件按 NVRAM 中的启动项从 **ESP 分区(FAT32,含 EFI/BOOT)**加载引导程序;传统 BIOS/MBR 则从磁盘首扇区加...
Debian 进程启动顺序的要点
一 启动流程概览
- 固件阶段:现代 PC 通常使用 UEFI,固件按 NVRAM 中的启动项从 **ESP 分区(FAT32,含 EFI/BOOT)**加载引导程序;传统 BIOS/MBR 则从磁盘首扇区加载引导代码。随后控制权交给引导加载程序。
- 引导加载:常见为 GRUB,负责加载 内核 vmlinuz 与 initramfs/initrd,并将控制权交给内核。
- 内核阶段:内核完成基础初始化,挂载临时根文件系统(initramfs),然后启动用户空间的第一个进程 /sbin/init(PID=1)。
- 用户空间初始化:init 根据 /etc/inittab 的配置进入默认运行级别,执行系统初始化脚本(如 /etc/init.d/rcS),再按运行级别启动各服务与登录界面。
二 运行级别与切换规则
- 运行级别含义:0 关机、1 单用户维护、6 重启;2–5 均为多用户,在 Debian 中通常不作区分,默认进入 2。
- 切换与控制:默认级别由 /etc/inittab 的 id:x:initdefault: 指定;切换运行级别可用 telinit N 或 init N,使系统按新级别执行相应启动/停止流程。
三 服务启动顺序与命名规则
- 启动目录:各运行级别对应 /etc/rcN.d(N=0…6),其中的条目是指向 /etc/init.d 的符号链接。
- 命名约定:链接名以 S/K + 两位数字 + 服务名 组成。切换级别时,先按数字与字母顺序对所有 K 开头的脚本执行 stop,再对所有 S 开头的脚本执行 start;数字越小越早执行,数字相同按字母序。
- 示例:在 /etc/rc2.d 中可见如 S01motd、S16rsyslog、S17apache2 等,表示按该顺序启动;这些文件实际是 /etc/init.d 中脚本的链接。
四 登录与会话的拉起
- 虚拟终端:由 /etc/inittab 中的 getty 项按需拉起(如 1:2345:respawn:/sbin/getty 38400 tty1),动作 respawn 表示进程退出后自动重启,以提供持续登录提示。
- 图形会话:运行级别切换或启动完成后,按需启动显示管理器(如 gdm3),进入 X/Wayland 会话。
- SSH 登录:由 sshd 服务在后台监听并提供登录认证,与本地 getty 并行存在。
五 自定义顺序与最佳实践
- 调整顺序:不要直接改动 /etc/rcN.d 的文件名,使用 update-rc.d 或 invoke-rc.d 管理服务与启动顺序,例如:
- 将服务加入运行级别并设定顺序:
- update-rc.d nginx defaults 20 80(20 为启动优先级,80 为停止优先级)
- 临时切换级别测试:
- telinit 3(切到多用户命令行),确认无误后再切回 2 或 5。
- 将服务加入运行级别并设定顺序:
- 依赖与分层:将基础网络/日志/存储类服务赋予较小序号,依赖它们的应用赋予较大序号;如需在切换级别时正确关停,确保脚本支持 start/stop 参数并具备幂等性。
- 现代替代:部分新系统采用 systemd,其依赖关系与并行启动由单元文件描述,但仍提供对 SysV 脚本的兼容层;若使用 systemd,应通过 systemctl enable/disable 管理服务,而非手工改动 rcN.d。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian进程的启动顺序有何讲究
本文地址: https://pptw.com/jishu/769015.html
