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耳機
- Ubuntu連接AirPods耳機
- grub
- Ubuntu設置alacritty爲默認終端
- Ubuntu安裝微信(Ubuntu install Wechat)
- Ubuntu notify-send 定時通知
- 7z
- ab