VirtualBox: Запуск образа для QEMU/KVM: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
м (Sirmax переименовал страницу VirtualBox в VirtualBox: Запуск образа для QEMU/KVM)
 
(не показано 30 промежуточных версий этого же участника)
Строка 1: Строка 1:
  +
[[Категория:Linux]]
  +
[[Категория:Virtualisation]]
  +
[[Категория:VirtualBox]]
 
=VirtualBox=
 
=VirtualBox=
  +
Задача: есть образ виртуальной машины. (qemu, kvm). Нужно запускать его на хост-машине с VirtualBox. В качестве хост-машины убунту. ВиртуалБокс 4.1.12
 
  +
<PRE>
VBoxManage showvminfo "name" - Полная информация о виртуальной машине
 
  +
# VBoxManage -v
 
  +
4.1.12_Ubuntur77245
  +
</PRE>
  +
Этот документ является компоновкой из нескольких, потому возможны некоторые ошибки в именах машин и путям к образам. Иногда используются относительные пути, иногда абсолютные.
 
==Создание виртуальной машины==
 
==Создание виртуальной машины==
   
===Cоздать виртуальную машину===
+
===Cоздать виртуальную машину (xml)===
  +
Машина должна быть зарегистрирована. Не вижу смысла создавать незарегистрированную машину.
 
 
<PRE>
 
<PRE>
 
VBoxManage createvm -name CentOS-5.8_i386_PayPalLinux_09___VM_09 -register
 
VBoxManage createvm -name CentOS-5.8_i386_PayPalLinux_09___VM_09 -register
 
</PRE>
 
</PRE>
 
   
 
<PRE>
 
<PRE>
Строка 24: Строка 29:
 
"CentOS-5.8_i386_PayPalLinux_09___VM_09" {c3afd038-b4cc-4152-acad-6332b761b7ea}
 
"CentOS-5.8_i386_PayPalLinux_09___VM_09" {c3afd038-b4cc-4152-acad-6332b761b7ea}
 
</PRE>
 
</PRE>
  +
И посмотреть детали виртуальной машины:
  +
<PRE>
  +
VBoxManage showvminfo CentOS-5.8_i386_PayPalLinux_09___VM_09
   
  +
Name: CentOS-5.8_i386_PayPalLinux_09___VM_09
  +
Guest OS: Red Hat
  +
UUID: c3afd038-b4cc-4152-acad-6332b761b7ea
  +
Config file: /root/VirtualBox VMs/CentOS-5.8_i386_PayPalLinux_09___VM_09/CentOS-5.8_i386_PayPalLinux_09___VM_09.vbox
  +
Snapshot folder: /root/VirtualBox VMs/CentOS-5.8_i386_PayPalLinux_09___VM_09/Snapshots
  +
Log folder: /root/VirtualBox VMs/CentOS-5.8_i386_PayPalLinux_09___VM_09/Logs
  +
Hardware UUID: c3afd038-b4cc-4152-acad-6332b761b7ea
  +
<skipped>
  +
Вывод поскипан, но обычно все что нужно можно найти.
  +
</PRE>
   
 
===создать .vdi диск для системы===
 
===создать .vdi диск для системы===
Мне не нужно - конвертирую
+
Мне не нужно - конвертирую, как создавать - только пример. Описание конвертации ниже.
 
<PRE>
 
<PRE>
 
VBoxManage createvdi -filename "ubuntu-server.vdi" -size 5000
 
VBoxManage createvdi -filename "ubuntu-server.vdi" -size 5000
Строка 51: Строка 69:
 
===Модификация ВМ===
 
===Модификация ВМ===
 
Указать тип системы, сеть, --vrde - для удаленного доступа.
 
Указать тип системы, сеть, --vrde - для удаленного доступа.
  +
<BR> в примерах обычно пишут так:
 
<PRE>
 
<PRE>
 
VBoxManage modifyvm CentOS-5.8_i386_PayPalLinux_09___VM_09 --ostype redhat --memory 1024 --vrde on
 
VBoxManage modifyvm CentOS-5.8_i386_PayPalLinux_09___VM_09 --ostype redhat --memory 1024 --vrde on
 
