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
2
3
4
5
6
timeout 5
default 0
title CentOS
root (hd0,0)
kernel /vmlinuz ro root=/dev/sda1
initrd /initrd.img

常用命令:

1
2
3
grub> root (hd0,0)     # 设置根分区
grub> setup (hd0) # 安装到MBR
grub> cat /grub/menu.lst # 查看配置

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
2
3
4
5
6
boot=/dev/sda
map=/boot/map
default=linux
image=/boot/vmlinuz
label=linux
root=/dev/sda1

应用配置:

1
lilo -v

3.2 SYSLINUX 系列

类型 文件系统 用途
SYSLINUX FAT USB启动
ISOLINUX ISO9660 光盘启动
EXTLINUX ext2/3/4 硬盘启动
PXELINUX 网络 网络启动

PXE启动环境搭建:

  1. 安装必要服务:
1
yum install dhcp tftp-server syslinux
  1. 配置DHCP:
1
2
filename "pxelinux.0";
next-server 192.168.1.100;
  1. 准备TFTP目录:
1
2
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg

4. 系统恢复方法

4.1 救援模式操作

  1. 使用安装介质启动
  2. 进入救援模式
  3. 挂载原系统:
1
chroot /mnt/sysimage
  1. 修复引导:
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. 并行启动:
1
2
3
vim /etc/init/rc-sysinit.conf
# 修改为:
env DEFAULT_RUNLEVEL=2
  1. 禁用不需要的服务:
1
2
chkconfig --list | grep 3:on
chkconfig servicename off
  1. 使用readahead:
1
service readahead-early restart
  1. SSD优化:
    在/etc/fstab添加:
1
noatime,discard