详细描述Linux系统的启动过程


14

我正在准备一个详细的文件,从按主机的电源按钮到登录提示符外观,对Linux的启动顺序进行详细说明。

如果我们可以将此处的正确答案合并并整理为一个参考点,那就太好了。请包括在启动过程中可能需要注意的所有详细信息。一旦所有方面的文档都完整了,我也将在此处发布文档详细信息,并更新问题中的链接。

请考虑所有可能的情况,例如从磁盘引导,从USB引导,在rootfs(/)在网络上的无磁盘客户端上从网络引导。


3
这个(包括参考文献)这个来看,您提出了一个巨大的项目……
sr_11年

4
对其他人来说,这感觉像是一个作业/论文问题吗?
沙杜尔2011年

1
然后不应该将其标记为社区Wiki吗?
用户未知,

4
我认为这对于SE的问题来说太宽泛了,发行版和配置之间存在巨大差异。
吉尔(Gilles)“所以,别再邪恶了”,

1
你可以请发表您准备的文件
阿布舍克

Answers:


7

您想要Linux的启动顺序还是只是PC的启动顺序...因为从usb / cdrom / hdd引导Linux之间没有区别... Linux始终从MBR引导启动程序所在的位置...

Linux启动过程:

  1. 通电后,BIOS得到控制
  2. BIOS运行自我测试,通常包括游标内存测试。
  3. 然后,BIOS加载磁盘的第一个扇区以用于引导,并将控制权转移给该扇区。
  4. MBR代码有所不同。一个版本将链接到引导分区(Windows)的第一个扇区中的代码,另一个版本将加载引导加载程序。Windows引导将从引导分区中的代码和信息继续进行。
  5. 引导程序选择内核位置和版本
  6. 引导程序在内存中准备内核和initrd映像,将控制权转移到内核
  7. 加载内核模块
  8. 发现硬件并加载其他内核模块以支持它
  9. 寻找磁盘
  10. R / O挂载/分区,以便可以对其进行检查和修复
  11. 初始化进程产生
  12. / etc / inittab读取并执行
  13. 从/ etc / fstab挂载所有FS
  14. 运行级别(基于/ etc / inittab中的默认运行级别)或其他初始化方法,例如systemd或upstart
  15. rc.local
  16. 登录提示

感谢@Sebastian,这是一个不错的清单。我正在寻找示例1的详细步骤:加载mbr信息的内容,然后发布post和bios指令的方式如何;2.为什么先对/分区进行r / o挂载,然后再次读/写mount /分区..在整个过程中什么是进程0 ..但感谢您的回答。
Nikhil Mulley

@Nikhil关于进程0 ...在内核加载后没有这样的进程,您有进程1,它是初始化进程。关于其他要点:1.检查ibm.com/developerworks/library/l-linuxboot/index.html 2.因为首先需要检查文件,然后才可以在上面写...而是出于安全原因。 ..
Sebastian Szary 2011年

软盘或cdrom上没有MBR。cdroms的引导过程涉及一个目录文件,该目录文件描述了bios可以选择加载和执行的一个或多个多扇区映像。
psusi 2012年

如果内核模块位于ext3文件系统上并且ext3内核模块尚未加载怎么办?此外,如果内核本身位于引导加载程序无法识别的文件系统上,该怎么办?如何依次加载以下内容,加载kernel,加载bootloader,安装/boot目录,读取/etc/fstab文件等
yegle 2014年

3

尝试安装和使用bootchart


1
感谢指针,我其实希望呈现的启动过程中发生了什么,什么样的决策参与了可视化流程文档。
尼基尔Mulley

1
感谢@Alexander我将它安装在我的软呢帽上,它提供了非常详细的png
Abhishek
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.