FreeNOS自动化构建工具Scons生成ISO过程(二)

FreeNOS使用自动化构建工具Scons来编译源码以及制作生成启动镜像,Scons的作用与make类似。
具体关于Scons语法可以去网上搜索资料,针对FreeNOS源码目录下,有SConstruct配置文件:在这里插入图片描述
可以看到import 部分是与目录site_scons下的脚本相关的,其他部分则是包含源码的目录。
先关注site_scons目录下的脚本,看懂这些脚本就基本知道这个项目镜像文件的构建过程 :
1.build.py是与编译器以及环境变量相关的配置,上一节中修改了-Werror部分
2.version.py生成版本信息
3.linn.py生成文件系统,打包包括驱动程序、二级制系统命令,比如在linux常见的uname、ls、cd命令,启动脚本/etc/rc等,相关驱动程序在启动启动之后都会作为后台进程运行。
4.img.py生成boot镜像,关于生成boot镜像命令中有这么一条:在这里插入图片描述
所以可以去看看boot/boot.imgdesc文件的内容:
在这里插入图片描述
包含不同目录下生成的二进制文件,从名称可以看到是与进程管理、内存管理以及文件系统、空闲进程以及系统应用层初始进程init——init是所有应用层进程的祖先进程,这个后面看源码就会理解的更深刻。
5.pci.py涉及到PCI总线方面的处理
6.iso.py——与scons iso命令直接相关。
制作 ISO 9660 image,这个可以被qemu装在进行启动,是一个完整的操作系统镜像,同样有个一个boot.isodesc文件
在这里插入图片描述
boot/boot.isodesc内容如下:在这里插入图片描述
可以看到完整的镜像包括grub引导启动文件、根文件系统、boot镜像、启动菜单以及内核镜像。
使用grub引导启动就得看看menu.lst的内容:
在这里插入图片描述
timeout是grub引导启动以下界面等待时间:在这里插入图片描述
按照上面文件的顺序基本可以确定程序的执行顺序,也就是说阅读源码也可以依据此顺序阅读来搞清楚FreeNOS原理,下节再详细说明。
7.emulate.py——与scons qemu命令直接相关。
启动仿真器执行完整的操作系统镜像,不光可以使用qemu还可以使用bochs,内容如下:
在这里插入图片描述
可以看到,还可以按设置启动不同的仿真模式。
其他目录’lib’, ‘kernel’, ‘bin’, ‘sbin’, 'srv’等都是源码部分,基本上也是相互独立的,可以分为三大部分:
1.内核部分:即内核态,涉及底层部分,包括页面管理,进程调度,中断以及系统调用等。
2.系统应用层,与内核态相对称作用户态,包括进程、内存管理、文件系统、init祖先进程以及系统命令等。
3.外设驱动部分,包括键盘、中断、日志、串口以及PCI总线驱动等。

此节在配置文件方面稍作说明,结合以上部分基本上可以理解整个FreeNOS源码结构以及相应部分的作用。


版权声明:本文为weixin_38134600原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。