V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acess
V2EX  ›  VMware

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

  •  
  •   acess · 2019-10-11 15:24:48 +08:00 · 3662 次点击
    这是一个创建于 1868 天前的主题,其中的信息可能已经有所发展或是发生改变。
    手头有几个 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 来挂载。
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1745 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 16:44 · PVG 00:44 · LAX 08:44 · JFK 11:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.