[опыт] qemu + kqemu + libvirt + gentoo

Понадобилось тут поднять эту связку на x86_64 - эмуляция x86 win2k3 (1с)
Поскольку толкового мануала я не нашёл именно по этой связке - расскажу что получилось из моего опыта (заодно сам в следующий раз найду и воспользуюсь)

1. Конфигурим ядро, включаем поддержку виртуализации (я использовал gentoo-sources-2.6.30-r4)

Networking support  ---> 
      Networking options  --->
          <M> 802.1d Ethernet Bridging
Device Drivers  --->
[*] Network device support  --->
<M>   Universal TUN/TAP device driver support 
[*] Virtualization  ---> 
<*>   Kernel-based Virtual Machine (KVM) support
<*>     KVM for Intel processors support (можно в ядро, можно модулями и выбрать соответствующий для вашего процессора)
<*>     KVM for AMD processors support

На этом конфигурация ядра закончена, make && make install && make modules_install && reboot
2. Редактируем use флаги для kvm, qemu и libvirt
В моём случае достаточным было:

app-emulation/qemu kqemu kvm -sdl
app-emulation/kqemu -sdl
app-emulation/libvirt kvm qemu

3. И теперь устаналиваем нужные пакеты. Раньше для компиляции qemu было неоодимо использовать gcc 3, однако по крайней мере в версии 0.10.5 qemu собирается gcc-4.3 без ошибок.
emerge qemu kqemu kvm libvirt virtinst
4. Запускаем libvirtd, предварительно rm -rf /etc/libvir/qemu/network, поскольку сеть настраивать будем через /etc/conf.d/net
5. Настраиваем сеть. Допусти у вас 1 сетевая карта, смотрящая в локальную сеть lan0 и вы хотите чтобы виртуальная машина находилась в этой же сети, тогда вам понадобятся bridge-utils, для создания bridge.
Подробно настройки bridge хорошо описаны в net.example, вот мой пример:

bridge_br0="lan0"
config_br0="192.168.20.1/24
config_lan0="null"
RC_NEED_br0="net.eth0"
brctl_br0=( "setfd 9" "sethello 2" "setmaxage 12" "stp off" )

Так же необходимо создать символьную ссылку: ln -s /etc/init.d/net.lo /etc/init.d/net.br0
перезапускаем интерфейсы lan0 и br0 и смотрит вывод ip a l.
6. Проверяем поддерживаемую виртуализацию:
Должно быть что-нибудь типа:

#virsh capabilities
<capabilities>                    

  <host>
описание вашей машины  
</host>                                 

Тут список поддерживаемых гостевых ОС с типом виртуализации.

</capabilities>

7. Если всё в порядке то внимательно изучаем man по virt-install, эта команда создаст и зарегистрирует в libvirt нашу виртуальную машину.
Например:
virt-install -n w2003 -r 2047 --arch=i686 --vcpus=1 --os-type=windows --os-variant=win2k3 -v --virt-type=kqemu --disk path=/home/vm/w2003.img -w bridge=br0,model=e1000,mac=DD:EE:FF:FF:11:25 --vnc --vncport=5901 --import --noautoconsole
Это создаст и запустит виртуальную машину используя /home/vm/w2003.img в качестве жёсткого диска, без cd привода, --import говорит о том, что образ уже готовый и можно загружать систему прямо с него, если вам нужно устанавливать систему команда будет немного другая.
В качестве mac-адреса лучше указать что-то более похожее на реальный (можно взять сетевуху хоста и немножко изменить цифры в mac-адресе), так е модель сетевой карты лучше указать rtl8139, а не e1000 как в примере выше (в моём случае сеть с e1000 так и не заработала).
8. Если всё нормально запустилось, то можно подключиться к запущенной машине через vnc и после установки проверить работоспособность сети.
9. Не забудьте добавить в автозагрузку необходимые модули (tun, kqemu) и сервисы (net.br0, libvirtd).

В общем-то всё. Всё должно работать.

P.S. Наверняка что-то можно сделать лучше, оптимальней - комментарии и исправления приветствуются. Например скорее всего необходимо что-то одно, или kqemu или kvm.

а если еще

а если еще сделать
USE=network emerge app-emulation/virt-manager
то VirtualBox и VMware нервно курят в сторонке. Пусть не по скорости (мы не настолько суровы, чтоб под виртуалкой видео кодированть), но поудобству и функциональности. :)

P.S.: Linux - это красная таблетка :-) Windows - синяя...

Как будет снова задача

Как будет снова задача связанная с виртуальной машиной - посмотрю что даёт этот флаг.

к удаленной виртуально машине

к удаленной виртуально машине запущенной цепляцо можно.
а пакет дает удобный GUI к машинам

P.S.: Linux - это красная таблетка :-) Windows - синяя...

Не хотите превратить это в

Не хотите превратить это в статью для wiki ?

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Что для этого нужно сделать?

Что для этого нужно сделать?

kvm + libvirt + gentoo

Если позволяет железо (есть поддержка аппаратной виртуализации) то лучше использовать не связку [qemu + kqemu + libvirt + gentoo], а [kvm + libvirt + gentoo] а то получается что настроили ядро и поставили kvm зря (не используется он).

KQEMU - это "убыстрялка" для QEMU, к KVM она не имеет отношения.

Емуляторы собраны без поддержки SDL (-sdl), может на сервере она и правильнее (если сервер без иксов), но для обычного пользователя лучше собрать с SDL, тогда не нужно подключаться к виртуальной машине по VNC. Она будет сразу запускаться в окне.
Если продолжать тему использования QEMU/KVM на десктопах то вместо libvirt можно найти другой GUI, благо их сейчас много.

P.S. QEMU собирается на GCC 4 с версии 0.10.0

Собирал с -sdl потому что сам

Собирал с -sdl потому что сам сервер без X-ов, если сделаю из этого статью в wiki - отмечу.
К сожалению процессор был без аппаратной поддержки виртуализации, в итоге скорость работы w2k3 оставляла желать очень лучшего - пришлось заменить на virtualbox.

kvm получается типа

kvm получается типа инструмента, использующего qemu/libvirtual/kqemu/xen для создания/управления виртуальными машинами по любой из указанных при установке технологий.

P.S.: Linux - это красная таблетка :-) Windows - синяя...

Точнее libvirt это инструмент

Точнее libvirt это инструмент для создания виртуальных машин qemu/kvm/xen/ и других.
KQEMU - это модуль ядра для QEMU.

не. все правильно (без -sdl).

не. все правильно (без -sdl). через vnc оно как vmware-server+vmware-client работет. т.е. окно закрывать можно.

P.S.: Linux - это красная таблетка :-) Windows - синяя...

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".