Nov 07, 2010 12:17
# cd /usr/ports/emulator/qemu
# make -DWITH_KQEMU
# make install
QEMU с поддержкой модуля акселерации KQEMU
Подгружаем модуль акселерации и модуль асинхронного ввода-вывод
# kldload kqemu
# kldload aio
Для доступа эмулируемой системы к сети нужно настроить мост в эмулирующей системе.
Сетевой мост во FreeBSD 7.0 создается с помощью модуля if_bridge. Сетевой мост if_bridge был портирован из NetBSD и, начиная с версии FreeBSD 7.0, заменил устаревший сетевой мост bridge.
Создаем виртуальный сетевой интерфейс, к которому будет подключен Windows
# ifconfig tap0 create
Создаем виртуальный сетевой интерфейс, который будет выполнять функции моста
# ifconfig bridge0 create
Объединяем интерфейсы в мост
# ifconfig bridge0 addm em0 addm tap0 up
На этом создание сетевого моста завершено.
Включаем автоматическое поднятие интерфейса tap0 и разрешаем непривилегированному пользователю соединяться с интерфейсом tap0
# sysctl net.link.tap.up_on_open=1
# sysctl net.link.tap.user_open=1
Разрешаем непривилегированному пользователю открывать устройство /dev/tap0
# chmod 666 /dev/tap0
Увековечить
Чтобы модули подгружались при загрузке, нужно добавить строку в конфигурационный файл /boot/loader.conf:
kqemu_load=”YES”
aio_load=”YES”
Чтобы эти переменные инициализировалась при загрузке, нужно добавить строку в /etc/sysctl.conf:
net.link.tap.up_on_open=1
net.link.tap.user_open=1
Чтобы мост создавался при загрузке, нужно добавить две строки в конфигурационный файл /etc/rc.conf:
cloned_interfaces=”tap0 bridge0″
ifconfig_bridge0=”addm em0 addm tap0 up”
Файлы устройств пересоздаются каждый раз при загрузке системы, поэтому права доступа на файл после перезагрузки вернутся в исходное состояние (600). Поэтому следует задавать права доступа к устройству не через chmod, а через правила devfs. Для этого нужно добавить строку в конфигурационный файл /etc/devfs.conf:
perm tap0 0666
bridge,
qemu,
freebsd