</PRE>
 
</PRE>
  +
Но думаю это не совсем вероно. Следуует указать еще тип авторизации и порт (если ВМок больше чем 1 то это обязательно). Я использовал следующюю комманду:
 
 
<PRE>
 
<PRE>
VBoxManage modifyvm CentOS-5.8_i386_PayPalLinux_09___VM_09 --nic1 nat
+
VBoxManage modifyvm CentOS-5.8_i386_PayPalLinux_09___VM_09 --vrde on --vrdeauthtype null --vrdemulticon off --vrdeport 5000
 
</PRE>
 
</PRE>
   
  +
===Сеть===
  +
NAT - не совсем то что мне нужно, это только пример:
  +
Я использовал следующие комманды:<BR>
  +
Создал Host-Only интерфейс:
  +
<PRE>
  +
VBoxManage hostonlyif create ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0
  +
</PRE>
  +
потом указал что сеть хост-онли:
  +
<PRE>
  +
VBoxManage modifyvm CentOS-5.8_i386_PayPalLinux_09___VM_09 --nic1 hostonly --hostonlyadapter1 vboxnet0
  +
</PRE>
  +
Собственно, этого достаточно:
  +
<PRE>
  +
vboxnet0 Link encap:Ethernet HWaddr 0a:00:27:00:00:00
  +
inet addr:192.168.56.1 Bcast:192.168.56.255 Mask:255.255.255.0
  +
inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link
  +
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  +
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
  +
TX packets:507 errors:0 dropped:0 overruns:0 carrier:0
  +
collisions:0 txqueuelen:1000
  +
RX bytes:0 (0.0 B) TX bytes:85774 (85.7 KB)
  +
</PRE>
   
  +
==Старт ВМ==
  +
Простой неправильный пример - в этом случае вывод будет на монитор и в случае если это удаленный сервер - ничего не получится
 
<PRE>
 
<PRE>
VBoxManage startvm ubuntu
+
VBoxManage startvm ubuntu
  +
</PRE>
  +
Прааильный вариант - так:
  +
<PRE>
  +
VBoxManage startvm CentOS-5.8_i386_PayPalLinux_09___VM_09 --type headless
  +
</PRE>
  +
все параметы портов и рдп будут взяты из конфига ВМ (настроено выше)
  +
<BR>
  +
<B>Внимание</B>:должны быть установлены екстеншены!!!
  +
===Установка дополнений===
  +
Скачать с сайта виртуалбокса, есть для всех не слишком старых версий.
  +
Установить так:
  +
<PRE>
  +
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.12-77245.vbox-extpack.tar.gz
  +
</PRE>
  +
После чего машина стартует нормально, и начинает слушать порт (5000 у меня)
  +
<PRE>
  +
netstat -ntpl | grep 5000
  +
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 16029/VBoxHeadless
 
</PRE>
 
</PRE>
стартуем нашу виртуалку. --type headless стартует без отображения
 
   
  +
==Импорт/Экспорт==
 
<PRE>
 
<PRE>
 
VBoxManage export ubuntu -o ubuntu.ova
 
VBoxManage export ubuntu -o ubuntu.ova
Строка 75: Строка 136:
   
   
  +
==Работа с госевой ОС==
3) Проброс портов
 
  +
на этой стадии у меня загрузился мой образ, получил IP по DHCP и я могу получить доступ с хоста. Так же RDP на хост-машину на порт 5000 проброшен на ВМ. Но графика не работает (отсутвует драйвер видеокарты)
 
  +
===Графика===
[--natpf<1-N> [<rulename>],tcp|udp,[<hostip>],
 
  +
Для нормальной работы - доставить драйвер. Я делал это просто: скопировал iso с драйверами, запустил .run, дождался исполнения, перезагрузился.
<hostport>,[<guestip>],<guestport>]
 
 
<PRE>
 
<PRE>
  +
scp VBoxGuestAdditions_4.1.12.iso root@192.168.56.101:
VBoxManage modifyvm spite-windows --natpf1 "rule 3",tcp,127.0.0.1,4444,,24
 
 
</PRE>
 
</PRE>
  +
