以只读模式给 VMware Workstation 虚拟机挂载虚拟磁盘镜像

2019-10-11 15:24:48 +08:00
 acess
手头有几个 dd 出来的 img 镜像,想以只读模式挂给虚拟机,但是添加虚拟磁盘向导里提示“不是虚拟磁盘文件”,不让加。
经过一番折腾,找到了办法:
1.用向导新建一个预分配空间的 vmdk 虚拟磁盘,为了节省时间,大小填最小值 1GB。
2.会生成两个 vmdk 文件,比如 vdisk.vmdk 和 vdisk-flat.vmdk。其中 vdisk.vmdk 其实就是个文本配置文件,可以用文本编辑器(比如记事本)打开,可以找到里面有这样的内容:
# Extent description
RW 2097152 FLAT "vdisk-flat.vmdk" 0
搜了一下,Github 上的 libvmdk 项目有一份文档《 VMware Virtual Disk (VMDK) format specification 》,里面有这些参数的含义说明:
RW:读写访问,改成 RDONLY 就是只读了。
2097152:扇区数,每扇区 512 字节(好像还有一些盘不用 512 字节?这就不知道了,我也没见过),所以这里就是文件大小字节数除以 512 (文件大小也应该是 512 的整数倍吧)。
FLAT:extent type,FLAT 就是直接 dd 出来那种,完全填充过的文件。
"vdisk-flat.vmdk":实际保存磁盘数据的文件名。
0:偏移量,跳过开头的 0 个扇区,也就是不跳过扇区。如果镜像文件是整个磁盘的,只想暴露单个分区给虚拟机,这个参数应该会有用。
3.我把这两行改成类似这样:
# Extent description
RDONLY 1000000 FLAT "myimage-flat.vmdk" 0
4.搞定!可以开机了。
5.如果虚拟机有写入动作,VMware 可能会弹警告,但是 Ubuntu 貌似没啥问题,就是 dmesg 里记录了一个 I/O Error 而已,还有就是需要手动 mount -o ro 来挂载。
3541 次点击
所在节点    VMware
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/608254

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX