6、到此内存中已经加载了 kernel 并使用kernel 的功能来侦测硬件以及尝试挂在根目录取得额外的驱动程序,但是现在的内核不认识磁盘,没办法挂在根目录,所以也就没法读取 /lib.modules/内的驱动
7、内核不认识磁盘,那如何挂在跟目录,如何加载驱动,那就得借助 虚拟文件系统(也叫临时文件系统 initrd)来解决
8、虚拟文件系统的特色是,他能够通过 boot loader 加载到内存中, 然后这个档案会被解压并在内存中仿真成为一个根目录,且此仿真目录能够提供一支可执行的程序,透过这个程序来加载开机过程中所需要的模块,而通常这些模块就是 USB RAID SCSI 等文件系统与磁盘接口的驱动程序,等这些程序载入完毕后 会帮助核心重新呼叫 /sbin/init 来开始后续的正常开机流程。
9、到此kernel 加载了需要的驱动程序,因为有了驱动可以找到磁盘,所以就挂载了 根目录文件系统,并释放这个虚拟文件系统。
10、核心主动加载第一个用户级程序 /sbin/init
五、第一个用户级程序init ,及配置文件 /etc/inittab 以及运行等级 run level
1、在核心加载完毕,进行硬件信息这测与驱动程序加载之后,此时你的主机硬件应该已经准备就绪了,此时核心会主动的呼叫第一个用户级程序,那就是 /sbin/init (init 被称为所有进行的祖进程,也是第一个启动的用户级进程)
2、 /sbin/ init 最主要的功能就是准备软件执行的环境,包括系统的主机名,网络设定,语系设置,系统文件格式及其他服务的启动, 而所有的动作都会透过 init 的配置文件及 /etc/inittab 来规划。
3、 /etc/inittab 中配置了系统的运行级别 , 这个档案的最下面 有 id : n : initdefault 这就是设置的系统运行级别
4、为何要设置系统的运行级别,这个有什么不同: linux藉由 设定的 run level 来规划,系统使用不同的服务来启动,让linux 的使用环境不同,按照有无网络与有无 xwindow可分为 7 个等级
5、 run level 运行级别
(0)、run level 0: 关机
(1) 、run level 1 : single mode 即单人维护模式,一般忘记 root的密码,系统有问题什么的使用这个模式
(2)、run level 2 : without NFS 即无NFS系统
(3)、run level 3: 完整含有网络功能的纯文本模式
(4)、run level 4: 系统保留
(5)、run level 5: xwinods 与3 是类似的只是纯文本变为窗口模式
(6)、run level 6: 重启 reboot
6、启动时执行一次的文件, /etc/rc.d/rc.sysinit 即系统的数据设定完成!
7、启动系统 服务与 启动配置文件 /etc/rc,d/rc n(你的系统级别,按照不同的级别启动不同的服务) /etc/sysconfig
8、加载核心让整个系统准备接受指令来工作,在经过 /etc/rc.d/rc.sysinit 的系统模块与相关硬件信息的初始化,你的系统应该已经顺利工作了!
六、运行级别的切换
1、事实上不同的运行级别 只是加载的服务不同,,这里已 run level 3 和 run level 5 为列: 只是他们的 /etc/rc.3d 和 /etc/rc.5d 内的Sxxname 和 Kxxname 不同而已
2、先对比 /etc/rc.3d 和 /etc/rc.5d 内k 和 s开头的档案
3、在新的 run level 内多的 K 都被关闭掉
4、在新的 run level 内多的S 都被开启,而都存在的就不用管了。
ok 这样运行级别就转化过来了!