Ubuntuの起動を高速化する
Linuxを日常業務で使用していると、起動速度は時間の経過とともに徐々に低下します。UbuntuディストリビューションにはSnapが含まれており、これが起動速度をさらに低下させます。起動速度は主にハードウェア構成によって決まりますが、ソフトウェア環境の最適化と適切なユーザー習慣の維持も重要です。
以下は、私が見つけた起動速度向上のための一般的な方法です。
1. GRUB_TIMEOUT 設定
GRUB メニューが消えるまでの秒数を設定します。デフォルトは5秒です。設定の自由度と速度のバランスを取るため、私は2秒に設定しました。0秒に設定すると、メニューをスキップして次のステップに進みます。英語での説明は次のとおりです。
'GRUB_TIMEOUT'
メニューが表示されてから、キーが押されない限り、ここで指定した秒数後にデフォルトエントリを起動します。デフォルトは「5」です。「0」に設定するとメニューを表示せずにすぐに起動し、「-1」に設定すると無期限に待機します。
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
2起動は 7.103 秒 (ファームウェア) + 4.614 秒 (ローダー) + 19.164 秒 (カーネル) + 8.308 秒 (ユーザー空間) = 39.191 秒で完了しました
3ユーザー空間で 7.992 秒後に graphical.target に到達しました
4➜ ~ systemd-analyze Blame | head -n 10
51.860s systemd-udev-settle.service
61.686s zfs-volume-wait.service
71.683s zfs-mount.service
8680mslm-sensors.service
9605ms accounts-daemon.service
10553ms dnsmasq.service
11490ms systemd-logind.service
12480ms udisks2.service
13427ms ModemManager.service
14341ms systemd-udev-trigger.service
15➜ ~ systemd-analyze critical-chain
16ユニットがアクティブになった、または起動した時刻は「@」文字の後に表示されます。
17ユニットの起動にかかった時間は「+」文字の後に表示されます。
18
19graphical.target @7.992秒
20└─multi-user.target @7.989秒
21└─kerneloops.service @7.952秒 +33ミリ秒
22└─nss-lookup.target @7.948秒
23└─dnsmasq.service @7.392秒 +553ミリ秒
24└─network.target @7.339秒
25└─NetworkManager.service @7.146秒 +191ミリ秒
26└─dbus.service @6.989秒 +103ミリ秒
27└─basic.target @6.956秒
28└─sockets.target @6.955秒
29└─virtlogd-admin.socket @6.954秒
30└─virtlogd.socket @6.953秒
31└─sysinit.target @6.926秒
32└─systemd-timesyncd.service @6.809秒 +116ミリ秒
33└─systemd-tmpfiles-setup.service @6.753秒 +46ミリ秒
34└─local-fs.target @6.743秒 └─zfs-mount.service @5.059秒 +1.683秒
35└─boot.mount @5.034秒 +17ミリ秒
36└─local-fs-pre.target @2.816秒
37└─systemd-tmpfiles-setup-dev.service @2.794秒 +20ミリ秒
38└─systemd-sysusers.service @2.773秒 +19ミリ秒
39└─systemd-remount-fs.service @2.641秒 +111ミリ秒
40└─systemd-journald.socket @2.523秒
41└─system.slice @2.485秒
42└─-.slice @2.485秒
snapソフトウェアはloopxx.deviceサービスを頻繁に起動するため、起動速度が大幅に低下することに注意してください。私はsnapソフトウェアを使わないので、削除しています。
1sudo apt-get purge snapd
3. スタートアップソフトウェアを確認する
キーボードの「Win」キー(左下隅のCtrlとAltの間にあるキー)を押し、「スタートアップアプリケーション」を検索します。不要なスタートアップアプリケーションを削除し、必要なものだけを残します。荷物を軽くして、より速く走りましょう。
4. 不要なスタートアップサービスを削除する
システムで有効になっているすべてのサービスを一覧表示し、1つずつ確認して、状況に応じて不要なものを削除します。
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はLinuxのブートと関係があるのでしょうか?Wikipediaにはこう説明されています。
Plymouthは、Linux用のブートスプラッシュを提供する無料アプリケーションです。このプログラムは、プログラムの象徴であるプリマス・ロックにちなんで名付けられました。
プリマスは、ユーザーがコンピュータシステムと対話するための最初の入り口となります。
プリマスは、Linuxの起動アニメーション(WindowsやMacなどのブランドロゴが表示される際のアニメーション効果に似ています)です。プリマスという名前は、現在アメリカ合衆国の文化的ランドマークとなっているプリマス・ロック(移民の岩とも呼ばれます)に由来しています。新世界への最初の踏み石は、ユーザーインタラクションのための最初のコンピュータプログラムに似ています。
移民の岩の背景:
アメリカの歴史に詳しい人なら誰でも、アメリカの歴史はイギリスから来た清教徒の一団から始まり、プリマスが彼らの最初の居住地であったことを知っています。プリマスはマサチューセッツ州にあり、ボストンから車で約1時間です。
1620年9月、ヨーロッパ大陸で耐え難い宗教的弾圧が続く中、一部のイギリス清教徒は、より大きな信仰の自由を求めて、漁船に乗ってイギリスのプリマスを離れ、アメリカ植民地へと向かいました。航海に関する知識は限られていましたが、清教徒たちは大西洋を渡りました。長旅と予測不能な天候により、他の船はすべて沈没しましたが、メイフラワー号だけがニューイングランドに無事上陸しました。彼らは出発した土地をプリマスと名付け、そこからアメリカの歴史が綴られました。厳しい最初の冬、未開の地では資源が乏しく、多くのピューリタンが病気や飢餓で亡くなりました。窮地に陥ったインディアンは七面鳥などの食料を送り、残された人々はかろうじて生き延びることができました。幸いにも翌年は豊作でした。豊作とインディアンの贈り物に感謝するため、彼らはカーニバルを開催しました。これが感謝祭の前身となりました。
上陸を記念して、1620という数字が刻まれた岩が作られました。現在、この土地はアメリカの国立公園として保護されており、職員は17世紀の衣装を着て、本物の中世の方言やアクセントで話しています。ここに表示されているほぼすべては、17世紀のスタイルを完全に再現したものです。
プリマスは、Red Hatで働くアメリカ人エンジニア、レイ・ストロードによって作成されました。アメリカ人エンジニアがアメリカを連想させるものを使うのは全く問題ありません。
移民の岩の画像:
最後に、ブートアニメーションは好みが分かれるところです。どうすれば無効にできますか?アニメーションを無効にすると、コマンドラインにブートプロセスが表示されます。個人的にはそちらの方が好みです。毎日ざっと確認することで、潜在的な問題を発見できるかもしれません。
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] mephisto のパスワード:
302: なし 00.0: 11001 VESA フレームバッファ
4[bios.459 で作成]
5一意の ID: rdCR.jB2oURqGEo2
6ハードウェアクラス: フレームバッファ
7モデル: "Intel(R) SKL モバイル/デスクトップ グラフィックス コントローラー"
8ベンダー: "Intel Corporation"
9デバイス: "Intel(R) SKL モバイル/デスクトップ グラフィックス コントローラー"
10サブベンダー: "Intel(R) SKL モバイル/デスクトップ グラフィックス チップセット アクセラレーテッド VGA BIOS"
11サブデバイス:
12リビジョン: "ハードウェア バージョン 0.0"
13メモリサイズ: 31 MB + 960 KB
14メモリ範囲: 0x00000000-0x01feffff (rw)
15モード 0x033c: 1920x1440 (+1920)、8ビット
16モード 0x034d: 1920x1440 (+3840)、16ビット
17モード 0x035c: 1920x1440 (+7680)、24ビット
18モード 0x033a: 1600x1200 (+1600)、8ビット
19モード 0x034b: 1600x1200 (+3200)、16ビット
20モード 0x035a: 1600x1200 (+6400)、24ビット
21モード 0x0307: 1280x1024 (+1280)、8ビット
22モード0x031a: 1280x1024 (+2560)、16ビット
23モード 0x031b: 1280x1024 (+5120)、24ビット
24モード 0x0305: 1024x768 (+1024)、8ビット
25モード 0x0317: 1024x768 (+2048)、16ビット
26モード 0x0318: 1024x768 (+4096)、24ビット
27モード 0x0312: 640x480 (+2560)、24ビット
28モード 0x0314: 800x600 (+1600)、16ビット
29モード 0x0315: 800x600 (+3200)、24ビット
30モード 0x0301: 640x480 (+640)、8ビット
31モード 0x0303: 800x600 (+832)、8ビット
32モード 0x0311: 640x480 (+1280)、16ビット
33モード 0x037d: 0x0 (+0)、8ビット
34モード 0x037e: 0x0 (+0)、16ビット
35モード 0x037f: 0x0 (+0)、24ビット
36構成ステータス: cfg=new、avail=yes、need=no、active=unknown
繰り返しますが、GRUBの設定を変更する際は注意してください。変更後は必ずsudo update-grub
を実行してください。
著作権に関する声明:
- 出典のないコンテンツはすべてオリジナルです。、無断転載はご遠慮ください(転載後にレイアウトが崩れたり、内容が制御不能になったり、継続的に更新できない等の理由から)。
- このブログのコンテンツを非営利目的で解釈したい場合は、(読者の便宜のため)「オリジナル ソース」または「参照リンク」の形式でこのサイトの関連 Web ページ アドレスを提供してください。