Contents
在 qemu 上运行 DOS
qemu是一个开源的通用虚拟机,详细的信息可以从网站 http://fabrice.bellard.free.fr/qemu/ 找到。目前支持的目标机和宿主机在 http://fabrice.bellard.free.fr/qemu/status.html
Target CPU |
User emulation |
System emulation |
x86 |
OK |
OK |
x86_64 |
Not supported |
OK |
ARM |
OK |
OK |
SPARC |
OK |
OK |
SPARC64 |
Dev only |
Dev only |
PowerPC |
OK |
OK |
PowerPC64 |
Not supported |
Dev only |
MIPS |
OK |
OK |
m68k |
Dev only |
Dev only |
SH-4 |
Dev only |
Dev only |
Alpha |
Dev only |
Dev only |
Host CPU |
Status |
x86 |
OK |
x86_64 |
OK |
PowerPC |
OK |
Alpha |
Testing |
Sparc32 |
Testing |
ARM |
Testing |
S390 |
Testing |
MIPS |
Testing |
Sparc64 |
Dev only |
ia64 |
Dev only |
m68k |
Dev only |
1. 安装 qemu
从 debian 安装 qemu 非常容易,只要
sudo apt-get install qemu
安装完成后可以试一试,找一张 liveCD 的 iso 执行
qemu -cdrom "isofilename" -boot d
正常的话,就会看到启动画面,并且可以使用了。
2. 在 qemu 中安装 DOS
2.1. 创建虚拟磁盘
首先要创建虚拟机的硬盘文件,使用 qemu-img
qemu-img create "imgfilename" "size"
比如
qemu-img create c.img 64M
安装 DOS 并不要太多的硬盘,但也最好不要小于 40M 。好像小于 40M 的 fat 分区使用的 ID 与大于 40M 的不同(但都是 fat16),我开始用 10M 的,但总是不能从硬盘启动,不知道是不是这个原因。
qemu 支持多种映像文件的格式,由于文件不大,推荐使用 raw 格式,兼容性好。
2.2. 安装 DOS
根据你的 dos 的安装介质,采用不同的方式,我用的是光盘镜像,使用上面创建的硬盘映像
qemu -hda c.img -cdrom dos.iso -boot d
然后就像平常一样安装就可以了。
3. 与宿主机通信
3.1. qemu 访问宿主机
qemu 支持将宿主机的一个目录作为虚拟机的一个 fat 分区,默认是只读的
qemu c.img -hdb fat:/my_directory
也可以是软驱
qemu c.img -fda fat:floppy:/my_directory
读写的功能处于测试阶段,使用 rw 选项
qemu c.img -hdb fat:rw:/my_directory
What you should never do:
- use non-ASCII filenames ;
- use "-snapshot" together with ":rw:" ;
- expect it to work when loadvm'ing ;
- write to the FAT directory on the host system while accessing it with the guest system.
qemu 的官方文档 http://fabrice.bellard.free.fr/qemu/qemu-doc.html
3.2. 在 linux 中使用 qemu 的虚拟磁盘
软盘的映像文件可以直接挂载,但硬盘的就不同了。平常多用文件系统的映像,简单的说,一个文件是一个分区,而 qemu 的是硬盘,一个文件里面有多个分区,不能简单的 mount 。linux 中提供了 losetup 用来 set up and control loop devices 。 具体方法如下。
- 将文件关联到 loop device
losetup /dev/loop0 filename
- 使用 fdisk 查看硬盘信息
fdisk /dev/loop0
输入 u 切换单位,按 p 显示分区表,比如Device Boot Start End Blocks Id System /dev/hda1 * 63 16390079 8195008+ 7 HPFS/NTFS
这个分区从 63 扇区开始,扇区大小是 512bytes,所以它在 63*512=33256 字节处开始 - 重新关联 loop device 先删除
losetup -d /dev/loop0
再使用losetup -o 33256 /dev/loop0 filename
然后就可以mount /dev/loop0 /mnt
在 /mnt 中就可以访问这个分区了。
所属分类:我的故事
