वर्चुअलबॉक्स ड्राइव इमेज (vdi) माउंट करें?


88

क्या वर्चुअलबॉक्स ड्राइव छवि (.vdi) को माउंट करना संभव है ताकि सामग्री को नॉटिलस आदि में देखा जा सके?

मेरे पास एक विंडोज़ 2000 है ।vdi जो वर्चुअलबॉक्स 2.x से 3.1.6 में अपग्रेड करने के बाद बूट ("दुर्गम बूट डिवाइस") नहीं करेगा। मेरा मानना ​​है कि आईडीई ड्राइव विवरण बदल गया है और मुझे केवल इतना करना है कि आंतरिक ड्राइव छवि तक पहुंच है और boot.iniनए स्थान पर इंगित करने के लिए विंडोज को संपादित करें ।


1
यदि आपकी .vdi और उसके बाद .img फ़ाइल में 1 और विभाजन है, तो यह बहुत उपयोगी है: ब्राउज़
करें-

जवाबों:


55

आप मानक छवि में परिवर्तित कर सकते हैं और फिर इसे माउंट कर सकते हैं।

VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img

फिर

mount -t ext3 -o loop,rw ./ubuntu.img /mnt

आपको ext3इस मामले में फ़ाइल सिस्टम के प्रकार को जानना होगा । इसके माउंट होने के बाद, अपनी पसंद के संपादक के साथ अंदर जाएं और संपादित करें। /mntचल रहे होस्ट के साथ स्थान के अंदर फ़ाइलों को भ्रमित न करें , या यह खराब होगा।

अपनी VDI फ़ाइल के बारे में विवरण देखने के लिए, चलाएँ VBoxManage showhdinfo ubuntu.vdi:।

स्रोत: [SOLVED] संग्रह प्रबंधक के साथ .vdi खोलें? - ubuntuforums.org


4
Specilly इस तरह की स्थिति में उपयोगी है। ओपी मूल को बैकअप के रूप में रखते हुए कॉपी पर काम कर सकेगा।
जेवियर रिवेरा

7
गतिशील रूप से आकार .vdi फ़ाइलों के साथ यह कर सावधानी। .Img में कनवर्ट करने से छवि फ़ाइल डिस्क के तार्किक आकार जितनी बड़ी हो जाएगी, यही वजह है कि यह दृष्टिकोण काम करता है, लेकिन यह .vdi फ़ाइल की तुलना में बहुत बड़ा हो सकता है। VBoxManage showhdinfo [your vdi file]यदि आप निश्चित नहीं हैं तो आउटपुट पर एक नज़र डालें ।
जैक ओ'कॉनर

1
-1, stwissel और Maxime R. के उत्तर समाधान प्रदान करते हैं - यह एक उचित समाधान है, लेकिन सवाल का सबसे अच्छा जवाब नहीं
STW

3
यदि छवि में एक विभाजन तालिका है (अधिकांश ड्राइव की तरह), तो आपको व्यक्तिगत विभाजन को माउंट करने के लिए इस उत्तर को एक के साथ संयोजित करने की आवश्यकता होगी ।
बैन

1
काम नहीं करता है। बढ़ते त्रुटियों को गलत fs प्रकार प्राप्त करते रहें। मैंने ext3 और ext2 और ext4 की कोशिश की। वर्चुअल बॉक्स का कहना है कि hd fs टाइप ext4 है।
जोशुआ रॉबिसन

86

उपयोग करें qemu-nbd, इस प्रक्रिया को सर्वरफॉल्ट पर और इस ब्लॉग में समझाया गया है

मूल रूप से, qemuयदि आवश्यक हो तो आपको इंस्टॉल करना होगा:

sudo apt-get install qemu

फिर आपको नेटवर्क ब्लॉक डिवाइस मॉड्यूल लोड करने की आवश्यकता होगी :

sudo rmmod nbd
sudo modprobe nbd max_part=16

आपके द्वारा बनाए गए nbd में .vdi छवि संलग्न करें:

sudo qemu-nbd -c /dev/nbd0 drive.vdi

अब आपको एक / dev / nbd0 ब्लॉक डिवाइस मिलेगा, साथ ही कई / dev / nbd0p * पार्टीशन डिवाइस नोड्स।

sudo mount /dev/nbd0p1 /mnt

एक बार जब आप कर लें, तो सब कुछ अनमाउंट करें और डिवाइस को डिस्कनेक्ट करें:

sudo qemu-nbd -d /dev/nbd0

मैं ध्यान देना चाहूंगा कि max_part=16यह एक महत्वपूर्ण हिस्सा है। इसके बिना आपको कोई भी /dev/nbd0pXफाइल दिखाई नहीं देगी , बावजूद मुख्य डिवाइस ठीक से काम करेगा। लोगों को इस परेशानी से निपटने के लिए जेंटू मंचों पर निम्नलिखित चर्चा की जाँच करें ।
फायरगुरफिकु

