1. BIOS加载
    1. 加载CMOS的信息获得设置值
    2. 进行开机自检
    3. 定义出可启动的设备顺序
    4. 装载BootLoader程序
  2. BootLoader
    1. 一个系统只有一个MBR
    2. 一个文件系统会有一个引导扇区(boot sector)去引导对应文件系统,也可以安装到MBR
    3. Linux的BootLoader(如grub)装载到MBR中可以提供菜单和转交引导权给其他Loader
      1. grub
        1. 执行在MBR或boot sector的bootloader主程序
        2. 加载配置文件
          1. /boot/grub/
          2. /boot/grub/menu.lst启动菜单
          3. default 默认选中的菜单
          4. timeout 超时
          5. splashimage 启动图标
          6. hiddenmenu 默认显示菜单
          7. root 根目录放置的磁盘
          8. root (hd0,0)
          9. kernel 内核的路径
          10. kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet
          11. root使用LABEL来挂载 rhgb使用彩色 quiet不显示内核信息 single 使用单用户
          12. 如果single都解决不了(inittab配置错误导致无法启动) init=/bin/bash使用这个
          13. initrd initrd的路径
          14. chainloader 权限移交给下一个loader
    4. 最终的BootLoader负责加载kernel文件
  3. 内核和initrd
    1. 内核详解
      1. 文件
        1. 内核/boot/vmlinuz
        2. 内核解压缩/boot/initrd-version
        3. 内核模块/lib/modules/$(uname -r)/kernel
        4. 内核源码/usr/src/linux或/usr/src/kernels(不一定存在)
        5. 模块配置/etc/modprobe.conf
      2. 加载后会记录
        1. 内核版本/proc/version
        2. 系统内核功能/proc/sys/kenel
      3. 常用命令
        1. depmod
          1. 分析模块依赖性
        2. lsmod
        3. insmod
        4. rmmod
        5. modprobe
          1. 加载模块(解决依赖性)
    2. 内核会再次检查一次硬件
    3. 内核文件:/boot/vmlinuz
    4. initrd
      1. 原因:磁盘设备的驱动程序(IDE不需要)以模块的方式存在,无法挂载目录获取驱动
        1. SATA等连接接口 LVM、RAID等特殊格式
      2. 作用:在内存中仿真一个根目录并提供程序(linuxrc)来引导如磁盘驱动的程序
        1. 自己制作虚拟磁盘文件:mkinitrd
    5. 执行/sbin/init
  4. 0 关机 1 单用户 2 没有网络功能的多用户 3 有网络功能的多用户 4 保留 5 加载使用X Window 6 重新启动
  5. init
    1. 配置文件:/etc/inittab(Centos7以上不再使用 使用sytemd)
      1. runlevel
      2. 可以设置默认的runlevel
      3. 设置tty[1-6]
    2. 执行/etc/rc.d/rc.sysinit来设置如网络时区等
      1. 很多工作默认配置文件放在/etc/sysconfig中
        1. authconfig
        2. clock
        3. i18n
          1. 语系
        4. keyboard & mouse
        5. network
        6. network-scripts
    3. 执行run-level各服务的启动(/etc/rc.d/rc[0-6].d
      1. chkconfig负责链接rc[0-6]d/目录下雨/etc/init.d/下服务的链接关系
        1. 切换运行等级的时候,如果多出来的文件
          1. K开头 关闭
          2. S开头 打开
    4. 执行/etc/rc.d/rc.local
    5. 执行终端机模拟程序mingetty来启动login进程
  6. 总结
    1. BIOS,MBR,Loader,kernel+initrd,/sbin/init