本帖最后由 piazini 于 2025-9-25 18:06 编辑
问题解决,特此记录。
这次是在软件上踩了个大坑。之前转换用到 StarWindConverter V2.0 这个软件,
但是 先找到了Vmdk2Vhd.exe 这个软件,就一直用Vmdk2Vhd.exe来转换,总是不能顺利启动VHD系统,不成功。
我的扩容方法是,在VMware虚拟机里安装完,用软件把虚拟机的 .vmdk 文件转换成 .vhd 然后去挂载引导。
但是,因为上一次制作还是 2022年10月,这次制作的时候,就想不起来上次的制作过程。
然后就一边想,一边做,一边看之前写的记录,慢慢回忆。然后用到什么工具,就在磁盘里搜索 ,
还好有整理的习惯,工具找到(好消息:找到了;坏消息,找错了 ,害我在这浪费两天时间)
解决问题的突破:
在回看启动过程录制的视频时,发现总是提示/root不能挂载,看错误提示时,发现 script 路径好像有些熟悉,
突然想到 script 不就是需要修改的文件的某个路径么,又想到 2011niumao 大佬,在上面楼层回复提到过,说在 local 文件里踩了很多坑,
然后,去仔细看看 local 的 local_mount_root() 修改过的代码,尝试在里面随便加点 echo 看看能不能打印出信息到屏幕,经过测试,是可以打印的,然后在 函数的修改位置 加上开启详细执行过程 set -x 命令,重启看到了整个挂载过程。
通过打印信息和代码对比,在内存系统中的 /host已经能看到物理磁盘上的内存时,说明 ntfs-3g 是起作用的,识别到了 ntfs 磁盘。又继续看,一行行分析,
发现执行到 kpartx -av /host${KLOOP} 时, 挂载vhd文件失败,为啥失败呢?
突然想到,是不是vmkd到vhd 转换软件的问题,赶快又用磁盘里 StarWindConverter V2.0 这个软件转换完,启动成功了。
之前,一直以为是文件没修改对,一直看修改过文件,也没看出哪里有错误。因为之前有改好的文件,直接替换了,启动也不成功;还以为是文件里多空格导致的。
在显示出"(initramfs)"时,说明已经启动到内存系统里了。
------------------------------2025-09-25 补充:
经过试验,是因为Vmdk2vhd把固定格式磁盘转换成动态格式磁盘, 从转换成vhd大小即可判断(vmdk 12G, vhd 10G);再次确认,加载到VM里没有显示“预分配”, 所以kpart无法挂载。
|