我有一个奇怪的经历。场景:我正在编写一个在 initrd(实际上是 initramfs)中运行的 Linux 安装程序(基于 OpenSUSE 12.2),并且我正在尝试更新引导加载程序。新安装的文件系统的副本安装在 /root 上。
所以我运行这个命令并得到这个输出:
+ echo 'Installing boot loader'
Installing boot loader
+ chroot /root bash -c '(ls -l /lib/modules/*/modules.dep; grub2-install /dev/sda)'
-rw-r--r-- 1 root root 45590 Apr 24 15:32 /lib/modules/3.4.47-default/modules.dep
modprobe: FATAL: Could not load /lib/modules/3.4.47-default/modules.dep: No such file or directory
该错误重复多次,然后显示“安装完成。未报告错误。”信息。
如果我将此代码放在命令之前:
mkdir -p /lib/modules/
ln -s ../../root/lib/modules/3.4.47-default/ /lib/modules
它工作得很好!
Installing boot loader
Installation finished. No error reported.
谁能解释一下吗?
答案1
这是 Linux 模块自动加载的实际操作,grub2-install
它尝试挂载多种类型的文件系统,从而让 Linux 加载模块并执行它们。