我正在尝试安装 Ubuntu 服务器,但在更新 grub 时它总是卡在最后阶段。我取消了该过程并重新启动了我的系统,它把我带到了 grub 命令提示符grub>
。
我尝试从提示符处手动启动:
root=(hd1,gpt5) # Ubuntu root partition
linux /boot/vmlinuz-something- root=/dev/sda5
initrd /boot/initramfs-something-
boot
<enter>
滚动一些启动消息后,它让我陷入了
Busybox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3) built-in. shell (ash)
随着initramfs>
提示。从这里我做了一个exit
它向我展示了内核恐慌!有以下两个提示。
mount: mounting/says on /root/says failed : No such file or directory
mount: mounting /process on /root/process failed: No such file or directory
答案1
不是解决方案,而是一些解决方法。显然,这是一个漏洞在 os-prober 中。我个人尝试了第二种,效果很好!引用链接中的内容:
解决方法 1:(主动)
当您到达
“将 GRUB 引导加载程序安装到主引导记录吗?”时提示,(在我的例子中,没有出现这样的提示,但我弄清楚了 grub 安装的时间)切换到控制台(ctrl+alt+[f2-f6]),并删除此文件:rm /target/etc/grub.d/30_os-prober
这将阻止 update-grub 运行 os-prober,从而避免遇到此问题。当然,不会列出其他操作系统,但至少这应该可以防止安装过程完全卡住。我已经在具有引导(未加密)LVM 和标准加 ssh 任务的虚拟机中成功测试了这一点(这就是我最初重现您的问题的方式)。
解决方法 2:(反应)
否则,一旦进程卡住,请在 ps 输出的第一列中找到进程标识符 (PID):
ps | grep 'dmsetup create'
然后杀死这个 dmsetup 进程。根据上面的输出,那就是:
kill 19676
(已在具有与上述相同设置/选择的虚拟机中成功测试。)
基比
答案2
我在安装到.a2x SAS
上的 HDD 驱动器时发生了这种情况。PERC RAID 1
Dell Poweredge r630
我曾经ctrl+alt+f2
获得控制台并终止了该进程,然后返回到安装程序ctl+alt+f1
- 您的里程可能会有所不同
答案3
预置的自动化解决方法
GRUB_DISABLE_OS_PROBER=true
如果您在之后传递内核参数,---
那么grub-install
阶段将不会挂在 66% 处,并且该变量将被添加到目标主机上的 grub 设置中。
例如:
/etc/default # grep PROB grub
GRUB_CMDLINE_LINUX="GRUB_DISABLE_OS_PROBER=true"
它的工作原理是由于中的代码/etc/grub.d/30_os-prober
if [ “x${GRUB_DISABLE_OS_PROBER}” = “xtrue” ]; then
exit 0
fi
答案4
我在 Bionic 18.04 中遇到了这个问题。建议的答案不起作用。
ubuntu安装过程中卡住的进程是grub-probe
这似乎是由于 SAS 硬盘读取错误(可能特定于我们的服务器配置)。在我的安装过程中不需要这些驱动器,但它们仍然存在于 /dev/ 和 /sys/block 中。
解决方案是从 /dev 隐藏这些驱动器,然后重新启动分区过程。 (您还必须通过查找进程 id -> 从终端终止卡住的 grub-probe ps | grep grub-probe
)
您需要确定要隐藏哪些 /dev/ 设备并使用以下命令。
echo 1 > /sys/block/$dev/device/delete;
使用 for 循环,我在不是安装目标的任何驱动器 /dev/sd* 上执行上述命令