Ubuntuの古いカーネルのアンインストール

 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ファイルが作り直され、起動時のメニュー項目からも消える。