因此,我尝试在磁盘之间移动我的 wubi 安装在以下情况下进行操作: 将 Ubuntu 的 WUBI 安装移动到 Windows 中的其他分区
然而,一旦我开始对 grub 应用编辑,我就无法启动。
我已切换
set root=(hd0,msdos2)
到root=(hd0,msdos1)
删除该行- search --no-floppy xxx
并切换linux /boot/vmlinuz-xxxx root=UUID= xxxxx ...
到linux /boot/vmlinuz-xxx root=/dev/sda1 ...
一旦我启动,它就找不到命令列表并显示未找到错误。如果需要,我可以抓取一张图片来显示 grub 的样子。我对 Ubuntu 非常不熟悉,尤其是在这个程度上。任何帮助都非常感谢。
答案1
启动时,按住Shift进入 grub 菜单。然后C按 进入 Grub 命令提示符,输入以下内容(注意;不要输入错误;此处的内容不会造成任何损害,因此如有必要,只需重新开始):
search -s -f -n /ubuntu/disks/root.disk
probe --set=diskuuid -u $root
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /vmlinuz root=UUID=$diskuuid loop=/ubuntu/disks/root.disk ro quiet splash
initrd /initrd.img
boot
上面的代码做了什么?1.) 找到 root.disk(文件)并将 $root 设置为找到它的分区。2) 获取分区的 UUID。3) 从 loop0 上的 root.disk 创建循环设备(假分区)。4) 将 root 设置为循环设备。5) 从循环设备识别内核,同时从 UUID 设置主机分区。6) 从循环设备识别初始 ram 磁盘。7) 启动 Wubi 安装
启动 Wubi 后,运行
sudo update-grub
此后它将正常启动。
编辑:
我似乎记得probe
直到 12.04 之后才添加 Grub 命令。如果它不起作用,则用以下内容替换 #2:
echo $root
现在注意它说了什么,例如,/dev/sda2
然后将#5更改为直接引用分区,而不是使用UUID例如:
linux /vmlinuz root=/dev/sda2 loop=/ubuntu/disks/root.disk ro quiet splash