Bir disk görüntüsünü nasıl bağlayabilirim?


26

myimage.diskBölüm tablosu ve bir birincil bölüm içeren bir disk görüntüsüm var (örneğin bir FAT32 dosya sistemi). Bunu bir USB kalem görüntüsü olarak düşünün.

Birincil bölümü yerel bir dizine bağlamak istiyorum. Döngü araçlarını kullanarak bir bölüm görüntüsünün nasıl bağlanacağını biliyorum ama burada disk görüntüsüne sahibim. Tahminime göre, bölüm tablosunu "atlayarak" resmini yerleştirmem gerekiyor, ancak bunu nasıl yapabilirim?


7
Ayrıca bkz superuser.com/questions/117136/… Basitçe losetup --partscan --find --show disk.imgtakip etmek isteyebilirsinizmount /dev/loop0p1 /mnt/disk
Flow

Yanıtlar:


44

Kpartx aracı bunu kolaylaştırır. Görüntünüzdeki her bölüm için / dev / mapper içindeki döngü aygıtlarını oluşturur. Ardından ofseti manuel olarak hesaplamak zorunda kalmadan istediğiniz bölüme karşılık gelen döngü cihazını monte edebilirsiniz.

Örneğin, disk görüntüsünün ilk bölümünü bağlamak için:

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

Görüntüyle işiniz bittiğinde, döngü aygıtlarını kaldırın:

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

Alternatif olarak, yeni bir çekirdeğiniz varsa ve açılışta loop.max_part = 63'ü (döngü yerleşikse) veya modprobe'a (döngü bir modül ise) geçin, o zaman bunu yapabilirsiniz:

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

Döngü ile işiniz bittiğinde:

losetup -d /dev/loop0

1
-o loopYukarıdakilere ihtiyacınız yoktur /dev/mapper/loop0p1, zaten bir blok aygıtıdır (bir döngü aygıtının üstünde bir eşleyici aygıt, bunun üzerine başka bir döngü aygıtı katmanı istemezsiniz).
sch

2
Çalıştırdıktan /dev/loop0p1sonra bölümleme aygıtları ( vb.) Almazsanız losetupçalıştırın partprobe /dev/loop0.
Vladimir Panteleev

kpartxLinux Nane 18'de varsayılan olarak kurulmuş gibi görünüyor.
unfa

4

Bunu buldum:

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

Bu tam olarak ne aradığımı görünüyor.

İşte anahtar bölüm:

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

ofset değeri bayt cinsindendir. Ofseti elde etmenin önerilen yolu partedgörüntüye işaret etmek , ardından baytlar için birim B'ye ve başlangıç ​​değerini baskı çıktısından almaktır. Alternatif olarak, disk alanınız olduğunu varsayarsak, açıkça yapın: ofset ve boyutunuz olduğunda, ddher bölümü ayrı bir dosyaya çıkarmak için kullanın .


1
Gerçekten harika bir cevap yazmak için, buradaki en önemli kısımları açıklar mısınız? Bir bağlantıya sahip olmak harika, ancak burada bilgi sahibi olmak en iyisidir.
slhck

1
Anahtar bölüm:: mount -o loop,ro,offset=32256 hda.img /mnt/rabbitdeğeri offsetbayt cinsindendir. Ofseti elde etmenin önerilen yolu görüntüde bölünmüş noktaya, ardından unit Bbaytlara göre ve çıktıdan startdeğeri almaktır print. Alternatif olarak, disk alanınız olduğunu varsayarsak, açıkça yapın: ofset ve boyutunuz olduğunda, ddher bölümü ayrı bir dosyaya çıkarmak için kullanın .
CVn

Evet, çok kısa olduğum için üzgünüm. Michael'ın belirttiği gibi, ilgili kısım elbette, seçeneği mountiçeren çizgidir offset.
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}

1
Bu soruya cevap verebilse de, neden böyle olduğunu açıklayabilirseniz daha iyi bir cevap olabilir .
DavidPostill

2

Günümüzde işinizi kullanarak minimize edebilirsiniz udisks. ArchWiki'nin çözümü: udisks - Mount loop devices

ISO görüntülerini kolayca monte etmek için aşağıdaki komutu kullanın:

udisksctl loop-setup -r -f image.iso

Bu, bir döngü cihazı oluşturacak ve ISO görüntüsünü kuruluma hazır gösterecektir. Bağlantı kesildiğinde, loop cihazı udev tarafından sonlandırılacaktır.

-r salt okunur seçeneği için orada.


Bu şaşırtıcı, bilgi için teşekkürler. Çılgınca ilk defa nasıl bir referans bulduğumu gördüm udisksctl.
Oxwivi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.