Ключевые слова:qemu, emulator, virtual, freeebsd, windows, (найти похожие документы)
From: Mike A. Kuznetsov <http://mikevmk.livejournal.com/>
Date: Sun, 24 Nov 2006 17:02:14 +0000 (UTC)
Subject: Qemu + Windows под FreeBSD 6.1
Оригинал: http://community.livejournal.com/ru_root/710103.html
Qemu 0.8.1 on FreeBSD 6.1 + Windows MicroMiniHOWTO
Самая толковая информация по qemu под FreeBSD нашлась здесь:
http://fabrice.bellard.free.fr/qemu/user-doc.html (Офциальная документация)
http://people.freebsd.org/~maho/qemu/qemu.html (Самое толковое описание)
http://qemu.dad-answers.com/Задача
Поставить Windows на qemu-0.8.1 под FreeBSD 6.1 и удаленно ей
управлять
Сборка и установка
По http://people.freebsd.org/~maho/qemu/qemu.html :
# cd /usr/ports/emulator/qemu
# make -DWITH_KQEMU -DWITH_HACKS && make install clean
Установка Windows
Создаем образ жесткого диска для Windows размером 4Гб:
# mkdir /usr/local/win
# qemu-img create /usr/local/win/win.img 4096M
Я поднял для удобства установки и первоначальной настройки Xserver CygWin:
1. Установил его с [20]http://x.cygwin.com/
2. Из прилагаемого bash'a запустил Xserver с отключением access control:
$ X -ac
3. Включил в PuTTY X11 forwarding, залогинился на машину с FreeBSD
4. Там (xxx - мой ip):
# export DISPLAY=xxx.xxx.xxx.xxx:0
Ставим Windows с образа компакт-диска или прямо с диска (тогда -cdrom /dev/acd0):
# qemu -full-screen -localtime -m 512 -cdrom /tmp/win.iso -boot d \
/usr/local/win/win.img
-full-screen я использовал потому что иначе на cygwin/X не
подхватывается мышка нормально
Можно устанавливать и сразу с поддержкой сети, но проще по очереди.
KQemu
KQemu - модуль ядра, обеспечивающий акселерацию qemu, без него вся
затея имхо теряет смысл. Подгружаем его:
# kldload kqemu
Чтобы подгружался автоматически при старте системы, пишем в
/boot/loader.conf:
kqemu_load="YES"
Сеть
Как только Windows установлена, сразу хочется увидеть ее
работоспособность в сети, для этого:
Проверяем поддержку ng в ядре, затем:
# cp /usr/share/examples/netgraph/ether.bridge
/usr/local/bin/qemu-net.sh
Редактируем qemu-net.sh, изменяем строки BRIDGE_IFACES и LOCAL_IFACES:
BRIDGE_IFACES="em0 tap0"
LOCAL_IFACES="em0"
Где em0 - локальный интерфейс.
# chmod +x /usr/local/bin/qemu-net.sh
Создаем /etc/qemu-ifup (там по умолчанию qemu ищет скрипт для "-net tap"),
туда пишем:
#!/bin/sh
ifconfig ${1} yyy.yyy.yyy.yyy netmask 255.255.255.128
/usr/local/bin/qemu-net.sh stop
/usr/local/bin/qemu-net.sh start
IP я брал из моей сети netmask тоже мой соответствующий.
Потом, конечно:
# chmod +x /etc/qemu-ifup
Далее я настроил свой dhcp-сервер на выдачу ip zzz.zzz.zzz.zzz по
дефолтному MAC для "-net nic" - 52:54:00:12:34:56.
В принципе MAC можно задавать из строки запуска qemu, можно вообще
статически сконфигурировать в Windows - это все дело вкуса.
Использование
Запускаем qemu:
# qemu -kernel-kqemu -full-screen -localtime -boot c \
/usr/local/win/win.img -net nic,model=rtl8139 -net tap -m 512
model=rtl8139, потому что с дефолтной почему-то только 10Мб/с получилось.
В Windows я поотключал всякие windows firewall и прочее, дал доступ к
Terminal Service и залогинился со своей машины.
Уводим в бэкграунд
У меня qemu с Windows запускается при загрузке из rc.local следующей
строкой:
/usr/local/bin/screen -dmS qemu /usr/local/bin/qemu -nographic \
-parallel null -serial null -monitor null -kernel-kqemu -localtime \
-net nic,model=rtl8139 -net tap -m 512 -boot c /usr/local/win/win.img &