mat*_*kie 106 virtualbox mount
是否可以挂载 VirtualBox 驱动器映像 (.vdi) 以便可以在 Nautilus 等中查看内容?
我有一个 Windows 2000 .vdi,它在从 VirtualBox 2.x 升级到 3.1.6 后无法启动(“无法访问的启动设备”)。我相信 IDE 驱动器详细信息已更改,我需要做的就是访问内部驱动器映像并编辑 Windowsboot.ini
以指向新位置。
Max*_* R. 121
使用qemu-nbd
,该过程在 serverfault和此博客中进行了说明。
基本上,qemu
如果需要,您必须安装:
sudo apt-get install qemu
Run Code Online (Sandbox Code Playgroud)
然后你需要加载网络块设备模块:
sudo rmmod nbd
sudo modprobe nbd max_part=16
Run Code Online (Sandbox Code Playgroud)
将 .vdi 图像附加到您刚刚创建的 nbd 之一:
sudo qemu-nbd -c /dev/nbd0 drive.vdi
Run Code Online (Sandbox Code Playgroud)
现在您将获得一个 /dev/nbd0 块设备,以及几个 /dev/nbd0p* 分区设备节点。
sudo mount /dev/nbd0p1 /mnt
Run Code Online (Sandbox Code Playgroud)
完成后,卸载所有内容并断开设备连接:
sudo qemu-nbd -d /dev/nbd0
Run Code Online (Sandbox Code Playgroud)
Voj*_*fny 63
您可以转换为标准映像,然后安装它。
VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img
Run Code Online (Sandbox Code Playgroud)
然后
mount -t ext3 -o loop,rw ./ubuntu.img /mnt
Run Code Online (Sandbox Code Playgroud)
ext3
在这种情况下,您需要知道文件系统的类型。安装后,进入并使用您选择的编辑器进行编辑。不要将/mnt
位置内的文件与正在运行的主机混淆,否则会很糟糕。
要检查你的VDI文件,运行的细节:VBoxManage showhdinfo ubuntu.vdi
。
来源:[已解决] 使用存档管理器打开 .vdi?- ubuntuforums.org
stw*_*sel 38
看起来vdfuse是您正在寻找的工具。它位于 Ubuntu 存储库中。如果您想自己编译(2010 年源代码),您也可以这样做。
然而,对于我们大多数人来说,它归结为一个简单的:
sudo apt-get install virtualbox-fuse
Run Code Online (Sandbox Code Playgroud)
看来它现在也支持动态 vdi。
并将.vdi
文件挂载在/mnt
dir 中,使用以下命令:
sudo vdfuse -a -f /path-to-vdi-file /mnt
Run Code Online (Sandbox Code Playgroud)
整个磁盘将挂载分区Partition1
,Partition2
命名格式。然后可以循环安装这些文件。例如,
sudo mount -o loop /mnt/Parition1 /mountpoint
Run Code Online (Sandbox Code Playgroud)
jos*_*sef 16
将磁盘设置为另一个虚拟操作系统的辅助主控,然后启动到这个(虚拟)操作系统,您可以挂载它。
第 1 步:假设您已经在 Virtual box 中安装了一个虚拟操作系统(比如 Ubuntu 16.04),从该虚拟操作系统的设置中添加一个新的存储。
第 2 步:浏览您要访问的 Vdi 文件并选择它。
第三步:登录虚拟操作系统。
第 4 步:虚拟磁盘可能在操作系统内可用。如果没有,请按照步骤 5
步骤 5:在虚拟操作系统中,使用 Gparted 并检查磁盘。并确保磁盘属于虚拟操作系统可访问的类型。如果不是,您可能需要编辑磁盘,但是您将丢失现有内容。
VirtualBox
使用vboximg-mount实用程序使磁盘映像可供主机使用:
sudo mkdir -p /mnt/vdi/expanded
sudo vboximg-mount -i <path-to-vdi> -o allow_other /mnt/vdi/expanded
Run Code Online (Sandbox Code Playgroud)
ls /mnt/vdi/expanded
<filename.vdi> vhdd vol0 vol1
Run Code Online (Sandbox Code Playgroud)
mkdir /mnt/vdi/vol1
sudo mount /mnt/vdi/expanded/vol1 /mnt/vdi/vol1
Run Code Online (Sandbox Code Playgroud)
cd /mnt # Optional (avoid mount: ... target is busy)
sudo umount /mnt/vdi/vol1 # Order importent
sudo umount /mnt/vdi/expanded
rm -rf /mnt/vdi # Optional (clean-up resources)
Run Code Online (Sandbox Code Playgroud)
我还没有测试过自己,但有一个保险丝模块来安装它们 ( 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
Run Code Online (Sandbox Code Playgroud)
要使用其文件名直接挂载图像:
$ ./vdfuse-v<version> -f image.vdi /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP
Run Code Online (Sandbox Code Playgroud)
挂载机器磁盘(包括快照):
$ ./vdautomount-<version> -p /path/to/vdfuse WinXP /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP
Run Code Online (Sandbox Code Playgroud)
正如 Vojtech Trefny 上面提到的,
1)首先转换你的VDI -> IMG
VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img
Run Code Online (Sandbox Code Playgroud)
2)然后安装IMG
mount -t ext3 -o loop,rw ./ubuntu.img /mnt
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
dmesg 说:
[3105578.013671] EXT4-fs (loop0): VFS: Can't find ext3 filesystem
Run Code Online (Sandbox Code Playgroud)
您需要检查.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
Run Code Online (Sandbox Code Playgroud)
4) 如您所见,主分区从字节 16775168 开始。但是,请注意,扇区大小为 512 字节,因此您需要将结果乘以 16775168 x 512 = 8588886016,因此您需要像这样偏移挂载:
mount -t ext3 -o loop,rw,offset=8588886016 ./ubuntu.img /mnt
Run Code Online (Sandbox Code Playgroud)
5)实际上,如果文件系统在调整大小后变脏,这对我不起作用。在这种情况下,我进一步这样做了:
dd if=ubuntu.img of=ubuntu.disk bs=512 skip=16775168 count=12092416
e2fsck ubuntu.disk
mount ubuntu.disk /mnt
Run Code Online (Sandbox Code Playgroud)