कमांड लाइन से डिस्क इमेज कैसे माउंट करें?


39

मैं जानता / जानती हूं कि उस ड्राइव को कैसे माउंट किया जाता है, जिसमें डिवाइस डिवाइस फाइल / dev है, लेकिन मुझे नहीं पता कि डिस्क इमेज के लिए यह कैसे करना है जो एक भौतिक डिवाइस का प्रतिनिधित्व नहीं करता है और इसमें एनालॉग / in / dev नहीं है (जैसे आईएसओ फ़ाइल या एक फ्लॉपी छवि)। मुझे पता है कि मैं मैक ओएस एक्स में फाइंडर में डिस्क छवि के आइकन पर डबल-क्लिक करके ऐसा कर सकता हूं, जो स्वचालित रूप से ड्राइव को माउंट करेगा, लेकिन मैं टर्मिनल से ऐसा करने में सक्षम होना चाहूंगा। मुझे यकीन नहीं है कि ऐसा करने का एक सामान्य यूनिक्स तरीका है, या यदि यह प्लेटफ़ॉर्म-विशिष्ट है।


1
क्या आप इसका मतलब ओएस एक्स पर कमांड लाइन पर करना चाहते हैं? आप इसका उल्लेख करते हैं, लेकिन यह स्पष्ट होना बेहतर हो सकता है यदि प्रश्न एक निश्चित ओएस के लिए विशिष्ट है। इसके अलावा, आप किस प्रकार की डिस्क छवि से मतलब रखते हैं? ।आईएसओ?
इलकाकचू

जवाबों:


42

यदि यह एक एमबीआर विभाजन तालिका के साथ हार्ड-ड्राइव छवि थी, तो मुझे उस विभाजन के लिए ऑफसेट खोजने के लिए छवि को fdisk करना होगा जिसे मुझे माउंट करने की आवश्यकता है।

fdisk -lu /path/disk.img

फिर मैं इसे ऑफ़सेट को पार करूँगा।

mount -o loop,offset=xxxx /path/disk.img /mnt/disk.img.partition

ऑफसेट मान बाइट्स में होता है, जबकि fdiskएक ब्लॉक काउंट दिखाता है, इसलिए आपको ऑफ़सेट को माउंट करने के लिए (या ब्लॉक आकार जो भी हो) fdiskआउटपुट के "आरंभ" या "प्रारंभ" से मूल्य को गुणा करना चाहिए 512


6
losetup -Pआम तौर पर इस विधि की तुलना में अधिक सुविधाजनक है: unix.stackexchange.com/a/316407/32558
Ciro Santilli Sant this this this

35

अधिकांश आधुनिक GNU सिस्टम पर mountकमांड इसे संभाल सकती है:

mount -o loop file.iso /mnt/dir

अनमाउंट करने के लिए आप केवल umountकमांड का उपयोग कर सकते हैं

umount /mnt/dir

यदि आपके OS में यह विकल्प नहीं है तो आप एक लूप डिवाइस बना सकते हैं :

losetup -f # this will print the first available loop device ex:/dev/loop0
losetup /dev/loop0 /path/file.iso #associate loop0 with the specified file
mount /dev/loop0 /mnt/dir #It may be necessary specify the type (-t iso9660)

आप उपयोग कर सकते हैं umount करने के लिए -d:

umount /mnt/dir
losetup -d /dev/loop0

यदि फ़ाइल में विभाजन हैं, तो एक HD चित्र का उदाहरण दें, आप -Pपैरामीटर का उपयोग कर सकते हैं (आप पर निर्भर करता है OS), यह फ़ाइल सामग्री में विभाजन को मैप करेगा:

losetup -P /dev/loop0 /path/file.iso # will create /dev/loop0 
ls /dev/loop0p* #the partitions in the format /dev/loop0pX

यह मूल रूप से localhostडिस्क छवियों के लिए (लूपबैक!) है।
मोनिका

2
losetupऔर mount -o loopलिनक्स विशिष्ट हैं। यह एक अलग कर्नेल (जैसे हर्ड, इल्मोस या kFreeBSD का उपयोग करके GNU डिस्ट्रीब्यूशन पर काम नहीं करेगा, हालांकि इल्लुमोस और फ़्रीबीएसडी में एक अलग सिंटैक्स के बराबर होगा)
स्टीफन चेज़लस

यहाँ आगे स्वचालित करने के लिए कुछ कार्य दिए गए हैं losetup: unix.stackexchange.com/a/430415/32558
Ciro Santilli Sant further further further '

6

प्रयत्न:

mount -o loop /path/to/file.iso /mnt

आप इसके बाद जोड़ सकते हैं loop:

  • -t msdos फ्लॉपी के लिए
  • -t iso9660 CD-ROM छवि के लिए

लिनक्स आमतौर पर फ़ाइल प्रकार का अनुमान लगाने की कोशिश करता है।


6

losetup -P बहु विभाजन छवियों के लिए स्वचालन

कमांड लाइन से डिस्क इमेज कैसे माउंट करें? | यूनिक्स और लिनक्स स्टैक एक्सचेंज का उल्लेख किया गया है losetup -P, और यहां चीजों को आगे बढ़ाने के लिए कुछ आसान बैश फ़ंक्शन हैं। उपयोग:

$ 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"
)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.