Diskimage i Linux
Att ta en diskimage
Att ta en diskimage görs enkelt med följande kommando:
$ sudo dd if=/dev/sda of=diskimage.img status=progress
För vissa device kan det också hjälpa att lägga på blockstorlek med bs=8192
eller annan lämplig blockstorlek om accessen har hög overhead.
status=progress
är bara för du ska se hur långt dd läst, operationen brukar ta en stund beroende på hur stor din disk är och hur snabb överföring du har.
Du ska inte ta en diskimage på partitioner som är monterade. Det brukar sluta med en inkonsistent journal och kvaddat filsystem. Boota i stället datorn från en USB-sticka och kör dd från den.
Vilken device du ska köra kan du se om du slår lsblk
resultatet kan se ut såhär:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 476,9G 0 disk ├─sda1 8:1 0 1,9G 0 part /boot ├─sda2 8:2 0 29,8G 0 part [SWAP] └─sda3 8:3 0 445,3G 0 part /home /var/snap/firefox/common/host-hunspell / sdc 8:32 0 3,6T 0 disk ├─sdc1 8:33 0 200M 0 part └─sdc2 8:34 0 3,6T 0 part /media/anders/LaCie sr0 11:0 1 1024M 0 rom
I mitt fall är sda
den inbyggda disken i maskinen, sdc
är en löstagbar disk ansluten via USB-C och sr0
är en CD-ROM läsare (ovanligt numera i laptops...)
Att återställa en diskimage
Återställning görs med omvänt kommando:
dd if=diskimage.img of=/dev/sda
Montera en särskild partition inne i en diskimage
Enklaste sättet att montera en full disk image i linux, som t.ex. tagits med kommandot: dd if=/dev/sda of=diskimage.img
är egentligen att leta upp och räkna ut var någonstans en partition börjar och sedan montera dem med det vanliga mount
-kommandot.
Först kontrollera partitionstabellen:
$ fdisk -l diskimage.img
Disk system-2025-01-11.img: 238,47 GiB, 256060514304 bytes, 500118192 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt<br> Disk identifier: 873D2F0A-877C-488B-BDE3-B0C984C38B67 Device Start End Sectors Size Type system-2025-01-11.img1 2048 534527 532480 260M EFI System system-2025-01-11.img2 534528 567295 32768 16M Microsoft reserved system-2025-01-11.img3 567296 496574463 496007168 236,5G Microsoft basic data system-2025-01-11.img4 496574464 498065407 1490944 728M Windows recovery environment system-2025-01-11.img5 498069504 500117503 2048000 1000M Windows recovery environment
Partitionen vi vill ha är den här:
system-2025-01-11.img3 567296 496574463 496007168 236,5G Microsoft basic data
Vi behöver då räkna ut offsetten till den. Fdisk talar om vi har 512 byte sektorstorlek och vi ser i tabellen den startar på 567296 så om vi tar 512*567296=290455552 i bytes. Montering kan sedan ske med följande kommando:
$ sudo mount -o loop,offset=290455552 diskimage.img /mnt