本文接着上一博文 Linux 内核学习笔记:进程 1 创建及执行(第 3 部分)最后的“进程 1 格式化虚拟盘并更换根设备为虚拟盘”继续写下去。
进程 1 格式化虚拟盘并更换根设备为虚拟盘
注意:现在系统已经切换到进程 1 执行。
在之前博文 Linux 内核学习笔记:初始化程序(第 1 部分)中,我们提到 Linux 0.11 设置了虚拟盘并对其进行初始化。但那时的虚拟盘只是一块“白盘”,尚未经过类似“格式化”的处理,还不能当做一个块设备使用。格式化所用的信息就在 boot 操作系统的软盘上。这个软盘的第 1 个扇区是 bootsect,后面 4 个扇区是 setup,接下来大约 240 个扇区是包含 head 的 system 模块。“格式化”虚拟盘的信息从 256 块开始。
下面,进程 1 调用 rd_load 函数,用软盘上 256 块以后扇区中的信息“格式化”虚拟盘,使之成为一个块设备:
1 | // kenel/blk_drv/hd.c -------------------------- |