Linux的开机启动流程

来源:互联网 发布:java 线程并发控制 编辑:程序博客网 时间:2024/05/21 02:36

Linux的开机启动流程

                                                                                                           《鸟哥的Linux私房菜之基础篇》学习笔记()

1.加载BIOS(BasicInput Output System)的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置;


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

            重点说明一下Linux中最主流的bootloaderGrub

            由于MBR是硬盘的第一个扇区内的一个数据块,其整个大小不能满足bootloader程序代码和设置数据的需求,所以Linuxbootloader的程序代码执行与设置值加载分成两个阶段:

            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程序,等待用户登入;




原创粉丝点击