Ubuntu 18.04 服务器安装在运行“update-grub”时卡在 66%

Jus*_*ang 5 ubuntu kernel-panic grub2

我正在尝试安装 Ubuntu 服务器,但它总是在更新 grub 的最后阶段卡住。我取消了这个过程并重新启动了我的系统,它把我带到了 grub 命令提示符grub>

我尝试从提示手动启动:

root=(hd1,gpt5)       # Ubuntu root partition
linux   /boot/vmlinuz-something-   root=/dev/sda5
initrd    /boot/initramfs-something-
boot
<enter>
Run Code Online (Sandbox Code Playgroud)

滚动一些启动消息后,它让我陷入

Busybox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3) built-in. shell (ash) 
Run Code Online (Sandbox Code Playgroud)

随着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
Run Code Online (Sandbox Code Playgroud)

Jus*_*ang 8

不是解决方案,而是一些解决方法。显然,这是os-prober中的一个错误。我个人尝试了第二个,并且有效!从链接引用:

变通方法 1:(主动)

当您到达
“将 GRUB 引导加载程序安装到主引导记录?”时 提示,(在我的情况下,没有出现这样的提示,但我想出了 grub 安装的时间)切换到控制台(ctrl+alt+[f2-f6]),然后删除这个文件:

rm /target/etc/grub.d/30_os-prober
Run Code Online (Sandbox Code Playgroud)

这将阻止 update-grub 运行 os-prober,从而避免遇到此问题。当然,不会列出其他操作系统,但至少可以防止安装过程完全卡住。我已经在带有引导(未加密)LVM 和标准加 ssh 任务(这是我最初重现您的问题的方式)的 VM 中成功测试了这一点。

解决方法2:(反应)

否则,一旦进程卡住,请在 ps 输出的第一列上找到进程标识符 (PID):

ps | grep 'dmsetup create'
Run Code Online (Sandbox Code Playgroud)

然后杀死这个 dmsetup 进程。有了上面的输出,那就是:

kill 19676
Run Code Online (Sandbox Code Playgroud)

(在具有与上述相同的设置/选择的 VM 中成功测试。)

基比