之前用的windows,开机时间大概就是半分钟,这次安装了fedora 29,本以为开机速度会快一些,毕竟没有开多少自启动服务,但是查看了一下开机耗费的时间,还是发现了问题。

查看开机启动情况可以用systemd-analyze

1systemd-analyze

输出如下:

1Startup finished in 3.964s (firmware) + 15.316s (loader) + 2.471s (kernel) + 3.157s (initrd) + 9.623s (userspace) = 34.534s
2graphical.target reached after 9.382s in userspace

看一下各阶段所花费的时间,可以看到loader完完全全拖了后腿,这里主要讲一下loader项的优化,而userspace的优化可以参考这篇文章进行配置:linux加快开机启动,禁用不需要的服务

这个问题遇到的人似乎不多,因为国内、国外论坛都看过,没有答案,就只能自己寻思了。

分析一下systemd-analyze的输出结果,发现loader的启动是在fireware(固件)kernel(内核)之间,所以实际上loader就是那个系统选择界面,因为电脑上安装了fedora和windows双系统,而除了加载这个界面需要花费时间之外,还有5秒的等待选择时间,所以开机时间可能花在这上面,那么解决办法就呼之欲出了:

直接将grub系统选择界面关掉

要隐藏系统选择界面,可以修改这个文件:

1vim /etc/default/grub

GRUB_TIMEOUT=5后面的数字改为0,即:

1GRUB_TIMEOUT=0

保存退出。此时需要更新grub:

  • 如果是bios,执行
1grub2-mkconfig -o /boot/grub2/grub.cfg
  • 如果是efi,执行:
1grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

此时重启生效,开机时间立马缩短了10s

1Startup finished in 3.931s (firmware) + 5.583s (loader) + 2.088s (kernel) + 3.141s (initrd) + 9.638s (userspace) = 24.383s
2graphical.target reached after 9.405s in userspace

还有人说需要同时修改 /etc/grub.d/30_os-prober 文件,也有说只需要修改 /etc/grub.d/00_head 文件不过我没更改该文件也成功了,如果你按照我的方法没成功的,可以试试这些方法。

而取消了系统选择界面之后,如果想要切换成windows系统,那么只要在开机的时候按下F7即可出现BIOS的系统选择界面,其他人的电脑可能和我这个笔记本不一样,就需要自行去找进入系统选择界面的按键了。