34 lines
1.5 KiB
Markdown
34 lines
1.5 KiB
Markdown
|
||
## 如何在qemu上挂载文件镜像
|
||
|
||
首先需要一个FAT32文件镜像,在Linux下可以通过`dd`命令和`mkfs`命令生成一个镜像,将生成的fs.img文件放在xv6-k210目录下即可。
|
||
|
||
```bash
|
||
$ dd if=/dev/zero of=fs.img bs=512k count=2048
|
||
$ mkfs.vfat -F 32 fs.img
|
||
```
|
||
注意:`dd`命令中的`bs`和`count`的参数只是参考,这会生成1GB的镜像。
|
||
|
||
## 如何在镜像中存入用户程序
|
||
|
||
首先通过`mount`命令,将镜像挂载到你指定的目录(这里以/mnt为例),然后将build之后xv6-user目录下文件名以"\_"为前缀的用户程序拷贝至镜像中,再取消挂载以保存写入结果即可。也可以在镜像中建立一些文本文件进行读测试。
|
||
|
||
注意:必须将xv6-user目录下的"\_init"拷贝至镜像根目录中,并且重命名为"init"(这是xv6原本的设定,目前我们暂未更改),还需拷贝"\_sh"至镜像中,才能启动shell。编写的用户程序也需要放在xv6-user目录下,同时需要添加至Makefile的`UPROGS`目标中,才能连同内核一起编译链接。
|
||
|
||
```bash
|
||
$ make build
|
||
$ (sudo)mount fs.img /mnt
|
||
$ (sudo)cp xv6-user/_init /mnt/init
|
||
$ (sudo)cp xv6-user/_sh /mnt
|
||
$ (sudo)cp xv6-user/... /mnt
|
||
$ ...
|
||
$ (sudo)umount /mnt
|
||
```
|
||
PS:现已可以通过执行 `make fs` 自动完成上述操作。
|
||
|
||
## 如何在 SD 卡中存入用户程序
|
||
将上述操作生成的 `fs.img` 写入 SD 卡即可。可以执行操作:
|
||
```bash
|
||
make sdcard sd="your SD card device"
|
||
```
|
||
警告:这会覆盖 SD 卡的原有数据与文件系统! |