Bagaimana saya bisa memasang partisi dari gambar yang dibuat-dd dari perangkat blok (misalnya HDD) di Linux?

34

Saya memiliki gambar seluruh disk yang dibuat menggunakan dd . Struktur disk berikut:

kent@cow:~$ sudo fdisk -l

Disk /dev/sda: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b8508

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           5       90872   729929303+  83  Linux
/dev/sda2           90873       91201     2642692+   5  Extended
/dev/sda5           90873       91201     2642661   82  Linux swap / Solaris

Gambar dibuat menggunakan:

dd if=/dev/sda of=image750.img

Bagaimana saya, jika mungkin, me-mount / dev / sda1 dari gambar sehingga saya dapat membaca isinya?

Ini bukan opsi untuk mengkloning HDD lagi, saya tahu bagaimana melakukannya jika saya hanya mengkloning partisi tunggal dengan sendirinya. Saya harap itu masih mungkin dengan gambar saat ini.

Dihapus
sumber
stackoverflow.com/questions/1419489/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

48

Saat ini, ada cara yang lebih baik, tidak perlu menggunakan offset atau kpartx lagi:

losetup --partscan --find --show disk.img

mount /dev/loop0p1 /mnt

untuk membebaskan loop0, gunakan setelah umount:

losetup -d /dev/loop0
bhelm
sumber
8
Pada instalasi Ubuntu 14.04 saya, losetup tidak menyediakan opsi --partscan.
Pemotong
1
@Cutter ditambahkan di util-linux 2.21, Ubuntu 16.04. :-)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Setelah digunakan kpartxpertama kali, yang me-mount partisi seperti /dev/mapper/loop3p1, saya hanya ingin menunjukkan bahwa losetupmenciptakan perangkat seperti /dev/loop0p1. Jawabannya mencatat itu, tapi saya membacanya mungkin 10 kali. : /
Randy Syring
13

Saya mengalami masalah ini hari ini dan ingin memperbarui jawaban hanya sebagai pengingat bagi diri saya sendiri. Alih-alih menghitung sendiri offset, Anda dapat menggunakan alat yang memberi Anda perangkat yang dapat dipasang dari gambar dd: kpartx

http://robert.penz.name/73/kpartx-a-tool-for-mounting-partitions-within-an-image-file/

http://linux.die.net/man/8/kpartx

Dalam kasus yang diberikan, itu akan membutuhkan sesuatu seperti

sudo kpartx -a image750.img
sudo mount /dev/mapper/loop1p1 /mount/point -o loop,ro

di mana loop1p1 berarti partisi pertama, loop1p2 untuk partisi kedua, dll.

GrGr
sumber
6

Anda mendapatkan bagian pertama: fdisk -l untuk menemukan mulai offset. Ambil nomor itu, kalikan dengan 512, dan Anda akan mendapatkan opsi offset untuk dipasang. Jadi, untuk sda1 dalam kasus Anda, 5 * 512 = 2560. Kemudian jalankan mount:

mount -o loop,offset=2560 -t auto /path/to/image.dd /mount/point
Baumgart
sumber
4

Loopmounting hanya bagian dari jawabannya.

Lihatlah http://wiki.edseek.com/guide:mount_loopback#accessing_specific_partitions_in_the_image untuk bantuan menentukan partisi. Saya pikir mount -o loop, offset = 32256 /path/to/image750.img / mnt akan bekerja untuk Anda. tetapi Anda benar-benar harus membaca tutorial yang disebutkan.

Richard June
sumber
offset terlihat salah; yang sesuai dengan awal partisi 63 (<i> 63 * 512 = 32256 </i>). offset dalam jawaban baumgart terlihat lebih tepat untuk situasi ini. tautannya adalah referensi yang bagus, tetapi itu akan menjadi jawaban yang lebih baik jika Anda meluangkan waktu untuk merangkum langkah-langkah atau perintah yang diperlukan untuk prosedur ini. Terima kasih!
quack quixote
1

losetup -P otomatisasi

Metode yang disebutkan oleh https://superuser.com/a/684707/128124 (ditambahkan di util-linux v2.21, ditambahkan Ubuntu 16.04), berikut adalah fungsi untuk mengotomatisasikannya lebih lanjut. Pemakaian:

$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2

$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there

$ sudo losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                                                      DIO
/dev/loop1         0      0         0  0 /full/path/to/my.img

$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0

Sumber:

los() (
  img="$1"
  dev="$(sudo losetup --show -f -P "$img")"
  echo "$dev"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    echo "$dst"
    sudo mkdir -p "$dst"
    sudo mount "$part" "$dst"
  done
)
losd() (
  dev="/dev/loop$1"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    sudo umount "$dst"
  done
  sudo losetup -d "$dev"
)

modul loop max_part config

Metode yang layak sebelum util-linux v2.21.

loop adalah modul kernel, dibangun ke dalam kernel di Ubuntu 14.04.

Jika Anda mengonfigurasinya dengan benar, Linux secara otomatis membagi perangkat untuk Anda.

cat /sys/module/loop/parameters/max_part

mengatakan berapa banyak partisi loopyang dapat dihasilkan perangkat.

Secara 0default pada Ubuntu 14.04 itulah sebabnya tidak ada pemisahan otomatis.

Untuk mengubahnya, kita dapat menambahkan:

options loop max_part=31

ke file di /etc/modprobe, atau:

GRUB_CMDLINE_LINUX="loop.max_part=31"

ke /etc/default/grubdan kemudian sudo update-grub.

Cara mengatur parameter modul juga dibahas di: https://askubuntu.com/questions/51226/how-to-add-kernel-module-parameters

Setelah reboot, ketika Anda melakukannya:

sudo losetup -f --show my.img

itu me-mount gambar ke /dev/loopXperangkat, dan secara otomatis me-mount partisi ke /dev/loopXpYperangkat.

Jadi ini adalah metode yang paling nyaman jika Anda bersedia untuk reboot.

Lihat juga

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
0

Jika Anda memiliki sistem file mode Pengguna seperti sekering, maka di lingkungan desktop suka Gnome dan telah menginstal alat seperti gnome-disk-image-mounter, lalu bahkan tanpa root dengan klik kanan dan buka dengannya.

Kasun
sumber
0

Saya percaya loopmounting adalah jawabannya -

sudo mkdir /path/to/dir/
mount -o loop example.img /path/to/dir/

Di atas harus memasang di bawah direktori itu.

Ini harus melepasnya:

umount /path/to/dir
Journeyman Geek
sumber