32

拡張子が vmdk の 1 つの vmware ディスク イメージ ファイルがあります。

これをマウントして、すべてのパーティション (隠しパーティションを含む) を探索しようとしています。

次のようないくつかのガイドに従おうとしました: http://forums.opensuse.org/showthread.php/469942-mounting-virtual-box-machine-images-host

vdfuse を使用してイメージをマウントできます

vdfuse -w -f windows.vmdk /mnt/

この後、1 つのパーティションとディスク全体が露出していることがわかります

# ll /mnt/
total 41942016
-r-------- 1 te users 21474836480 Feb 28 14:16 EntireDisk
-r-------- 1 te users  1569718272 Feb 28 14:16 Partition1

ガイドを続けて、EntireDisk または Partition1 を使用してマウントしようとします

mount -o loop,ro /mnt/Partition1 mnt2/

しかし、「マウント: ファイルシステムの種類を指定する必要があります」というエラーが表示されます

私が試した正しいタイプを見つけようとして

dd if=/mnt/EntireDisk | file -
which outputs a ton of information but of note is:
/dev/stdin: x86 boot sector; partition 1: ....... FATs ....

だから私はvfatとしてマウントするのにうんざりしていましたが、それは私に与えました

mount: wrong fs type, bad option, bad superblock ...etc

私は何を間違っていますか?

4

7 に答える 7

65

guestmount新しい Linux システムでは、VMDK イメージ内の 3 番目のパーティションをマウントするために使用できます。

guestmount -a xyz.vmdk -m /dev/sda3 --ro /mnt/vmdk

または、イメージを自動検出してマウントするには (信頼性が低くなります)、次を試すことができます。

guestmount -a xyz.vmdk -i --ro /mnt/vmdk

--roフラグは単にイメージを読み取り専用としてマウントすることに注意してください。イメージを読み書き可能としてマウントするには、単に flag に置き換え--rwます。

インストール

guestmountディストリビューションごとに次のパッケージに含まれています。

  • Ubuntu:libguestfs-tools
  • OpenSuse:guestfs-tools
  • CentOS/フェドラ:libguestfs-tools-c

トラブルシューティング

error: could not create appliance through libvirt

$ guestmount -a file.vmdk -i --ro /mnt/guest
libguestfs: error: could not create appliance through libvirt.

Try running qemu directly without libvirt using this environment variable:
export LIBGUESTFS_BACKEND=direct

Original error from libvirt: Cannot access backing file '/path/to/file.vmdk' of storage file '/tmp/libguestfssF6WKX/overlay1.qcow2' (as uid:107, gid:107): Permission denied [code=38 int1=13]

解決策:LIBGUESTFS_BACKEND=direct提案されているように、を使用してください:

LIBGUESTFS_BACKEND=direct guestmount -a file.vmdk -i --ro /mnt/guest

fusermount: user has no write access to mountpoint

LIBGUESTFS_BACKEND=direct guestmount -a file.vmdk -i --ro /mnt/guest/
fusermount: user has no write access to mountpoint /mnt/guest
libguestfs: error: fuse_mount failed: /mnt/guest/, see error messages above

解決策: を使用するsudoか、マウントポイントのファイル許可を変更します

于 2015-05-12T20:49:40.107 に答える
5

affuse をインストールしてから、それを使用してマウントします。

affuse /path/file.vmdk /mnt/vmdk

未加工のディスク イメージが の下に表示され/mnt/vmdkます。セクター サイズを確認します。

fdisk -l /mnt/vmdk/file.vmdk.raw

# example

Disk file.vmdk.raw: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x000da525

Device       Boot Start      End  Sectors Size Id Type
/mnt/vmdk/file.vmdk.raw1 *     2048 41943039 41940992  20G 83 Linux

セクター サイズを乗算し、セクターを開始します。この例では、2048*512 になります。

echo '2048*512' | bc
1048576

そのオフセットを使用して raw ファイルをマウントします。

mount -o ro,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk

ディスクがマウントされ、 で読み取り可能になり/mnt/vmdiskます。

于 2016-09-06T13:25:17.877 に答える
3

これが私のために働いたcommandlinefu.comからの答えです:

kpartx -av <image-flat.vmdk>; mount -o /dev/mapper/loop0p1 /mnt/vmdk

次のコマンドを実行して、イメージ内の LVM ボリュームをアクティブ化することもできます

vgchange -a y

次に、LVをイメージ内にマウントできます。

イメージをアンマウントするには、パーティション/LV をアンマウントし、イメージの VG を非アクティブ化します

vgchange -a n <volume_group>

次に実行します

kpartx -dv <image-flad.vmdk>

パーティション マッピングを削除します。

于 2015-11-11T20:36:23.970 に答える
-3

ntfs 用のソフトウェア パッケージを入手しましたか?

試す

apt-get install ntfs-3g

debian ベースのシステムで。

于 2014-03-11T15:17:20.487 に答える