Linuxの起動がものすごく遅い.10分ぐらい掛かる.そういう質問を受けたので原因調査の手順と解決法をまとめます.
起動時のログを見る方法
systemdにはシステム起動時のログを分析する機能があります.使い方も簡単
まずは systemd-analyze を実行します
$ systemd-analyze
Startup finished in 3.328s (kernel) + 9min 57.615s (userspace) = 10min 944ms graphical.target reached after 1min 36.168s in userspace
起動には10分944ミリ秒かかっていて,そのうち userspace の処理で 9分57秒も掛かっていることが解ります.たしかに遅い.
より詳細なログを見ます.systemd-analyze に blame オプションを付けます.
$ systemd-analyze blame
以下のような表示がでました.
9min 56.696s cron-weekly.service 5min 2.388s cron-daily.service 20.106s ssh.service 5.000s networking.service 1.018s ifupdown-wait-online.service 632ms vmware-USBArbitrator.service 548ms ifupdown-pre.service 487ms udisks2.service 438ms NetworkManager-wait-online.service 426ms apt-daily.service 403ms vmware.service 366ms logrotate.service 354ms ModemManager.service 351ms apt-daily-upgrade.service 242ms swap.swap.swap 241ms systemd-logind.service 209ms dev-sda2.device 157ms avahi-daemon.service 以下省略
問題があるのは先頭の2行
9min 56.696s cron-weekly.service 5min 2.388s cron-daily.service
この部分です. cron weekly と daily が猛烈に遅いようです.
cron-weekly の中身を調べます
$ ls /etc/cron.weekly/
man-db systemd-cron
2つスクリプトがあります.man-db と systemd-cron です.
man-db は man page のデータベースを再構築する処理です.どうもこの処理に時間がかかっているようです
原因
このLinuxは,ストレージにSSDを使っていますが,SSDの空き容量がほぼゼロになっていました.
その結果ディスクの書き込みに時間が掛かる状態になっていて,man-db のデータベース再構築に9分ちかくかかっていました.
対処
不要なファイルを削除して SSD の空き容量を増やしました.これだけで解決しました.