====== 在 FreeBSD 6.2 上运行 Qemu ====== 原文:[[http://people.freebsd.org/%7Emaho/qemu/qemu.html|Running Qemu on FreeBSD, as host]]\\ 作者:[[http://people.freebsd.org/~maho/|Nakata Maho]]\\ 翻译:[[http://zhoushuqun.com/|Sutra Zhou]] [[http://www.qemu.org/|Qemu]] 是一个由 Fabrice Bellard 开发的非常快速的通用的开源处理器(CPU)模拟器。它可以运行 Windows 2000,XP和GNU/Linux(RedHat,Debian)等。这里我们为 FreeBSD 6.0 描述了各种知识。 ===== 如何安装 ===== 虽然 Qemu 相当快,但我们需要 KQemu 加速器,否则它慢得多。另外,IDE 总线 DMA 支持也是非常重要的。 编译 QEMU : # cd /usr/ports/emulator/qemu # make -DWITH_KQEMU -DWITH_HACKS # kldloaded aio kldload aio 是必须的!因为 KQemu 是作为内核模块安装的,请添加下面一行到 /boot/loader.conf 这样内核模块将在开机启动时被加载。 kqemu_load="YES" 注意:继续使用已有的 Windows 2000/XP 磁盘映像是不可能的,因为其已改由活动的 IDE 总线 DMA 支持。 ===== 网络 ===== 默认情况下,网络由模拟器内部配置;从外部是不可见的。这非常不方便!也有不同的配置方法:你必须是 root 并且你的 qemu 虚拟机在外部可见。假设你知道你的网络接口的名称。我这里是 fxp0。你可以通过下面的方法来检查: % dmesg | grep Ethernet 首先,以 root 执行, # kldload bridge.ko # sysctl net.link.ether.bridge_cfg=fxp0,tap0 net.link.ether.bridge_cfg: -> fxp0,tap0 # sysctl net.link.ether.bridge.enable=1 net.link.ether.bridge.enable: 0 -> 1 创建脚本 /etc/qemu-ifup,内容如下: #!/bin/sh ifconfig ${1} 0.0.0.0 并且让脚本可执行: # chmod 755 /etc/qemu-ifup 为了让每次开机的时候都能执行这些,把下面的内容写到 /etc/sysctl.conf: net.link.ether.bridge_cfg=fxp0,tap0 net.link.ether.bridge.enable=1 并在 /boot/loader.conf 添加: bridge_load="YES" 通过下面的方法启动 qemu: # qemu -net nic -net tap 参考了 [[http://qemu.dad-answers.com/viewtopic.php?t=429|freebsd vde helpp]]。 ===== Qemu 作为 VNC 服务器 ===== QEMU 中显示非常慢,因此将 qemu 作为 vnc 服务器运行非常有用。 % qemu -hda /work/qemu/win2000ja/win2000.img -localtime -m 384 -vnc :1 -usbdevice tablet 运行 vncviewer 像这样(你可以通过 ports/net/tightvnc 安装): % vncviewer :1 你应该等待直至 Windows 开始启动。 ===== 全屏模式(慢) ===== Qemu 使用 SDL 来输出到屏幕。现代的视频卡支持 VESA 2.0,因此你可以通过 VESA 2.0 来使用 SDL。当你使用 SDL 时你需要额外的设置。首先,重新配置内核: include GENERIC ident MAHO device atapicam options VESA 保存为 /usr/src/sys/i386/conf/MAHO 或其它类似的名字。然后, # cd /sys/i386/compile/MAHO # made cleandepend ; make depend ; make ; make install 你需要做如下额外设置: # setenv SDL_VIDEODRIVER vgl 然后你可以通过控制台来运行全屏模式。当然,你仍然必须是 root 用户。据我测试, # kldload vesa 不工作(在我这里)。不幸的,这非常慢,比 X11 模式慢…… ===== 总结(我的设置和命令行) ===== 作为总结,我的设置是针对 qemu 0.8.0 的。 qemu -localtime -hda /work/qemu/win2000ja/win2000.img -m 256 -net nic -net tap /boot/loader.conf kqemu_load="YES" bridge_load="YES" snd_driver_load="YES" snd_pcm_load="YES" /etc/sysctl.conf net.link.ether.bridge_cfg=fxp0,tap0 net.link.ether.bridge.enable=1 /etc/qemu-ifup (chmod 755 /etc/qemu-ifup) #!/bin/sh ifconfig ${1} 0.0.0.0 用下面的配置文件重新配置内核 include GENERIC ident MAHO device atapicam options VESA 和额外的环境变量: # setenv SDL_VIDEODRIVER vgl ===== 我不想成为 root 用户 ===== * 网桥 * 全屏模式 ===== 链接 ===== * [[http://www.qemu.org/|Qemu]] * [[http://qemu.dad-answers.com/viewforum.php?f=7&sid=56c325a0560e52bdd5cce4a437a09fb1|QEMU for FreeBSD]] ===== Contributors ===== * Vlad GURDIGA