为什么grub无法立即启动到Ubuntu?

时间:2019-09-18 13:00:47

标签: ubuntu boot grub

我想直接启动我的Xubuntu。我在网上搜索了一下,发现您可以编辑文件/etc/default/grub以使GRUB的超时时间为0秒。您要做的就是将GRUB_TIMEOUT更改为0,然后在您的shell中运行sudo update-grub。我这样做了,但是重新启动系统后,仍然有30秒的超时时间。经过进一步调查,我找到了文件/boot/grub/grub.cfg,并且发现了这两行代码:

if [ "${recordfail}" = 1 ] ; then
  set timeout=30 <-------------------------------!!
else
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
    set timeout=0
  # Fallback normal timeout code in case the timeout_style feature is
  # unavailable.
  else
    set timeout=0
  fi
fi
if [ $grub_platform = efi ]; then
  set timeout=30 <-------------------------------!!
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi

(我用符号<---!!指向两行)。我认为这些与我的问题以及超时时间为何为30秒有关。我可以更改它们,但我没有,因为在文件中明确指出不要更改文件中的任何内容,因此我转向该平台。您能推荐一个解决方案吗?

Ubuntu:19.04

1 个答案:

答案 0 :(得分:0)

我在外壳中运行了info -f grub,并在菜单中导航,发现Grub具有此规则GRUB_RECORDFAIL_TIMEOUT。我将此规则添加到我的grub文件中,并将其设置为0,然后在我重新启动时花了30秒,但花的时间更少。花了10秒。

此后,我决定再次阅读/boot/grub/grub.cfg文件,发现有趣的地方。

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-efi-4457-E741' {
    insmod part_gpt
    insmod fat
    set root='hd0,gpt2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  4457-E741
    else
      search --no-floppy --fs-uuid --set=root 4457-E741
    fi
    chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
  set timeout=10 <--------------------------------!!
fi
### END /etc/grub.d/30_os-prober ###

我认为这是因为我有另一个包含不同操作系统的驱动器(Windows 10)。这是因为在os-prober部分中,timeout再次设置为10

我在info -f grub中进行了更多搜索,发现可以通过添加os-prober来禁用GRUB_DISABLE_OS_PROBER=true。这解决了我的问题。

已解决。