Čo chcem:
na notebooku s windows 10 potrebujem VirtualBox donútiť čítať-zapisovať na SD kartu naformátovanú na ext4, napr. pred prvým nabootovaním raspberry pi chcem nastaviť statickú IP adresu, alebo nakopírovať verejný ssh kľúč do súboru authorized_keys.
Problém:
Hostiteľský OS – windows 10 ( operačný systém v ktorom je nainštalovaný virtualbox )
Hosťujúci OS – debian 8.3 netinst ( virtualizovaný operačný systém nainštalovaný vo virualboxe )
SD karta 8GB raspbian jessie lite ( ext4 )
Sd karta zasunutá v internej čítačke notebooku je neprístupná vo virtuálnom stroji bežiacom na windows 10, keďže windows nevie pristupovať k partíciam naformátovaným na ext4.
Je potrebné sprístupniť celú kartu priamo virtualnemu stroju.
1. Potrebujeme získať DeviceID čítačky sd kariet
Otvoríme okno s príkazovým riadkom ako administrátor ( stlačíme lupu, vedľa tlačidla štart a napíšeme cmd, ponúkne nám príkazový riadok, pravým tlačidlom myši si vyberieme spustiť ako správca ) a napíšeme:
wmic diskdrive list brief
vo výpise vidíme minimálne dve položky, hard disk a čítačku kariet:
C:\>wmic diskdrive list brief
Caption DeviceID Model Partitions Size
KINGSTON SV300S37A120G \\.\PHYSICALDRIVE0 KINGSTON SV300S37A120G 3 120031511040
Generic SD08G SD Card \\.\PHYSICALDRIVE1 Generic SD08G SD Card 2 7945620480
Dôležité je DeviceID: \\.\PHYSICALDRIVE1
2. Zmeníme aktuálny adresár na adresár kde je nainštalovaný virtualbox
cd C:\Program Files\Oracle\VirtualBox
3. Vytvoríme odkaz na zariadenie, čítačka sd kariet
VBoxManage internalcommands createrawvmdk -filename "%USERPROFILE%/Desktop/sdcard.vmdk" -rawdisk \\.\PHYSICALDRIVE1
Odkaz je vytvorený na pracovnej ploche a má meno sdcard.vmdk
4. Zariadenie pripojíme k virtuálnemu stroju
Spustíme virtualbox ako administrátor, otvoríme nastavenia – settings.
Vyberieme úložisko – storage -> controller: SATA, pravým tlačidlom Add Hard Disk, z ponuky vyberieme odkaz na pracovnej ploche vytvorený v predchádzajúcom kroku.
5. Pracujeme s ext4 kartou v prostredí windows
Spustíme virtuálny stroj. Čítačka kariet by mala byť prístupná. Zobrazíme si všetky pripojiteľné zariadenia – disky:
sudo fdisk -l
Okrem systémového disku ( zvyčajne /dev/sda ) vidíme aj ďalšie zariadenie s dvoma partíciami ( /dev/sdb ). Vytvoríme si adresár do ktorého pripojíme SD kartu v čítačke:
sudo mkdir /mnt/rpi
Pripojíme SD kartu:
sudo mount /dev/sdb2 /mnt/rpi
Na karte (ext4) je možné vykonať zmeny, editovať súbory, kopírovať atď aj na počítači s OS windows.
Keďže ale práca v terminály virtuálneho stroja nie je práve najpohodlnejšia, tak posledný krok je zjednodušenie prístupu do virtualizovaného OS pomocou ssh klienta putty. Virtualbox si však vytvára vlastnú privátnu sieť ukrytú za NAT (zvyčajne 10.0.2.x) a preto je potrebné presmerovať porty. Zistíme našu IP, údaj potrebujeme doplniť neskôr do Guest IP:
hostname -I
Otvoríme nastavenia – settings, vyberieme sieť – network -> port forwarding. Doplníme údaje: Host IP 127.0.1.1, Host Port 22, Guest IP 10.0.2.15, Guest Port 22. Zmenu môžeme vykonať aj na bežiacom stroji. Ak nám beží viac virtuálnych strojov je potrebné nastaviť rôzne porty (akékoľvek nepoužívané).
Pripojíme sa pomocou ssh klienta putty (rado@127.0.1.1:22) v ktorom je práca v terminály podstatne pohodlnejšia (kopírovať text medzi windows a virtuálnym strojom, špeciálne znaky na klávesnici, jednoduchá zmena veľkosti okna terminálu atď.).
Po ukončení úprav môžeme SD kartu odpojiť:
sudo umount /mnt/rpi
Záver
Týmto spôsobom je možné pripojiť ľubovoľné blokové zariadenie (SD karta, USB flash disk, interný, externý hard disk), bez ohľadu na schopnosť hostiteľského OS čítať, zapisovať na, z pripojeného zariadenia , podmienkou je len schopnosť hosťujúceho – virtualizovaného OS pristupovať k tomuto súborovému systému (exFAT, ext2,3,4, btrfs, atď).
Zdroj po anglicky tu .