从 https://opensource.com/article/18/3/can-you-run-dos-raspberry-pi 这里学到的。
通过QEMU可以在OrangePi上创建一个轻量的虚拟机,并通过在其上面安装FreeDOS来达到支持运行DOS程序的目的。
FreeDOS是一个完全免费的与MS-DOS兼容的操作系统,你可以通过它来运行DOS游戏和那些老旧的DOS软件。
FreeDOS提供CD-ROM镜像下载:你可以从这里下载FreeDOS,目前最新版本为1.2版
wget http://www.freedos.org/download/download/FD12CD.iso
sudo apt install qemu -y
至于为什么不安装 qemu-kvm
加速器,是因为我的CPU根本不支持虚拟化啊
grep Features /proc/cpuinfo |uniq
若你的CPU支持虚拟化,则可以安装 qemu-kvm
再通过 -enable-kvm
选项让QEMU运行在KVM模式中,这样能够提升虚拟机的速度。
硬盘镜像是一个文件,用来存储虚拟机硬盘上的内容。
QEMU有两种硬盘镜像:一种是 raw镜像(默认值), 它和客户机器上看到的内容一模一样,主机上占用的空间客户机上的大小一样。这个方式 I/O 效率最高,但是因为客户机器上没使用的空间也被占用,所以有点浪费空间。
另外一种方式是qcow2 格式,仅当客户系统实际写入内容的时候,才会分配镜像空间。对客户机器来说,硬盘大小是完整大小,但是在主机系统上实际仅占用和很小的空间。使用这种方式会影响效率.
QEMU 中使用 qemu-img命令来创建硬盘镜像
qemu-img create -f qcow2 dos.img 300M
这就创建了一个300M的虚拟硬盘。300M按现在的标准来安很小,但是对于DOS来说已经是很大的硬盘空间了。
我们可以看看 dos.img
实际占用的空间
ls -lh dos.img
你会发现,实际上只占用了 193K
大小而已。
跟VirtuaBox,VMWare等虚拟软件不同,QEMU没有提供一个图形化的管理界面来创建虚拟机,你需要通过命令来构建出虚拟机的每个组建。
QEMU使用 qemu-system-*
程序来启动虚拟机,这里的 *
指定了虚拟机的架构。
qemu-system-i386 -m 16 -k en-us -rtc base=localtime -soundhw sb16,adlib,pcspk -device cirrus-vga -hda dos.img -cdrom FD12CD.iso -boot order=d
这里解释一下:
- qemu-system-i386
- 说明虚拟机的架构为i386
- -m 16
- 表示虚拟机有16M的内存,这对DOS来说已经足够了
- -k en-us
- 指定键盘布局,如果省略的话则使用你实际键盘的布局
- -rtc base=localtime
- 设置虚拟机的real time clock(RTC)与我们的本地时间相匹配
- -soundhw sb16,adlib,pcspk
- 设置声卡为SoundBlaster16,并且支持AdLib Music,同时模拟出PC扬声器,使用
qemu-system-i386 --soundhw ?
可以列出所有可用声卡。 - -device cirrus-vga
- 模拟显卡
- -hda dos.img
- 指定dos.img为第一块硬盘,也就是c:
- -cdrom FD12CD.iso
- 指定FD12CD.iso挂载为CD-ROM,也就是d:
- -boot order=d
- 指定从d盘启动
然后我们跟着指令一步一步的安装FreeDOS就行了
不过,由于microSD卡IO很慢,因此安装过程会花很长的时间。
安装好后,通过修改上面命令中的 -boot order=d
为 -boot order=c
来指定从c盘启动,就能进入DOS了
qemu-system-i386 -m 16 -k en-us -rtc base=localtime -soundhw sb16,adlib,pcspk -device cirrus-vga -hda dos.img -cdrom FD12CD.iso -boot order=c
FeeDOS包含很多游戏和应用,可以通过 FDIMPLES
来安装
使用 -drive
选项可以很方便地把外部系统的一个目录挂载成虚拟机中的一块磁盘。
比如通过在启动命令后加入 -drive file=fat:rw:dosfiles
就能把 dosfiles
目录挂载成虚拟机中的一块FAT格式的磁盘。
qemu-system-i386 -m 16 -k en-us -rtc base=localtime -soundhw sb16,adlib,pcspk -device cirrus-vga -hda dos.img -drive file=fat:rw:dosfiles/ -boot order=c
因为Armbian上根本就没有VirtualBox啊~~
如果你只是想玩DOS游戏的话,那么DOSBOX会是个不错的选择。但是它对DOS应用程序的支持就没那么好了。
而且相对来说在虚拟机中安装完整的DOS环境能提供比DOSBOX多得多的自由度。