打造个人专属的微型linux--启动原理篇
|
还记得马哥曾总结过每天必读的7句话
1、永远不要向任何人解释你自己。 2、别让某人成为你生命中的优先。 3、每天早上两个简单的选择:回去睡或起身追逐梦想。 4、不要让在乎我们的人为我们哭泣 5、别在喜悦时许下承诺,忧伤时做出回答,愤怒时做出决定 6、享受生命的每个当下 7、当你持续的说你非常忙碌,你的明天就永远不会来 现在细细看来,感悟良多。谁也不能预见将来,做好当前,即便将来遭遇失败,也不会留下什么遗憾。。。 废话不多说,进入正题 首先此篇先大体介绍下整个系统的开机流程,再来对其一一展开进行详细的说明 第一步:首先进行开机自检POST,确认硬件正常后进入下一步 第二步:BIOS initialization(BOOT SEQ)BIOS初始化,并按照BIOS中设定的开机启动加载设备进行依次的检测 第三步:MBR(bootloader)在BIOS检测到某一设备可以启动后,开始加载MBR上的引导程序,在linux中,引导分为2个阶段,首先加载在MBR上的一段极其精简的启动程序,由此启动程序引导boot目录中的grub,再由grub进行具体系统的引导启动(grub是一个很强大的系统启动引导管理软件,也可以引导window) 第三步:Kernel initialization 在由grub引导linux内核后,启动内核,由内核检测基本硬件设备装载对应驱动,并装载rootfs和启动init(/etc/inittab) 第四步:系统启动和初始化,在启动init后,才开始真正的系统启动,内核退居到后台,由init来接管整个系统的加载和启动,init会根据设定进行系统进一步的初始化,下面是init启动后进行的一系列操作 1.完成系统整体初始化:/etc/rc.d/rc.sysinit (此脚本可以细细研读) 2.启动对应级别的各个服务:/etc/rc.d/rc 利用/etc/rc.d/ec[0-6].d/目录下的所有脚本启动或者停止服务 /etc/rc.d/ec[0-6].d/下都是链接文件,链接到/etc/rc.d/init.d/下的各个脚本 3./etc/rc.local (链接到/etc/rc.d/rc.local)给用户定义的额外开机操作项 4.启动虚拟终端,验证用户登录(图形界面则调用其他如XDM来验证用户登录) 至此 系统启动完整,可以说,整个系统的启动都是靠一堆脚本来完成的 第一二步骤涉及到硬件的POST和BIOS阶段就不再细说了,从bootloader开始说起 bootloader 这是一段放置在MBR钱446字节中的一段精简的引导程序(MBR一共有512字节,后64字节既是分区表,还有最后2个字节的填充) 常见的bootloader程序有 LILO:LInux LOader 可以引导多个操作系统,但不支持大硬盘 GRUB:GRand Unified Bootloader 目前比较常见的引导加载器,这是一个分段的引导加载器,在Ubunt上用的是GRUB1.9x。 时隔10年,最新的GRUB2在昨天正式发布了,有兴趣的童鞋可以去关注下 可以在开机时进入GRUB的交互模式,直接输入参数启动系统,在这里可以输入单用户启动参数直接进入单用户模式进行密码修改等操作 之前说这是一个分段的引导程序这里来说说具体是怎么分段的 第一段:MBR 用来引导进入第二段,在完成第一段后,初始化GRUB自我初始化后,并正常启动第二段 第二段:/boot/grub 由于MBR上的引导程序只有446字节,所以能放置的内容很少,功能很弱,所以通过引导启动第二段放置在磁盘中/boot/grub目录下强大的GRUB程序,来扩展其更为强大的引导功能 此目录下的配置文件 /boot/grub/grub.conf
(编辑:佛山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

