开发一个软件,首先要规划好它的组成,就像建造房子一样,先有下图纸蓝图,然后依据这个蓝图慢慢增加砖头水泥等,最终成为实品。我们的开发软件亦是如此,但我们的会非常简单,毕竟只是探索下系统原理即可 。
按照之前所述,我们的软件会包括mbr loader core user-app,同时还包括一个写文件的小工具。这样就很清晰,目录就按照如下进行设计:
各目录的作用如下:
app:用户程序目录,类似于我们自己安装 的应用程序,我们的用户进程将放在这里面。
boot: MBR程序目录,系统上电后第一个自动加载的程序
include:头文件目录,常用的头文件放在此目录中
kernel:core目录, 我们的最终文件管理,用户程序调度,中断处理都在这里面
loader:loader目录,用来加载kernel,自身由mbr加载
release:最终生成程序目录,包括mbr loader core app tools
tools:各种开发工具,比如文件系统读写初始化放在这里面
bochsrc: bochs支持的配置文件,由它指定cpu内存,磁盘,加载磁盘等与计算机相关的配置。相当 于一个电脑的清单。bochs工具通过此配置文件来进行电脑硬件加载
build_all.sh: sh脚本,可通过它来编译mbr loader core app tools等,也可通过它来将上述文件按照文件系统组成写入磁盘,方便bochs直接运行
env.sh:sh脚本,由build_all.sh自行支持,设置环境变量,比如各种编译路径,头文件路径等。
os.img:虚拟磁盘,bochs加载的磁盘,我们所有的Mbr loader core app都 写在这个磁盘中。
test.img:虚拟磁盘,os.img的备份,当前没有用到。
目录架构有了,下一步操作就是按照目录架构进行内容填充,直到最终实现我们的用户程序能自由运行,自由切换。
下一章节我们从boot入手,开始打造我们自己的mbr.在后面的章节中,我们也会对nasm shell makefile bochs等逐步介绍。