Hur man använder DD-kommandot för att kopiera VHD-filer till en fysisk hårddisk



Prova Vårt Instrument För Att Eliminera Problem

Virtuella hårddiskfiler (VHD) är jättefiler som efterliknar användningen av fysiska medier på VirtualBox och några andra virtuella x86 / x86_64-emulatorer. Detta låter dig köra Windows, OS X, MS-DOS, FreeBSD, OpenBSD, OS / 2 eller till och med andra versioner av Linux i din Linux-distribution. Dessa filer låter dig inte direkt skriva innehållet till en fysisk disk via kommandot dd som låter dig göra detsamma med en ISO, men det finns ett sätt att göra det. Medan vissa guider kräver att du konverterar VHD-filen till en ISO behöver du inte göra detta om du kör VirtualBox på någon modern version av Linux. QEMU-användare har också en väg ut, men det innebär mer att spela runt.



Du måste se till att ingen av enheterna eller partitionerna du ska arbeta med är den du startar från. Vi använde precis ett partitionerat NAND-minne för det här exemplet, men du kanske vill använda en live DVD eller USB-start om du annars inte skulle kunna göra det. Oavsett vilket sätt du startade maskinen i fråga, starta ditt terminalprogram antingen genom att hålla ner Ctrl, Alt och T, söka efter det på Ubuntu Dash eller öppna det från undermenyerna Systemverktyg i Xfce4 eller LXDE.



Metod 1: Använda VBoxManage från kommandotolken

Överlägset det enklaste sättet att göra detta är att använda en traditionell VirtualBox-installation. Se till att du först har säkerhetskopierat all data du är orolig för att förlora eftersom du kommer att förstöra alla data på målets fysiska hårdvara medan du också kan sluta göra något åt ​​VHD- eller VHDX-filen under processen. Detta gäller även den andra metoden, liksom allt som involverar kommandon som är så destruktiva.



När du är säker på att allt är säkert och att målenheten är avmonterad men fortfarande ansluten till maskinen, säg en extern hårddisk som du fortfarande har anslutit men inte är monterad eller kanske till och med är rå eftersom du kommer att förlora allt på den i processen, kör VBoxManage clonehd freeBSD.VHDX –format RAW freeBSD.RAW medan du ersätter freeBSD.VHDX med din virtuella hårddisk. Vi hade en virtuell hårddiskfil med en något måttlig installation av FreeBSD för teständamål, därav namnet.

Så snart detta kommando är klart, kör sudo dd if = freeBSD.RAW av = / dev / sde , ersätter RAW-filens namn med den RAW du just skapade och sde block-enheten med den enhet du faktiskt är intresserad av. Om du är osäker kan du alltid köra sudo fdisk -l för att se till att du vet rätt partitionsnamn. Precis som att använda dd för något annat vill du inte skriva till fel enhet.

Du kan få ett felmeddelande om att det inte finns något utrymme kvar på enheten, precis som om du försökte skriva en stor fil till en mindre enhet, men detta orsakade inte problem i testerna. Det verkar som om den här processen lägger till extra nollor. Annars har du kunnat kopiera den virtuella skivan till en fysisk skiva i bara två steg med ett minimum av lurar.



Metod 2: Med QEMU Disk Network Block Device Server Command

Användare som bara har tillgång till Quick Emulator (QEMU) virtualiseringssystem måste hantera en något mer involverad procedur än de som har tillgång till VBoxManage-kommandot. Kör vid kommandotolken sudo modprobe nbd följd av qemu-nbd -r -c / dev / ndb0 -f vpc ourTest.vhd , med filnamnet ändrat för att återspegla det faktiska filnamnet du arbetar med. Du kan behöva sudo för att köra qemu-nbd, beroende på hur du har konfigurerat din installation. Om du kopierar kommandona härifrån och klistrar in dem måste du ändra dem innan du kör dem. I de flesta fall har du bara någonsin ndb0-enheten att oroa sig för här, så du borde inte ha några problem där.

När det är klart kan du skriva partitionen med qemu-nbd -P 2 -r -c / dev / nbd2 -f vpc ourTest.vhd följd av sudo ddrescure -v -f / dev / nbd2 / dev / sde2 , men kom ihåg att ersätta enhetsfilerna med de du faktiskt är intresserade av att använda. Om du kopierar och klistrar in dem i din egen terminal, se till att ersätta filnamnen och partitionsnumren med de du försöker skriva till. Vår / dev / sde-enhet var bara ett begagnat SDHC-kort som vi använde för att säkert testa detta utan att skada någonting. Du kan behöva sudo för att köra qemu-nbd, men du borde inte behöva det. På samma sätt kan du behöva släppa partitionsnumren beroende på din konfiguration. QEMU-processen är inte alls lika intuitiv av dessa skäl.

Hyper-V-användare kan ha en VHDX-bild istället för en VHD-fil. Om så är fallet måste du istället köra qemu-nbd -c / dev / nbd0 -f VHDX ourTest.vhd samtidigt som du byter ut filnamnet igen. Även om detta format var ett tillskott till Windows Server 2012 för att lägga till större lagringskapacitet till virtualiserade maskiner, vänder sig fler och fler Linux-användare till det för att undkomma 2 TB-gränsen som VHD har. Annars bör dessa instruktioner fungera oavsett den aktuella filstorleken. GNU ddrescue-verktyget ska fungera som dd, men det ser till att kopiera de bästa blocken först.

När detta har körts måste användare som arbetar med VHDX-bilder köra sudo ddrescue -v -f / dev / nbd2 / dev / sde2 , ersätter igen filerna ovan. Annars kan alla med alla typer av VirtualBox-bilder använda qemu-nbd -P 2 -r -c / dev / nbd2 -f vpc ourTest.vhd att montera partitionen i fråga som om det vore någon gammal disk. Du måste använda sudo mount / dev / nbd2 / cdrom eller sudo mount / dev / nbd2 / mnt att montera den. Se till att du inte har något annat monterat på katalogerna / cdrom eller / mnt innan du försöker.

Metod 3: Avmontera och sedan koppla bort filen

För att avmontera bilden behöver du bara använda sudo umount / mnt eller sudo umount / cdrom för att lossa den. Själva Linux-kärnan var trots allt upptagen med att behandla den som om den var någon annan volym.

Du måste fortfarande koppla bort det från QEMU-systemet, så skriv qemu-ndb -d / dev / nbd2 för att koppla bort den.

4 minuter läst