Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

CentOS/RHELで古いカーネルを削除して/bootを整理する方法

More than 5 years have passed since last update.

はじめに

カーネルを更新し続けると、どんどん/boot領域に蓄積されて行き、ついには残り容量がなくなって更新さえできなくなってしまうことがあります。不要なカーネル情報は削除したいのですが、気をつけなければいけないのは、/etc/grub.confなどのようにカーネル情報を参照しているファイルが存在することです。よってこのあたりまで含めて綺麗にクリーンアップしてくれるツールがあると良いですね。

解決方法

yum-utilsパッケージのpackage-cleanupコマンドを利用します。例えば、下記の例だと

  • --oldkernelsを指定することで、古いkernel/kernel-develを削除すします。
  • --count=2にすることで、2世代残します。
実行例
# df -m /boot
Filesystem     1M-blocks  Used Available Use% Mounted on
/dev/xvda1           248   137        99  59% /boot

# yum install -y yum-utils
(途中略)

# package-cleanup --oldkernels --count=2
(途中略)
Is this ok [y/N]: y
(途中略)

# ls -l /boot
total 51779
-rw-r--r--  1 root root   106313 Mar 11 17:31 config-2.6.32-504.12.2.el6.x86_64
-rw-r--r--  1 root root   106313 Apr 22 02:16 config-2.6.32-504.16.2.el6.x86_64
drwxr-xr-x. 3 root root     1024 Dec  2 09:13 efi
drwxr-xr-x. 2 root root     1024 May 27 04:27 grub
-rw-------  1 root root 19389459 Mar 21 13:27 initramfs-2.6.32-504.12.2.el6.x86_64.img
-rw-------  1 root root 19386450 May 13 00:37 initramfs-2.6.32-504.16.2.el6.x86_64.img
drwx------. 2 root root    12288 Dec  2 09:10 lost+found
-rw-r--r--  1 root root   200256 Mar 11 17:32 symvers-2.6.32-504.12.2.el6.x86_64.gz
-rw-r--r--  1 root root   200317 Apr 22 02:17 symvers-2.6.32-504.16.2.el6.x86_64.gz
-rw-r--r--  1 root root  2545042 Mar 11 17:31 System.map-2.6.32-504.12.2.el6.x86_64
-rw-r--r--  1 root root  2545609 Apr 22 02:16 System.map-2.6.32-504.16.2.el6.x86_64
-rwxr-xr-x  1 root root  4152720 Mar 11 17:31 vmlinuz-2.6.32-504.12.2.el6.x86_64
-rwxr-xr-x  1 root root  4151344 Apr 22 02:16 vmlinuz-2.6.32-504.16.2.el6.x86_64

# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/xvda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/xvda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-504.16.2.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-504.16.2.el6.x86_64 ro root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx console=hvc0 crashkernel=auto SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=us
        initrd /initramfs-2.6.32-504.16.2.el6.x86_64.img
title CentOS (2.6.32-504.12.2.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-504.12.2.el6.x86_64 ro root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx console=hvc0 crashkernel=auto SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=us
        initrd /initramfs-2.6.32-504.12.2.el6.x86_64.img

# df -m /boot
Filesystem     1M-blocks  Used Available Use% Mounted on
/dev/xvda1           248    62       175  26% /boot

補足

/etc/yum.confにinstallonly_limitとうパラメーターを設定しておくと、自動的に世代管理されるようです。SoftLayerのCentOS6では、下記のように設定されていたので、これを2とか3ぐらいに設定しておくと/bootがあふれる可能性は少なくなるのではないでしょうか。

世代管理
# cat /etc/yum.conf | grep install
installonly_limit=5

testnin2
このサイトにおける掲載内容はあくまで私自身の見解であり、必ずしも私の所属団体・企業における立場、戦略、意見を代表するものではありません。 近年はクラウドの魅力に惹かれてクラウドを中心とした提案活動・技術支援を行っています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away