मैं डिस्क छवि कैसे माउंट कर सकता हूं?


26

मेरे पास एक डिस्क छवि है myimage.diskजिसमें विभाजन तालिका और एक प्राथमिक विभाजन है (यानी एक FAT32 फाइल सिस्टम)। एक USB पेन छवि के रूप में सोचो।

मैं प्राथमिक विभाजन को स्थानीय निर्देशिका में माउंट करना चाहता हूं। मुझे पता है कि लूप बर्तनों का उपयोग करके एक विभाजन छवि कैसे माउंट की जाती है, लेकिन यहां मेरे पास डिस्क छवि है। मेरा अनुमान है कि मुझे विभाजन तालिका को "लंघन" छवि को माउंट करना होगा लेकिन मैं ऐसा कैसे कर सकता हूं?


7
यह भी देखें superuser.com/questions/117136/… आप बस losetup --partscan --find --show disk.imgइसके बाद उपयोग करना चाहते हैंmount /dev/loop0p1 /mnt/disk
फ्लो

जवाबों:


44

Kpartx उपकरण यह आसान बनाता है। यह आपकी छवि में प्रत्येक विभाजन के लिए / dev / mapper में लूप डिवाइस बनाता है। फिर आप लूप डिवाइस को माउंट कर सकते हैं जो मैन्युअल रूप से ऑफ़सेट की गणना किए बिना आपके वांछित विभाजन से मेल खाती है।

उदाहरण के लिए, डिस्क छवि के पहले विभाजन को माउंट करने के लिए:

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

जब आप छवि के साथ हो जाएं, तो लूप उपकरणों को हटा दें:

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

वैकल्पिक रूप से, यदि आपके पास हाल ही में कर्नेल है, और लूप.max_part = 63 को बूट पर (यदि लूप बिल्ट-इन है) या modprobe (यदि लूप एक मॉड्यूल है) पास है, तो आप इसे इस तरह से कर सकते हैं:

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

जब आप पाश के साथ कर रहे हैं:

losetup -d /dev/loop0

1
आपको -o loopऊपर की आवश्यकता नहीं है , /dev/mapper/loop0p1पहले से ही एक ब्लॉक डिवाइस है (लूप डिवाइस के शीर्ष पर एक मैपर डिवाइस, आप उस के शीर्ष पर लूप डिवाइस की एक और परत नहीं चाहते हैं)।
sch

2
यदि आपको चलाने के /dev/loop0p1बाद विभाजन डिवाइस ( आदि) नहीं मिलते हैं losetup, तो चलाएं partprobe /dev/loop0
व्लादिमीर पेंटेलेव

kpartxलिनक्स टकसाल 18 में डिफ़ॉल्ट रूप से स्थापित होने के लिए लगता है
unfa

4

यह मिला:

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

जो वास्तव में मैं क्या देख रहा था लगता है।

यहाँ मुख्य भाग है:

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

जहां ऑफसेट का मूल्य बाइट्स में है। ऑफसेट प्राप्त करने का सुझाया तरीका partedछवि पर इंगित करना है , फिर बाइट्स के लिए यूनिट बी और प्रिंट आउटपुट से स्टार्ट वैल्यू लेना है। एक विकल्प के रूप में, मान लें कि आपके पास डिस्क स्थान है, स्पष्ट करें: एक बार जब आपके पास ऑफसेट और आकार होता है, तो बस ddप्रत्येक विभाजन को एक अलग फ़ाइल में निकालने के लिए उपयोग करें।


1
वास्तव में शानदार उत्तर लिखने के लिए, क्या आप यहाँ सबसे महत्वपूर्ण भागों की व्याख्या कर सकते हैं? एक लिंक होना बहुत अच्छा है, लेकिन यहाँ जानकारी रखना सबसे अच्छा होगा।
slhck

1
यहाँ मुख्य भाग है: mount -o loop,ro,offset=32256 hda.img /mnt/rabbitजहाँ offsetबाइट्स में मान है। ऑफसेट प्राप्त करने का सुझाव दिया गया तरीका छवि पर बिदाई करना है, फिर unit Bबाइट्स के लिए और आउटपुट startसे मूल्य लेना है print। एक विकल्प के रूप में, मान लें कि आपके पास डिस्क स्थान है, स्पष्ट करें: एक बार जब आपके पास ऑफसेट और आकार होता है, तो बस ddप्रत्येक विभाजन को एक अलग फ़ाइल में निकालने के लिए उपयोग करें।
बजे एक CVn

हां, बहुत कम होने के लिए खेद है। जैसा कि माइकल ने बताया कि रेलेवेंट भाग, विकल्प mountवाली लाइन है offset
एमिलियानो

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
हालांकि यह प्रश्न का उत्तर दे सकता है, यह एक बेहतर उत्तर होगा यदि आप कुछ स्पष्टीकरण प्रदान कर सकते हैं कि ऐसा क्यों होता है।
DavidPostill

2

आजकल आप अपने काम को कम से कम करके उपयोग कर सकते हैं udisksArchWiki से समाधान : udisks - माउंट लूप डिवाइस

आईएसओ छवियों को आसानी से माउंट करने के लिए, निम्न कमांड का उपयोग करें:

udisksctl loop-setup -r -f image.iso

यह एक लूप डिवाइस बनाएगा और आईएसओ इमेज को माउंट करने के लिए तैयार दिखाएगा। एक बार अनमाउंट होने के बाद, लूप डिवाइस को udv द्वारा समाप्त कर दिया जाएगा।

-r वहाँ केवल पढ़ने के लिए विकल्प।


यह आश्चर्यजनक है, जानकारी के लिए धन्यवाद। पागल यह कैसे पहली बार है जब मुझे एक संदर्भ मिला udisksctl
ऑक्सीविवि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.