Здесь 192.168.56.101 это адрес ВМки. Думаю останавливаться на mount -o loop и sh ...run нет смысла.
  +
  +
===Проброс портов===
  +
Это пример, смысл мне пока что не сильно ясен, оставлдяю для дальнейшей доработки<BR>
 
Пробросили 24 порт гостевой машины на 4444 порт 127.0.0.1
 
Пробросили 24 порт гостевой машины на 4444 порт 127.0.0.1
  +
<PRE>
 
  +
VBoxManage modifyvm spite-windows --natpf1 "rule 3",tcp,127.0.0.1,4444,,24
Пропрос портов на ходу
 
VBoxManage controlvm ubuntu natpf1 "rule 3",tcp,127.0.0.1,4444,,24
 
 
</PRE>
 
</PRE>
  +
Пропрос портов на ходу
4) Shared Folder
 
  +
<PRE>
VBoxManage sharedfolder add "spite-windows" --name "sharename" --hostpath "/home/vnaboychenko/gns"
 
  +
VBoxManage controlvm ubuntu natpf1 "rule 3",tcp,127.0.0.1,4444,,24
 
</PRE>
 
</PRE>
   
  +
===Shared Folder===
 
<PRE>
 
<PRE>
  +
VBoxManage sharedfolder add "имяМашины" --name "имяШары" --hostpath "ПутьКпапкеНаХостМашине"
Для windows
 
в консоле net use Y: \\vboxsvr\sharename
 
 
или делаем это с флагом –automount
 
 
</PRE>
 
</PRE>
  +
  +
Для windows (гость имеется ввиду, я сам это НЕ проверял ) в консоли
 
<PRE>
 
<PRE>
  +
net use Y: \\vboxsvr\sharename
VBoxManage sharedfolder add "spite-windows" --name "gns" --hostpath "/home/vnaboychenko/gns" -automount
 
 
</PRE>
 
</PRE>
тогда нам не придется монтировать её в системе.
 
   
 
<PRE>
 
<PRE>
  +
VBoxManage sharedfolder add "spite-windows" --name "gns" --hostpath "/home/vnaboychenko/gns" -automount
Для гостевой Ubuntu Linux
 
  +
</PRE>
 
  +
тогда нам не придется монтировать её в системе. (а куда смотирует ее автомаунт?)
Нам нужны пакеты
 
 
virtualbox - x86 virtualization solution - base binaries
 
virtualbox-guest-utils - x86 virtualization solution - non-X11 guest utilities
 
virtualbox-guest-x11 - x86 virtualization solution - X11 guest utilities
 
virtualbox-qt - x86 virtualization solution - Qt based user interface
 
 
VBoxManage sharedfolder add "ubuntu-guest" --name "sharedfolder" --hostpath "/home/vnaboychenko/gns"
 
Делаем шаред фолдер для нашей системы
 
   
  +
Для гостевой Ubuntu Linux нужны пакеты:
  +
<PRE>
  +
virtualbox - x86 virtualization solution - base binaries
  +
virtualbox-guest-utils - x86 virtualization solution - non-X11 guest utilities
  +
virtualbox-guest-x11 - x86 virtualization solution - X11 guest utilities
  +
virtualbox-qt - x86 virtualization solution - Qt based user interface
  +
</PRE>
  +
Для CentOS достаточно (по видимому) того что установлено. Добавлять шаредфолдеры на-лету нельзя. Только к остановленным машинам.
  +
<PRE>
  +
VBoxManage sharedfolder add "" --name "home" --hostpath "/home/mmaxur"
  +
</PRE>
  +
Внутри ВМ
  +
<PRE>
  +
mount.vboxsf home /mnt/
  +
</PRE>
 
и с гостевой системы монтируем папку
 
и с гостевой системы монтируем папку
  +
<PRE>
mount.vboxsf sharedfolder /mnt/test
 
  +
mount.vboxsf sharedfolder /mnt/test
 
</PRE>
 
</PRE>
 
   
 
==ссылки==
 
==ссылки==
  +
(Если что то забыл. пишите - исправлю)
 
* http://wiki.enchtex.info/howto/gentoo/virtualbox-headless
 
