[опыт] 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 - синяя...