Dd के साथ बनाया एसडी कार्ड छवि कैसे माउंट करें?


21

मैंने अपने रास्पबेरी पाई एसडी-कार्ड की एक छवि बनाई है dd:

sudo dd if=/dev/sdf of=/home/myusername/raspberry-backup-2014-04-10.img

एसडी-कार्ड में दो विभाजन (एक vfat, एक ext4) शामिल होते हैं जो कार्ड को प्लग करते समय स्वचालित रूप से माउंट हो जाते हैं।

मेरा प्रश्न: मैं .img फ़ाइल से इन विभाजनों को कैसे माउंट कर सकता हूं?


अधिक जानकारी:

$ fdisk -l raspberry-backup-2014-04-10.img 

Disk raspberry-backup-2014-04-10.img: 3974 MB, 3974103040 bytes
255 heads, 63 sectors/track, 483 cylinders, total 7761920 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb

                          Device Boot      Start         End      Blocks   Id  System
raspberry-backup-2014-04-10.img1            8192      122879       57344    c  W95 FAT32 (LBA)
raspberry-backup-2014-04-10.img2          122880     7761919     3819520   83  Linux

आप इसे डी एसडी कार्ड में लिखे बिना इमेज माउंट करना चाहते हैं?
ऑरेंजट्यूक

हां, मैं .img फ़ाइल में संग्रहीत फ़ाइल सिस्टम के लिए पूर्ण पहुंच प्राप्त करना चाहता हूं ताकि मैं कॉपी / संशोधित / हटा / आदि कर सकूं। एसडी कार्ड के बिना फाइल
MrD


दुर्भाग्य से यह काम नहीं करता है, दोनों प्रयासों की कोशिश की। पहले वाले ने / dev / loop0p1 उपकरण नहीं बनाया था। दूसरा वाला (मैंने उसके अनुसार शुरुआती बिंदु की गणना की है) एक wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other errorसमस्या फेंकता है
MrD

इसके अलावा, sudo fdisk -l /dev/loop0दावे: डिस्क / देव / लूप 0 में एक वैध विभाजन तालिका नहीं है।
मृ।

जवाबों:


33

प्रत्येक विभाजन के लिए अलग-अलग चित्र बनाने या उपयोगिता को स्थापित करने की आवश्यकता से बचने के लिए kpartx, आप कमांड offsetमें निर्दिष्ट करके प्रत्येक विभाजन को व्यक्तिगत रूप से माउंट कर सकते हैं mount

पहले छवि फ़ाइल में विभाजन की जांच करें और उपयोग करके ऑफ़र्स का निर्धारण करें fdisk:

$ fdisk -u -l rpi_image280914 

Disk rpi_image280914: 16.0 GB, 16012804096 bytes
255 heads, 63 sectors/track, 1946 cylinders, total 31275008 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000cdac7

           Device Boot      Start         End      Blocks   Id  System
rpi_image280914p1   *        2048      514047      256000    c  W95 FAT32 (LBA)
rpi_image280914p2          540672    31242239    15350784   83  Linux

Startआप चाहते हैं कि विभाजन का क्षेत्र लें और उस मूल्य को Unitsआकार से गुणा करें । इसलिए यदि आप दूसरा विभाजन चाहते हैं तो आपको मिलेगा 540672 * 512 = 276824064

अब एक फ़ोल्डर बनाएं और विभाजन को माउंट करें:

mkdir rpi_partition2
sudo mount -o loop,offset=276824064 rpi_image280914 rpi_partition2/

एक बार जब आप कर रहे हैं जो आप विभाजन डेटा के साथ चाहते हैं:

sudo umount rpi_partition2/
rm -r rpi_partition2/

17

कुछ एडिटोनल परीक्षण के बाद मुझे स्वयं समाधान मिला: kpartx

sudo kpartx -a raspberry-backup-2014-04-10.img

यह कमांड बनाया /dev/mapper/loop0p1और /dev/mapper/loop0p2। बाद में इन विभाजनों को सीधे आगे रखा जा सकता है:

sudo mount -o rw -t ext4 /dev/mapper/loop0p2 mount_target/

1

यदि आपका लक्ष्य किसी विभाजन (फ़ाइल सिस्टम) की सामग्री का पता लगाने या संशोधित करने का है, तो यह कमांड लाइन sd कार्ड के फाइल सिस्टम को my_sdcard_dump.img को माउंट करने वाली निर्देशिका__ ir में डंप कर देगी

part_id=2; INFILE=my_sdcard_dump.img; MOUNTPT=mount_dir PARTITION=${part_id}; sudo mount "$INFILE" "$MOUNTPT" -o loop,offset=$[ `/sbin/sfdisk -d "$INFILE" | grep "start=" | head -n $PARTITION | tail -n1 | sed 's/.*start=[ ]*//' | sed 's/,.*//'` * 512 ]

0

कई विभाजनों के साथ एक संपूर्ण डिस्क की छवि से निपटना काफी मुश्किल है । लिनक्स को एक नियमित फाइल से बाहर विभाजन तालिका को पढ़ने के लिए डिज़ाइन नहीं किया गया था, यहां तक ​​कि जब एक लूपबैक डिवाइस से जुड़ा होता है, तो आपको विभाजन के ऑफसेट को सावधानीपूर्वक पहचानना होगा और उन्हें mountकमांड में पास करना होगा ।

प्रत्येक विभाजन की अलग-अलग छवियां बनाने के लिए बेहतर तरीका होगा:

sudo dd if=/dev/sdf1 of=/home/myusername/raspberry-backup-sdf1-2014-04-10.img
sudo dd if=/dev/sdf2 of=/home/myusername/raspberry-backup-sdf2-2014-04-10.img

अब आप इन फ़ाइलों को आसानी से समझ सकते हैं जैसे कि वे एक डिस्क पर अलग-अलग विभाजन थे, उन्हें बढ़ते हुए आप सामान्य रूप से एक वास्तविक डिस्क विभाजन करेंगे, उन्हें लूप डिवाइस पर मैप करके । लूप डिवाइस, या लूपबैक डिवाइस, एक वर्चुअल डिवाइस है जो लिनक्स के लिए फाइल को ब्लॉक डिवाइस (डिस्क या पार्टीशन की तरह) के रूप में अनुवाद करने के लिए ट्रांसलेशन लेयर प्रदान करता है।

लूप डिवाइस आमतौर पर के /dev/loop0माध्यम से कर रहे हैं /dev/loop8losetupकमांड के साथ अप्रयुक्त लूप डिवाइस को पहचानें :

$ sudo losetup /dev/loop0
loop: can't get info on device /dev/loop0: No such device or address

यह प्रतिक्रिया एक अनसाइनड लूप डिवाइस को इंगित करती है। अब हम अपनी एक इमेज फाइल में लूप डिवाइस को असाइन कर सकते हैं:

$ sudo losetup /dev/loop0 /home/myusername/raspberry-backup-sdf1-2014-04-10.img

इस कमांड से आउटपुट का अभाव सफलता को इंगित करता है। अब /dev/loop0अधिकांश उद्देश्यों के लिए कार्यात्मक रूप से /dev/sdf1आपके एसडी कार्ड के बराबर है , और आप इसे सामान्य रूप से माउंट कर सकते हैं:

sudo mount -t vfat /dev/loop0 /media/sdimage-1

अन्य विभाजन को माउंट करने के लिए किसी अन्य लूप डिवाइस का उपयोग करके प्रक्रिया को दोहराएं। जब आप कर लें, तो फ़ाइल सिस्टम को अनमाउंट करें और लूप डिवाइस को अनसाइन करें:

sudo umount /dev/loop0
sudo losetup -d /dev/loop0

मैं दो छवि फ़ाइलों को बनाने से बचना चाहूंगा, क्योंकि - अन्य मामूली कारणों के बीच - मैं अन्य लोगों को छवि वितरित करना चाहूंगा ताकि वे इसका उपयोग अपने एसडी-कार्ड के साथ आरंभ करने के लिए कर सकें। इसलिए, विभिन्न विभाजन जैसे / बूट आदि को एक फ़ाइल में होना चाहिए।
मृ।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.