Архів мітки: VirtualBox

Монтування спільної директорії в VirtualBox

Тимчасове припинення публікацій в моєму блозі пов’язане з тим, що на новому робочому місці я користуюсь Window 7. Я не роблю з цього великої трагедії, але час від часу сумую за Linux. Особливо не вистачає консолі та віртуальних робочих столів.

Проте необхідність у використанні Лінукс не зникла. Так для одного проекту, мені потрібно мати тестову віртуальну машину з Лінукс. Встановити її у VirtualBox дуже просто, а от щоб налагодити доступ до спільних каталогів треба додати кілька команд.

Першим кроком створюємо спільну директорію у параметрах віртуальної машини. Нехай її ім’я буде Common. Тепер монтуємо цю директорію від рута для перевірки:

# mount -t vboxsf Common /mnt/share

Якщо все вірно, то у директорію /mnt/share гостьової Лінукс буде змонтована спільна директорія з назвою Common.

Тепер залишається налагодити автоматичне монтування цієї спільної директорії при завантаженні Лінукс. Простіше за все, це зробити через додавання рядка у файл /etc/fstab:

Common /mnt/share vboxsf uid=1000,gid=1000 0 0

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

Міграція гостьових Debian у VirtualBox та проблеми з мережею NAT

Нещодавно я скопіював усі свої гостьові операційні системи з одного комп’ютера на інший. Через OVL формат – це тривіальні задача. Хоча, якщо назви у віртуальних машин однакові (а саме назви файлів для дисків), то це не виходить зробити за один раз. Доводиться кожну таку машину окремо.

Так от, всі машини запустились без проблем, а старенька Debian 4.0 – ні. Точніше вона начебто працювала нормально, але без мережевого інтерфейсу eth0:

$ /sbin/ifconfig
lo        Link encap:Local Loopback  
 inet addr:127.0.0.1  Mask:255.0.0.0
 inet6 addr: ::1/128 Scope:Host
 UP LOOPBACK RUNNING  MTU:16436  Metric:1
 RX packets:8 errors:0 dropped:0 overruns:0 frame:0
 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:0 
 RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)

Спроба запустити його вручну закінчилась нічим:

# ifup eth0
Internet Systems Consortium DHCP Client V3.0.4
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

SIOCSIFADDR: No such device
eth0: ERROR while getting interface flags: No such device
eth0: ERROR while getting interface flags: No such device
Bind socket to interface: No such device
Failed to bring up eth0.

Файл /etc/network/interfaces післе переносу не редагувався і містив стандартні рядки:

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp

Трохи погугливши вияснив, що проблема в udev. А ще точніше – у файлі /etc/udev/rules.d/z25_persistent-net.rules. На різних версіях Debian-оподібних операційних систем він може мати інші префікси, але persistent-net.rules буде присутнє. Файл мав такий зміст:

# This file was automatically generated by the
# /lib/udev/write_net_rules
# program, probably run by the persistent-net-generator.rules rules
# file.
#
# You can modify it, as long as you keep each rule on a single line.
# MAC addresses must be written in lowercase.

# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="08:00:27:a5:c0:ff",
 NAME="eth0"

# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="08:00:27:97:b2:6b",
 NAME="eth1"

Як я зрозумів, при міграції гостьової Debian, було змінено MAC адресу мережевого адаптеру. І система udev чомусь подумала, що це новий адаптер. Мені залишилось лише видалити інформацію про eth0 (перший рядок) та змінити в другому eth1 на eth0:

SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="08:00:27:97:b2:6b",
 NAME="eth0"

Після перезапуску віртуальної машини – мережа піднялась автоматично.

virt-manager в оточені VirtualBox

Для запуску віртуальних машин на своєму комп’ютері я використовую VirtualBox. Мені здається, що це найзручніша віртуалізація. Може вона не дуже “промислова”, але для локального використання – це те що треба.

Не так давно, мені потрібно було запустити на сервері віртуалізацію KVM. Вона (KVM) сумісна з досить зручною програмою для керування віртуальними машинами – virt-manager. Але коли я поставив її паралельно з VirtualBox в мене виник конфлікт модулів ядра: для того, щоб запустити VirtualBox необхідно було вручну видаляти модуль kvm_intel. Це не зручно. До того ж virt-manager тягне дуже багато пакетів, а користуюсь ним я рідко.

Проблема – як запустити virt-manager, щоб він не заважав роботі VirtualBox?

Рішення в стилі віртуалізації: запустити virt-manager з віртуальної машини VirtualBox.

Отже, я встановив мінімальну гостьову систему Debian Wheezy у VirtualBox.

Мені вистачило 512 Мб оперативної пам’яті та 3 Гб місця на жорсткому диску. Поставив пакети ssh, xorg та virt-manager.

Перевірив, що XForwarding – дозволено:

# grep Forward /etc/ssh/sshd_config
X11Forwarding yes

Та дозволив вхід до гостьової віртуальної машини по протоколу SSH. Тут змушений був застосувати localhost та нестандартний порт 8022:

Тепер для роботи з virt-manager достатньо запустити цю віртуальну машину і набрати такі команди:

