Linux系统教程:定制5M的RedHat 5.8系统
对系统的裁剪首先要先了解系统的整个启动流程,明白其所需要的配置文件;这样在操作的时候才能清楚自己在做什么,以及需要做什么
启动流程详解
POST-->BIOS(Boot Sequence) -->MBR读取BootLoader--->Kernel~initrd~-->init(/etc/inittab)
计算机本身不会执行程序,系统刚刚启动的时候会将某个ROM中的程序映射到cpu可以寻址的地址空间中去并且能够让cpu能够执行其中的指令,这些指令就是完成系统检测的,检测完成后如果核心硬件没有问题时,紧接着根据BIOS中所设定的启动流程去依次的寻找对应设备上的MBR;如果MBR存在就会读取MBR中的Bootloader,Bootloader中配置了所有引导的操作系统的内核所在位置,然后将内核装载到内存,进行解压缩并完成内核初始化以后,Bootloader将控制权交给内核
内核初始化
内核初始化完成的工作;硬件探测-->装载驱动-->挂载根文件系统-->启动用户空间的第一个进程(即init)。init本身的配置文件是/etc/inittab 红帽6上是upstart(也称呼为init,upstart的配置文件在/etc/inittab和/etc/init/*.conf的文件
initrd介绍
内核完成初始化要依赖于驱动程序,这些驱动程序如果没有直接做在内核当中的时候,就需要到某个文件路径去装载这个驱动程序,当内核访问根文件系统的设备,但是设备驱动没有直接装载到内核时,内核首先要到文件系统上找这个设备驱动,但是文件系统又没有被挂载,initrd就是内核与文件系统的中间人。initrd有内核所依赖到的额外的设备驱动,最重要的是根文件系统的驱动内核是借助initrd为内核提供访问真正的文件系统所需要的基本驱动程序所以initrd是个辅助性的过渡性的中间层,能够实现将kernel与真正的文件系统连接起来的,连接之后,工作即完成了
init主要完成的工作
init的功能即是在inittab配置文件内容定义,主要是:设置默认运行级别、系统初始化脚本(依赖脚本/etc/rc.d/rc.sysinit)、运行指定级别的服务脚本(服务脚本在/etc/rc.d/init.d/目录下,这些服务脚本都有链接,即链接到/etc/rc.d/rc#.d/目录下,#代表是系统的运行级别(rc0.d--rc6.d),还有最后一个运行的脚本rc。local 设置ctrl+alt+delet组合键的意义 设置突然断电时的程序 设置电源恢复后的程序然后启动虚拟终端。(有了默认运行级别及初始化脚本,系统就可以跑起来的)
/etc/rc.d/rc.sysinit主要功能
在inittab执行的第二步是执行/etc/rc.d/rc.sysinit脚本程序,检测,并且以读写方式重新挂载根文件系统;设定主机名;检测并挂载/etc/fstab中的其他文件系统;激活交换分区;启用swap分区初始化外围硬件设备的驱动;根据/etc/sysctl.conf设定内核参数激活udev和selinux;激活lvm和RAID设备清理过期锁和FID文件