Контакти

Virtualbox консольний. Запуск віртуальної машини в VirtualBox без GUI. Установка і основні складові


Автор: 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

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

Waiting for the remote session to open ... Remote session has been successfully opened.

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

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

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 \u003d 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

Іноді виникає необхідність запустити віртуальну машину на хості без іксів. Я розповім про те як це зробити, маючи доступ до хостовой системі тільки по 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
перегляд інформації про віртуальній машині

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

Іноді виникає необхідність запустити віртуальну машину на хості без іксів. Я розповім про те як це зробити, маючи доступ до хостовой системі тільки по 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
перегляд інформації про віртуальній машині

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



Сподобалася стаття? поділіться їй