Linux文件系统学习:初始化过程(2)

  • A+
所属分类:Linux系统

在内核启动的主函数中

start_kernel()
{
vfs_caches_init_early();
vfs_caches_init();
rest_init();
}

rest_init() 
{
kernel_init();
}

kernel_init() 
{	
kernel_init_freeable();
}

 

在启动过程中相关的函数差不多就这样了。

vfs_caches_init_early 进行早期的初始化

vfs_caches_init 这里面主要是初始化inode 缓存 dentry的缓存等等。

主要关键的很难理解的是rest_init

而rest_init 又调用了kernel_init 然后又调用了kernel_init_freeable,这里面做什么事情呢?

做一件非常关键的事情,就是第一次开机在什么都没有的情况下,相当于硬盘是空的。

OK,描述下这个过程

1、硬盘是空的,怎么办

2、从flash中加载initramfs 到内存,在内存中临时建立一个 "/" 根文件系统,将初次需要的一些操作,在这个内存的fs里面做。比如sys设备。

3、完成内核的最后阶段要去执行第一个进程/init 的时候,把这个内存里的 fs,送到硬盘。OK完成第一次启动。

4、第二次或者以后还要启动的时候,检查硬盘是不是空的,不是空的,检查硬盘里面有没有init,有就直接启动init完成后续启动。

 

# Linux必备书籍推荐

 

《LINUX内核源代码情景分析(上册) 》毛德操,胡希明      >>>京东购买     >>>淘宝购买 

《LINUX内核源代码情景分析(下册) 》毛德操,胡希明      >>>京东购买     >>>淘宝购买

《嵌入式Linux应用开发完全手册 》韦东山 著     >>>京东购买     >>>淘宝购买 领券

《深入理解Linux内核第3版》(美)博韦      >>>京东购买     >>>淘宝购买    

《鸟哥的Linux私房菜:基础学习篇(第四版)》鸟哥      >>>京东购买     >>>淘宝购买

 

#免费电子书领取

神农笔记微信公众号

扫一扫关注微信公众号,上述5本电子书免费领取。

https://pan.baidu.com/s/1q5IjXAmybs8NBseR4R8Ksg

扫码关注微信公众号,回复“Linux” ,即可获取提取码

 

--- Linux文件系统学习系列笔记 ---

(原创笔记,转载请联系博主授权)

Linux文件系统学习:整体框架图(1)

Linux文件系统学习:初始化过程(2)

Linux文件系统学习:文件read流程分析(3)

Linux文件系统学习:文件read和BIO调度分析(4)

Linux文件系统学习:文件write过程分析(5)

Linux文件系统学习:io调度框架(6)

Linux文件系统学习:io的提交过程(7)

Linux文件系统学习:io的plug过程-启动篇(8)

Linux文件系统学习:io的plug过程-request请求(9)

Linux文件系统学习:io的plug过程-blk_init_queue(10)

Linux文件系统学习:io的plug过程-blk_flush_plug_list的情况(11)

Linux文件系统学习:io的plug过程-queuelist的问题(12)

Linux文件系统学习:电梯算法简介(13)

Linux文件系统学习:电梯算法noop(14)

Linux文件系统学习:电梯算法deadline(15)

 

<欢迎关注微信公众号,第一时间查看最新内容>

神农笔记微信公众号

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: