Po dłuższej przerwie mini poradnik jak boot'ować system w virtualbox'ie z fizycznego dysku twardego z zainstalowanym systemem. Host to linux (Ubuntu) a system to Windows 10 (GPT z UEFI).
VirtualBox przydaje się kiedy chcemy korzystać w wielu systemów na jednym komputerze w tym samym czasie.
Mój setup to host Linux (ubuntu) oraz drugi system to Windows 10 (dualboot) i korzystam z obydwóch systemie naprzemiennie.
Czasem natomiast chcę uruchomić system Windows kiedy w tym samym czasie działam na Linuxie, np. żeby przetestować coś lub skompilować i tutaj pojawia się problem. Możemy utworzyć wirtualny dysk i na nim zainstalować Windows'a, ale wtedy mamy dwa systemy i musimy wszystkie narzędzie powielić.
Można natomiast do VirtualBox'a "podłączyć" fizyczny dysk, z którego normalnie boot'ujemy drugi system, co jest w tym przypadku rozwiązaniem idealnym.
Utworzenie mapowania dysku w systemie
Pierwszy krok to utworzenie pliku dysku, który będzie zmapowany do dysku fizycznego. Taki dysk później wybieramy w edycji maszyny w VirtualBox'ie.
Aby to zrobić odpalamy terminal i wpisujemy:
sudo vboxmanage internalcommands createrawvmdk \ -filename ~/nvme.vmdk \ -rawdisk /dev/nvme1n1
Ta komenda utworzy plik mapowania nvme.vmdk
który wybieramy w edycji lub przy tworzeniu maszyny.
Konfiguracji maszyny wirtualnej
Kiedy mamy dysk musimy wybrać go w edycji maszyny, musimy uruchomić VirtualBox'a jako root lub nadać odpowiednie uprawnienia.
Wchodzimy w ustawienia maszyny: Pamięć > Kontroler SATA > Dodaj nowy i wybieramy nasz dysk. W edycji zaznaczamy "Dysk SSD".
Kolejna rzecz to typ dysku, wchodzimy w Plik > Menadżer nośników wirtualnych > nvme.vmdk >Właściwości i jako "Typ" wybieramy "Bezpośredniego zapisu".
Jeśli korzystamy Z UEFI to w System > Płyta główna zaznaczamy "Włącz EFI".
Podsumowanie
To wszystko, po uruchomieniu maszyny powinna ona boot'ować z naszego dysku.
Jeśli korzystamy z dualboot to może nas wyrzucić do shella grub, wtedy musimy ręcznie odpalić system. Wklepujemy kolejno:
insmod part_gpt insmod chain set root=(hd0,gpt1) chainloader /efi/Microsoft/Boot/bootmgfw.efi boot
Przy pomocy komendy ls
możemy sprawdzić zawartość partycji, np. ls (hd0,1) /
.

Bardzo dzięki, artykuł przydatny chociaż przydało by się wiecej informacji dla początkujących 😀