正在上计算机系统基础,目前主要是在讲汇编语言,使用的开发环境自然是又老又臭的 DOS 加上 MASM 。之前我看到过 FreeDOS 这个自由的 DOS 发行版,打算试吃一下,之后的汇编实验也将在这上面进行。
安装与配置
- 首先在FreeDOS 官网上下载最新的系统镜像,我选择的是 FreeDOS 1.3 LiveCD 。下载之后将其解压到一个文件夹内,有三个文件。
% ls
FD13BOOT.img FD13LIVE.iso readme.txt
- 再使用虚拟机安装 FreeDOS ,
% qemu-img create freedos.img 500M # 创建 QEMU 的虚拟磁盘
% qemu-system-i386 -m 32M -drive file=freedos.img,media=disk,format=raw -drive file=FD13LIVE.iso,media=cdrom -boot order=d # 启动镜像
之后就是和安装 Linux 发行版大同小异的操作了。
- 挂载虚拟磁盘到 Host 。
% sudo mkdir -p /mnt/freedos
% sudo mount -t msdos -o uid=1000,loop,offset=32256 freedos.img /mnt/freedos
- 安装 MASM ,可以直接将文件放置到挂载的地方,重启 FreeDOS 后就可以使用了。使用时不再需要 LiveCD 的镜像:
% qemu-system-i386 -m 32M -drive file=freedos.img,media=disk,format=raw -boot order=d
疑惑
可能是 FreeDOS 文件系统,也可能是 qemu 的缓存问题,我在 Host 对文件的操作只有在重启 FreeDOS 之后才会在 guest 中生效。
在这个帖子中也有人遇到了这个问题:
However, it’s limited to 512MB, and doesn’t reflect any changes made to the directory from the host system after QEMU starts.
另一个帖子也有人提到:
You should never write to the FAT directory on the host system while accessing it with the guest system. If want to add new files to ‘share’, shutdown the virtual machine before.
打算有时间看一下QEMU 的 FAT 文档