linux 根文件系统启动流程
当init服务运行rc.sysinit时 要依次完毕以下一系列工作:
(1)启动udev
(2)设置内核參数
运行sysctl –p,以便从/etc/sysctl.conf设置内核參数
(3)设置系统时间
将硬件时间设置为系统时间
(4)启用交换内存空间
运行swpaon –a –e,以便依据/etc/fstab的设置启用全部的交换内存空间。
(5)检查并挂载全部文件系统
检查全部须要挂载的文件系统。以确保这些文件系统的完整性。检查完成后以可读可写的方式挂载文件系统。
(6)初始化硬件设备
Linux除了在启动内核时以静态驱动程序驱动部分的硬件外,在运行rc.sysinit时,也会试着驱动剩余的硬件设备。rc.sysinit驱动的硬件设备包括下面几项:
a)定义在/etc/modprobe.conf的模块
b)ISA PnP的硬件设备
c)USB设备
(7)初始化串行port设备
Init服务会管理全部的串行port设备。比方调制解调器、不断电系统、串行port控制台等。Init服务则通过rc.sysinit来初始化linux的串行port设备。
当rc.sysinit发现linux才干在这/etc/rc.serial时。才会运行/etc/rc.serial。借以初始化全部的串行port设备。因此,你能够在/etc/rc.serial中定义怎样初始化linux全部的串行port设备。
(8)清除过期的锁定文件与IPC文件
(9)建立用户接口
在运行完3个基本的RC Script后,init服务的最后一个工作,就是建立linux的用户界面,好让用户能够使用linux。此时init服务会运行下面两项工作:
(10)建立虚拟控制台
Init会在若干个虚拟控制台中运行/bin/login。以便用户能够从虚拟控制台登陆linux。linux默认在前6个虚拟控制台。也就是tty1~tty6,运行/bin/login登陆程序。当全部的初始化工作结束后。cpu_idle()函数会被调用来使系统处于闲置(idle)状态并等待用户程序的运行。