Linux启动分析
2019-02-26 本文已影响14人
萍水间人
写在前面
对于计算机的启动流程, 这个其实很早之前就有说到, 所谓boot就是靴子的意思,试想一个人提起自己身上穿的靴子, 这个过程是何其的艰难! 计算机启动的过程也是如此, 在启动的过程中,软硬件究竟是如何转移控制权的, 又是谁, 像上帝一样开创了万物呢?
BIOS
在个人计算机的情况下, 要想启动系统, 就需要加载BIOS, 然而这个时候是没有操作系统的, 那到底是谁去引导BIOS启动的呢? 答案就是硬件啦。 通过硬件打开了BIOS, 接着BIOS去检测硬件, 并与这些硬件中内含的BIOS打声招呼, 把他们吵醒, 这个就是自我检测的过程了。
接着就是由BIOS来决定启动顺序的问题了。 常见的启动顺序有 光盘, 磁盘, 和U盘
设定好了启动顺序之后, BIOS就会将boot loader , 也就是磁盘上的MBR分区表写到内存中。 这个过程是通过INT 13中断来完成的。
boot loader
之前一直只觉得有BIOS就够了, 竟不知还有 boot loader
首先, 每种操作系统都有属于自己的boot loader
那么双系统又是从何而来?
这就涉及到文件系统了, 先按下不提。
认识一下 Initial RAM Disk(Initial RAM Filesystem)
这里源自一个问题。 假设Linux安装在SATA磁盘上面, 可以通过BIOS的INT13中断取得boot loader 与内核文件来启动。
但是内核根本就不认识 SATA磁盘, 所以需要加载SATA磁盘的驱动程序, 到那时SATA的驱动程序还在 /lib/modules 内, 根本无法挂载根目录又怎么去读取到驱动程序呢?
系统启动的流程过于复杂,先写到这