Qemu|Useful hint
Qemu on FreeBSD as host
worked for me:
qemu -monitor stdio -boot c -m 2020 -hda '/apps/qemuroot/winxproot/winxpdisk' -net nic -net tap,macaddr=00:bd:64:d8dhw -soundhw es1370e s1370 -kernel-kqemu -vnc :2 -usbdevice tablet
Qemu is a very fast generic and open source processor emulator by Fabrice Bellard. It runs under Windows 2000, Windows XP, GNU/Linux (RedHat, Debian) and FreeBSD "host" systems. After reading this page you should know:
* How to install qemu from the Ports tree
* How to run Qemu in FreeBSD 7.X or later
Installation notes
The installation of Qemu is pretty fast and easy. You can just install it from the Ports. The two Qemu ports we have in the Ports tree as of this writing are "emulators/qemu" and "emulators/qemu-devel". Installing "qemu-devel" for example should be as easy as:
*
# cd /usr/ports/emulators/qemu-devel
# make install && make clean
*
Note: It may be a good idea to enable the KQEMU accelerator when you install one of the Qemu ports (otherwise qemu is much slower).
Running Qemu
To successfully run Qemu, you should make sure that you have:
* IDE bus-master DMA support
*
The aio, if_tap and if_bridge modules in the "host" system
If you forget to load aio, then Qemu may crash with an error message of:
*
Bad system call: 12 (core dumped)
The if_tap and if_bridge modules are mandatory only when you plan to connect the "hosted" FreeBSD system with your existing network. If you don't need networking inside Qemu, it's ok to fire it up without these two networking modules in the host kernel.
*
Note: if you use kqemu make sure your kqemu.ko module is always in sync with your kernel (like with any kld installed outside of base), i.e. rebuild its port whenever you update the kernel — especially if you are switching branches or are following a -STABLE or -CURRENT branch!
You can enable autoloading of kqemu (and aio) at boot by adding a line to your /etc/rc.conf file:
*
kqemu_enable="YES"
*
Note: it is impossible to continue to use existing Windows 2000/XP disk images, since driver has been changed by activating IDE Bus-master DMA support.
Networking on FreeBSD 7
Contributed by: Marten Vijn.
Default, network is configured inside of the emulator; not visible from outside. if you use fxp0, then:
* # ifconfig tap create
* # ifconfig bridge create
* # ifconfig bridge0 addm tap0 addm fxp0 up
Also, /usr/local/etc/qemu-ifup script is needed. Networking Default, network is configured inside of the emulator; not visible from outside. This is not absolutely confotable! There are pros and cons: you must be the root and your qemu virtual machine is visible from outside. Assume you know your network interface name. In this case it is fxp0. you can check this by:
* % dmesg | grep Ethernet
First, as root,
* # sysctl net.link.ether.bridge_cfg=fxp0,tap0
* # sysctl net.link.ether.bridge.enable=1
create /usr/local/etc/qemu-ifup script as
*
#!/bin/sh
/sbin/ifconfig ${1} up
and make this script runnable.
* # chmod 755 /usr/local/etc/qemu-ifup
To do this at every boot time, write /etc/sysctl.conf
*
net.link.ether.bridge_cfg=fxp0,tap0
net.link.ether.bridge.enable=1
and in /boot/loader.conf
*
bridge_load="YES"
Invoke qemu by:
* # qemu -net nic -net tap
This was originally taken from freebsd vde helpp Qemu as VNC server Display writing is very slow in QEMU, so run qemu as vnc server is very useful.
* % qemu -hda /work/qemu/win2000ja/win2000.img -localtime -m 384 -vnc :1 -usbdevice tablet
Run vncviewer like (you can install via /usr/ports/net/tightvnc)
% vncviewer :1
You should wait for while until Windows starts up. Full Screen mode (slow) QEmu uses SDL to output the screen. Modern video card supports VESA 2.0, so you can use SDL with VESA 2.0. While using SDL you need additional settings. First, reconfigure kernel with this configuration.
*
include GENERIC
ident MAHO
device atapicam
options VESA
save as /usr/src/sys/i386/conf/MAHO or something like that. Then,
* # cd /sys/i386/compile/MAHO
# made cleandepend ; make depend ; make ; make install
you need additional setting:
* # setenv SDL_VIDEODRIVER vgl
and you can run with full-screen in the console. Again, you must be the root. As far as I tested,
* # kldload vesa
DOESN'T WORK (FOR ME). Unfortunately this is very slow, slower than X11 mode... Summary (My setting and command line) As summary, I present my setting for 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
Reconfigure kernel with this configuration file
*
include GENERIC
ident MAHO
device atapicam
options VESA
and additional enviromnent variable:
* # setenv SDL_VIDEODRIVER vgl
I don't want to be the root
* Network bridge
* Full screen mode
Links
*
Qemu
Virtual Machines...
I really like vmware, but I'm not thrilled about the licensing, pay-for-server, or proprietary virtual-disk format. So instead, I use Qemu. Qemu can boot from a dd image of a disk. (Cool!) And Qemu includes tools for converting disk images to vmware's format and vice versa. (For these goodies, I put them in my book, Hacking Ubuntu.)
The problem is, the virtual machine from Qemu does not seem to like the mouse when using Synergy. What happens is that the VM window says it grabbed the mouse, but no mouse is present. And if you move the mouse far enough to the other side, then Synergy takes it to another monitor.
The solution I use has two steps and uses VNC. VNC is normally used to see and control a remote desktop.
1. Run Qemu with the VNC setting. "-vnc 2" will start the virtual machine's desktop in VNC display 2. You can then use vncviewer localhost:2 to access the system.
2. The second problem is with mouse alignment. If your virtual machine is running Windows, then the real pointer and mouse pointer are not lined up. Fix this by specifying a pointer device that uses absolute coordinates: "-usbdevice tablet". Poof -- the mouse is aligned.
My full command-line (for my Windows 2000 image) looks like: qemu -hda win2k.hd -m 256 -win2k-hack -vnc :2 -usbdevice tablet. Works like a champ. Granted, Qemu + VNC is probably not refreshing fast enough for streaming real-time video, it is fine for basic word processing (which is the only reason I still keep a Windows system around).
No comments:
Post a Comment