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

linux开机启动流程

2012-08-17 10:31 204 查看
linux的基础启动流程

1. 加载BIOS的硬件信息,并获取第一个启动设备的代号。

2. 读取第一个启动设备的MBR的引导加载程序(即lilo、grub、spfdisk等)的启动信息。

3. 加载操作系统的核心信息,核心开始解压,并尝试驱动所有的硬件设备。

4. 核心执行init程序并获得运行信息。

5. init执行/etc/rc.d/rc.sysinit文件。

6. 启动核心的外挂模块(/etc/modprobe.conf)。

7. init执行运行的各个批处理文件(Script)

8. init执行/etc/rc.d/rc.local文件。

9. 执行/bin/login程序,等待用户登录。

10. 登录之后开始以shell控制主机。

1. linux核心的引导

操作系统的核心是放在文件系统中的,要想正确加载核心就必须提前识别文件系统。系统刚启动的时候,就需要通过引导加载程序(即lilo、grub、spfdisk等)来识别文件系统,引导核心。要想加载linux的核心就必须能识别linux的文件系统,要加载windows核心就必须能识别windows文件系统。而grub是同时支持linux和windows的。但windows的加载程序并不支持linux文件系统,所以在多重启动设置的时候,总是要先装windows而后装Linux。

核心文件在哪里呢?一般来说,它会放在/boot里,并且取名为/boot/vmlinuz。

在加载核心的过程中,必须知道,系统只会“载入根目录”,并且是以只读方式载入的。有时为了让某些功能可以用文件的方法来读取,有的系统在启动的时,会建立虚拟盘(ramdisk),这就需要使用initrd以及linuxrc了。在加载核心的时候,一起加载initrd的映像文件(boot/initrd-xxxx.img),并利用linuxrc(在initrd的映像文件内)程序来加载模块。在核心驱动外部硬件的工作完成之后,initrd所建立的虚拟盘就会被删除。

2. 第一个程序init的加载和runlevel设置

在核心加载完成之后,系统就准备好了,等待程序的执行。整个linux系统中,第一个执行的程序就是“/sbin/init”。init程序做的工作相当多,除了利用设置文件“/etc/inittab”来获取运行等级之外,还会通过运行等级的设置值启动不同的服务项目。运行等级是指linux通过设置不同等级来规定系统用不同的服务来启动,让linux的使用环境不同。

"/etc/inittab"中有这么一句"si::sysinit:/etc/rc.d/rc.sysinit",表明系统需要主动使用"rc.sysinit"这个shell脚本来设置系统环境。但这个文件的文件名在各个版本中是不一样的,需要自行查看确认。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: