Іноді виникає потреба запустити віртуальну машину на хості без іксів. Я розповім про те, як це зробити, маючи доступ до хостової системи тільки по ssh + rdp (Remote Desktop Protocol). процес я буду описувати для OC Ubuntu 9.10 як хост.

Почнемо з встановлення VirtualBox.

Попередньо потрібно встановити пакет dkms (Dynamic Kernel Module Support Framework):

Sudo apt-get install dkms

На сайті пропонується 2 варіанти: прописати джерело пакетів (deb download.virtualbox.org/virtualbox/debian karmic non-free) в /etc/apt/sources.list або завантажити та встановити deb-пакет. Коли я прописав джерело і зробив sudo apt-get install virtualbox-3.1, у мене потяглася купа пакетів із залежностей (у тому числі і якихось для GUI інтерфейсу). Тому краще завантажити deb-пакет. Качаємо, встановлюємо:

Sudo dpkg -i virtualbox-3.1_3.1.0-55467_Ubuntu_karmic_i386.deb

Можливо, тут також знадобляться залежності (якісь бібліотеки для парсингу xml, в якому зберігаються конфіги, але їх значно менше ніж у першому випадку). Якщо встановлення не завершилося через залежність, можна просто зробити

Sudo apt-get -f install

При цьому встановляться залежності та VirtualBox

Ок. VirtualBox поставили. Почнемо створювати guest-машини.

Створюємо саму машину:

