(undone) MIT6.S081 2023 xv6 番外:用户态程序是如何被编译进磁盘,并被 xv6 加载的?fs.img 如何生成?

以 ls 命令为例,它是用户态程序,那么自然不会在操作系统启动过程中被加载到内存,而是存放在磁盘上等着用户要求加载它们。

那么可以想见的是,对于 xv6 来说,它们应该是被加载编译进 fs.img 里。

我们来看看 fs.img 是如何生成的。


首先看 Makefile: 263,如下,是 fs.img 的依赖和生成命令

fs.img: mkfs/mkfs README $(UEXTRA) $(UPROGS)
	mkfs/mkfs fs.img README $(UEXTRA) $(UPROGS)

展开就是
UEXTRA := user/xargstest.sh
UPROGS := user/_cat user/_echo user/_forktest user/_grep user/_init user/_kill user/_ln user/_ls user/_mkdir user/_rm user/_sh user/_stressfs user/_usertests user/_grind user/_wc user/_zombie

fs.img: mkfs/mkfs README user/xargstest.sh user/_cat user/_echo user/_forktest user/_grep user/_init user/_kill user/_ln user/_ls user/_mkdir user/_rm user/_sh user/_stressfs user/_usertests user/_grind user/_wc user/_zombie
	mkfs/mkfs fs.img README  user/xargstest.sh user/_cat user/_echo user/_forktest user/_grep user/_init user/_kill user/_ln user/_ls user/_mkdir user/_rm user/_sh user/_stressfs user/_usertests user/_grind user/_wc user/_zombie 

来看看 mkfs/mkfs 如何生成,它要干什么

在 Makefile:165 能看到

TODO: here

你可能感兴趣的:(MIT6.S081,学习笔记,操作系统)