Ubuntu 20.04 LTSでの古いカーネルの削除

公開日: 2022-07-16
更新日: 2022-08-06
所要時間: 6 min

目的 古いカーネルの削除
OS ubuntu 20.04 LTS Focal Fossa
Difficulty level Easy
Root privileges Yes
Requirements Linux terminal

Table of Contents

1. カーネルのアップグレード

Ubuntu 20.04ではデフォルトで自動更新が有効になっています. 更新設定は, /etc/apt/apt.conf.d/20auto-upgradesファイルに記載があります.

1
2
3
% cat /etc/apt/apt.conf.d/20auto-upgrades                      
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
  • APT::Periodic::Update-Package-Lists: 1の場合, 自動的にアップデート可能なパッケージリストを更新. 0の場合は無効
  • APT::Periodic::Unattended-Upgrade: 1の場合, 自動的にアップデートを適用. 0の場合は無効

コマンドで明示的にupdateする場合

1
% sudo apt update && sudo apt dist-upgrade

なぜ古いカーネルを削除するのか?

Ubuntu ではカーネルが頻繁に更新され, そのたびに新しいカーネルが /boot にインストールされます. /bootの容量がそのたびに大きくなってしまう一方, /boot はパーティションが分けられているケースが多く, 定期的にメンテナンスをしないと /bootのディスク容量が足りないと怒られるリスクがあります.

2. 実践編

現在のカーネルバージョンの確認

1
2
% uname -r
5.15.0-46-generic

インストール済みのカーネル一覧の確認

1
% dpkg --get-selections | grep linux-

dpkg --get-selectionsコマンドは全パッケージのインストールされたものと, インストールされたが除去されたものを得ることができます. ちなみにですが, dpkg --get-selectionsの出力結果をtxtファイルに出力して, それを対象に apt installコマンドを走らせるようにすれば, 異なる機器間で install packageを揃えることができ, このような使い方もされることがあります.

削除対象の決定

1
% dpkg --get-selections | grep "linux-"|grep -v "deinstall"|grep -v "5.15.0-46"|column -t| cut -d" " -f1 > purge_dist_list_20220716.txt
  • 間違いがないように, テキストエディタで明示的にどのkernel fileを削除するか指定
  • 削除するパッケージを明示的にpurge_dist_list_20220716.txtに記載
  • 削除候補外はpurge_dist_list_20220716.txtからそのパッケージ名を消します

削除テスト

1
% cat purge_dist_list_20220716.txt| sudo xargs apt purge --dry-run

削除実行

1
% cat purge_dist_list_20220716.txt| sudo xargs apt purge -y

実行結果確認

1
% dpkg --get-selections | grep linux-

Appendix

grepコマンドで一致しない文字列を検索する

grep -v オプションを指定した文字列を含まない文字列検索を実行することができます. manコマンドで確認してみると

1
2
3
4
Matching Control
    -v, --invert-match
              Invert  the  sense  of  matching,  to  select  non-
              matching lines.

Syntax

1
% grep -v "除外文字列" <FILE PATH>

References

オンラインマテリアル



Share Buttons
Share on:

Feature Tags
Leave a Comment
(注意:GitHub Accountが必要となります)