मैं लिनक्स के तहत एक ब्लॉक डिवाइस (जैसे HDD) की dd- निर्मित छवि से एक विभाजन को कैसे माउंट कर सकता हूं?


34

मेरे पास dd का उपयोग करके बनाई गई संपूर्ण डिस्क की एक छवि है । डिस्क संरचना इस प्रकार है:

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

छवि का उपयोग करके बनाया गया था:

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

मैं, यदि यह संभव है, तो छवि से माउंट / देव / sda1 कैसे कर सकता हूं ताकि मैं सामग्री को पढ़ सकूं?

यह एचडीडी को फिर से क्लोन करने का विकल्प नहीं है, मुझे पता है कि यह कैसे करना है अगर मैंने केवल एक ही विभाजन को क्लोन किया था। मुझे उम्मीद है कि यह वर्तमान छवि के साथ अभी भी संभव है।



जवाबों:


48

आजकल, एक बेहतर तरीका है, अब ऑफ़सेट या केटरेक्स का उपयोग करने की कोई आवश्यकता नहीं है:

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

mount /dev/loop0p1 /mnt

लूप को मुक्त करने के लिए, umount के बाद का उपयोग करें:

losetup -d /dev/loop0

8
मेरे Ubuntu 14.04 स्थापना पर, losetup एक --partscan विकल्प प्रदान नहीं करता है।
कटर

1
@ इसे उपयोग-लाइनक्स 2.21, उबंटू 16.04 में जोड़ा गया था। :-)
सीरो शांतिली 新疆 改造 ill ill 事件 '24

kpartxपहले इस्तेमाल करने के बाद , जो विभाजन को मापता है /dev/mapper/loop3p1, जैसे कि मैं केवल यह losetupबताना चाहता हूं कि जैसे उपकरण बनाता है /dev/loop0p1। जवाब में लिखा है कि, लेकिन मैंने इसे 10 बार पढ़ा है। : /
रैंडी सीरिंग

13

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

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

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

दिए गए मामले में, इसे कुछ इस तरह की आवश्यकता होगी

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

जहां loop1p1 पहले विभाजन के लिए खड़ा है, दूसरे के लिए loop1p2 आदि।


6

आपको पहला भाग मिला है: स्टार्ट ऑफसेट को खोजने के लिए fdisk -l। उस संख्या को लें, जिसे 512 से गुणा करें, और आपको माउंट करने के लिए ऑफसेट विकल्प मिलेगा। तो, आपके मामले में sda1 के लिए, 5 * 512 = 2560। फिर माउंट चलाएँ:

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

4

लूपमाउंटिंग केवल उत्तर का हिस्सा है।

को देखो http://wiki.edseek.com/guide:mount_loopback#accessing_specific_partitions_in_the_image विभाजन को निर्दिष्ट पर मदद के लिए। मुझे लगता है कि माउंट-लूप, ऑफसेट = 32256 /path/to/image750.img / mnt आपके लिए काम करेगा। लेकिन आपको वास्तव में उल्लिखित ट्यूटोरियल को पढ़ना चाहिए।


ऑफसेट गलत दिखता है; जो कि 63 (<i> 63 * 512 = 32256 </ i>) के विभाजन से मेल खाती है। बॉमगार्ट के उत्तर में ऑफसेट इस स्थिति के लिए अधिक सही लगता है। लिंक एक अच्छा संदर्भ है, लेकिन यदि आप इस प्रक्रिया के लिए आवश्यक कदमों या आदेशों को संक्षेप में लेते हैं तो यह एक बेहतर उत्तर होगा। धन्यवाद!
क्वैककोट को

1

losetup -P स्वचालन

Https://superuser.com/a/684707/128124 (यूज़-लिनेक्स v2.21 में जोड़ा गया, उबंटू 16.04 जोड़ा गया) द्वारा उल्लिखित विधि , यहाँ इसे और स्वचालित करने के लिए कार्य किए गए हैं। उपयोग:

$ 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

स्रोत:

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"
)

लूप मॉड्यूल max_part config

उपयोग-लाइन v2.21 से पहले निर्णय विधि।

loop एक कर्नेल मॉड्यूल है, जिसे Ubuntu 14.04 में कर्नेल में बनाया गया है।

यदि आप इसे सही तरीके से कॉन्फ़िगर करते हैं, तो लिनक्स स्वचालित रूप से आपके लिए उपकरणों को विभाजित करता है।

cat /sys/module/loop/parameters/max_part

कहते हैं कि कितने विभाजन loopडिवाइस उत्पन्न कर सकते हैं।

यह 014.04 Ubuntu पर डिफ़ॉल्ट रूप से होता है, यही वजह है कि कोई भी ऑटो-स्प्लिटिंग नहीं होती है।

इसे बदलने के लिए, हम या तो जोड़ सकते हैं:

options loop max_part=31

/etc/modprobeया में एक फ़ाइल के लिए :

GRUB_CMDLINE_LINUX="loop.max_part=31"

करने के लिए /etc/default/grubऔर उसके बाद sudo update-grub

मॉड्यूल पैरामीटर सेट करने का तरीका भी इसमें शामिल है: https://askubuntu.com/questions/51226/how-to-add-kernel-module-parameters

रिबूट के बाद, जब आप करते हैं:

sudo losetup -f --show my.img

यह एक /dev/loopXडिवाइस के लिए छवि mounts , और स्वचालित रूप से /dev/loopXpYउपकरणों के लिए विभाजन mounts ।

यदि आप रिबूट करने के इच्छुक हैं तो यह सबसे सुविधाजनक तरीका है।

यह भी देखें


0

यदि आपके पास फ्यूज की तरह यूजर मोड फाइल्स सिस्टम है, तो डेस्कटॉप वातावरण में गनोम को पसंद करते हैं और ग्नोम-डिस्क-इमेज-माउंटर जैसे टूल को इंस्टॉल किया है, फिर इसे राइट क्लिक करके भी रूट करें और इसके साथ खोलें।


0

मेरा मानना ​​है कि लूपमाउंटिंग का जवाब है -

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

ऊपर इसे उस निर्देशिका के तहत माउंट किया जाना चाहिए।

यह इसे अनमाउंट करना चाहिए:

umount /path/to/dir
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.