सभी जवाब कुछ हद तक काम करते हैं लेकिन यह मेरा पसंदीदा है और इसे स्वीकार किया जाना चाहिए। क्लोनड काम करता है लेकिन भंडारण आवश्यकताओं को दोगुना करता है। वर्चुअलबॉक्स-फ्यूज आदर्श है, लेकिन यद्यपि आप अभी भी इसे प्राप्त कर सकते हैं, लेकिन यह ओएस के आधुनिक रिलीज में रिपोज के लिए नहीं बना था।
हाटोरू हांसौ

2
यह बहुत अच्छा काम किया। ध्यान दें कि स्थापित करने के qemu-kvmबजाय qemuबस के रूप में अच्छी तरह से काम कर सकते हैं। यह मेरे लिए मेरे Ububtu 16.04 पर किया, और 230MB के बजाय केवल 23MB और 13 निर्भरता स्थापित किया और पूर्ण qemu स्थापित करने के लिए कई और निर्भरताएं।
21:39 पर mivk

2
मैं जोड़ना चाहता हूं कि जाहिरा तौर पर sudo partprobeनए गुठली के साथ निष्पादित करने की आवश्यकता है ताकि /dev/nbd0p*डेबियन / उबंटू ( Bugs.debian.org/cgi-bin/bugreport.cgi?bug=824553 ) में बनाया जाए ।
काई

1
यह स्वीकृत उत्तर होना चाहिए !! मेरी vdi मेरी हार्ड ड्राइव पर एक .iso में बदलने के लिए बहुत बड़ी है। कुछ समय तक संघर्ष करने के बाद, मैंने यह देखने के लिए नीचे स्क्रॉल किया कि क्या अन्य तरीकों ने सीधे वीडी का उपयोग किया है। यह एक सरल है। (नोट:
क्यूमू

35

ऐसा लगता है कि vdfuse वह उपकरण है जिसे आप ढूंढ रहे हैं। यह उबंटू रिपॉजिटरी में है। यदि आप अपने आप को (2010 स्रोत) संकलित करना चाहते हैं तो आप भी ऐसा कर सकते हैं

हालांकि हम में से ज्यादातर के लिए यह एक सरल करने के लिए नीचे फोड़े:

sudo apt-get install virtualbox-fuse

ऐसा लगता है कि यह अब गतिशील vdi का भी समर्थन करता है।

और .vdiफाइल को माउंट /mntकरने के लिए कमांड का उपयोग करें:

sudo vdfuse -a -f /path-to-vdi-file /mnt

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

sudo mount -o loop /mnt/Parition1 /mountpoint

1
@mattwilkie: अब अंतर: कोई मैन्युअल संकलन अब और आवश्यक
stwissel

1
आपका स्वागत है। ग्लास पर चोंच मारने के बजाय
प्रॉपर

5
यह 14.04 में उपलब्ध नहीं है।
int_ua

2
कोई इसे यहाँ से डाउनलोड कर सकता है: sourceforge.net/projects/vdfuse/?source=typ_redirect और यह काम करता है (15.04 पर)
sup

4
अब 16.10 के लिए मान्य नहीं है, पैकेज मौजूद नहीं है।
१३:१६

14

डिस्क को दूसरे वर्चुअल OS के लिए सेकेंडरी मास्टर के रूप में सेट करें, फिर इस (वर्चुअल) OS में बूट करें और आप इसे माउंट कर सकते हैं।

चरण 1: मान लें कि आपके पास वर्चुअल ओएस (उबंटू 16.04) पहले से ही वर्चुअल बॉक्स में स्थापित है, उस वर्चुअल ओएस की सेटिंग्स से एक नया स्टोरेज जोड़ें। यहाँ छवि विवरण दर्ज करें

चरण 2: वादी फ़ाइल को ब्राउज़ करें जिसे आप एक्सेस करना चाहते हैं और उसका चयन करें।

चरण 3: लॉग ऑन वर्चुअल ओएस।

चरण 4: वर्चुअल डिस्क संभवतः ओएस के अंदर उपलब्ध होगी। यदि नहीं, तो चरण 5 का पालन करें

चरण 5: वर्चुअल ओएस के अंदर, Gparted का उपयोग करें और डिस्क की जांच करें। और सुनिश्चित करें कि डिस्क प्रकार का है जो वर्चुअल ओएस द्वारा सुलभ है। यदि यह नहीं है, तो आपको डिस्क को संपादित करना पड़ सकता है, लेकिन फिर आप मौजूदा सामग्री खो देंगे।


1
रिकॉर्ड के लिए, 2016 में यह काम नहीं करेगा
पाउलो पेड्रोसो

1
यह ubuntu 16.04 में काम करता है।
शारुन

यह वास्तव में एकमात्र समाधान है जब आपको परिवर्तन करने की आवश्यकता होती है और फिर इसका उपयोग करने के लिए वापस जाते हैं, vWuse के साथ काम नहीं कर सकता rw
DuBistKomisch

7

मैंने खुद का परीक्षण नहीं किया है, लेकिन उन्हें माउंट करने के लिए एक फ्यूज मॉड्यूल है ( vdfuse), निम्न पृष्ठ की जांच करें:

कृपया ध्यान दें कि लिखने की पहुंच के लिए इसका उपयोग करना जोखिम भरा है।


उपयोग:

$ ./vdfuse-v<version> -h
USAGE: ./vdfuse [options] -f image-file mountpoint
   -h   help
   -r   readonly
   -t   specify type (VDI, VMDK, VHD, or raw; default: auto)
   -f   VDimage file
   -a   allow all users to read disk
   -w   allow all users to read and write to disk
   -g   run in foreground
   -v   verbose
   -d   debug

सीधे अपने फ़ाइलनाम का उपयोग करके एक छवि माउंट करने के लिए:

$ ./vdfuse-v<version> -f image.vdi /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP

मशीन डिस्क माउंट करने के लिए (स्नैपशॉट सहित):

$ ./vdautomount-<version> -p /path/to/vdfuse WinXP /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP

यह उपयोगिता समर्थित नहीं होने के कारण अब प्रासंगिक नहीं है।
इवान कैरोल

3

आपने जो अनुरोध किया था, वह नहीं है, लेकिन अगर यह सिर्फ vdi से फ़ाइलें प्राप्त करने का मामला है , और आप एक बहुत ही त्वरित समाधान चाहते हैं :

  1. अपने होस्ट पर एक ssh सर्वर चलाएं ( apt-get install openssh-server && service ssh restart)
  2. मौजूदा vdi फ़ाइल से वर्चुअल मशीन बनाने के लिए VirtualBox का उपयोग करें, फिर उस वर्चुअल मशीन को बूट करें। (VM को बनाते समय मैंने केवल डिफ़ॉल्ट नेटवर्क एडेप्टर (NAT) रखा था।)
  3. वर्चुअल मशीन के भीतर, अपने होस्ट के लिए sftp। ( sftp hostuser@hostip)
  4. Sftp सेशन में, putहोस्ट को जितनी जरूरत हो उतनी फाइलें।

1
एक बदसूरत हैक, लेकिन अगर आप एक तंग जगह पर हैं, तो यह काम पूरा हो जाता है।
१३:१६

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

2

जैसा कि वोजटेक ट्रेफनी ने ऊपर उल्लेख किया है,

1) सबसे पहले अपना VDI -> IMG कन्वर्ट करें

VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img

2) फिर IMG को माउंट करें

mount -t ext3 -o loop,rw ./ubuntu.img /mnt

3) हालाँकि, जैसा कि मुझे यह त्रुटि संदेश मिला है:

mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

और dmesg ने कहा:

[3105578.013671] EXT4-fs (loop0): VFS: Can't find ext3 filesystem

आपको .img की विभाजन संरचना की जाँच करने की आवश्यकता है:

fdisk -l ubuntu.img

Disk ubuntu.img: 21.0 GB, 20971520000 bytes
255 heads, 63 sectors/track, 2549 cylinders, total 40960000 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: 0xf45bc910

   Device Boot      Start         End      Blocks   Id  System
ubuntu.img1   *        2048    12582911     6290432   83  Linux
ubuntu.img2        12584958    16775167     2095105    5  Extended
ubuntu.img3        16775168    40959999    12092416   83  Linux
ubuntu.img5        12584960    16775167     2095104   82  Linux swap / Solaris

4) जैसा कि आप देख सकते हैं, मुख्य विभाजन बाइट्स 16775168 से शुरू हो रहा है। हालांकि, ध्यान दें कि सेक्टर का आकार 512 बाइट्स है, इसलिए आपको परिणाम 16775168 x 512 = 8588886016 गुणा करने की आवश्यकता है ताकि आपको इस तरह से माउंट करने की आवश्यकता हो:

mount -t ext3 -o loop,rw,offset=8588886016 ./ubuntu.img /mnt

5) वास्तव में यह मेरे लिए उस स्थिति में काम नहीं आया, जब आकार बदलने के बाद फाइलसिस्टम गंदा हो गया था। इस मामले में मैंने आगे यह किया:

dd if=ubuntu.img of=ubuntu.disk bs=512 skip=16775168 count=12092416
e2fsck ubuntu.disk
mount ubuntu.disk /mnt

1
यह सवाल का जवाब नहीं है। आपकी एक और समस्या थी - एक भ्रष्ट छवि। आपको एक नए प्रश्न का स्व-उत्तर देना चाहिए।
इवान कैरोल

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