VMware 无权限写入分区的问题

前一阵子作业碰上了个奇怪的问题:作业需要用到一个教授配置好了的虚拟机,分发的是OVA格式的但可能没用标准的配置参数所以我VMware没法导入。我把这个OVA解压之后,里面的vmdk单独拿出来作为一个硬盘来创建一个新的VM,就不用OVA自带的配置了。结果就是,启动的时候进入到了grub界面时出现了这样子的报错:

VMware 报错信息

那时候VM屏幕上大概是这么个信息:

VM截图

"You do not have write access to a partition"——没写入分区权限?实在是太怪了。VM屏幕的“attempt to read or write outside of disk hd0”的错误信息更是让人摸不着头脑。尝试点了Allow All之后,也没进到系统,就卡Initramfs那了。点Deny All也不行。

我一开始怀疑是教授这镜像是VirtualBox用的会不会装了什么奇怪的驱动之类的,或者是硬盘格式不一样导致grub损坏了,所以就拿LiveCD去修。结果上了LiveCD之后发现原本硬盘甚至挂载不上来,怎么挂载都是ro,没法重建grub配置。

最后搜了几圈之后才怀疑到会不会是OVA文件的问题。后面搜到OVA里面捆绑的vmdk磁盘镜像实际上是类型5( VIXDISKLIB_DISK_STREAM_OPTIMIZED ),这玩意好像是不能直接用的(不支持随机读写),需要转换成平常使用的类型0( VIXDISKLIB_DISK_MONOLITHIC_SPARSE )才能被VMware Workstation加载。这个可以通过VMware自己的CLI程序来转换:

vmware-vdiskmanager -r "original.vmdk" -t 0 "new.vmdk"

转换完之后就可以正常启动了, lsblk 也可以正常识别分区表了。只能说Workstation如果有个提醒就好了。在这之后过了两个月我在另一份作业又碰上了同样的问题然后又完全忘记了怎么操作的就所有的坑又再踩了一遍😂。为了避免我踩第三遍还是记下来比较好。