linux的启动流程详解
1、系统加载bios,并透过bios加载coms,由coms内的设定取得主机的各硬件信息,然后bios进行自检
2、bios通过硬件的INT 13中端功能来读取MBR,由MBR加载bootloader。
1.bootloader可以安装在文件系统的根分区和磁盘的MBR上面,在多重系统启动的环境中,例如windows
和linux共存,这个时候要先装windows再装linux,因为windows默认会将bootloader同时装在MBR和系统的根分区上面,而装linux的时候我们可以选择安装bootloader到MBR也可以选择不安装,多重启动环境中MBR常被不同系统的bootloader所覆盖
2.bootloader的主要功能:
1.提供选项:用于多重引导
2.载入系统内核
3.转交其他的bootloader
3.默认情况下windows的bootloader不具有转交的功能,因此我们先装windows再装linux,让linux的bootloader覆盖掉windows安装在MBR上面的bootloader,这样启动时我们既可以使用bootloader启动linux也可以转交给windows的bootloader用来启动windows了。
3、bootloader加载内核,内核被解压缩在内存当中,并借由内核的功能来驱动各硬件设备。
kernel的主要工作:1.硬件探测2.驱动程序初始化3.以只读方式加载根文件系统4.启动init进程
kernel启动时候的所有信息在/var/log/demesg
boot所在的位置不能是lvm,也不能是raid(软),最多是raid1,MBR的前446字节没有多余的地方加载其他的驱动程序,否则内核就无法被加载。
1.内核被放置在/boot目录内,有些设备的驱动内核以模块化的方式来加载,而这些模块放置在/lib/modules目录中,所以在装系统时/lib和/一定要在同一个分区,因为内核是通过挂载根来读取模块加载的,开机过程中根目录是以只读方式来挂载的。
2.内核里面只有基本设备的驱动程序,其他的则被做成模块放在/lib/modules里面以实现动态加载,如果/目录在特殊的设备上面,例如SATA硬盘,LVM或者RAID上面,内核里面没有内置这些设备的驱动,这时候内核就需要借助initrd来实现根的挂载了。
3.initrd称为虚拟文件系统,里面内置各种驱动程序,它存在得意义就是为了提供驱动,好让内核能顺利的挂载/目录,initrd的版本一定是和内核版本一致的。initrd不是总会被使用到的,例如/文件系统在IDE接口的硬盘上时,内核自己就直接挂载了。
4、启动init进程,init读取/etc/inittab配置文件,并且根据配置文件的内容来完成一系列的任务。
inittab文件的主要内容
id:3:initdefault: 读取系统启动的级别
si::sysinit:/etc/rc.d/rc.sysinit 执行系统的初始化脚本
1,激活udev和selinux
2,通过读取/etc/sysct1.conf来设置内核参数
3,设置系统始终
4,加载键映射
5,启用交换分区
6,设置主机名
7,检查根文件系统,无错后重新以读写方式挂载根文件系统
8,激活RAID和LVM设备
9,启动磁盘配额
10,挂载其他文件系统
11,清理过时的文件锁和PID文件
根据响应的启动级别来执行相应启动级别的脚本,主要是在哪些启动级别要启动哪些系统服务,/etc/rc.d/rc{0,1,2,3,4,5,6}中以K开头的都是关闭,数字越小越早关闭,以S开头的都是开启的,数字越小启动越早,这些文件中的都是链接文件,链接至/etc/init.d/目录下,来说明哪些程序是开机启动的
相关新闻>>
- 发表评论
-
- 最新评论 更多>>