VirtualBox: Запуск образа для QEMU/KVM: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) м (Sirmax переименовал страницу VirtualBox в VirtualBox: Запуск образа для QEMU/KVM) |
||
(не показано 36 промежуточных версий этого же участника) | |||
Строка 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 |
||
</PRE> |
</PRE> |
||
+ | ===Добавить контроллер=== |
||
<PRE> |
<PRE> |
||
VBoxManage storagectl ubuntu --name "IDE Controller" --add ide |
VBoxManage storagectl ubuntu --name "IDE Controller" --add ide |
||
</PRE> |
</PRE> |
||
+ | |||
− | Создаем IDE контроллер для нашей системы |
||
+ | ===Добавить диск (к контроллеру=== |
||
<PRE> |
<PRE> |
||
− | VBoxManage storageattach |
+ | 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 |
</PRE> |
</PRE> |
||
+ | |||
− | присваиваем нашей системе vdi |
||
+ | |||
+ | ===конвертация с raw (QEMU)=== |
||
+ | Конвертация тривиальна но нашел как это сделать я не сразу http://mydebianblog.blogspot.com/2010/05/img-qemu-virtualbox-vditool.html |
||
<PRE> |
<PRE> |
||
+ | VBoxManage convertdd CentOS-5.8_i386_PayPalLinux_09___VM_09.img.raw CentOS-5.8_i386_PayPalLinux_09___VM_09.img.vdi |
||
− | VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/vnaboychenko/work/ubuntu-12.04.1-server-amd64.iso |
||
</PRE> |
</PRE> |
||
+ | |||
− | подгружаем образ |
||
+ | ===Модификация ВМ=== |
||
+ | Указать тип системы, сеть, --vrde - для удаленного доступа. |
||
+ | <BR> в примерах обычно пишут так: |
||
<PRE> |
<PRE> |
||
− | VBoxManage modifyvm |
+ | VBoxManage modifyvm CentOS-5.8_i386_PayPalLinux_09___VM_09 --ostype redhat --memory 1024 --vrde on |
</PRE> |
</PRE> |
||
+ | Но думаю это не совсем вероно. Следуует указать еще тип авторизации и порт (если ВМок больше чем 1 то это обязательно). Я использовал следующюю комманду: |
||
− | Указываем тип Ос, выделяем оперативную память, ключ –vrde для удаленного рабочего стола |
||
<PRE> |
<PRE> |
||
+ | VBoxManage modifyvm CentOS-5.8_i386_PayPalLinux_09___VM_09 --vrde on --vrdeauthtype null --vrdemulticon off --vrdeport 5000 |
||
− | VBoxManage modifyvm ubuntu --nic1 nat |
||
</PRE> |
</PRE> |
||
− | Указываем сетевой интерфейс |
||
+ | ===Сеть=== |
||
+ | NAT - не совсем то что мне нужно, это только пример: |
||
+ | Я использовал следующие комманды:<BR> |
||
+ | Создал Host-Only интерфейс: |
||
<PRE> |
<PRE> |
||
+ | VBoxManage hostonlyif create ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0 |
||
− | VBoxManage startvm ubuntu |
||
+ | </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> |
||
+ | 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 |
||
Строка 67: | Строка 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://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 |
Текущая версия на 17: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
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
ссылки
(Если что то забыл. пишите - исправлю)