我通过 pxe 和 nfs 启动无盘 debian linux (ubuntu 20.04)。一切正常,我可以启动我的主机。当我运行 apt upgrde 时收到错误消息
/usr/sbin/grub-probe: error: failed to get canonical path of `10.0.0.1:/export/host1'
当我运行 mount 时我看到
10.0.0.1:/export/host1 on / type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,proto=tcp,port=2049,timeo=600,retrans=10,sec=sys,local_lock=all,addr=10.0.0.1)
在df
我看到:
10.0.0.1:/export/host1 500G 39G 462G 8% /
在/etc/fstab
我有:
#/swap.img none swap sw 0 0
/dev/nfs / nfs defaults 1 1
我在日志中没有看到任何内容。
答案1
您是否在无盘系统上安装了 GRUB 引导加载程序?您的引导加载程序位于 PXE 服务器上 - 您只需删除本地 GRUB 软件包即可。
该错误消息是在每次内核更新后引起的,因为/etc/kernel/post(inst|rm).d/zz-update-grub
运行update-grub
只是一个包装器grub-mkconfig
,它会在运行时grub-probe
导致错误消息。它grub-probe
有一个内置的假设,即每当它运行时,都会使用本地引导加载程序,并且它会被 NFS 安装的根文件系统混淆。
如果出于某种原因您更喜欢保留 GRUB 软件包(例如,为了轻松访问 GRUB 文档和手册页),您可能会删除/etc/kernel/postinst.d/zz-update-grub
和/etc/kernel/postrm.d/zz-update-grub
,或者最好将它们更改为仅运行exit 0
,因为不会有本地引导加载程序可以在无盘系统。
(删除它们只会导致它们在下一个 GRUB 软件包更新时重新安装;用自定义无操作脚本替换它们将使软件包管理保留您的自定义设置,除非 Debian 的 GRUB 集成发生重大变化,因为它们被声明为配置文件通过grub2-common
包裹。即使发生重大更改,您也会收到包管理的提示,询问您是否应该替换自定义文件。)
您还可以考虑创建自己的脚本,/etc/kernel/postinst.d/
将/etc/kernel/postrm.d/
最新的内核及其 initramfs 文件复制到 PXE 启动服务器中的适当位置(如果您尚未这样做)。否则,您将必须在每次内核更新时手动进行复制...这通常意味着您将陷入未打补丁的内核,直到您抽出时间来执行此操作。