内核启动至根文件系统加载☞理解
经常看到坛子里有人对内核启动进行分析,但是大部分集中在各个模式跳转,内存系统建立,中断系统建立等流程的分析上。这里想根据自己之前学习,看书的理解对内核从磁盘加载开始到根文件系统建立写一个粗线条的理解,有兴趣的朋友欢迎指正。
一.上电之初,grub经过各个阶段(stage 1 stage1.5 stage 2)终于找到kernerl image和ramfs(忘了正名了,随便起了个)。随后将其加载入内存。此时文件系统尚未建立,但是由于grub自己是懂“文件系统的”,或者说自己有些简陋的驱动可以访问硬盘而已
二.内核自解压,执行各个子系统的初始化
三."ramfs"自解压
四.内核开始挂载内存中的一个简陋的根文件系统。(这之前要挂载rootfs,一个空的内存文件系统,目的在于建立根文件系统挂载点)然后挂载“ramfs”
五."ramfs"中有预先放置好的一些dirver,如磁盘driver。和一些已经创建好的设备文件(?/dev /dev/fs)。根据这些driver和设备文件。内核最终挂载真正的根设备。
六.至此,挂载完毕。可以执行一些各个厂商自制的配置文件进行个性化设置,不过这些已经是用户态程序了~~
有个小疑问:“ramfs”中预创建的一些设备文件是谁创建的。有没有什么原则?不会是漫天突发奇想随手创建的吧?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
so, no body want to talk about it?
个人理解 bootloader 引导内核 内核加载文件系统 bootloader负责从flash 或者说硬盘把内核COPY到内存固定地址去 这个地址是由bootloader决定的 然后把控制权交给内核 内核开始初始化 然后驱动初始化 然后加载文件系统
个人理解 不对的地方多指正
bootloader也初始化 硬件。。。cpu啊 内存啊 中断向量表 等等 内核启动参数也在bootloader里 然后把启动参数 传给内核