또이리의 Server Engineer

우분투 커널 확인 - 변경 및 삭제 본문

Linux Engineer

우분투 커널 확인 - 변경 및 삭제

또이리 2020. 11. 13. 22:04

우분투 커널 확인 - 변경 및 삭제

Ubuntu kernel check, remove, uninstall, purge 이번 스토리는 linux OS 중에서 우분투에 설치된 불 필요한 커널을 제거해 보겠습니다.

 

커널 업데이트 이후 특정 애플리케이션이 실행이 안된다거나, 엔비디아 드라이버가 올라오지 않을 때 현재 사용하는 변경된 커널을 삭제하는 방법을 알아보겠습니다.

 

우선 커널이란 OS의 기능에서 가장 중요한 구성요소입니다. OS의 핵심이라고 보시면 됩니다. 사람을 운영체제로 비유하면 커널은 뇌라고 생각하시면 됩니다. OS가 출시되면 커널은 지속적으로 업데이트가 진행이 됩니다.

 

하지만 커널이 업데이트됨에 따라 사용하는 애플리케이션들도 버전 업데이트가 진행돼야 하는데 그렇지 못하면, 높은 커널의 OS에서 낮은 버전의 애플리케이션이 실행되지 않거나 드라이버가 올라오지 않는 경우가 생깁니다.

 

이런 이유로 OS 커널과 애플리케이션 및 드라이버의 최적화 버전을 찾아서 서버를 구축합니다. 최신 버전이라고 다 좋은 것은 아니라는 이야기가 이래서 나오는 것입니다.

 

커널은 소프트웨어뿐만 아니라 하드웨어 버전과도 관련성이 있기 때문에 복잡해집니다. 예를 들어 최신 OS가 과거 하드웨어를 지원하지 않는 것처럼 말입니다.

 

반대로 최신 하드웨어에 과거의 OS를 설치할 수 없는 것도 좋은 예가 될 수 있습니다. 서버 OS는 집에서 쓰는 클라이언트 OS 즉 windows10 과는 다릅니다.

 

어떠한 목적으로 사용할 것인가에 따라 최적화된 소프트웨어를 설치해야 합니다. 그리고 그에 맞는 OS 커널 버전을 사용해야겠습니다.

 

우분투 커널 확인

서론이 너무 길었습니다.

우선 현재 우분투의 커널 버전을 uname 명령어를 사용해서 확인해 보겠습니다.

root@localhost:~# uname
Linux
root@localhost:~# uname --help
Usage: uname [OPTION]...
Print certain system information.  With no OPTION, same as -s.

  -a, --all                print all information, in the following order,
                             except omit -p and -i if unknown:
  -s, --kernel-name        print the kernel name
  -n, --nodename           print the network node hostname
  -r, --kernel-release     print the kernel release
  -v, --kernel-version     print the kernel version
  -m, --machine            print the machine hardware name
  -p, --processor          print the processor type (non-portable)
  -i, --hardware-platform  print the hardware platform (non-portable)
  -o, --operating-system   print the operating system
      --help     display this help and exit
      --version  output version information and exit

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/uname>
or available locally via: info '(coreutils) uname invocation'
root@localhost:~# uname -a
Linux localhost 4.15.0-76-generic #86-Ubuntu SMP Fri Jan 17 17:24:28 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
root@localhost:~# uname -r
4.15.0-76-generic
root@localhost:~# uname -sr
Linux 4.15.0-76-generic
root@localhost:~# uname -msr
Linux 4.15.0-76-generic x86_64

root@localhost:~# cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.4 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
root@localhost:~#

저는 uname -a를 통해서 커널 버전을 확인합니다.

uname -r, uname -sr, uname -msr 사용하시는 분들마다 다 제각각입니다.

 

구글링 해보면 uname -sr을 사용하시는 분들이 많아 보입니다.

uname 아래 cat /etc/*release를 통해서 OS 버전도 출력해 보았습니다.

 

현재 OS에 설치되어있는 커널 버전을 확인해 보겠습니다.

dpkg -l | grep linux-image

root@localhost:/# dpkg -l | grep -i linux-image
ii  linux-image-4.15.0-76-generic         4.15.0-76.86                                    amd64        Signed kernel image generic
ii  linux-image-5.4.0-53-generic          5.4.0-53.59~18.04.1                             amd64        Signed kernel image generic
ii  linux-image-generic                   4.15.0.76.78                                    amd64        Generic Linux kernel image
root@localhost:/#

4.15.0 버전과 5.4.0 버전이 설치되어있는 것을 확인할 수 있습니다.

이제 불 필요하거나 설치 후 이상이 생겼다면 버전을 삭제하겠습니다.

 

우분투 커널 삭제

 

혹시 모를 상황에 대비해서 중요 데이터는 백업을 꼭 하시길 바랍니다. 커널 패닉은 정말 예상치 못한 상황에 발생하기 때문입니다.

 

uname으로 확인한 현재 구동 중인 커널 버전을 삭제하면 큰일 나겠습니다. 꼭 현재 사용 중인 버전을 확인하고 커널 삭제를 진행합니다.

 

apt-get purge linux-image-버전

커널 삭제는 의외로 간단합니다.

root@localhost:/# apt-get purge linux-image-
linux-image-4.15.0-76-generic  linux-image-generic
linux-image-5.4.0-53-generic

현재 시스템은 4.15.0 커널로 구동되고 있기 때문에 5.4.0을 삭제하면 됩니다.

root@localhost:/# apt-get purge linux-image-5.4.0-53-generic
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  linux-image-5.4.0-53-generic*
0 upgraded, 0 newly installed, 1 to remove and 167 not upgraded.
After this operation, 9,406 kB disk space will be freed.
Do you want to continue? [Y/n]

y를 눌러서 삭제를 진행했다면, 다시 dpkg -l | grep linux-image을 사용해서 버전 목록을 확인해 봅니다.

root@localhost:/# dpkg -l | grep -i linux-image
ii  linux-image-4.15.0-76-generic         4.15.0-76.86                                    amd64        Signed kernel image generic
ii  linux-image-generic                   4.15.0.76.78                                    amd64        Generic Linux kernel image
root@localhost:/#

linux-image-5.4.0-53-generic 이 삭제된 것을 확인할 수 있습니다.

커널 삭제 이후, 커널 이미지를 검색했을 때 extra 버전이 남이 있을 수 있습니다.

apt-get autoremove 명령어로 삭제하면 됩니다.

root@localhost:/# apt-get autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 167 not upgraded.
root@localhost:/#

현재 이 시스템은 제가 테스트로 linux-image-5.4.0-53-generic 버전을 설치했기 때문에 별도로 extra 버전은 남아있지 않습니다.

 

모든 삭제가 진행되면, 부트로더를 업데이트하시면 됩니다.

update-grub

root@localhost:/# update-grub
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-76-generic
Found initrd image: /boot/initrd.img-4.15.0-76-generic
done
root@localhost:/#

저는 root 계정이기 때문에 sudo 권한을 가지고 있습니다. 제가 별도로 명령어 앞에 sudo를 붙이지 않아도 root 계정이라는 것을 확인하시기 바랍니다.

kernel check

Comments