您的位置:首页 > 运维架构 > Linux

Linux的开机启动流程

2013-04-13 23:27 183 查看
Linux的开机启动流程

《鸟哥的Linux私房菜之基础篇》学习笔记(一)
1.加载
BIOS(BasicInput Output System)
的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置;


2.读取并执行第一个开机装置内MBR(MasterBootRecord,主引导分区)的
bootLoader (亦即是
grub,spfdisk 等程序);

重点说明一下Linux中最主流的bootloader
:Grub
由于MBR是硬盘的第一个扇区内的一个数据块,其整个大小不能满足bootloader程序代码和设置数据的需求,所以Linux将bootloader的程序代码执行与设置值加载分成两个阶段:
a.Stage1:执行bootloader主程序
b.Stage2:主程序加载配置文件
其中grub的配置文件是/boot/grub/menu.lst,可以对其进行配置.

3.依据
bootloader 的设定加载
Kernel,Kernel 会开始侦测硬件与加载驱动程序;


bootloader加载完内核后,由于驱动程序常被编译成内核模块,放置于/lib/modules/$(uname-r)/kernel/中,这些模块必须要根目录被挂载时才能够被读取,但是如果内核本身不具备磁盘的驱动程序时,当然无法挂载根目录,也就没有办法取得驱动程序.此时bootloader
会加载/boot/initrd(虚拟文件系统)到内存中,然后这个文件会被解压缩并仿真成一个根目录,且此仿真在内存中的文件系统能够提供一个可执行的程序,通过该程序来加载启动过程中所需要的内核模块.

4.在硬件驱动成功后,Kernel会主动呼叫
init程序,而
init会取得 run-level信息;


/sbin/init通过配置文件/etc/inittab取得run-level信息.

5.init
执行 /etc/rc.d/rc.sysinit档案来准备软件执行的作业环境(如网络、时区等);

init通过/etc/rc.d/rc.sysinit这个脚本进行系统的初始化工作.

6.init
执行 run-level的各个服务之启动
(script方式);

启动run-level所对应的系统服务,各个不同的run-level服务启动的shellscrips在/etc/rc.d/rcN中,其中的脚本都是连接文件,连接到standalone服务启动的目录/etc/init.d/.

7.init
执行 /etc/rc.d/rc.local档案;

/etc/rc.d/rc.local是用户自定义的开机启动程序,用户如果有想要在启动时就进行的工作,可直接将它写入/etc/rc.d/rc.local,那么该工作就会在启动的时候自动被加载;

8.init
执行终端机仿真程序 mingetty来启动
login程序,等待用户登入;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: