VirtualBox uruchamiający Windowsa z partycji dysku twardego

VirtualBox jest świetnym narzędziem, także dla osób, które preferują korzystanie z Linuksa, ale od czasu do czasu muszą uruchomić programy windowsowe, nieszczególnie chętnie współpracujące z Wine’em. Niestety, tak samo jak Wine ma swoje braki, tak i maszyna wirtualna nie jest idealna i wprowadza pewien narzut na zużycie pamięci i procesora, nie mówiąc o kłopotach z wydajnością grafiki, nawet przy operacjach 2D. Stąd czasem chciałoby się mieć możliwość szybkiego odpalenia Windowsa w maszynie wirtualnej, nie będąc pozbawionym opcji uruchamiania go jako samodzielnego systemu wprost z dysku twardego.

Nie wszyscy o tym wiedzą, ale przy odrobinie dobrej woli VirtualBox jest w stanie uruchomić system z partycji zamiast z obrazu dysku. W przypadku Windowsa, przynajmniej w wersji XP, istnieje jednak pewna niedogodność — uruchamianie systemu na przemian z dysku i w maszynie wirtualnej powoduje zgłaszanie uciążliwego komunikatu o wykryciu zmian sprzętowych i prośby o ponowną rejestrację. Na razie nie znalazłem sposobu na legalne pozbycie się tego problemu, niemniej warto wiedzieć, jak skłonić maszynę wirtualną do odpalania systemu z fizycznie istniejącej partycji.

W tym celu należy posłużyć się poleceniem createrawvmdk VirtualBoksa. Polecenie to tworzy obraz dysku, który w rzeczywistości jest swego rodzaju linkiem do całego fizycznego dysku lub wybranych partycji. Szczegóły znaleźć można w dokumentacji maszyny wirtualnej, poniżej podam przykład tworzenia obrazu, dającego dostęp do pierwszej partycji fizycznej (oznaczonej numerem 1) i pierwszej partycji logicznej (będącej na ogół partycją o numerze 5).

Wcześniej jednak należy stworzyć obraz sektora rozruchowego MBR, gdyż bez tego maszyna wirtualna dostanie tylko dwie partycje i nie będzie wiedziała, jak uruchomić z nich Windowsa. Przechodzimy zatem do katalogu z obrazami dysków VirtualBoksa i kopiujemy MBR do pliku:

# dd if=/dev/sda1 of=winxp.mbr bs=512 count=1

Pamiętajmy, by sprawdzić dwa razy, czy wpisaliśmy polecenie poprawnie, bo program dd pozwala łatwo uszkodzić partycję, jeżeli uruchamiamy go z poziomu użytkownika o dużych uprawnieniach!

# VBoxManage internalcommands createrawvmdk -filename winxp.vmdk -rawdisk /dev/sda -partitions 1,5 -mbr winxp.mbr -relative -register

Do wykonania tej operacji wymagane są uprawnienia, które pozwalają na odczyt całego dysku oraz odczyt i zapis wybranych partycji. Ja przydzieliłem je sobie, dodając swojego użytkownika do grupy disk (w Archu grupa ta jest domyślnym właścicielem dysków), choć nie jest to najlepsze rozwiązanie, bo daje pełny dostęp do wszystkich dysków.

Teraz pozostaje tylko dodać nową maszynę wirtualną, wskazując utworzony dysk. Oczywiście, podczas pracy tej maszyny lepiej nie montować w systemie partycji, z których korzysta.

Komentarzy: 3 do „VirtualBox uruchamiający Windowsa z partycji dysku twardego“

  1. Krecik komentuje:

    Parametr komendy nie istnieje:
    Syntax error: Invalid parameter ‘-register’

    więc odpaliłem ->
    # VBoxManage internalcommands createrawvmdk -filename winxp.vmdk -rawdisk /dev/sda -partitions 1,5 -mbr winxp.mbr -relative
    RAW host disk access VMDK file winxp.vmdk created successfully.

    i w efekcie mam ->
    # ls
    winxp.mbr winxp-pt.vmdk winxp.vmdk

    jednak nie można wskazać żadnego z tych dysków ->
    Nie udało się otworzyć dysk twardy winxp-pt.vmdk.
    Could not get the storage format of the medium ‘winxp-pt.vmdk’ (VERR_NOT_SUPPORTED).
    Nie udało się otworzyć dysk twardy winxp.vmdk.
    The medium ‘winxp.vmdk’ can’t be used as the requested device type.

    co zrobić? bardzo mi to potrzebne

  2. Krecik komentuje:

    dodam jeszcze, że polecenie file zwraca mi ->
    winxp.mbr: x86 boot sector, code offset 0×52, OEM-ID „NTFS „, sectors/cluster 8, reserved sectors 0, Media descriptor 0xf8, heads 255, hidden sectors 63, dos < 4.0 BootSector (0×80)
    winxp-pt.vmdk: x86 boot sector; partition 1: ID=0×7, starthead 1, startsector 63, 51199092 sectors; partition 2: ID=0xf, starthead 254, startsector 51199216, 437197584 sectors, code offset 0×52, OEM-ID "NTFS ", sectors/cluster 8, reserved sectors 0, Media descriptor 0xf8, heads 255, hidden sectors 63, dos < 4.0 BootSector (0×80)
    winxp.vmdk: ASCII text

  3. vmario komentuje:

    Prawdopodobnie należy użyć polecenia VBoxManage bez opcji -register, a następnie ręcznie dodać dysk w menu VirtualBoksa.

Dodawanie komentarzy

XHTML: Możesz używać tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">