本文最后更新于2017年7月29日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!
=Start=
缘由:
之前有学习、整理过相关的知识,虽然说现在基本上天天都在和Linux打交道,不过后来没有专门研究过那些知识,再加上时间一长一些细节性的内容也记不清楚了,所以想在博客里面再总结、记录一下,方便以后参考。
正文:
参考解答:
在thegeekstuff.com里对Linux的启动过程有一个描述,是基于SysV init的,虽然现在的CentOS 7都开始使用systemd替代init了,但大体内容和顺序大同小异,值得学习、参考:
BIOS #基本输入输出系统
进行一些系统完整性检查(开机自检——Power-On Self-Test);
搜索、加载、执行 boot loader 程序;(一般的查找顺序是floppy软盘、cd-rom光盘、hard-drive硬盘,你可以通过在启动的时候按F12键修改查找顺序)(一旦boot loader程序已经被检测到并加载进内存后BIOS就会将控制权移交给MBR)
总的来说,BIOS主要是起加载和执行MBR boot loader的作用;
MBR #主引导记录
MBR一般位于可引导磁盘的第一个扇区中,比较典型的是/dev/hda或/dev/sda;
MBR大小一般为512字节,有3个组成部分:前446字节表示主引导程序信息/结构,接下来的64字节表示分区表信息,最后2字节表示MBR的合法性检查信息;
它会包含和GRUB相关的信息(在比较老的系统上是LILO);
总的来说,MBR主要是起加载和执行GRUB boot loader的作用;
GRUB #引导程序(Grand Unified Bootloader)
如果在你的系统上有多个内核镜像,你可以通过GRUB选择一个来执行,如果不指定,它就会加载一个默认的内核镜像;
总的来说,GRUB主要是起加载和执行Kernel和initrd镜像的作用;
Kernel #内核
挂载在grub.conf中根据「root=」指定的根文件系统;
执行/sbin/init程序;
initrd指的是Initial RAM Disk;在根文件系统被挂载到真正的磁盘上之前,initrd被内核用作临时的根文件系统;
Init #超级进程
根据/etc/inittab文件的内容决定Linux的运行级别;
Runlevel #运行级别/模式
根据实际的运行级别决定执行/etc/rc.d/rc*.d/目录下的哪些文件;
参考链接:
=END=