* http://wiki.enchtex.info/howto/gentoo/virtualbox-headless
* http://mirspo.narod.ru/vbox/ch08.html
+
* http://mirspo.narod.ru/vbox/ (русский!)
  +
* http://www.virtualbox.org/manual/ch06.html
  +
* http://mydebianblog.blogspot.com/2010/05/img-qemu-virtualbox-vditool.html
  +
* http://unixforum.org/index.php?showtopic=126802

Текущая версия на 18:29, 3 апреля 2020

VirtualBox

Задача: есть образ виртуальной машины. (qemu, kvm). Нужно запускать его на хост-машине с VirtualBox. В качестве хост-машины убунту. ВиртуалБокс 4.1.12

# VBoxManage -v
4.1.12_Ubuntur77245

Этот документ является компоновкой из нескольких, потому возможны некоторые ошибки в именах машин и путям к образам. Иногда используются относительные пути, иногда абсолютные.

Создание виртуальной машины

Cоздать виртуальную машину (xml)

Машина должна быть зарегистрирована. Не вижу смысла создавать незарегистрированную машину.

VBoxManage createvm -name  CentOS-5.8_i386_PayPalLinux_09___VM_09  -register 
# VBoxManage createvm -name CentOS-5.8_i386_PayPalLinux_09___VM_09 -register 
Virtual machine 'CentOS-5.8_i386_PayPalLinux_09___VM_09' is created and registered.
UUID: c3afd038-b4cc-4152-acad-6332b761b7ea
Settings file: '/root/VirtualBox VMs/CentOS-5.8_i386_PayPalLinux_09___VM_09/CentOS-5.8_i386_PayPalLinux_09___VM_09.vbox'

потом можно посмотреть список:

#VBoxManage  list vms
"CentOS-5.8_i386_PayPalLinux_09___VM_09" {c3afd038-b4cc-4152-acad-6332b761b7ea}

И посмотреть детали виртуальной машины:

VBoxManage showvminfo   CentOS-5.8_i386_PayPalLinux_09___VM_09 

Name:            CentOS-5.8_i386_PayPalLinux_09___VM_09
Guest OS:        Red Hat
UUID:            c3afd038-b4cc-4152-acad-6332b761b7ea
Config file:     /root/VirtualBox VMs/CentOS-5.8_i386_PayPalLinux_09___VM_09/CentOS-5.8_i386_PayPalLinux_09___VM_09.vbox
Snapshot folder: /root/VirtualBox VMs/CentOS-5.8_i386_PayPalLinux_09___VM_09/Snapshots
Log folder:      /root/VirtualBox VMs/CentOS-5.8_i386_PayPalLinux_09___VM_09/Logs
Hardware UUID:   c3afd038-b4cc-4152-acad-6332b761b7ea
<skipped>
Вывод поскипан, но обычно все что нужно можно найти.

создать .vdi диск для системы

Мне не нужно - конвертирую, как создавать - только пример. Описание конвертации ниже.

VBoxManage createvdi -filename "ubuntu-server.vdi" -size 5000

Добавить контроллер

VBoxManage storagectl ubuntu --name "IDE Controller" --add ide