VBoxManage createvm --name ubuntu --ostype Ubuntu --register
(name - ім'я машини, otype - тип системи. повний списоквсіх типів можна дізнатися командою VBoxManage list ostypes)

Налаштовуємо

VBoxManage modifyvm ubuntu --memory 512 --floppy disabled --audio none --nic1 bridged --bridgeadapter1 eth0 --vram 4 --accelerate3d off --boot1 disk --acpi on --cableconnected1 on --usb off --vrdp on --vrdpport 3390

Тут здебільшого все зрозуміло. як тип мережі можна вказати також NAT (--nic1 nat). також включаємо rdp

Створюємо hdd дискдля віртуальної машини:

VBoxManage createhd --filename /home/user/vbox/ubuntu.vdi --size 20000 --register

Додаємо контролер IDE до нашої машини

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

Чіпляємо на IDE0 створений раніше hdd

VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /home/user/vbox/ubuntu.vdi

На IDE1 чіпляємо настановний образ

VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/user/vbox/iso/ubuntu-9.10-alternate-i386.iso

Говоримо машині вантажитися з диска

VBoxManage modifyvm ubuntu --boot1 dvd

Запускаємо машину

Для того, щоб поставити базову систему, скористаємося rdp-клієнтом (у мене KDE, в стандартну поставку входить KRDC). коннектимся на хостову машину на порт, який вказали в налаштуваннях (--vrdpport 3390), ставимо систему, робимо sudo apt-get install openssh-server . тепер на віртуальну машину можна потрапити по ssh

Зупиняємо віртуальну машину

VBoxManage controlvm ubuntu acpipowerbutton
через acpi

Або жорсткіше

VBoxManage controlvm ubuntu poweroff

Говоримо вантажиться з hdd

VBoxManage modifyvm ubuntu --boot1 disk

Можна також відчепити інсталяційний диск

VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 1 --device 0 --medium none

І знову запускаємо

Nohup VBoxHeadless --startvm ubuntu &

Ще корисні команди:

VBoxManage list runningvms
перегляд усіх запущених машин

VBoxManage showvminfo ubuntu
перегляд інформації про віртуальну машину

Таким чином на одній машині з мінімально встановленою системоюможна піднімати кілька віртуальних для різних цілей та експериментів


Автор: Ken Hess
Дата публікації: January 18th, 2010
Переклад: Н.Ромоданов
Дата перекладу: лютий 2010

Звичайні користувачі VirtualBox можуть не знати про ту величезну силу, що приховується в інтерфейсі командного рядка.

Зазвичай запитують: "Навіщо працювати в командному рядку, коли у вас є гарний графічний інтерфейс?" Відповідь – величезні можливості командного рядка. З 1995 року існує ціле покоління комп'ютерних користувачів, які вважають, що комп'ютер є набір вікон та графіки, але, насправді, це дуже далеко від істини. Чому, 1995 рік, спитаєте ви? З появою Windows 95 1995 року було відкрито нову комп'ютерну епоху — епоха графічних інтерфейсів. Незабаром після того фатального серпня було випущено реліз FVWM95, який був відповіддю Linux на інтерфейс Windows 95 Explorer. Мені здається, що за тих старих добрих часів командний рядок зник назавжди. Ніхто більше не хотів користуватися DOS і перестали боятися Linux. Але командного рядка все ще жива і живе в середовищі Linux. Вона все ще досить жива у Windows. І тепер, коли Маки базуються на Unix, у них також є багато чого, що не потребує графічного інтерфейсу.

Вам може виявитися сюрпризом, що під миловидним графічним інтерфейсом VirtuaBox, з його яскравою графікою, зрозумілою сторінкою налаштування Settings і великою кількістю списків, що припадає, причаївся окультний світ командного рядка. Справжня сила цього темного світу відкриється лише тим, хто посміє увійти до цих затхлих катакомб. Після того, як ви розберетеся з командним рядком VirtualBox, ви, можливо, вирішите, що графічний інтерфейс - це трохи більше, ніж просто красиве драпірування, створене для тих, хто в іншому випадку просто ігноруватиме нудний чорний прямокутник реально працюючого додатка.

Сила командного рядка

Чорний прямокутник, про який я говорив, є термінальне вікно. Командний рядок дозволяє скористатися усією потужністю автоматичного виконання команд. Єдиний спосіб автоматизації, який відомий мені в *nix системах, це використання скриптів, написаних на Perl-і, шелл-скрипти або скрипти якоюсь іншою мовою. А демон системного планувальника (cron) допоможе вам у потрібний час запустити скрипт. Ця сила командного рядка, яка завдяки можливості автоматичного запуску, Що вимагає від системних адміністраторів також уміння писати скрипти, є їх багажем уміння. У кожній вакансії, в якій потрібно системний адміністратор, буде зазначено, що претендент повинен вміти писати скрипти хоча б однією з перелічених у вакансії мов, що інтерпретуються.

Що стосується віртуалізації, то командний рядок дозволить вам швидко створювати віртуальні диски, додавати новий мережевий інтерфейс, запускати віртуальні машини та створювати нові віртуальні машини, причому все це без використання графічного інтерфейсу. Автоматичне виконанняза допомогою скриптів також дозволить вам спланувати запуск та зупинку віртуальних машин без вашого безпосереднього втручання. І, якщо ви дійсно класний спеціаліст зі скриптів, ви зможете написати скрипт, який за допомогою підказок допоможе вам з найменшими втручаннями з вашого боку створити віртуальну машину, запустити її або встановити та змінити її. Якщо вам не подобається все робити вручну, ви складете список віртуальних машин, що використовуються постійно, потім налаштуйте скрипти (шаблони) для кожного типу віртуальних машин, що використовуються, і, при необхідності, протягом декількох секунд створіть віртуальну машину.

Давайте розглянемо прості та елегантні функціональні можливостікомандного рядка у VirtualBox.

Встановлення та основні складові

За посиланням VirtualBox Linux Downloads, завантажте двійковий дистрибутив, призначений під вашу систему. Якщо хочете, то можете завантажити вихідний код. Для обраного мною варіанта (для RHEL5/CentOS5 у форматі rpm) було створено такі директорії:

  • Для двійкових модулів - /usr/lib/virtualbox із посиланнями з /usr/bin
  • Для бібліотек - /usr/lib/virtualbox
  • Для вихідних кодів - /usr/share/virtualbox
  • Для гостьових компонентів (ISO) - /usr/share/virtualbox

Якщо у вашому дистрибутиві немає останньої версії VirtualBox (версія 3.1.2 на момент написання цієї статті), то скористайтеся одним із пакетів, який можна завантажити, або завантажте вихідний код.

Створення та конфігурування віртуальної машини

Найважче при використанні командного рядка це знати, з чого починати. У графічному інтерфейсі необхідно скористатися кнопкою New. Командний рядок трохи складніше відкриває свої таємниці. Для того, щоб створити та налаштувати нову віртуальну машину, ви повинні відкрити термінальне вікно, або скористатися сеансом ssh для доступу до Linux системи, на якій встановлений VirtualBox, та виконати наступну команду:

$ /usr/bin/VBoxManage createvm --name Debian5 –register

За допомогою цієї команди створюється нова віртуальна машина під назвою Debian5, яка реєструється у VirtualBox. Створена віртуальна машина є XML файлом, який знаходиться в домашньому каталогу ~/.VirtualBox/Machines/Debian5/Debian5.xml.

Створюємо віртуальний дискдля вашої віртуальної машини:

$ /usr/bin/VBoxManage createhd --filename Debian5.vdi --size 4000 --variant Fixed

Ви створили віртуальний диск з іменем Debian5.vdi розміром 4 Гбайта (4000 Мбайтів); розмір фіксований, тобто його збільшення динамічно не відбувається.

Віртуальний диск створюється як файл ~/.VirtualBox/HardDisks/Debian.vdi

Створіть контролер дискових пристроїв, до якого ви підключите віртуальний диск та віртуальний пристрій CD/DVD

$ /usr/bin/VBoxManage storagectl Debian5 --name "IDE Controller" --add ide --controller PIIX4

За допомогою цієї команди створюється контролер IDE з ім'ям "IDE Controller", тип контролера - PIIX4.

Тепер приєднаємо віртуальний диск до вашої віртуальної машини:

$ /usr/bin/VBoxManage storageattach Debian5 --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium Debian5.vdi

Приєднуємо образ ISOтій операційної системи, яку ви хочете встановити:

$ /usr/bin/VBoxManage storageattach Debian5 --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /ISO/debian-40r3-i386-netinst.iso

Налаштовуємо мережу:

$ /usr/bin/VBoxManage modifyvm Debian5 --nic1 bridged --cableconnected1 on --bridgeadapter1 eth0

За допомогою цієї команди створюється мережний інтерфейс NIC типу "мост" (bridge): кабель підключається під час запуску системи Linux, адаптер – eth0.

Запускаємо віртуальну машину:

$ /usr/bin/VBoxManage startvm Debian5

Якщо все піде так, як планувалося, ви побачите наступне повідомлення, а потім побачите вікно віртуальної машини, готове для інсталяції:

Залишаючи для remote session to open... Remote session has been successfully opened.

Ви бачите, що створення та налаштування віртуальної машини в командному рядку звільняє вас від нескінченних клацань кнопками миші та розкриває цілий світ нових можливостей автоматизації віртуальних машин. І ми тут не заглиблювалися, але сподіваюся, викладене пробудить у вас цікавість і спонукає вас на освоєння тієї величезної сили, яку має командний рядок.

Якщо вам сподобалася стаття, поділіться нею із друзями:

Віртуалізація ... віртуалізація ...
Зараз усі намагаються вичавити зі своїх апаратних ресурсів якнайбільше. Мати кілька окремих комп'ютерів з різними ОС трохи невигідно і не всі організації підуть на це. Але вихід є, можна використати віртуальні машини. І можливо, що багато хто використовує для цього чудовий продукт від Sun «VirtualBox». Я впевнений, що більшість для налаштування використовують інтерфейс GUI, т.к. це дуже наочно та зручно. Але чи багато хто замислювався про можливість управління VirtualBox через консоль.
Було поставлено завдання: На один сервер поставити дві ОС (Ubuntu та Windows). При цьому був працюючий сервер під керуванням Ubuntu 9.04 Server Edition. Тому було вирішено ставити Windows XP як гостьова система.
Але виникла проблема на Ubuntu НЕ ВСТАНОВЛЕНО жодне графічне середовище, тобто. там є лише гола консоль.

Отже, що ми маємо:

  • Хост система: Ubuntu 9.04 Server Edition
  • VirtualBox 2.2.2
  • Гостьова система: Windows XP

Встановлення VirtualBox

Завантажуємо з офіційного сайту VirtualBox пакет для Ubuntu 9.04
Після того, як скачали, виконуємо команду:
dpkg -i virtualbox-2.2_2.2.2-46594_Ubuntu_jaunty_i386.deb
VirtualBox повинен встановити. Якщо виникли проблеми з інсталяцією пакета, вивчіть повідомлення про помилки. Можливо, у вас не встановлені необхідні пакети. У моєму випадку у мене не було встановлено пакет libxslt1.1, що миттєво було виправлено командою sudo apt-get install libxslt1.1.
Додаємо себе до групи vboxusers
sudo usermod -a -G vboxusers ім'я_користувача

Створення віртуальної машини

Для початку варто відзначити, що для керування віртуальними машинамичерез консоль використовується одна команда VBoxManage (щоправда, у неї дуже багато параметрів).
Почнемо.
  1. Для початку створимо машину і одразу її зареєструємо
    VBoxManage createvm -name ім'я_віртуальної_машини -register
  2. Далі необхідно створити диск для машини
    VBoxManage createhd --filename ім'я_диска --size розмір_диска_у_мегабайтах
    Існує можливість вибрати тип дисків VDI (VirtualBox), VMDK (VMWare), VHD ( Microsoft Virtual PC). За замовчуванням, звичайно, VDI:).
  3. Робимо додаткові налаштуваннянашої віртуальної машини. Вкажемо:
    • Тип гостьової ОС. Для отримання списку підтримуваних операційних систем виконайте команду VBoxManage list ostypes
    • Розмір пам'яті, що виділяється
    • Найменування головного диска
    • Можливість використання VRDP (VirtualBox Remote Desktop Protocol)
    VBoxManage modifyvm ім'я_віртуальної_машини --ostype тип_ОС --memory розмір_пам'яті_у_мегабайтах --hda ім'я_диска --vrdp on
  4. Підключимо образ диска, з якого ставитимемо Windows XP
    • Зареєструємо DVD із образом дистрибутива системи
      VBoxManage openmedium шлях_до_образу
    • Вставимо наш диск у віртуальний привід
      VBoxManage modifyvm WindowsXP --dvd шлях_до_образу
  5. Подивимося на налаштування нашої машини. Переконуємось, що все нас влаштовує та…
    VBoxManage showvminfo ім'я_машини

