Ubuntu开机启动加速
日常使用Linux工作,随着时间增长,开机启动速度逐渐下降,Ubuntu这个发行版包含Snap,更是拖慢了启动速度。虽然开机启动速度大部分由硬件配置决定,但后天的软件环境配置优化,保持好的使用习惯也很重要。
下面是我搜查出来的常用加快开机速度的方法:
1. GRUB_TIMEOUT 设置
意思为多少秒后grub菜单消失,默认5s,为了兼顾可配置性和速度,我选择2s,0就是直接跳过走到下一步了。英文解释如下:
‘GRUB_TIMEOUT’
Boot the default entry this many seconds after the menu is displayed, unless a key is pressed. The default is ‘5’. Set to ‘0’ to boot immediately without displaying the menu, or to ‘-1’ to wait indefinitely.
1➜ ~ egrep -v '^#|^$' /etc/default/grub
2GRUB_DEFAULT="0"
3GRUB_TIMEOUT_STYLE="menu"
4GRUB_TIMEOUT=2
5GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
6GRUB_CMDLINE_LINUX_DEFAULT=""
7GRUB_CMDLINE_LINUX=""
8GRUB_GFXMODE="1920x1440x32"
9export GRUB_COLOR_NORMAL="light-gray/black"
10export GRUB_COLOR_HIGHLIGHT="magenta/black"
11GRUB_THEME="/boot/grub/themes/ubuntu-/theme.txt"
每次修改grub后要运行 sudo update-grub
使其生效。
请注意,任何时候改动grub都要十分小心,不了解的更要谨慎,因为有可能进入了不了系统,修复较为麻烦,高手除外。
2. systemd-analyze 分析系统服务启动
根据下面的命令判定哪个程序导致的启动慢,无用的sudo systemctl disable xxx.service
停用掉。
- systemd-analyze 打印启动时间信息
- systemd-analyze blame 服务启动耗时从大到小排序(参考)
- systemd-analyze critical-chain 拖累启动速度的致命链(真正需要关心的)
- systemd-analyze plot > ~/boot.svg 生成一张启动详细信息矢量图(彩图关注红色的部分)
1➜ ~ systemd-analyze
2Startup finished in 7.103s (firmware) + 4.614s (loader) + 19.164s (kernel) + 8.308s (userspace) = 39.191s
3graphical.target reached after 7.992s in userspace.
4➜ ~ systemd-analyze blame | head -n 10
51.860s systemd-udev-settle.service
61.686s zfs-volume-wait.service
71.683s zfs-mount.service
8 680ms lm-sensors.service
9 605ms accounts-daemon.service
10 553ms dnsmasq.service
11 490ms systemd-logind.service
12 480ms udisks2.service
13 427ms ModemManager.service
14 341ms systemd-udev-trigger.service
15➜ ~ systemd-analyze critical-chain
16The time when unit became active or started is printed after the "@" character.
17The time the unit took to start is printed after the "+" character.
18
19graphical.target @7.992s
20└─multi-user.target @7.989s
21 └─kerneloops.service @7.952s +33ms
22 └─nss-lookup.target @7.948s
23 └─dnsmasq.service @7.392s +553ms
24 └─network.target @7.339s
25 └─NetworkManager.service @7.146s +191ms
26 └─dbus.service @6.989s +103ms
27 └─basic.target @6.956s
28 └─sockets.target @6.955s
29 └─virtlogd-admin.socket @6.954s
30 └─virtlogd.socket @6.953s
31 └─sysinit.target @6.926s
32 └─systemd-timesyncd.service @6.809s +116ms
33 └─systemd-tmpfiles-setup.service @6.753s +46ms
34 └─local-fs.target @6.743s
35 └─zfs-mount.service @5.059s +1.683s
36 └─boot.mount @5.034s +17ms
37 └─local-fs-pre.target @2.816s
38 └─systemd-tmpfiles-setup-dev.service @2.794s +20ms
39 └─systemd-sysusers.service @2.773s +19ms
40 └─systemd-remount-fs.service @2.641s +111ms
41 └─systemd-journald.socket @2.523s
42 └─system.slice @2.485s
43 └─-.slice @2.485s
值得一提的是snap的软件通常会启动很多loopxx.device的服务,特别拖累启动速度,我反正不用snap的软件,直接删除。
1sudo apt-get purge snapd
3. 开机启动软件核对
按键盘的'win'键(左下角ctrl和alt之间),搜索启动'Startup Applications'软件,删除掉不必要的开启启动软件,只保留必须的,轻装上路跑得快啊。
4. 去掉非必要enabled的开机启动服务
列出系统中enabled的,挨个查看,根据自身状况,明确不要的去掉
1systemctl list-unit-files --state=enabled
比如这个打印机相关的,我的工作电脑不需要(公司是云打印的)可关掉 sudo systemctl disable cups-browsed.service
这样一通操作下来后,一般能够优化不少启动时间,有人可能要说,我是做嵌入式相关,可以自己裁剪内核,各种优化启动,这个不在本文的讨论范围内(此文受众是普通Linux桌面用户)。
另外,谈到Linux的启动不得不说下 plymouth-quit-wait.service
和 apt-daily.service
, 其实这两个服务都不影响启动速度,分别参考这2个链接 plymouth 和 apt-daily
验证方法:
1systemctl list-dependencies plymouth-quit-wait.service
2systemctl list-dependencies --reverse apt-daily
接着,来说下这个plymouth,很多次看到这个名字的时都很迷惑,直到深入挖掘才知这背后的故事非常有趣。一开始我以为是 ply + mouth
偶尔疑惑(ply是什么的缩写 + 嘴),其实它是英国的海港城市Plymouth(普利茅斯) ^_^.
为什么Plymouth和Linux的启动有关系呢?维基百科的解释:
Plymouth is a free application which provide bootsplash for Linux, The program is named after Plymouth Rock, a name which symbolizes the program's role as a first point of entry for users to interact with a computer system.
意思说,Plymouth就是Linux的启动动画程序(类比Windows、Mac等品牌Logo闪耀登场的那段动画效果),Plymouth的典故来自Plymouth Rock
叫普利茅斯岩,又叫移民石,现在是美国的一个人文景点,新大陆的第一快落脚石类比第一个给用户交互的计算机程序。
移民石背景故事:
了解美国历史的人都知道,美国历史是由一群英国来的清教徒开始的,普利茅斯就是他们落脚的第一块土地。普利茅斯位于美国马萨诸塞州,距离波士顿约一小时车程。
1620年9月,一些英国清教徒因不堪忍受当时欧洲大陆的宗教压迫,从英国普利茅斯乘坐渔船离开英国前往美洲殖民地,为的是追求更自由的信仰。这些清教徒只凭借有限的航海知识横渡大西洋,长时间的漂泊加上捉摸不定的天气因素,其他船都沉了,只有“五月花号”成功登陆了新英格兰的土地。他们把这块土地命名为他们离开的地方——普利茅斯,美国的历史从此被写下。第一个寒冬,尚未开垦的土地上资源十分有限,这批清教徒很多都死于疾病和饥饿。危急关头印第安人送来了火鸡等食物,让剩下的人勉强撑了下来,幸运的是第二年他们就获得了大丰收。为了感谢上帝赐予的丰收和印第安人的馈赠,举行了狂欢活动,这也正是感恩节的雏形。
为了纪念登陆,他们用一块刻著1620的礁石在当年登陆的土地上。如今这片土地已经被美国作为国家公园保护起来,工作人员全都穿著17世纪的衣服,以逼真的中世纪方言与腔调和你交谈。在这里看到的所有事物,几乎都是17世纪风格的完整翻版
Plymouth的作者是Ray Strode,是一个在RedHat工作的美国工程师,美国工程师用美国典故,没毛病。
移民石图片:
最后,有人喜欢开机动画,有人不喜欢,怎么设置不显示开机动画呢?不显示开机动画的话,就是命令行显示开机启动过程,我个人喜欢,每天看几眼或许能发现潜在问题。
变动grub配置文件/etc/default/grub
:
修改前:
1GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
修改后:
1GRUB_CMDLINE_LINUX_DEFAULT=""
文件示例:
1➜ ~ egrep -v '^#|^$' /etc/default/grub
2GRUB_DEFAULT="0"
3GRUB_TIMEOUT_STYLE="menu"
4GRUB_TIMEOUT=2
5GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
6GRUB_CMDLINE_LINUX_DEFAULT=""
7GRUB_CMDLINE_LINUX=""
8GRUB_GFXMODE="1920x1440x32"
9export GRUB_COLOR_NORMAL="light-gray/black"
10export GRUB_COLOR_HIGHLIGHT="magenta/black"
11GRUB_THEME="/boot/grub/themes/ubuntu-/theme.txt"
GRUB_GFXMODE="1920x1440x32"
这个控制启动终端分辨率,后面的参数来自(每个人的情况不同):
1➜ ~ sudo hwinfo --framebuffer
2[sudo] password for mephisto:
302: None 00.0: 11001 VESA Framebuffer
4 [Created at bios.459]
5 Unique ID: rdCR.jB2oURqGEo2
6 Hardware Class: framebuffer
7 Model: "Intel(R) SKL Mobile/Desktop Graphics Controller"
8 Vendor: "Intel Corporation"
9 Device: "Intel(R) SKL Mobile/Desktop Graphics Controller"
10 SubVendor: "Intel(R) SKL Mobile/Desktop Graphics Chipset Accelerated VGA BIOS"
11 SubDevice:
12 Revision: "Hardware Version 0.0"
13 Memory Size: 31 MB + 960 kB
14 Memory Range: 0x00000000-0x01feffff (rw)
15 Mode 0x033c: 1920x1440 (+1920), 8 bits
16 Mode 0x034d: 1920x1440 (+3840), 16 bits
17 Mode 0x035c: 1920x1440 (+7680), 24 bits
18 Mode 0x033a: 1600x1200 (+1600), 8 bits
19 Mode 0x034b: 1600x1200 (+3200), 16 bits
20 Mode 0x035a: 1600x1200 (+6400), 24 bits
21 Mode 0x0307: 1280x1024 (+1280), 8 bits
22 Mode 0x031a: 1280x1024 (+2560), 16 bits
23 Mode 0x031b: 1280x1024 (+5120), 24 bits
24 Mode 0x0305: 1024x768 (+1024), 8 bits
25 Mode 0x0317: 1024x768 (+2048), 16 bits
26 Mode 0x0318: 1024x768 (+4096), 24 bits
27 Mode 0x0312: 640x480 (+2560), 24 bits
28 Mode 0x0314: 800x600 (+1600), 16 bits
29 Mode 0x0315: 800x600 (+3200), 24 bits
30 Mode 0x0301: 640x480 (+640), 8 bits
31 Mode 0x0303: 800x600 (+832), 8 bits
32 Mode 0x0311: 640x480 (+1280), 16 bits
33 Mode 0x037d: 0x0 (+0), 8 bits
34 Mode 0x037e: 0x0 (+0), 16 bits
35 Mode 0x037f: 0x0 (+0), 24 bits
36 Config Status: cfg=new, avail=yes, need=no, active=unknown
再次提醒,修改grub配置要小心,改动后要运行 sudo update-grub
。
版权申明:
- 未标注来源的内容全部为原创,未经授权请勿转载(因转载后排版往往错乱、内容不可控、无法持续更新等);
- 非营利为目的,演绎本博客任何内容,请以'原文出处'或者'参考链接'等方式给出本站相关网页地址(方便读者)。
相关文章:
- Ubuntu手动升级Libreoffice
- Ubuntu 22.10连接蓝牙耳机报错br-connection-profile-unavailable解决方法
- Ubuntu连接AirPods耳机
- grub
- Ubuntu设置alacritty为默认终端
- Ubuntu安装微信(Ubuntu install Wechat)
- Ubuntu notify-send 定时通知
- 7z
- ab
- accept