HOWTO Использование KVM

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск
Вернуться в раздел руководства

Содержание

[править] Введение

KVM (Kernel-based Virtual Machine) это программное решение, обеспечивающее виртуализацию в среде Linux на платформе x86, которая поддерживает аппаратную виртуализацию на базе Intel VT либо AMD SVM. Наличие поддержки аппаратной виртуализации в процессоре можно определить по наличию определенных флагов командой:

 # egrep '^flags.*(vmx|svm)' /proc/cpuinfo 

[править] Установка

Поддержка KVM есть в основном дереве портов. Рекомендуется использовать последнюю версию из ветки ~arch, а также наиболее свежее ядро. Для установки достаточно выполнить:

 # emerge -avuD app-emulation/kvm 

Следует обратить внимание на поддерживаемые USE-флаги:

  • alsa - поддержка вывода звука через библиотеку media-libs/alsa-lib
  • gnutls - поддержка шифрования TLS 1.0 и SSL 3.0
  • ncurses - поддержка консольной библиотеки вывода
  • sdl - поддержка вывода через библиотеку SDL
  • esd и pulseaudio- поддержка вывода звука через Enlightened Sound Daemon и Pulseaudio
  • test - для portage-2.1.2 и выше в нем больше нет необходимости.
  • havekernel - Отключает проверку совместимости с исходным кодом ядра (полезно при использовании ядра из двоичного пакета)

Если выбор комбинации флагов вызывает затруднение, то рекомендуется использовать следующий набор: alsa gnutls ncurses sdl.

После установки необходимо добавить пользователя в группу KVM для возможно доступа к некоторым файлам в /dev:

 # gpasswd -a <USER> kvm 

В случае поддержки KVM в ядре модулем для автоматической загрузки модуля виртуализации необходимо добавить в /etc/conf.d/modules загрузку kvm-amd или kvm-intel и выполнить update-modules. Для поддержки сети требуется от ядра поддержка драйверов TUN/TAP и 802.1d Ethernet Bridging. Позаботьтесь в случае необходимости о загрузке этих модулей.

[править] Использование

Полный список возможностей можно узнать, прочитав man kvm или вывод программы /usr/bin/kvm без параметров. Полный список эмулируемого оборудования перечислен в man'е. Поддерживается:

  • Видеокарта Cirrus CLGD 5446 или VGA с расширениями Bochs VESA
  • Мост PCI i440FX и PIIX3 PCI to ISA
  • PCI UHCI USB и виртуальный USB-hub
  • Сетевая карта NE2000-совместимая
  • Несколько видов звуковых карт
  • PS/2 клавиатура и мышь, последовательный порт, дисковвод, 2xIDE(HDD или CDROM)

Наиболее простой пример запуска виртуальной машины из командной строки:

 # kvm -cdrom livecd.iso -m 256 

Что означает: "Запустить виртуальную машину с образом CD-диска livecd.iso в виртуальном устройстве CDROM, с лимитом памяти в 256 Мб".

Часто используемые общие параметры:

  • -M - тип эмулируемой машины (pc или isapc(ISA-only PC)), умолчанию pc(Standard PC)
  • -cpu - тип эмулируемого процессора (qemu64, qemu32, 486, pentium, pentium2, pentium3, athlon)
  • -smp - эмулировать несколько процессоров(до 255)
  • -m - лимит использования оперативной памяти в мегабайтах
  • -boot - загрузка с дисковвода (a), жесткого диска (c), CD-ROM (d), Etherboot (n). По-умолчанию с жесткого диска.
  • -full-screen - запуск отображения на полный экран
  • -no-acpi - отключить поддержку ACPI
  • -localtime - устанавливать RTC в локальное время(по умолчанию UTC).

Находясь в окне(или консоле) KVM действуют сочетания клавиш, наиболее часто используемые из них:

  • Ctrl-Alt-f - развернуть во весь экран
  • Ctrl-Alt - освободить устройства ввода (клавиатуры и мышь)
  • Ctrl-a x - выйти из эмулятора
  • Ctrl-Alt-n - переключение в виртуальную консоль, где n: 1-экран системы, 2-служебный монитор, 3-последовательный порт.

