我执行
sudo kexec -l /sbin/grub.exe
sudo kexec -e
屏幕变黑,显示一些短语。字体垂直方向被挤压,我还在右侧看到相同短语的一个副本。有一些短语(我可能会混淆数字)
"... root is (0x80.0)
"Processing the preset menu ...
Launching GRUB ..."
它不会挂断,因为如果我等待 10-20 秒,就会出现另一句话“如果挂断,请在预设菜单开头使用‘geometry --lba1sector (120)’。”
我尝试在 menu.lst 中插入该字符串。没有效果。我还尝试了--reset-vga
kexec 选项,并尝试了--append='...'
将相同的内容menu.lst
作为参数传递给 grun4dos 的选项。结果相同。
我没有特别针对 grub4dos 对 MBR 或分区引导扇区进行更改。我在 C: 驱动器上有 menu.lst 和 grldr,在 boot.ini 中有一个字符串。这样我就可以通过 grub4dos 加载 Ubuntu。
这是针对 grub4dos 0.4.5 的。使用 grub4dos 0.4.4,我可以访问某些菜单,字体被压缩并且输入被禁用。
kexec 的配置方式是,当我按下关机 -> 重启时,通过它进行快速重启。这样它就可以正常工作了。
有什么建议可以解决这个问题吗?也许 Ubuntu 应该先做一些通常在正常重启之前执行的任务,然后启动 kexec。但如何检查这一点?我是 Linux 新手。
这里他们说应该添加一个 32 位加载段boot/i386/pc/lnxboot.S
,但 Ubuntu 中没有这个段。
更新:以下命令可以重新启动 Ubuntu
sudo kexec -l /boot/vmlinuz-3.13.0-39-generic --initrd=/boot/initrd.img-3.13.0-39-generic --command-line="$( cat /proc/cmdline )"
sudo kexec -e
但几秒钟后它就挂断了。关机 -> 重启后也注意到了几次这种情况。也许 kexec 有 bug,或者有更合适的使用方法。
更新2:类比结果加载freedos图像
kexec -l grub.exe --initrd=DOS.IMG --command-line="--config-file=map (rd) (fd0); map --hook; chainloader (fd0)+1; rootnoverify (fd0)"
更新3:与 grub4dos 版本 0.4.3、0.4.2、0.4.1 类似的结果
更新 4:我的 kexec 版本是 2.0.6。Ubuntu 是 14.04。在 /boot 中,我在某些文件名(内核版本?)中发现 3.13.0-39。
更新 5:在 Knoppix 5.1.1 LiveCD 中,grub4dos 可以正常加载,然后加载 Ubuntu,尽管它随后被冻结。而且 Knoppix 5.1.1(LiveCD 或普通版)没有暂停功能。无论如何,这都是一些进步。
答案1
为什么需要 grub4dos 来启动您的机器?
我会使用 Super Grub2 Disk,它可以更轻松地完成同样的事情。