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