$ ssh -p 8022 -Y localhost
$ virt-manager
Gtk-Message: Failed to load module "canberra-gtk-module"
/usr/share/virt-manager/virt-manager.py:306: DeprecationWarning:
 Importing dbus.glib to use the GLib main loop with dbus-python is
 deprecated.
Instead, use this sequence:

 from dbus.mainloop.glib import DBusGMainLoop

 DBusGMainLoop(set_as_default=True)

 import dbus.glib

Не зважаючи на варнінги, в графічному режимі відкривається вікно virt-manager і що головне, як звичайна десктоп програма. Те що вона працює в середині віртуальної машини – майже не помітно.

VirtualBox достойна заміна для VMware

Після оновлення Debian в мене перестав працювати VMware-server. Спроби перекомпілювати його модуль ядра виявились марними, тому я почав шукати альтернативу для настільних віртуальних машин. Згадав про VirtualBox – давню розробку Sun, яка вже поглинена Oracle.

Все встановлено було з “коробки” тобто з пакетів стабільного дистрибутива:

# apt-get install virtualbox-ose

У меню Системні утиліти з’явився пункт VirtualBox OSE. В нього дуже приємний інтерфейс, все зрозуміло і просто. Навіть документація не встановлюється в базовій версії але на ваше прохання – вона завантажується з веб-сайту.

Запуск Windows XP в VirtualBoxОсь так виглядає запуск операційної системи Windows XP. Візуально все працює значно швидше чим VMware.

Дуже просто монтуються образи ISO дисків.

Якихсь декілька секунд і перед вами робочий стіл віртуальної операційної системи.

Робочий стіл Windows XP в VirtaulBox

Одразу після встановлення на екрані з’явилось попередження, що гостьова операційна система не підтримує автоматичного захоплення вказівника миші та вводу з клавіатури, а тому цей фокус слід перемикати вручну (клавіша правий Ctrl). Та слід віддати належне авторам VirtualBox: вони щоб поліпшити співпрацю віртуальної машини з гостьовою операційною системою пішли іншим шляхом. Замість вдосконалення оболонки (механізму віртуальної машини) вони запропонували пояснити гостьовій операційній системі про особливості середовища. Робиться це через встановлення додаткової програми, яка встановлюється саме в гостьову операційну систему. В документації цей програмний пакет називається Guest Additions. Залежно від типу гостьової операційної системи вам слід встановити:

  • Guest Additions for Windows
  • Guest Additions for Linux
  • Guest Additions for Solaris
  • Guest Additions for OS/2

Всі вони доступні на одному ISO-образі (VBoxGuestAdditions.iso), який також іде у пакеті virtualbox-guest-additions з офіційного дистрибутиву Debian, але у розділі non-free.

Як я потів вичитав у документації Вам навіть не потрібно вручну монтувати цей образ у гостьовій операційній системі, бо для цього призначено пункт меню Пристрої/Встановити гостьові доповнення. Але я про це не знав і зробив це більш складним способом. Знайшов образ у операційній системі:

$ locate VBoxGuestAdditions.iso
/usr/share/virtualbox/VBoxGuestAdditions.iso

Вручну змонтував його. Та запустив сценарій автозапуску.

Встановлення Guest Additionals для WindowsПісля цього мені стали доступні більш продвинуті можливості для віртуальної операційної системи.

По-перше, непотрібно переключати фокус введення, він переключається автоматично. По-друге, ваша гостьова операційна система тепер має кращу підтримку відео. Дійсно після встановлення цього пакету для Windows XP в мене нормалізувався список пристроїв комп’ютера. Взагалі, цей пакет має ще багато переваг, але мені дуже сподобалась функція спільних тек: Shared folders.

Підключення спільної теки у VirtualBoxЯ пам’ятаю як складно було це реалізувати у VMWare. А тут ви просто вказуєте каталог який буде спільною текою, підключаєте його через підключення мережевого диску і вуаля. При кожному запуску ваша гостьова операційна система має місце обміну файлами.

Більше того, наведу приклад зі свого досвіду. Мені потрібні віртуальні машини, щоб час від часу тестувати зовнішній вигляд веб-сайтів у різних браузерах та операційних системах. Особливо багато проблем з Windows та різними версіями Internet Explorer. Тому я створюю базову версію Windows XP. Налаштовую її як мені потрібно, додаю спільну теку і потім клоную її. У клонованих віртуальних машинах довстановлюю потрібні версії Internet Explorer-а. По суті я витрачаю час тільки на встановлення однієї програми, бо все інше в мене вже налаштоване так як мені треба. І всі мої гостьові операційні системи працюють з єдиною спільною текою.

Приклад спільної теки у гістьовій операційній системі Windows XP та LinuxНа малюнку ви можете бачити, як виглядає спільна тека з боку гостьової Window XP та головної операційної системи Лінукс.

Мало не забув сказати про ще одну дивовижну особливість Guest Additional. Завдяки цьому пакету Вам стає доступним спільний буфер обміну між головною та гостьовою операційними системами. При чому ви навіть можете обирати параметри цього обміну:

  • двонаправлений
  • головна -> гостьова
  • гостьова -> головна