Bagaimana saya bisa memasang gambar disk?

26

Saya memiliki gambar disk myimage.diskyang berisi tabel partisi dan partisi primer (yaitu sistem file FAT32). Pikirkan itu sebagai gambar pena USB.

Saya ingin me-mount partisi primer ke direktori lokal. Saya tahu cara me-mount gambar partisi menggunakan utils loop tetapi di sini saya memiliki gambar disk. Dugaan saya adalah bahwa saya harus memasang gambar "melewatkan" tabel partisi tetapi bagaimana saya bisa melakukan itu?

Emiliano
sumber
7
Lihat juga superuser.com/questions/117136/... Anda mungkin ingin menggunakan cukup losetup --partscan --find --show disk.imgdiikuti olehmount /dev/loop0p1 /mnt/disk
Flow
1
Kemungkinan duplikat
Memasang

Jawaban:

44

Alat kpartx membuatnya lebih mudah. Itu menciptakan perangkat loop di / dev / mapper untuk setiap partisi di gambar Anda. Kemudian Anda dapat memasang perangkat loop yang sesuai dengan partisi yang Anda inginkan tanpa harus menghitung offset secara manual.

Misalnya, untuk memasang partisi pertama dari disk image:

kpartx -a -v myimage.disk
mount /dev/mapper/loop0p1 /mnt/myimage

Setelah selesai dengan gambar, hapus perangkat loop:

umount /mnt/myimage
kpartx -d -v myimage.disk

Atau, jika Anda memiliki kernel baru-baru ini, dan meneruskan loop.max_part = 63 saat boot (jika loop bawaan) atau untuk modprobe (jika loop adalah modul), maka Anda dapat melakukannya dengan cara ini:

losetup /dev/loop0 myimage.disk
partprobe /dev/loop0             # Re-read partition table if /dev/loop0 was used with a different image before
mount /dev/loop0p1 /mnt/myimage

Setelah selesai dengan loop:

losetup -d /dev/loop0
scott.squires
sumber
1
Anda tidak perlu yang di -o loopatas, /dev/mapper/loop0p1sudah menjadi perangkat blok (perangkat mapper di atas perangkat loop, Anda tidak ingin lapisan lain perangkat loop di atas itu).
sch
2
Jika Anda tidak mendapatkan perangkat partisi ( /dev/loop0p1dll.) Setelah berjalan losetup, jalankan partprobe /dev/loop0.
Vladimir Panteleev
kpartxtampaknya diinstal secara default di Linux Mint 18.
unfa
4

Menemukan ini:

http://www.andremiller.net/content/mounting-hard-disk-image-including-partitions-using-linux

yang tampaknya persis apa yang saya cari.

Inilah bagian kuncinya:

mount -o loop,ro,offset=32256 hda.img /mnt/rabbit

di mana nilai offset dalam byte. Cara yang disarankan untuk mendapatkan offset adalah dengan menunjuk partedpada gambar, lalu unit B untuk byte dan mengambil nilai awal dari output cetak. Sebagai alternatif, dengan asumsi Anda memiliki ruang disk, lakukan yang jelas: begitu Anda memiliki offset dan ukuran, cukup gunakan dduntuk mengekstrak setiap partisi ke file yang terpisah.

Emiliano
sumber
1
Untuk menulis jawaban yang benar-benar hebat, bisakah Anda menjelaskan bagian terpenting di sini? Memiliki tautan sangat bagus, tetapi memiliki info di sini akan lebih baik.
slhck
1
Inilah bagian kuncinya:, di mount -o loop,ro,offset=32256 hda.img /mnt/rabbitmana nilai offsetdalam byte. Cara yang disarankan untuk mendapatkan offset adalah dengan menunjuk parted pada gambar, kemudian unit Buntuk byte dan mengambil startnilai dari printoutput. Sebagai alternatif, dengan asumsi Anda memiliki ruang disk, lakukan yang jelas: begitu Anda memiliki offset dan ukuran, cukup gunakan dduntuk mengekstrak setiap partisi ke file yang terpisah.
CVn
Ya, maaf karena terlalu pendek. Seperti yang ditunjukkan Michael bagian yang relevan, tentu saja, mountbaris yang berisi offsetopsi.
Emiliano
2
local_image_file=/var/tmp/image.img
first_byte=$(parted -m ${local_image_file} unit B print | grep Linux | cut --fields 2 --delimiter ':' | sed 's/.$//')
loop_file=/var/tmp/loop
mkdir -p ${loop_file}
mount -o loop,ro,offset=${first_byte} ${local_image_file} ${loop_file}
memuntahkan
sumber
1
Meskipun ini mungkin menjawab pertanyaan, itu akan menjadi jawaban yang lebih baik jika Anda bisa memberikan penjelasan mengapa itu bisa terjadi.
DavidPostill
2

Saat ini Anda dapat meminimalkan pekerjaan Anda dengan menggunakan udisks. Solusi dari ArchWiki: udisks - Mount loop devices

Untuk memasang gambar ISO dengan mudah, gunakan perintah berikut:

udisksctl loop-setup -r -f image.iso

Ini akan membuat perangkat loop dan menunjukkan gambar ISO siap dipasang. Setelah dilepas, perangkat loop akan dihentikan oleh udev.

-r ada untuk opsi hanya baca.

efhemerr
sumber
Ini luar biasa, terima kasih atas informasinya. Gila bagaimana ini adalah pertama kalinya saya menemukan referensi udisksctl.
Oxwivi