Linux系统启动流程详解:以CentOS 5/6为例及各阶段介绍
电脑一启动,那启动画面后面的操作可比相亲网站选对象还麻烦。每次看到grub菜单里那些乱七八糟的选项,我简直就想直接按回车键跳过,省得费劲去琢磨。
开机菜单的秘密
这启动选项可不是随便冒出来的。grub这货把代码硬生生分成了三份,塞进硬盘里,跟把大象塞进冰箱似的,还得分三步走。MBR那地方就512个字节,grub第一阶段就挤在那儿了。
那第二阶段,它就躲在后面那几个区域里头,专门干识别文件系统这活儿,就跟教一个不识字的人认字似的,不这样搞,连那个/boot目录都找不到。而第三阶段,那就爽多了,直接把整个分区都给占了。
文件系统的苦力活
硬盘格式种类繁多,grub这货得懂ext4、xfs这些文件系统门道。就跟外卖小哥得摸清各个小区的进门规矩似的。到.5版本,grub那家伙还得有个翻译官,不然内核这货连门都找不到。
临时文件系统,就跟搬家时用的纸箱似的,先把那些必须带的东西先装进去。而那些真正的家具,得等搬家完事了再慢慢拆开。这个临时系统里头藏着真正的文件系统驱动,没它你连自己的家门都进不去。
内核解压现场
装系统内核跟拆包裹似的,得先找到那个快递点,把盒子拆了才能用。grub那东西把压缩的内核往内存里特定地方一扔,就开始慢慢解压。进度条跑得比双十一抢快递还磨叽。
把内存里腾出一片空间,临时堆放整理好的核心组件。这地方还备了点基础工具,就跟搬家时带的螺丝刀和锤子一样。
驱动加载黑科技
老系统启动就像手动挡车,得用initrd慢慢来,而新系统直接上initramfs,一键自动挡。一到6/7系列,这启动速度,简直比抢红包还快。
那些硬件驱动,直接给编进内核里头,就跟把钥匙焊在车门上似的。虽然操作起来不那么方便,但至少能保证车能发动起来。至于那个临时文件系统,简直就是个备用的钥匙串,关键时刻能派上用场。
启动管理员的日常
系统启动就像是一场接力赛,grub完成了第一棒的任务,然后把接力棒交给了内核。内核又去寻找init来接替,不过不同版本的init有着各自的规矩。
SysV init那配置文件,简直就像老娘们儿的长篇大论。Upstart,把它给分成了小纸条,而systemd就直接把它整成了手机APP。不过不管怎么变,归根结底都是为了把系统给弄醒。
盯着那东西菜单愣神儿,琢磨过把Windows那选项给干掉,但又犯嘀咕怕一不小心搞砸了?