优化系统开机时间

关闭不必要的开机自启服务

通过systemctl命令查看当前启动的服务:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
systemctl list-unit-files --state=enabled
# 我电脑上启动的服务
UNIT FILE                          STATE   PRESET  
avahi-daemon.service               enabled disabled
bluetooth.service                  enabled disabled
firewalld.service                  enabled disabled
getty@.service                     enabled enabled 
NetworkManager-dispatcher.service  enabled disabled
NetworkManager-wait-online.service enabled disabled
NetworkManager.service             enabled disabled
nvidia-hibernate.service           enabled disabled
nvidia-persistenced.service        enabled disabled
nvidia-resume.service              enabled disabled
nvidia-suspend.service             enabled disabled
optimus-manager.service            enabled disabled
power-profiles-daemon.service      enabled disabled
sddm.service                       enabled disabled
sshd.service                       enabled disabled
systemd-timesyncd.service          enabled enabled 
avahi-daemon.socket                enabled disabled
systemd-userdbd.socket             enabled enabled 
fstrim.timer                       enabled disabled

19 unit files listed.

可以禁用的服务:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 用于局域网内的设备发现(如Bonjour协议),通常是用于网络发现功能
sudo systemctl disable avahi-daemon.service
# 用户等待网络完全启动后再继续其他服务,对于大多数桌面用户而言可以禁用,因为会导致延长启动时间
sudo systemctl disable NetworkManager-wait-online.service
# 用户NVIDIA驱动管理系统休眠和恢复的,如不需要系统休眠或挂起的功能可以禁用
sudo systemctl disable nvidia-hibernate.service nvidia-suspend.service nvidia-resume.service
# 如不需要集显和独显切换功能,或只有一个显卡的情况可以禁用
sudo systemctl disable optimus-manager.service
# 用于管理电源性能配置,对于电源性能模式管理没啥要求的可以禁用
sudo systemctl disable power-profiles-daemon.service

禁用的服务avahi-daemon.service NetworkManager-wait-online.service optimus-manager.service

优化GRUB设置

编辑/etc/default/grub文件,将GRUB_TIMEOUT值减少,例如:

1
2
# 我的默认值为5,减少这个值
GRUB_TIMEOUT='3'

保存grub配置后,还需运行以下命令更新GRUB:

1
sudo grub-mkconfig -o /boot/grub/grub.cfg

GRUB_TIMEOUT=1 是在 GRUB 配置文件(通常是 /etc/default/grub)中用于设置 GRUB 引导菜单显示时间的参数。具体作用如下:

  • 显示时间:设置 GRUB 启动菜单在屏幕上显示的秒数。在这个例子中,GRUB_TIMEOUT=1 表示 GRUB 菜单只会显示 1 秒钟,然后自动选择默认的启动项进入系统。
  • 自动启动:如果在 1 秒内没有用户手动选择菜单项,GRUB 会自动启动预设的默认操作系统。

分析启动过程

通过systemd-analyze blamesystemd-analyze critical-chain 查看启动过程中哪些服务花费时间最长。

1
2
systemd-analyze blame
systemd-analyze critical-chain
  • blame 命令会列出启动时间最长的服务,可以帮助你找到启动的瓶颈。
  • critical-chain 会显示启动关键路径上哪些服务影响了整个启动时间。

这是我启动时间最长的几个服务,大部分以关闭开机自启动

1
2
3
4
3.436s plocate-updatedb.service
1.699s optimus-manager.service
1.672s nvidia-persistenced.service
1.139s NetworkManager.service

我使用的操作系统是Endeavour OS,但对于其他的Linux操作系统也可按照该步骤操作