понедельник, 2 ноября 2009 г.

VirtualBox 3 raw access to hard drive

26.05.2010 update for backup gtp table

Как подключить реальный жесткий диск к VirtualBox 2.0 я уже писал раньше. В предыдущей версии к сожалению были проблемы работы с подключением жесткого диска из под OS X. В последней версии такая проблема была устранна.

Вот примеры использования:

Mac OS X:

Работать с реальым жестким диском не рекомендуется из под простого пользователя из за слижком больших прав на изменение данных. Поэтому будет лучше создать виртуальную машину из под учетной записи администратора, и уже специально для нее открыть доступ к жесткому диску. Для этого откройте консоль, и напишите sudo su, после чего VirtualBox для запуска менеджера виртуальных машин. Тем самым вы запустите VirtualBox под учетной записью администратора, что не позволит случайно изменить данные на жестком диске простым пользователям. Виртуальную машину лучше создайте под именем localhost, без каких либо дополнительных параметров, только на всякий случай создайте вируальный жесткий диск с параметрами по умолчанию (ни размер, ни имя менять не нужно).

Далее вам необходимо создать файл vmdk, открывающий доступ к жесткому диску для виртуальной машины. Для этого придется сделать несколько действий, так как в VB есть ошибка под номером 1461. Если в будущем ее исправят, то процедура создания vmdk диска упростится до следующей:

# sudo su
# VBoxManage internalcommands createrawvmdk -filename ~/Library/VirtualBox/HardDisks/localhost.vmdk -rawdisk /dev/disk0 -partitions 0,1,3,4


При создании диска учитывайте какие разделы своего жесткого диска вы хотели использовать под виртуальной машиной, но учтите: необходимо пропустить все партиции которые использует операционная система, по просту она заблокирует создание диска со смантированными партициями. В моем случае я игнорирую партицию номер 2 с установленной и запущенной Mac OS X. Для того что бы увидеть список партиций введите команду:

# VBoxManage internalcommands listpartitions -rawdisk /dev/disk0

VirtualBox Command Line Management Interface Version 3.0.10
(C) 2005-2009 Sun Microsystems, Inc.
All rights reserved.

Number  Type   StartCHS       EndCHS      Size (MiB)  Start (Sect)
1       0xee  1023/254/63  1023/254/63           200            1
2       0xaf  1023/254/63  1023/254/63         40879       409640
3       0x83  1023/254/63  1023/254/63        395020     84557864
4       0x07  1023/254/63  1023/254/63         40631    893558872


Кроме того, Mac OS X частенько монтирует виндус раздел при старте системы, поэтому для успешной работы команды createrawvmdk вам придется его вручную отмонтировать.

Так как в настоящий момент ошибка 1461 не исправлена, то процедура создания vmdk файла несколько усложняется. Вы его просто напросто создадите руками. Для этого вызовите команду:

# gpt -r show /dev/disk0

gpt show: /dev/disk0: Suspicious MBR at sector 0
      start       size  index  contents
          0          1         MBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6        
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640   83722224      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
   84131864     426000        
   84557864  809001008      3  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
  893558872   83214256      4  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
  976773128          7        
  976773135         32         Sec GPT table
  976773167          1         Sec GPT header

Далее используя эту таблицу мы видим физическое распределение секторов на диске (предыдущая команда VBoxManage internalcommands listpartitions показывала логические сектора). Далее выполните команду создания жесткого диска через VirtualBox, как показано в рабочем примере, но создающую не правильный жесткий диск из за ошибки 1461.

Вот пример части файла vmdk, который создала VirutualBox:

# Extent description
RW 1 FLAT "localhost-pt.vmdk"
RW 409639 FLAT "/dev/disk0s1"
RW 83722224 ZERO
RW 426000 ZERO
RW 809001008 FLAT "/dev/disk0s3"
RW 83214256 FLAT "/dev/disk0s4"
RW 40 ZERO

Как мы видим, первый сектор диска (загрузчик) помечан 1 сектором. И явно указывает на логическое разбиение диска, нам же нужно повторить физическую его структуру для этого меняем значения в секции # Extent description на следующие:

# Extent description
RW 40 FLAT "localhost-pt.vmdk"
RW 409600 FLAT "/dev/disk0s1"
RW 83722224 ZERO
RW 426000 ZERO
RW 809001008 FLAT "/dev/disk0s3"
RW 83214256 FLAT "/dev/disk0s4"
RW 40 FLAT "localhost-bt.vmdk" 0

Как не солжно догадатся, мы просуммировали длинну gpt информации о диске взятой из вывода команды gpt show (1 + 1 + 32 + 6) == 40. Далее, чуть чуть подкорректировали размер первого раздела, и оставили без изменения остальные значения. Так как они полностью совпадают со значениями из вывода gtp show утилиты.

В целом мы почти закончили. Нехватает только скопировать данные с нашего реального диска в файл раздела localhost-pt.vmdk. Делется это командой:

# dd if=/dev/disk0 of=localhost-pt.vmdk count=40 bs=512
# dd if=/dev/disk0 of=localhost-bt.vmdk skip=976773128 count=40 bs=512

После чего запускаем VirtualBox и монтируем наш vmdk жесткий диск вместо виртуального присоединенного к localhost.

# VirtualBox

Linux: 

Работа с родным жестим диском из под линукса схожа с работой из под OS X. Вам так же необходимо использовать две учетные записи из под пользователя и супер пользователя (root).

Создание образа диска делается следующей командой:

# VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/HardDisks/localhost.vmdk -rawdisk /dev/sda



Далее необходимо создать вайл для запуска хост машины:

~/localhost.sh

#!/bin/bash

# монтирование папки с образами OS
gvfs-mount smb://mini.local/www

/sbin/sfdisk  -A4 /dev/sda
VBoxManage startvm localhost


И запускать его с помощью dbus-launch, обеспечив тем самым возможность монтирования файловой системы gvfs.

Windows XP

Работа из под Windows XP несколько проще, так как вам ненужно запускать отдельную учетую запись.

Для создание диска нажмите Win_key+R и выполните слудющую команду:

"C:\Program Files\Sun\xVM VirtualBox\VBoxManage" internalcommands createrawvmdk -filename "%USERPROFILE%\.VirtualBox\HardDisks\localhost.vmdk" -rawdisk \\.\PhysicalDrive0

Запуск виртуальной ос лучше осуществлять следующими запускающими файлами:

c:\soft\localhost.bat

diskpart /s localhost.txt
start "VB" "C:\Program Files\Sun\VirtualBox\VirtualBox"

c:\soft\localhost.txt

sel disk 0
sel part 3
act

Ссылки по теме:

0 коммент.:

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