CentOS5和6开启启动
- CentoS5和6开机启动基本相似的,到了CentOS7才有了大的改变
- 当CentOS和Windwos开机也是有很多相似的地方的,请看下图
ROM
- ROM-Read Only Memory只读存储器,如我们主板的BIOS芯片
-BOIS(Basic Input and Output System),保存着有关计算机系统最重要的基本输入输出程序 - 断电后信息不丢失,如计算机启动用的BIOS芯片。存取速度很低,(较RAM而言)且不能改写
- 由于不能改写信息,不能升级,现已很少使用
- 还有系统信息设置、开机加电自检程序和系统启动自句举程序等
RAM
- RAM-RamdomAccessMemory易挥发性随机存取存储器,高速存取,读写时间相等
- 且与地址无关,如计算机内存等
- 但是他一断电数据就丢了,所以和他配合的有一块CMOS电池,来保存里面的数据如时间等
启动流程介绍
POST加电自检
- POST(Power-On-Self-Test),翻译出来就是加电自检
- POST加电自检也就是在我们主板上有一个ROM,也就是BIOS,他只是只读的
- 他是固化在我们主板的ROM里面的,他的作用就是开机的时候帮我们来检查各种硬件
- BOIS还有一个功能就是选择第一启动引导和等等修改硬件参数
- BOIS是不支持现在最新的GPT分区,GPT分区只有UEFI引导才支持
MBR引导
- BIOS是配合的MBR引导,装系统的时候千万要注意哦,童鞋们
- MBR是比较传统的引导了,一般适用与家庭电脑用户
- MBR存放在我们硬盘的446字节的第一个扇区,他对应的MBR里面存放了,三部分内容,446字节,64字节的分区表,无为的标志位
bootloader:引导加载器,引导程序
- BootLoader是在操作系统内核运行之前运行
- 可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境
- 早起的系统用的是LILO(Linux LOader)不过已经淘汰
- 最新的都用的是GRUB()GRand Unified Bootloader)现在已经有很多版本,他还可以敲命令和加密等等,如我们现在的Linux系统
GRUB
- GNU GRUB 和GRUB是GRand Unified Bootloader的缩写
- 它是一个多重操作系统启动管理器。用来引导不同系统,如windows,linux
- 上面所说的446字节里面就放这GRUB的一小部分
加载内核
- GRUB 运行成功以后就开始加载内核了
- 内核加载完毕以后就开始运行我们第一个进程,init进程
- init进程运行的话,他有一些初始化脚本如/etc/inittab等等,最终你就会看到一个登录界面出来了,中间的脚本一定要会
启动流程进阶
MBR:第一阶段
- 446: bootloader, 64: 分区表, 2: 55AA
- 446字节不属于任何分区,他表现是二进制
1.5阶段
- primary boot loader : 1st stage,1.5 stage
- 1.5阶段,就在MBR后续的分区里面,也就是后续的扇区里面
- 因为一阶段存放不了驱动,就没法加载二阶段
- 1.5阶段就是为了支持二阶段而存在
- 因为二阶段,对应的是/boot分区,没有1.5阶段就进不去二阶段,二阶段的驱动你加载不了,进而就读取不了二阶段的相关文件,所以他的驱动就放在MBR后续的扇区里面
GRUB:第二阶段
- 二阶段是放在/boot/grub目录下的文件 ,他是依赖于1.5阶段
- secondary boot loader :2nd stage,分区文件
kernel:
- 自身初始化:
- vmlinz文件功能他主要探测可识别到的所有硬件设备,当然ext4的文件驱动也不可能会放在里面,因为他有一个单独的文件来放那就是initramfs文件来放ext4驱动
- 内核的文件驱动和FRUB的加载文件驱动是两码事
- 我们驱动一共是分三部分来存放:核心的是放在/boot/vmlinuz最重要的 、其二是在/boot/initramfs这里放的是额外的一些驱动、其三是放在/lib/modules剩下的大部分驱动是放在这个目录下
- 硬件驱动程序借助于initramfs(虚拟文件系统)加载必要的驱动他才能去挂载操作系统的根
-
initramfs
这个文件是安装系统的时候生成的,不是从光盘里面拷出来的,所以他的时间是你刚安装时候的时间,但是在CentOS5
上名字不一样叫initrd
- 他们的区别是
CentOS5
直接模拟文件系统,CentOS6
模拟磁盘通过文件系统读取数据 - 然而vmlinuz(内核文件)文件是出厂的时候就自带的,所以他的时间是出厂时候的时间
- 以只读方式挂载根文件系统
- 运行用户空间的第一个应用程序:/sbin/init
ramdisk命令
内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问,并加载相应的硬件驱动
- ramdisk --> ramfs 提高速度
- CentOS 5: initrd
- 工具程序:mkinitrd
- CentOS 6,7: initramfs
- 工具程序:mkinitrd, dracut-
ramdisk文件的制作:
- (1) mkinitrd命令
- 为当前正在使用的内核重新制作ramdisk文件
- mkinitrd /boot/initramfs-(uname -r)
- (2) dracut命令
- 为当前正在使用的内核重新制作ramdisk文件
- dracut /boot/initramfs-(uname -r)
详情情况请看:错误方案解决区
系统初始化:
- POST-->BootSequence(BIOS)-->Bootloader(MBR)--> kernel(ramdisk)-->rootfs(只读)--> init(systemd
init程序的类型
- 系统的第一个进程
- SysV: init, CentOS 5之前
- 配置文件:/etc/inittab
- Upstart: init,CentOS 6
- 配置文件:/etc/inittab, /etc/init
- Systemd:systemd, CentOS 7
- 配置文件:/usr/lib/systemd/system
- /etc/systemd/system