… Запуск… Поїхали

Щоб запустити віртуальну машину, треба виконати
VBoxManage startvm ім'я_машини --type vrdp
Параметр --type vrdpпотрібний, щоб підключитися до машини за допомогою VRDP
Все, що тепер залишилося підключиться до нашої машини, за допомогою віддаленого робочого столу. Це можна зробити за допомогою стандартних утиліт: для windows це mstsc, для ніксових систем rdesktop.Т.к. у нас є лише консоль, то треба скористатися комп'ютером, який має графічний робочий стіл.
Щоб підключитися, треба вказувати IP хост машини та порт для даної віртуальної машини. У моєму випадку я нічого не змінював і використовував стандартний порт (3389). Щоб змінити порт, виконайте порт VBoxManage --vrdpport. Якщо у Вас встановлено кілька віртуальних машин, то для того, щоб підключатися до кожної з них, необхідно в налаштуваннях вказати різні порти, наприклад, перша машина 3389, друга 3390 і т.п.

Замість епілогу

Тепер у нас запущено віртуальну машину і ми до неї спокійно можемо підключатися, використовуючи протокол VRDP. Я спокійно встановив Windows XP, перебуваючи за своїм робочим комп'ютером.

P.S. Windows XP була потрібна лише з однієї причини. У проекті необхідно було використовувати MS SQL Server.

