воскресенье, 15 июня 2008 г.

VirtualBox dual boot

Запуск виртуальной машины достаточно простая операция. Без труда с помощью подсказок программы можно создать файл образа на диске и на него установить любимую OS. Однако, совсем по другому дела обстоят с двойной или тройной загрузкой. Данные действия требуют дополнительной квалификации и никогда не проходят в автоматическом режиме. Все дело в большой разнице по аппаратному и программному обеспечению установленному на комьпютере пользователя. Никогда нельзя гарантировать что инструкции об установки второй OS на тот же самый диск пройдут успешно и не повредят существующие операционные системы.

Вопрос достаточно сложный и он уже был частично рассмотрен у меня в блоге (blog.axet.ru). Сегодня я хочу обратить внимание на еще одну сторону этого вопроса: более дружелюбное приветствие OS Linux при загрузке его под реальным оборудованием и виртуальной машиной.

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

Моя инструкция подходит для настройки приложения VirtualBox и позволяет автоматически переключать драйвер видео карты с виртуального vboxdrv на реальный, когда загрузка идет на настоящем оборудовании. В качестве гостевой OS (и реальной) используется Fedora 9.

Configure xorg.conf

Первым делом необходимо вручную настроить файл /etc/X11/xorg.conf и добавить в него секции отвечающие за настройку видео карты и периферийных устройств таких как тачскрин или тачпад.

Первым делом добавьте секции для поддержки двух layout виртуального и реального (Default layout and VirtualBox Layout):

# Xorg configuration created by pyxf86config

Section "ServerLayout"
Identifier     "Default Layout"
Screen      0  "Screen0" 0 0
InputDevice    "Keyboard0" "CoreKeyboard"
InputDevice    "Synaptics Touchpad" "CorePointer"
EndSection

Section "ServerLayout"
Identifier     "VirtualBox Layout"
Screen      0  "Screen1" 0 0
InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

После чего создайте секцию переключения Layouts:

Section "ServerFlags"
Option     "DefaultServerLayout" "VirtualBox Layout"
EndSection

Далее оставьте все перефирийное оборудование которое было настроено на секцию Layout по умолчанию. В моем случае это только тач пад:

Section "InputDevice"
Identifier  "Synaptics Touchpad"
Driver      "synaptics"
Option     "SendCoreEvents" "true"
Option     "Device" "/dev/psaux"
Option     "Protocol" "auto-dev"
Option     "SHMConfig" "true"
Option     "LeftEdge" "150"
Option     "RightEdge" "1070"
Option     "TopEdge" "100"
Option     "BottomEdge" "310"
Option     "FingerLow" "25"
Option     "FingerHigh" "30"
Option     "MaxTapTime" "180"
Option     "MaxTapMove" "220"
Option     "SingleTapTimeout" "100"
Option     "MaxDoubleTapTime" "180"
Option     "LockedDrags" "off"
Option     "MinSpeed" "1.10"
Option     "MaxSpeed" "1.30"
Option     "AccelFactor" "0.08"
Option     "TapButton1" "1"
Option     "TapButton2" "3"
Option     "TapButton3" "2"
Option     "VertTwoFingerScroll" "1"
Option     "HorizTwoFingerScroll" "1"
EndSection

Section "InputDevice"

# keyboard added by rhpxl
Identifier  "Keyboard0"
Driver      "kbd"
Option     "XkbModel" "pc105"
Option     "XkbLayout" "us"
EndSection

Так же необходимо оставить реальную видо карту которая будет использоваться при загрузке на настоящем оборудоавнии:

Section "Device"
Identifier  "Videocard0"
Driver      "radeonhd"
EndSection

Далее необходимо добавить вторую видео карту которая будет поддерживать родной режим работы с VirtualBox. Так как в настоящий момент драйвер vboxdrv не поддерживает работу под Feodra 9 мы оставляем совместимый драйвер vesa:

Section "Device"
Identifier  "Videocard1"
Driver      "vesa"
EndSection

После чего описываем секции Screen для обоих видео карт:

Section "Screen"
Identifier "Screen0"
Device     "Videocard0"
DefaultDepth     24
SubSection "Display"
Viewport   0 0
Depth     24
EndSubSection
EndSection

Section "Screen"
Identifier "Screen1"
Device     "Videocard1"
DefaultDepth     24
SubSection "Display"
Viewport   0 0
Depth     24
EndSubSection
EndSection

Create update script

Все что осталось - написать скрипт автоматического переключения между двумя видео картами. Вот он:

/etc/init.d/vboxorg
#!/usr/bin/env python

# chkconfig: 35 30 65
# description: VirtualBox visual display setup

import xf86config
import ixf86config

file = open( '/proc/modules', 'r')
data = file.read()
if data.find('vboxadd') == -1:
currentLayout = "Default Layout"
else:
currentLayout = "VirtualBox Layout"

(xconfig, xconfigpath) = xf86config.readConfigFile()

# update config
if xconfig.flags == None:
xconfig.flags = xf86config.XF86ConfFlags()

for o in xconfig.flags.options:
if o.name == "DefaultServerLayout":
 o.val = currentLayout

xconfig.write(xconfigpath)

Дополнительная информация
Дополнительная настройка VirtualBox для запуска с реального винчестера находиться здесь: http://blog.axet.ru/2007/09/virtualbox.html Так же хочется добавить для для запуска с raw диска нехватет поддержики VirtualBox активации разделов, которая должена автоматически выставлять активной партицию с Linux, но к сожалению пока это не реализовано.

0 коммент.:

Отправить комментарий