我在尝试通过编辑文件 /etc/default/grub 在 grub 命令行选项中添加 rootdelay=60 选项时遇到一些问题,其中
GRUB_CMDLINE_LINUX_DEFAULT="rootdelay=300"
update-grub
update-initramfs -u
然而,当服务器重新启动并且根文件系统立即挂载时,我没有观察到任何延迟
我可以看到 cat /proc/cmdline 中也存在 rootdelay=300,有什么线索可以说明这里缺少什么吗?
答案1
答案2
据我所知,该rootdelay
值是 initramfs 愿意等待的时间,而不是保证等待的时间。
您链接的文档似乎表明了其他情况,因此这里是我的笔记
- initramfs
init
将接受该rootdelay
参数并创建ROOTDELAY
变量在此代码中。 - 到 30之间的较大值
ROOTDELAY
用于slumber
在此代码中。 slumber
传递给命令wait-for-root
在此代码中。wait-for-root
似乎使用该值作为退出超时,而不是延迟在此代码中。
编辑
我正在看Debian 源代码并且有一行代码sleep "$ROOTDELAY"
在 Ubuntu 代码中不存在。我在 Ubuntu repo 中找到了删除该行的提交,因此我不确定这种行为是否是 Ubuntu 特有的,甚至是特定于某些版本。
- init:不要将“rootdelay”解释为静态睡眠。
编辑2
我发现了一些 bug,其中 initramfs 开发人员讨论了将其rootdelay
作为休眠值删除。我仍然不清楚它是何时被删除的,还是仅在 Ubuntu 中被删除。
- ROOTDELAY= 导致启动时出现不必要的延迟(https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/1615751)
- initramfs-tools:完全忽略 rootdelay(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=809740)