VirtualBoxドライブイメージ(vdi)をマウントしますか?


88

コンテンツをNautilusなどで表示できるように、VirtualBoxドライブイメージ(.vdi)をマウントすることはできますか?

VirtualBox 2.xから3.1.6にアップグレードした後に起動しないWindows 2000 .vdi(「アクセスできない起動デバイス」)があります。IDEドライブの詳細が変更されたため、内部ドライブイメージにアクセスboot.iniし、新しい場所を指すようにWindows を編集するだけでよいと思います。


1
あなたの.vdiし、ファイルをは* .imgをもっとして1つのパーティションが含まれている場合、これは非常に便利です:閲覧-IMG-なしマウント
user2689749

回答:


56

標準イメージに変換してからマウントできます。

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

それから

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

ext3この場合、ファイルシステムのタイプを知る必要があります。マウントしたら、選択したエディターを使用して編集します。/mntロケーション内のファイルを実行中のホストと混同しないでください。混同しないでください。

VDIファイルに関する詳細を確認するには、次を実行しますVBoxManage showhdinfo ubuntu.vdi

ソース:[解決しよう]アーカイブマネージャーで.vdiを開きますか?-ubuntuforums.org


4
このような状況で特に役立ちます。OPは、オリジナルをバックアップとして保持しながらコピーを処理できます。
ハビエルリベラ

7
動的なサイズの.vdiファイルでこれを慎重に行う。.imgに変換すると、イメージファイルはディスクの論理サイズと同じサイズになります。このため、このアプローチは機能しますが、.vdiファイルよりもはるかに大きくなる可能性があります。VBoxManage showhdinfo [your vdi file]よくわからない場合の出力を見てください。
ジャックオコナー

1
-1、stwisselMaximeのR.さんの答えは、ソリューションを提供-これは質問に対する最良の答え公正な回避策ではなく、
STW

3
イメージにパーティションテーブルがある場合(ほとんどのドライブと同様)、個々のパーティションをマウントするには、この回答とこれを組み合わせる必要があります。
ベイン

1
動作しません。間違ったfsタイプのマウントエラーを取得し続けます。ext3とext2とext4を試しました。仮想ボックスでは、hd fsタイプはext4です。
ジョシュアロビソン

86

使用qemu-nbd、プロセスはserverfaultこのブログで説明れています。

基本的に、qemu必要に応じてインストールする必要があります。

sudo apt-get install qemu

次に、ネットワークブロックデバイスモジュールをロードする必要があります。

sudo rmmod nbd
sudo modprobe nbd max_part=16

作成したnbdの1つに.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メインデバイスが正常に動作するにもかかわらず、それなしではファイルは表示されません。Gentooフォーラムで次の議論をチェックして、この問題に遭遇した人々を確認してください。
ファイアグラフィク

すべての回答はある程度機能しますが、これは私のお気に入りであり、受け入れられるべきです。clonehdはジョブを実行しますが、ストレージ要件を2倍にします。virtualbox-fuseは理想的ですが、まだ入手できますが、OSの最新リリースのリポジトリにはありませんでした。
半蔵H

2
これはうまくいきました。qemu-kvm代わりにインストールすることでqemuも同様に機能することに注意してください。私のUbubtu 16.04でそれを行い、230MBの代わりに23MBと13個の依存関係のみをインストールし、完全なqemuインストールの多くの依存関係をインストールしました。
mivk

2
Debian / Ubuntu(bugs.debian.org/cgi-bin/bugreport.cgi?bug=824553)で作成sudo partprobeされるように、明らかに新しいカーネルで実行する必要があることを追加したいと思います。/dev/nbd0p*
カイ

1
これは受け入れられた答えであるはずです!! VDIが大きすぎるため、ハードドライブで.isoに変換できません。しばらく苦労した後、スクロールダウンして、他のメソッドがvdiを直接使用しているかどうかを確認しました。これは簡単です。(注:qemuは、ハードドライブの満杯を気にする人のために約300MBを
消費

35

vdfuseが探しているツールのようです。Ubuntuリポジトリにあります。自分でコンパイルしたい場合(2010年のソース)、それもできます。

しかし、私たちのほとんどにとって、それは簡単に要約されます:

sudo apt-get install virtualbox-fuse

現在、動的vdiもサポートしているようです。

また、.vdiファイルを/mntdir にマウントするには、次のコマンドを使用します。

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

ディスク全体がパーティションPartition1Partition2命名形式でマウントされます。その後、これらのファイルをループマウントできます。例えば、

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では無効になり、パッケージは存在しなくなりました。
Piskvor

14

ディスクを別の仮想OSのセカンダリマスターとして設定し、この(仮想)OSを起動してマウントできます。

ステップ1:仮想ボックス(たとえばUbuntu 16.04)が既に仮想ボックスにインストールされていると仮定して、その仮想OSの設定から新しいストレージを追加します。 ここに画像の説明を入力してください

手順2:アクセスするVdiファイルを参照して選択します。

ステップ3:仮想OSにログオンします。

ステップ4:仮想ディスクはおそらくOS内で使用可能になります。そうでない場合は、手順5に従ってください

ステップ5:仮想OS内で、Gpartedを使用してディスクを確認します。また、ディスクが仮想OSからアクセス可能なタイプであることを確認してください。そうでない場合は、ディスクを編集する必要がありますが、既存の内容は失われます。


1
記録のために、2016年にそれが動作しません
パウロ・ペドロソ

1
ubuntu 16.04で動作します。
シャラン

これは実際に変更を加えて使用する必要がある場合にのみ唯一のソリューションであり、vdfuseで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. VirtualBoxを使用して、既存のvdiファイルから仮想マシンを構築し、その仮想マシンを起動します。(VMを構築するとき、デフォルトのネットワークアダプター(NAT)を保持しました。)
  3. 仮想マシン内で、ホストにsftpします。(sftp hostuser@hostip
  4. sftpセッションでは、put必要な数のファイルをホストに送信します。

1
いハックですが、もしあなたが狭い場所にいれば、仕事は完了です。
ピスクバー

1つの問題は、マシンが現在正しく起動しないために、最初にその問題を修正する必要があり、そのため、内部から実行できないことです。Virtualbox OSでSSHを使用することも、ファイルをコピーする方法です。ディスクを共有しようとするよりもずっと速い。
アレクシスウィルク

2

上記のVojtech Trefnyが述べたように、

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つのユースケースでした。多くの新しいトリックに対して+1。
FractalSpace
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.