Loading... <p>Linux的启动流程大致上如下图.</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703170027-100.png" title="1456540085329126.png" alt="blob.png" /></p> <p></p> <p>现在详细说明一下每个步骤:</p> <ol class=" list-paddingleft-2"> <li> <p>第一阶段</p> <p>当系统启动时,系统首先会加载BIOS。BIOS的首先会检查各硬件设备,当检查完毕没有问题之后。BIOS会根据设定的BootSequence来寻找可以引导系统的设备。一般而言,Linux是通过磁盘上MBR来引导系统的。</p> </li> <li> <p>第二阶段</p> <p>MBR是Master Boot Record,是位于磁盘第0磁道的第1扇区,大小是512字节。其中开始的446字节是主bootloader,接着的64字节是磁盘分区表,剩下的2个字节就是校验码。当系统加载MBR的时候,MBR上的bootloader就会开始发挥作用。</p> </li> <li> <p>第三阶段</p> <p>Bootloader就是主引导加载器。CentOS5,CentOS6上使用的Bootloader是grub ,而CentOS7上使用的是grub2.以grub为例,grub大体上是分为2步,第一步是stage1,stage1就是寻找位于磁盘上的stage2,第二步就是stage2,就是把内核加载在内存中的特定空间中,解压、展开,并把系统控制权交给内核Kernel。</p> </li> <li> <p>第四阶段</p> <p>内核Kernel获得控制权之后,会探测可识别到的所有硬件设备;加载硬件驱动程序(有可能会借助于ramdisk加载驱动);以只读方式挂载根文件系统(rootfs);运行用户空间上的第一个程序,CentOS5/6上的是init(于/sbin/init)。</p> </li> <li> <p>第五阶段</p> <p>init在启动的时候,首先会读取位于/etc/inittab的配置文件来以设定的运行级别。这里介绍Linux上的运行级别分别有:</p> <p>0:关机</p> <p>1:单用户模式(root, 无须登录), single, 维护模式;</p> <p>2: 多用户模式,会启动网络功能,但不会启动NFS;维护模式;</p> <p>3:多用户模式,正常模式;文本界面;</p> <p>4:预留级别;可同3级别;</p> <p>5:多用户模式,正常模式;图形界面;</p> <p>6:重启</p> <p>接着init会以设定的运行级别,来运行系统初始脚本(会执行/etc/rc.d/rc#.d上的脚本,#代表对应的运行级别的数字)、完成系统初始化。然后关闭对应下需要关闭的服务,启动需要启动服务。最后就会设置登陆终端,用户就能开始登陆,使用系统。</p> </li> </ol> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信