温馨提示×

Debian From Scratch的启动过程是怎样的

小樊
38
2025-12-15 01:22:35
栏目: 智能运维

Debian From Scratch 的启动流程概览

  • 启动过程与传统 Debian 一致,分为硬件上电自检、引导加载、内核初始化、用户空间初始化与登录四个阶段。DFS 的差别在于这些组件多由你自行构建与配置,而不是由安装器自动完成。总体链路为:BIOS/UEFI → MBR/GPT → GRUB → vmlinuz + initramfs → /sbin/init(或 systemd)→ 登录。其中 /boot 下通常包含 vmlinuz-<版本>initrd.img-<版本> 等文件,供 GRUB 加载内核与早期用户空间使用。

阶段一 固件与引导加载

  • 固件阶段:主板 BIOS/UEFI 完成自检并选择启动介质(USB/硬盘/光盘)。传统 MBRGPT 分区表决定如何定位引导代码。
  • 引导阶段:执行磁盘上的引导代码(如 GRUB)。GRUB 读取配置文件(常见为 /boot/grub/grub.cfg),加载指定的 内核镜像 vmlinuzinitramfs,并将控制权交给内核。若使用 UEFI,还会从 EFI 系统分区(ESP) 加载 GRUB 的 EFI 程序。

阶段二 内核与早期用户空间

  • 内核初始化:内核解压到内存后完成核心子系统初始化,挂载 rootfs(根文件系统),并启动第一个用户空间进程(传统为 /sbin/init,现代系统多为 systemd,其 PID 为 1)。
  • 早期用户空间:若根文件系统位于 LVM/RAID/Btrfs/ZFS 或需要加载专有驱动,内核会先借助 initramfs 提供的临时根环境与驱动完成根切换(pivot_root),然后再挂载真正的根分区。

阶段三 用户空间初始化与登录

  • 运行级别与初始化脚本(SysV 风格):读取 /etc/inittab 确定默认运行级别(如 2–5 为多用户),按顺序执行 /etc/rcS.d(系统级早期初始化)与 /etc/rcN.d(对应运行级别)中的脚本链接,这些链接指向 /etc/init.d 的实际服务脚本,按编号从小到大启动/停止服务。
  • systemd 风格(若采用):由 systemd 并行启动单元(target),替代传统的 rcN.d 脚本体系,完成网络、日志、登录等服务与目标的激活。
  • 登录环节:启动 getty 提供本地终端登录,或通过 sshd 提供远程登录;完成认证后为用户启动配置的 shell

DFS 场景下的关键要点与排查

  • 引导配置:确保 /boot/grub/grub.cfg 正确指向你的 vmlinuzinitramfs;UEFI 需安装到 ESP 并生成正确的 EFI 条目(如使用 grub-install --target=x86_64-efi --efi-directory=/boot/efi 后执行 grub-mkconfig -o /boot/grub/grub.cfg)。
  • 根文件系统与 initramfs:若根在 LVM/加密/RAID,需在内核参数或 initramfs 配置中启用相应模块与工具,确保能顺利切换根;必要时重新生成 initramfs(如使用 update-initramfs -u)。
  • 早期登录问题:若显卡驱动导致图形阶段卡死,可在 GRUB 启动项的内核命令行末尾临时添加 nomodeset 以进入系统后再安装合适驱动。

0