Іноді виникає потреба запустити віртуальну машину на хості без іксів. Я розповім про те, як це зробити, маючи доступ до хостової системи тільки по ssh + rdp (Remote Desktop Protocol). процес я буду описувати для OC Ubuntu 9.10 як хост.

Почнемо з встановлення VirtualBox.

Попередньо потрібно встановити пакет dkms (Dynamic Kernel Module Support Framework):

Sudo apt-get install dkms

На сайті пропонується 2 варіанти: прописати джерело пакетів (deb download.virtualbox.org/virtualbox/debian karmic non-free) в /etc/apt/sources.list або завантажити та встановити deb-пакет. Коли я прописав джерело і зробив sudo apt-get install virtualbox-3.1, у мене потяглася купа пакетів із залежностей (у тому числі і якихось для GUI інтерфейсу). Тому краще завантажити deb-пакет. Качаємо, встановлюємо:

Sudo dpkg -i virtualbox-3.1_3.1.0-55467_Ubuntu_karmic_i386.deb

Можливо, тут також знадобляться залежності (якісь бібліотеки для парсингу xml, в якому зберігаються конфіги, але їх значно менше ніж у першому випадку). Якщо встановлення не завершилося через залежність, можна просто зробити

Sudo apt-get -f install

При цьому встановляться залежності та VirtualBox

Ок. VirtualBox поставили. Почнемо створювати guest-машини.

Створюємо саму машину:

