mik*_*vis 55 ubuntu headless grub grub2 ubuntu-10.10
我在半嵌入式环境中的单板机器上安装了 Ubuntu 10.10 Server;没有键盘或屏幕,只需通过 SSH 访问即可。
所以当它偶尔启动并卡在 GRUB 菜单上,等待按键选择第一个选项时,真的很令人沮丧。
如何将 GRUB 配置为在任何情况下都不等待击键?
更新 #1:没有 menu.lst,因为这是 GRUB 2。但我确实有一个 /etc/default/grub,如下所示:
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""
Run Code Online (Sandbox Code Playgroud)
更新#2:我想通了。在引导失败后的引导上,GRUB 禁用自己的超时。由于显示菜单会使启动失败,因此这是一个不可避免的循环。可以通过编辑 /etc/grub.d/00_header 文件并更改 make_timeout 函数来禁用此行为:
make_timeout ()
{
echo "set timeout=0"
}
Run Code Online (Sandbox Code Playgroud)
现在退出并重新运行 grub 配置更新程序脚本:
sudo update-grub2
Run Code Online (Sandbox Code Playgroud)
对我来说,这种行为将成为 Ubuntu Server 的默认行为是没有意义的,Ubuntu Server 是一种用于通过控制台访问的机器的产品。
小智 41
对于 Ubuntu 12.04 LTS,可以在/etc/default/grub.
例如,如果您想要 2 秒超时(从而避免无人值守重启时挂起),只需在 中添加以下行/etc/default/grub:
GRUB_RECORDFAIL_TIMEOUT=2
Run Code Online (Sandbox Code Playgroud)
记得跟在update-grub后面...
Bry*_*yce 18
以下是 Ubuntu 10.10 的说明,与之前的版本略有不同。在文件 /etc/grub.d/00_header 中 注释掉之前启动失败的愚蠢检查:
##if [ \${recordfail} = 1 ]; then
## set timeout=-1
##else
set timeout=${2}
##fi
Run Code Online (Sandbox Code Playgroud)
然后更新:
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
请注意,如果连接了 Linux 的第二个驱动器,grub2 会找到它,并在启动时询问您想要哪个驱动器。在运行“update-grub”之前删除所有额外的驱动器。
另见https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/797544
我在使用 Ubuntu Server 9.10 时遇到了这种非常不愉快的设计疏忽。你的修复对我帮助很大。我只是想指出 9.10 所需的修复是不同的,因为同一文件中没有“make_timeout()”函数。
对于 Ubuntu 9.10,转到同一文件 (00_header) 的末尾并更改以下内容:
如果 [ \${记录失败} = 1 ]; 然后
设置超时=-1
别的
设置超时=${GRUB_TIMEOUT}
菲
EOF
到
如果 [ \${记录失败} = 1 ]; 然后
设置超时=${GRUB_TIMEOUT}
别的
设置超时=${GRUB_TIMEOUT}
菲
EOF
和以前一样,然后运行:
须藤更新-grub2
| 归档时间: |
|
| 查看次数: |
40808 次 |
| 最近记录: |