Вопрос достаточно сложный и он уже был частично рассмотрен у меня в блоге (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 коммент.:
Отправить комментарий