VBoxManage createvm --name ubuntu --ostype Ubuntu --register
(name - ім'я машини, ostype - тип системи. повний список всіх типів можна дізнатися командою VBoxManage list ostypes)

Налаштовуємо

VBoxManage modifyvm ubuntu --memory 512 --floppy disabled --audio none --nic1 bridged --bridgeadapter1 eth0 --vram 4 --accelerate3d off --boot1 disk --acpi on --cableconnected1 on --usb off --vrdp on --vrdpport 3390

Тут здебільшого все зрозуміло. як тип мережі можна вказати також NAT (--nic1 nat). також включаємо rdp

Створюємо hdd диск для віртуальної машини:

VBoxManage createhd --filename /home/user/vbox/ubuntu.vdi --size 20000 --register

Додаємо контролер IDE до нашої машини

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

Чіпляємо на IDE0 створений раніше hdd

VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /home/user/vbox/ubuntu.vdi

На IDE1 чіпляємо настановний образ

VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/user/vbox/iso/ubuntu-9.10-alternate-i386.iso

Говоримо машині вантажитися з диска

VBoxManage modifyvm ubuntu --boot1 dvd

Запускаємо машину

Для того, щоб поставити базову систему, скористаємося rdp-клієнтом (у мене KDE, в стандартну поставку входить KRDC). коннектимся на хостову машину на порт, який вказали в налаштуваннях (--vrdpport 3390), ставимо систему, робимо sudo apt-get install openssh-server . тепер на віртуальну машину можна потрапити по ssh

Зупиняємо віртуальну машину

VBoxManage controlvm ubuntu acpipowerbutton
через acpi

Або жорсткіше

VBoxManage controlvm ubuntu poweroff

Говоримо вантажиться з hdd

VBoxManage modifyvm ubuntu --boot1 disk

Можна також відчепити інсталяційний диск

VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 1 --device 0 --medium none

І знову запускаємо

Nohup VBoxHeadless --startvm ubuntu &

Ще корисні команди:

VBoxManage list runningvms
перегляд усіх запущених машин

VBoxManage showvminfo ubuntu
перегляд інформації про віртуальну машину

Таким чином на одній машині з мінімально встановленою системою можна піднімати кілька віртуальних для різних цілей та експериментів

1. Створюємо віртуальну машину з ім'ям windows_xp
VBoxManage createvm --name windows_xp --regist er
Створена віртуальна машина є XML файлом, який знаходиться в домашній директорії /root/VirtualBox\ VMs/windows_xp/windows_xp.vbox
2. Далі потрібно створити диск віртуальної машини
VBoxManage createhd --filename /date/VirtualBox/windows_xp.vdi --size 15000 --variant Fixe d
За замовчуванням диск створюється у домашній папці користувача, ми створили диск windows_xp.vdi у диретрої /date/VirtualBox/ розміром 15 гігабайт; розмір фіксований, тобто його збільшення динамічно не відбувається.
3. Створюємо контролер віртуальних дисків
VBoxManage storagectl windows_xp --name "IDE Controller" --add ide --controller PIIX4
За допомогою цієї команди створюється контролер IDE під назвою “IDE Controller”, тип контролера – PIIX4.
4. Підключаємо віртуальний диск до віртуальної машини:
VBoxManage storageattach windows_xp --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /date/VirtualBox/windows_xp.vdi

5.Підключаємо віртуальний образ ос яку хочемо встановити
VBoxManage storageattach windows_xp --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /date/public/winxp_pro_eng_sp3.iso

6. Встановлюємо розмір оперативної пам'ятідля віртуальної машини 512мб
vboxmanage modifyvm windows_xp --memory 512

7. Встановлюємо тип системи VBoxManage modifyvm windows_xp --ostype WindowsX P
переглянути всі можливі ostype: VBoxManage list ostypes

8. Дозволяємо підключатися до консолі за протоколом RDP
vboxmanage modifyvm windows_xp --vrde on
Щоб зручніше було керувати віртуалками, потрібно набір доповнень, який включає USB 2.0 і вбудований. RDP сервер. Завантажуємо доповнення та встановлюємо: wget http://dlc.sun.com.edgesuite.net/virtualbox/4.2.12/Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack

VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack

9. Запускаємо віртуальну машину
vboxheadless -s windows_xp або на тлі:
VBoxManage startvm windows_xp --type headless
щоб запустити гостьову ОС на базовому комп'ютері, з яким ви працюєте через ssh, потрібно використовувати ключ –type=headless:

10. Підключаємося по RDP ip_servera та встановлюємо win_xp як завжди

11.Вимкнути машину можна так VboxManage controlvm windows_xp poweroff

12. Монтуємо диск VboxGuestAdditions
VBoxManage storageattach windows_xp --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /usr/share/virtualbox/VBoxGuestAdditions.iso

Стартуємо машину та встановлюємо VboxGuestAdditions
13. Детальну інформаціюпро конкретну віртуальну ОС можна отримати командою VBoxManage showvminfo windows_xp

14. За допомогою цієї команди створюється мережний інтерфейс NIC типу «Міст»
VBoxManage modifyvm windows_xp --nic1 bridged --bridgeadapter1 eth0

15. Якщо диск віртуальної машини потрібно клонувати, це робиться за допомогою утиліти VBoxManage:
VBoxManage clonehd /шлях/звідки/копіюємо/image1.vdi /шлях/куди/копіюємо/image2.vdi
Після цього все чудово підключається до нової віртуальної машини.

16. Створити розшаровану папку із сервером
vboxmanage sharedfolder add "windows_xp" --name share-name --hostpath /mnt
Підключити розшаровану папку з windows_xp виконати
\\vboxsvr\share-name