CentOS6系统启动流程
1. Linux组成
Linux: kernel+rootfs
- 内核(kernel)的基本功能:
进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能 rootfs:程序和glibc
库:函数集合, function, 调用接口(头文件负责描述)
- 过程调用:procedure,无返回值
- 函数调用:function
- 程序:二进制执行文件
- 查看:ldd可以查看可执行文件所调用的库
内核设计流派:
单内核(monolithic kernel):Linux
把所有功能集成于同一个程序微内核(micro kernel):Windows, Solaris
每种功能使用一个单独子系统实现
- 内核(kernel)的基本功能:
Linux内核
特点:
- 支持模块化:.ko(kernel object内核对象)
如:文件系统,硬件驱动,网络协议等 - 支持内核模块的动态装载和卸载
- 支持模块化:.ko(kernel object内核对象)
组成部分:
核心文件
命令ll /boot/ 查看目录下文件,其中2个相当重要的/boot/vmlinuz-VERSION-release
- 放置核心工具内容,其他相对不是核心的东西分门别类放在/lib/modules下个各种模块中,模块化优点是易于维护。
- 安装之前已经确定好的文件,日期早与系统安装时间
- 文件破坏后修复方法
1. 进入救援模式,方法见后面实验,这里不重复了。
2. 创建一个挂载点/mnt/cdrom,挂载光盘
3. mount /dev/sr0 /mnt/cdrom
4. 进入光盘找到对应文件/mnt/cdrom/isolinux/vmlinuz
5. 拷贝到原系统误删目录下,/mnt/sysimage/boot/vmlinuz-`uname -r`
6. 确认文件是否拷贝
- ramdisk:辅助的伪根系统,使用缓冲和缓存来加速对磁盘上的文件访问,并加载相应的硬件驱动
- CentOS 5: /boot/initrd-VERSION-release.img
initrd解释为init-ramdisk,模拟磁盘
生成工具:mkinitrd - CentOS 6,7: /boot/initramfs-VERSION-release.img
initramfs解释为init-ramfilesystem,模拟分区,效率高于模拟磁盘
生成工具:mkinitrd, dracut
- CentOS 5: /boot/initrd-VERSION-release.img
- 模块文件:/lib/modules/VERSION-release
实验:删除伪根系统文件,然后修复
- 删除initramfs-3.10.0-862.el7.x86_64.img
- 重启系统,在载入画面按一次ESC键,选择CD加载
- 选择Rescue installed system
进入系统后会让选择语言,和键盘,都选英语
网络不用配,选择no
系统挂载信息,这里选择Continue,如果选择read-only则只能看,skip为忽略,也就不挂载,advanced为高级选项,一般用不到。
系统会去找根目录,找到后就会挂载到/mnt/sysimage下,会提示可以使用chroot /mnt/sysimage来切换到原系统根上
选择shell
df查看原根目录挂载点
- 切换到原根目录
命令chroot /mnt/sysimage/ - 进入到被破坏文件的目录下/boot
输入:mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
或者:dracut /boot/initramfs-$(uname -r).img $(uname -r)
- 确认文件已经生成
ls
- 输入两次eixt
- 选择重启
2. CentOS6启动流程
加电自检
加载BIOS的硬件信息,获取第一个启动设备- POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测
- ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等
- RAM:CMOS互补金属氧化物半导体,保存各项参数的设定
MBR引导
- 按次序查找引导设备,第一个有引导程序的设备为本次启动设备,读取MBR的引导,把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
- MBR读取第一扇区的前446个字节去尝试引导操作系统
446: bootloader;64: 分区表; 2: 55AA
GRUB:GRand Unified Bbootloader 引导加载器
- 在MBR引导完成后,开始寻找各操作系统的引导程序,Linux使用的为GRUB加载程序
GRUB有2部分内容,都不能破坏,不然系统无法启动
- primary boot loader : 1st stage,1.5 stage
- 1st stage在MBR前446个字节中,不属于任何分区,里面指针指向2阶段文件
- 1.5 stage在MBR后面的27个sectors
secondary boot loader :2nd stage
文件存放在/boot/grub ,新安装系统grub.conf和图片文件,只要修复一次后,就会将1、1.5、2阶段需要的文件系统驱动文件备份到此目录下,所以关键文件为grub.conf,如下所示#boot=/dev/sda 1:default=0 <==定义启动优先级 2:timeout=5 <==等待倒计时,不指定则按默认启动 3:splashimage=(hd0,0)/grub/splash.xpm.gz <==背景图片 4:hiddenmenu 5:title CentOS 6 (2.6.32-754.el6.x86_64) <==菜单名字,可以修改,也可以再增加几栏 6: root (hd0,0) <==boot分区所在,修复命令中就是这样表示 7: kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=UUID=bc5e1202-11ed-42d4-bbec-16c1d408f809 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet 8: initrd /initramfs-2.6.32-754.el6.x86_64.img
- default:定义启动优先级,例如第5-8行为第一个菜单序号为(0),如果在后再增加一个菜单序号为(1),启动顺序有小到大
- splashimage:菜单栏背景图,图片在/boot/grub/下,后缀为xpm.gz,可修改
- 找到素材,像素大小640/480,导入Linux中
- 安装工具
yum install ImageMagick
- -resize调整大小,-colors定义颜色,原图片,生成格式
- primary boot loader : 1st stage,1.5 stage