13.系统启动
1. 系统启动流程
1.1 启动阶段详解
阶段 | 组件 | 功能说明 |
---|---|---|
1 | BIOS | - 硬件自检(POST) - 读取CMOS设置 - 检测启动设备顺序 - 加载MBR中的BootLoader |
2 | MBR | - 512字节(启动代码+分区表) - 包含第一阶段BootLoader - 标识活动分区 |
3 | BootLoader | - 阶段1: MBR中的初始代码 - 阶段1.5: 文件系统识别 - 阶段2: 加载内核(/boot/grub/) |
4 | 内核 | - 硬件检测与初始化 - 加载驱动模块 - 挂载根文件系统 - 启动init进程(PID=1) |
5 | init进程 | - 根据/etc/inittab初始化系统 - 启动运行级别对应服务 - 生成所有后续进程 |
1.2 inittab 文件格式
1 | id:runlevels:action:process |
主要action类型
action | 说明 |
---|---|
boot | 系统启动时执行,不等待完成 |
bootwait | 系统启动时执行,等待完成 |
ctrlaltdel | 捕获Ctrl+Alt+Del组合键 |
initdefault | 设置默认运行级别 |
once | 进入运行级别时执行一次 |
respawn | 进程终止后自动重启 |
sysinit | 系统初始化脚本 |
wait | 进入运行级别时执行并等待 |
1.3 运行级别管理
标准运行级别
级别 | 说明 |
---|---|
0 | 关机 |
1/S | 单用户模式 |
2 | 多用户无NFS |
3 | 完整多用户模式 |
4 | 自定义 |
5 | 图形界面 |
6 | 重启 |
服务管理脚本
1 | /etc/init.d/service [command] |
命令 | 作用 |
---|---|
start | 启动服务 |
stop | 停止服务 |
restart | 重启服务 |
reload | 重载配置 |
status | 查看状态 |
服务自启动管理
RedHat系(chkconfig):
1 | chkconfig [选项] 服务名 [on|off] |
选项 | 说明 |
---|---|
–list | 显示服务状态 |
–level | 指定运行级别 |
–add | 添加服务 |
–del | 删除服务 |
Debian系(update-rc.d):
1 | update-rc.d [选项] 服务名 [commands] |
选项 | 说明 |
---|---|
-n | 模拟执行 |
-f | 强制操作 |
remove | 删除链接 |
1.4 Upstart 事件驱动
主要命令:
1 | initctl [command] job |
命令 | 功能 |
---|---|
start | 启动作业 |
stop | 停止作业 |
restart | 重启作业 |
status | 查看状态 |
list | 列出所有作业 |
配置文件位置:
1 | /etc/init/*.conf |
2. GRUB 引导加载器
2.1 GRUB Legacy vs GRUB2
特性 | GRUB Legacy | GRUB2 |
---|---|---|
版本 | 0.9x | 1.9x |
配置文件 | menu.lst | grub.cfg |
生成方式 | 直接编辑 | update-grub |
分区表示 | (hd0,0) | hd0,msdos1 |
2.2 GRUB Legacy 配置
/boot/grub/menu.lst 示例:
1 | timeout 5 |
常用命令:
1 | grub> root (hd0,0) # 设置根分区 |
2.3 GRUB2 配置
/etc/default/grub 关键参数:
参数 | 说明 |
---|---|
GRUB_DEFAULT | 默认启动项 |
GRUB_TIMEOUT | 菜单超时 |
GRUB_CMDLINE_LINUX | 内核参数 |
生成配置:
1 | update-grub |
2.4 内核启动参数
参数 | 作用 |
---|---|
root=/dev/sda1 | 指定根分区 |
ro/rw | 只读/读写挂载 |
init=/bin/bash | 指定初始化程序 |
single | 单用户模式 |
mem=1024M | 限制内存大小 |
查看当前参数:
1 | cat /proc/cmdline |
3. 其他引导加载器
3.1 LILO 配置
/etc/lilo.conf 示例:
1 | boot=/dev/sda |
应用配置:
1 | lilo -v |
3.2 SYSLINUX 系列
类型 | 文件系统 | 用途 |
---|---|---|
SYSLINUX | FAT | USB启动 |
ISOLINUX | ISO9660 | 光盘启动 |
EXTLINUX | ext2/3/4 | 硬盘启动 |
PXELINUX | 网络 | 网络启动 |
PXE启动环境搭建:
- 安装必要服务:
1 | yum install dhcp tftp-server syslinux |
- 配置DHCP:
1 | filename "pxelinux.0"; |
- 准备TFTP目录:
1 | cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ |
4. 系统恢复方法
4.1 救援模式操作
- 使用安装介质启动
- 进入救援模式
- 挂载原系统:
1 | chroot /mnt/sysimage |
- 修复引导:
1 | grub-install /dev/sda |
4.2 常见修复场景
问题 | 解决方案 |
---|---|
MBR损坏 | dd if=/usr/share/syslinux/mbr.bin of=/dev/sda |
GRUB损坏 | grub-install /dev/sda |
文件系统错误 | fsck -y /dev/sda1 |
密码重置 | init=/bin/bash 启动后修改密码 |
5. 启动优化技巧
- 并行启动:
1 | vim /etc/init/rc-sysinit.conf |
- 禁用不需要的服务:
1 | chkconfig --list | grep 3:on |
- 使用readahead:
1 | service readahead-early restart |
- SSD优化:
在/etc/fstab添加:
1 | noatime,discard |