Skip to content

Latest commit

 

History

History
547 lines (457 loc) · 29.4 KB

在OrangePi上运行DOS程序.org

File metadata and controls

547 lines (457 loc) · 29.4 KB

在OrangePi上运行DOS程序

https://opensource.com/article/18/3/can-you-run-dos-raspberry-pi 这里学到的。

通过QEMU可以在OrangePi上创建一个轻量的虚拟机,并通过在其上面安装FreeDOS来达到支持运行DOS程序的目的。

下载FreeDOS安装文件

FreeDOS是一个完全免费的与MS-DOS兼容的操作系统,你可以通过它来运行DOS游戏和那些老旧的DOS软件。

FreeDOS提供CD-ROM镜像下载:你可以从这里下载FreeDOS,目前最新版本为1.2版

wget http://www.freedos.org/download/download/FD12CD.iso

安装QEMU

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 大小而已。

启动虚拟机安装FreeDOS

跟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就行了

./images/screenshot-18.png

./images/screenshot-19.png

./images/screenshot-20.png

./images/screenshot-21.png

./images/screenshot-22.png

./images/screenshot-23.png

./images/screenshot-24.png

./images/screenshot-25.png

不过,由于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

./images/screenshot-26.png

./images/screenshot-27.png

FeeDOS包含很多游戏和应用,可以通过 FDIMPLES 来安装

./images/screenshot-28.png

./images/screenshot-29.png

与外部系统交换文件

使用 -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

为什么不用VirtualBox?

因为Armbian上根本就没有VirtualBox啊~~

为什么不用DOSBOX?

如果你只是想玩DOS游戏的话,那么DOSBOX会是个不错的选择。但是它对DOS应用程序的支持就没那么好了。

而且相对来说在虚拟机中安装完整的DOS环境能提供比DOSBOX多得多的自由度。