[править] Виртуальные диски

В качестве виртуального устройства "диск" может выступать файл-образ или физический накопитель. Поддерживает несколько форматов образов дисков, наиболее востребованы из них:

  • raw - посекторная копия диска, рекомендуется использовать для своместимости с другими эмуляторами(используется по умолчанию, так как большинство файловых систем за исключением FAT поддерживают "Дыры" и хранят информацию только с непустыми секторами);
  • qcow2 - формат QEMU, в котором размер увеличивается по мере записи непустых секторов, поддерживается сжатие и шифрование;
  • vmdk - совместимый формат с VMware 3 и 4 или 6.

Чтобы создать образ виртуального диска необходимо воспользоваться следующей командой:

 # kvm-img create disk.img 10G 

Команда kvm-image также может выполнять другие действия (convert, commit, info), о чем подробно написано в man'е.

Подключить диски можно передав ключи в командной строке:

  • hd(a-d) - жесткие диски;
  • cdrom - устройство CDROM;
  • fd(a-b) - дисковвод.

Полезна опция snapshot, при ее использовании все образы дисков используются только для чтения. При записи секторов они записываются во временный файл. Однако можно включить принудительную запись в "сырой" образ диска с помощью команды commit в мониторе (или клавиш C-a s в последовательной консоли).

 # kvm -hda disk.img -hdb disk2.img -cdrom livecd.iso -fda floppy.img 

Также, заместо файлов-образов, можно использовать ссылки на физические устройства, например,

 # kvm -hda /dev/sdс -cdrom /dev/sr0 -fda /dev/fd0 

Только необходимо позаботиться, чтобы эти устройства не были кем либо заняты.

Предупреждение: KVM не поддерживает одновременно опцию hdc и cdrom, так как они указывают на один канал IDE-контроллера

Для считывание информации с файла-образа достаточно примонтировать его на loop-устройство со смещением, например,

 # mount -o loopback,offset=32256 image.img /mnt/image 
Предупреждение: Нельзя монтировать образ, пока он используется виртуальной машиной, иначе данные могут испортиться!

[править] Настройка сети

[править] Проброс USB-портов

KVM эмулирует PCI UHCI USB контроллер. Возможно подключать как виртуальные USB-устройства, так и реальные. KVM автоматически создаст и подключит виртуальные USB-хабы, как только будет подключено несколько устройств.

Подключить USB-устройство в виртуальный порт можно при помощи параметра командной строки usbdevice, который может принимать следующие значения:

  • mouse - перекроет эмуляцию PS/2 мыши;
  • tablet - что-то вроде touchscreen'а,не будет перехватывать мышь, перекроет эмуляцию PS/2;
  • disk:file - эмуляция USB-накопителя из файла-образа;
  • host:bus.addr - Подключить к виртуальному USB-хосту реальное устройство по bus.addr;
  • host:vendor_id:product_id - Подключить к виртуальному USB-хосту реальное устройство по vendor_id:product_id;
  • serial:[vendorid=vendor_id][,productid=product_id]:dev - описание обширное, за подробностями в man.
 # kvm -hda disk.img -usbdevice mouse 

Для подключения физических USB-устройств после запуска виртуальной машины можно воспользоваться монитором(Ctrl-Alt-2) и командами "info usbhost" и "usb_add host:1234:5678".

[править] Поддержка звука

KVM для x86 позволяет эмулировать три звуковые карты:

  • Creative Sound Blaster 16
  • ENSONIQ AudioPCI ES1370
  • PC speaker

Чтобы подключить виртуальную звуковую карту, достаточно передать в командной строке параметр soundhw с одним из трех значений: sb16, es1370, pcspk.

 # kvm -hda disk.img -soundhw sb16 

[править] Графический интерфейс

[править] Запуск гостевых ОС

[править] Linux

[править] WindowsXP

[править] FreeDOS

Личные инструменты