Заметка о том, как настроить сеть между гостевой и хостовой ОС при использовании QEMU. В качестве хостовой ОС Ubuntu 10.04.На стороне хоста устанавливаем uml-utilities:
sudo apt-get install uml-utilities
Это нужно делать только один раз. Создаем сетевой интерфейс:
sudo tunctl -t qemu
Вешаем на него адрес и включаем:
sudo ip a a 192.168.0.1/24 dev qemu
sudo ip l s up dev qemu
Запускаем qemu (например):sudo qemu-system-x86_64 -hda HDD.img -cdrom FreeBSD-9.0-RC1-amd64-dvd1.iso \
-net nic -net tap,ifname=qemu,script=no,downscript=no -boot dДелаем простой NAT на хостовой ОС:
sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEНа гостевой cистеме прописываем конфигурацию маршрута по-умолчанию и конфигурацию DNS-клиента.
Еще небольшая рекомендация: запускайте qemu на десктопе под управлением утилиты screen. Это спасет вас, если вы вдруг решите закрыть окно терминала, в котором запустили qemu.
screen -S qemu sudo qemu-system-x86_64 ...
Потом делаем detach (^D) и закрываем окно терминала.
URL:
Обсуждается: https://www.opennet.ru/tips/info/2652.shtml
> Еще небольшая рекомендация: запускайте qemu на десктопе под управлением утилиты screen. Это спасет вас, если вы вдругНам, мышёвым гуевозилам с libvirt + virt-manager, этого не помять.
> Потом делаем detach (^D) и закрываем окно терминала.
Ctrl-A D или Ctrl-A Ctrl-D, вроде как.
Нам, консольным маньякам с десятками виртуалок и libvirt+virsh, не понять скрина и убунту.
Это не наш путь ;)
Насчёт virt-manager - через него так и не смог создать сетёвку на tap.
> Насчёт virt-manager - через него так и не смог создать сетёвку на
> tap.v-m из пакета или самосборный? libvirt? qemu-kvm?...
У меня из пакета (Debian 5.0 и на сервере, и на клиенте, пакеты -- бэкпорты) создаются именно tap интерфейсы, добавляются в мост с физ.интерфейсом, смотрящим в локалку. Типа, "сами". В пакете, насколько я понимаю, в дистрибутивном пакете это "подпёрто" скриптами (kvm-if{up,down}), которых при самосборе может-типа и не быть.
# dpkg -S qemu-ifup
qemu: /etc/qemu-ifup
# dpkg -S kvm/kvm-if
qemu-kvm: /etc/kvm/kvm-ifdown
qemu-kvm: /etc/kvm/kvm-ifup
# dpkg -l libvirt-bin qemu-kvm
[...]
||/ Имя Версия Описание
+++-========================-========================-================================================================
ii libvirt-bin 0.8.3-5+squeeze2~abm0 the programs for the libvirt library
ii qemu-kvm 0.12.5+dfsg-5+squeeze4~b Full virtualization on x86 hardware
# _$ dpkg -l virt-manager
[...]
||/ Имя Версия Описание
+++-========================-========================-================================================================
ii virt-manager 0.8.4-4~bpo50+2 desktop application for managing virtual machines
$ _
Извините за долгий ответ - с выходными успел забыть, в какой теме писал :)
Пакет из debian 6. Создавались не tap-интерфейсы. Соответственно, и ширина канала между гостем и сервером-гипервизором была, судя по тесту iperf, около 90 Мбит/с. В Xen поднимал бриджи вручную, там показало около 3 ГБит/с.
И да, это qemu-kvm и libvirt из стандартных пакетов squeeze.
> Еще небольшая рекомендация: запускайте qemu на десктопе под управлением утилитыscreen.
А чем -daemonize не устроил?
>> Еще небольшая рекомендация: запускайте qemu на десктопе под управлением утилиты
> screen.
> А чем -daemonize не устроил?Тем, что УГМ. Если функциональность screen не нужна, то если даже программа не поддерживает демонизацию, то её всегда можно добровольно-принудительно демонизировать с помощью setsid. Даже tty потеряет. Но во всех мануалах по запуску сервачков (неважно каких, да те же игровые сервера вроде контерстрайка) я вижу screen. Либо там требуется наблюдать за выводом программы, либо кто-то кому-то сказал, что screen - хорошее средство для принудительной демонизации программ. Непонятно.
Подскажите, а как быть в случае необходимости держать редирект последовательного порта в терминал?
> Подскажите, а как быть в случае необходимости держать редирект последовательного порта
> в терминал?Тут очевидно и нужен подобный функционал как у screen. Но чаще встречаются руководства, где его пихают по поводу и без.
А в чем смысл запускать от root-a?
> sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'Мама Чолли, вас из дас?!
Не кашерна как-то, надоbash -c sudo bash -c 'bash -c echo 1 > /proc/sys/net/ipv4/ip_forward'
Кэп намекает что там sudo есть, а у тебя - нет. Так что потроллил "не кашерна" (c).
Павлин намекает что кроме встроенной в bash echo, есть и еще и /bin/echo.
Соответственно sudo echo достаточно.
> Соответственно sudo echo достаточно.Как вы думаете, что будет, если запустить: sudo echo 1 >/proc/sys/net/ipv4/ip_forward.
?
>> sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
> Мама Чолли, вас из дас?!
> Не кашерна как-то, надо
> bash -c sudo bash -c 'bash -c echo 1 > /proc/sys/net/ipv4/ip_forward'А кто даст право на запись в /proc/sys/net/ipv4/ip_forward текущему пользователю?
А вообще уж тогда лучше "echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward"
>> bash -c sudo bash -c 'bash -c
> А кто даст правоНу, если sudo не даст, то "усё пропало, шеф!"~~~
>>> bash -c sudo bash -c 'bash -c
>> А кто даст право
> Ну, если sudo не даст, то "усё пропало, шеф!"~~~Вам тоже такой же вопрос:
Как вы думаете, если запустить: "sudo echo 1 >/proc/sys/net/ipv4/ip_forward" от пользователя - что будет?
Или я не так понимаю, о чём тут pavlinux возмущался?
>>>> bash -c sudo bash -c 'bash -c
>>> А кто даст право
>> Ну, если sudo не даст, то "усё пропало, шеф!"~~~
> Вам тоже такой же вопрос:
> Как вы думаете, если запустить: "sudo echo 1 >/proc/sys/net/ipv4/ip_forward" от пользователя
> - что будет?
> Или я не так понимаю, о чём тут pavlinux возмущался?то что для настройки системы, заходят под рутом,
а не ипуться с sudo, клавиатуру только портить.$ sudo bash и вперёд ...
# echo "Для склерозников" >> ~/.bashrc;
# echo TMOUT=30 >> ~/.bashrc;
# . ~/.bashrc;// хотя бубнтам не поможет, там по-моему dash какой-то
> то что для настройки системы, заходят под рутом,
> а не ипуться с sudo, клавиатуру только портить.
> $ sudo bash и вперёд ...
> # echo "Для склерозников" >> ~/.bashrc;
> # echo TMOUT=30 >> ~/.bashrc;
> # . ~/.bashrc;
> // хотя бубнтам не поможет, там по-моему dash какой-тоДля настройки системы я и так использую sudo -i или выхожу в один из свободных терминалов по Ctrl-Alt-F? (если локальная машина). Но иногда удобно выполнить и простое sudo sh -c '' / echo 0/1 | sudo tee /..., особенно если на этом настройка и закончится.
> а не ипуться с sudo, клавиатуру только портить.Ага, чтобы 1 команду ввести - логиниться под рутом и потом логофаться опять? Мсье знает толк!
Может кому пригодиться
Набросок, NetBSD во FreeBSD через Qemu, с картинкой
http://www.homeunix7.org/ru/unix/netbsd-guest
С картинкой не катит, надо видеоролик... это ж не уиндоус какой-нить, а BSD
> Может кому пригодиться
> Набросок, NetBSD во FreeBSD через Qemu, с картинкойВ фре KVM нет, поэтому скорость работы qemu просто никакая. Для практического применения это бесполезно.