우분투 /boot 파티션이 꽉 찼을 경우

 우분투 서버에 로그인 할 때, 커널, IP, 시스템 사용량 등의 정보를 아래와 같은 형태의 정보를 출력하게 설정해두었다. 그런데 오늘 특이한 사항이 눈에 보였다.
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.2.0-53-generic x86_64)
 * Documentation:  https://help.ubuntu.com/
  System information as of Fri Oct  4 13:56:58 KST 2013
  System load:  0.0                Processes:           92
  Usage of /:   7.4% of 217.13GB   Users logged in:     0
  Memory usage: 14%                IP address for eth0: xxx.xxx.xxx.xxx
  Swap usage:   0%

  => /boot is using 90.7% of 227MB  
  Graph this data and manage this system at https://landscape.canonical.com/
/boot 파티션의 용량이 90%를 넘은 것이다.

인터넷에서 찾아보니, 우분투 커널을 업데이트 하는 과정이 기존 커널을 업데이트 하는게 아니라, 최신 신규 커널을 추가적으로 설치하는 방식이라고 한다. 그래서 예전 커널이 남아 있어 용량을 차지하게 되는 것이다.

/boot 공간이 부족하게 되면 업데이트가 안되는 문제가 발생할 수 있다고 한다. 그러므로 옛날 커널을 삭제 할 필요가 있다.

설치된 커널 확인하기
$ sudo dpkg --list 'linux-image*' 
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend  
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                             Version        Description
+++-===============================================-=======================================================
un  linux-image                      <none>         (no description available)                          
un  linux-image-3.0                  <none>         (no description available)                          
rc  linux-image-3.0.0-12-server      3.0.0-12.20    Linux kernel image for version 3.0.0 on x86_64      
ii  linux-image-3.0.0-16-server      3.0.0-16.29    Linux kernel image for version 3.0.0 on x86_64      
ii  linux-image-3.2.0-24-generic     3.2.0-24.39    Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii  linux-image-3.2.0-29-generic     3.2.0-29.46    Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii  linux-image-3.2.0-30-generic     3.2.0-30.48    Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii  linux-image-3.2.0-31-generic     3.2.0-31.50    Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii  linux-image-3.2.0-33-generic     3.2.0-33.52    Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii  linux-image-3.2.0-39-generic     3.2.0-39.62    Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii  linux-image-3.2.0-40-generic     3.2.0-40.64    Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii  linux-image-3.2.0-53-generic     3.2.0-53.81    Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii  linux-image-server               3.2.0.53.63    Linux kernel image on Server Equipment.                
예전에 사용했던 커널이 그대로 남아 있음을 확인할 수 있다. 최신 커널을 확인한 후, 예전 커널을 삭제하도록 하자.

최선 커널 확인한다.
$ uname -a
최신 커널을 제외하고 삭제하자.

하나씩 지정하는 방법
$ sudo apt-get remove linux-image-3.0.0-12-server linux-image-3.0.0-16-server linux-image-3.2.0-24-generic linux-image-3.2.0-29-generic linux-image-3.2.0-30-generic linux-image-3.2.0-31-generic linux-image-3.2.0-33-generic linux-image-3.2.0-39-generic linux-image-3.2.0-40-generic

스크립트를 이용해서 삭제하는 방법
$ dpkg --get-selections|grep 'linux-image*'|awk '{print $1}'|egrep -v "linux-image-$(uname -r)|linux-image-generic" |while read n;do apt-get -y remove $n;done                                 
작업이 끝나면 용량을 확인해 보자.
$ df  
Filesystem                 Type      Size  Used Avail Use% Mounted on
/dev/mapper/user_id-root ext4      218G   16G  192G   8% /            
udev                       devtmpfs  989M   12K  989M   1% /dev      
tmpfs                      tmpfs     399M  720K  399M   1% /run      
none                       tmpfs     5.0M     0  5.0M   0% /run/lock  
none                       tmpfs     997M     0  997M   0% /run/shm  
/dev/sda1                  ext2      228M   27M  189M  13% /boot        
                                                                     
/boot 에 공간이 확보 됨을 볼 수 있다. 이전 커널을 다 삭제 해버리면, 현재 사용중인 커널에 문제가 있을 경우, 복구하는데 어려움이 있을 수 있다.