Ubuntuを使っているとかなり頻繁にアップデートがあって、アップデート・マネージャで簡単にアップデートされるので便利で良いのだが、一つ問題があってカーネルのバージョンアップがある度に新しいカーネルが追加インストールされる(古いカーネルが自動でアンインストールされない)のでブートメニュー上にバージョン違いのカーネルがずらずらと並んでしまう。それほど大きな問題ではないのだけれと、Windowsやその他のOSとデュアルブート環境にしている場合は、それらUbuntu以外のOSが下の方に表示されるので選択しにくくなる。
回避策としてGRUBの設定(/boot/grub/grub.cfg)から必要のない項目は削除してしまえば良いのだが、カーネルのアップデートがある度にgrub.cfgが作り直されてしまうので、結局古くなって使わないカーネルをアンインストールした方が良い。
本来であれば、sudo apt-get autoremoveを行えば古くなって使わなくなったパッケージは削除されるのだが、Ubuntuの場合はapt-getの設定(/etc/apt/apt.conf.d/01autoremove)に
$ cat /etc/apt/apt.conf.d/01autoremove
APT
{
NeverAutoRemove
{
"^firmware-linux.*";
"^linux-firmware$";
"^linux-image.*";
"^kfreebsd-image.*";
"^linux-restricted-modules.*";
"^linux-ubuntu-modules-.*";
};
Never-MarkAuto-Sections
{
"metapackages";
"restricted/metapackages";
"universe/metapackages";
"multiverse/metapackages";
"oldlibs";
"restricted/oldlibs";
"universe/oldlibs";
"multiverse/oldlibs";
};
};
という具合に、linux-image.*が自動アンインストールの対象にならないように記載がされているため、手動でアンインストールする必要がある。
01autoremoveからlinux-imageを抜いてしまえば自動アンインストールが行われるのだが、カーネルのバージョンアップが行われた時に、起動できない、特定のサービスが起動しなくなる、その他のトラブルが起こりえるため、最低でも1つ前のカーネルまでは残しておいた方が良い。そのため、カーネルは手動でアンインストールした方が良いと思う。
カーネルを手動でアンインストールする場合だが、カーネルパッケージの正しい名前が必要になるので、aptitudeコマンドを使ってパッケージを探し、apt-getコマンドでpurgeしてしまうのが良いと思う。
$ aptitude search linux-image
p linux-image - Generic Linux kernel image.
v linux-image-2.6 -
p linux-image-2.6.32-305-ec2 - Linux kernel image for version 2.6.32 on x86/x86_64
p linux-image-2.6.35-22-generic - Linux kernel image for version 2.6.35 on x86/x86_64
p linux-image-2.6.35-22-generic-pae - Linux kernel image for version 2.6.35 on x86
p linux-image-2.6.35-22-virtual - Linux kernel image for version 2.6.35 on x86/x86_64
p linux-image-2.6.35-23-generic - Linux kernel image for version 2.6.35 on x86/x86_64
p linux-image-2.6.35-23-generic-pae - Linux kernel image for version 2.6.35 on x86
p linux-image-2.6.35-23-virtual - Linux kernel image for version 2.6.35 on x86/x86_64
p linux-image-2.6.35-24-generic - Linux kernel image for version 2.6.35 on x86/x86_64
p linux-image-2.6.35-24-generic-pae - Linux kernel image for version 2.6.35 on x86
p linux-image-2.6.35-24-virtual - Linux kernel image for version 2.6.35 on x86/x86_64
p linux-image-2.6.35-25-generic - Linux kernel image for version 2.6.35 on x86/x86_64
i linux-image-2.6.35-25-generic-pae - Linux kernel image for version 2.6.35 on x86
p linux-image-2.6.35-25-virtual - Linux kernel image for version 2.6.35 on x86/x86_64
p linux-image-2.6.35-27-generic - Linux kernel image for version 2.6.35 on x86/x86_64
i linux-image-2.6.35-27-generic-pae - Linux kernel image for version 2.6.35 on x86
p linux-image-2.6.35-27-virtual - Linux kernel image for version 2.6.35 on x86/x86_64
p linux-image-2.6.35-28-generic - Linux kernel image for version 2.6.35 on x86/x86_64
i linux-image-2.6.35-28-generic-pae - Linux kernel image for version 2.6.35 on x86
p linux-image-2.6.35-28-virtual - Linux kernel image for version 2.6.35 on x86/x86_64
p linux-image-ec2 - Linux kernel image for ec2 machines
p linux-image-generic - Generic Linux kernel image
i linux-image-generic-pae - Generic Linux kernel image
p linux-image-server - Linux kernel image on Server Equipment.
p linux-image-virtual - Linux kernel image for virtual machines
一番左にiと表示されているパッケージがインストールされているパッケージになる。この場合であれば、linux-image-2.6.35-25-generic-pae、linux-image-2.6.35-27-generic-pae、linux-image-2.6.35-28-generic-paeと3つのカーネルがインストールされている状態となるので、linux-image-2.6.35-25-generic-paeを削除することになる。
$ sudo apt-get purge linux-image-2.6.35-25-generic-pae
apt-getでパッケージをpurgeした場合、自動的にgrub.cfgファイルが作り直され、起動時のメニュー項目からも消える。
コメント