Добавить диск (к контроллеру

	
VBoxManage storageattach CentOS-5.8_i386_PayPalLinux_09___VM_09 --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /home/mmaxur/virtual/CentOS-5.8_i386_PayPalLinux_09___VM_09.img.vdi 


конвертация с raw (QEMU)

Конвертация тривиальна но нашел как это сделать я не сразу http://mydebianblog.blogspot.com/2010/05/img-qemu-virtualbox-vditool.html

VBoxManage convertdd CentOS-5.8_i386_PayPalLinux_09___VM_09.img.raw CentOS-5.8_i386_PayPalLinux_09___VM_09.img.vdi

Модификация ВМ

Указать тип системы, сеть, --vrde - для удаленного доступа.
в примерах обычно пишут так:

VBoxManage modifyvm CentOS-5.8_i386_PayPalLinux_09___VM_09 --ostype redhat --memory 1024 --vrde on

Но думаю это не совсем вероно. Следуует указать еще тип авторизации и порт (если ВМок больше чем 1 то это обязательно). Я использовал следующюю комманду:

VBoxManage modifyvm CentOS-5.8_i386_PayPalLinux_09___VM_09  --vrde on --vrdeauthtype null --vrdemulticon  off --vrdeport 5000

Сеть

NAT - не совсем то что мне нужно, это только пример: Я использовал следующие комманды:
Создал Host-Only интерфейс:

VBoxManage hostonlyif create ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0

потом указал что сеть хост-онли:

VBoxManage modifyvm CentOS-5.8_i386_PayPalLinux_09___VM_09 --nic1 hostonly --hostonlyadapter1 vboxnet0

Собственно, этого достаточно:

vboxnet0  Link encap:Ethernet  HWaddr 0a:00:27:00:00:00  
          inet addr:192.168.56.1  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:507 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:85774 (85.7 KB)

Старт ВМ

Простой неправильный пример - в этом случае вывод будет на монитор и в случае если это удаленный сервер - ничего не получится

VBoxManage startvm ubuntu 

Прааильный вариант - так:

VBoxManage startvm CentOS-5.8_i386_PayPalLinux_09___VM_09 --type headless

все параметы портов и рдп будут взяты из конфига ВМ (настроено выше)
Внимание:должны быть установлены екстеншены!!!

Установка дополнений

Скачать с сайта виртуалбокса, есть для всех не слишком старых версий. Установить так:

VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.12-77245.vbox-extpack.tar.gz

После чего машина стартует нормально, и начинает слушать порт (5000 у меня)

 netstat  -ntpl | grep 5000
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      16029/VBoxHeadless

Импорт/Экспорт

	VBoxManage export ubuntu -o ubuntu.ova

сохраняем нашу систему как .ova

	VBoxManage import ubuntu.ova 

после чего можем её импортировать


Работа с госевой ОС

на этой стадии у меня загрузился мой образ, получил IP по DHCP и я могу получить доступ с хоста. Так же RDP на хост-машину на порт 5000 проброшен на ВМ. Но графика не работает (отсутвует драйвер видеокарты)

Графика

Для нормальной работы - доставить драйвер. Я делал это просто: скопировал iso с драйверами, запустил .run, дождался исполнения, перезагрузился.

scp VBoxGuestAdditions_4.1.12.iso root@192.168.56.101:

Здесь 192.168.56.101 это адрес ВМки. Думаю останавливаться на mount -o loop и sh ...run нет смысла.

Проброс портов

Это пример, смысл мне пока что не сильно ясен, оставлдяю для дальнейшей доработки
Пробросили 24 порт гостевой машины на 4444 порт 127.0.0.1

VBoxManage modifyvm spite-windows --natpf1  "rule 3",tcp,127.0.0.1,4444,,24

Пропрос портов на ходу

VBoxManage controlvm ubuntu natpf1  "rule 3",tcp,127.0.0.1,4444,,24    

Shared Folder

VBoxManage sharedfolder add "имяМашины" --name "имяШары" --hostpath "ПутьКпапкеНаХостМашине"

Для windows (гость имеется ввиду, я сам это НЕ проверял ) в консоли

net use Y:  \\vboxsvr\sharename
VBoxManage sharedfolder add "spite-windows" --name "gns" --hostpath "/home/vnaboychenko/gns" -automount

тогда нам не придется монтировать её в системе. (а куда смотирует ее автомаунт?)

Для гостевой Ubuntu Linux нужны пакеты:

virtualbox                                                        - x86 virtualization solution - base binaries 
virtualbox-guest-utils                                            - x86 virtualization solution - non-X11 guest utilities 
virtualbox-guest-x11                                              - x86 virtualization solution - X11 guest utilities 
virtualbox-qt                                                     - x86 virtualization solution - Qt based user interface

Для CentOS достаточно (по видимому) того что установлено. Добавлять шаредфолдеры на-лету нельзя. Только к остановленным машинам.

VBoxManage sharedfolder add "" --name "home" --hostpath "/home/mmaxur"

Внутри ВМ

mount.vboxsf home /mnt/

и с гостевой системы монтируем папку

mount.vboxsf sharedfolder /mnt/test

ссылки

(Если что то забыл. пишите - исправлю)