ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CentOS 7 Kernel update
    Linux 2020. 2. 21. 16:53

    현재 가장 많이 사용되는 Linux Package 중 하나가 CentOS일 것 입니다.

    CentOS 7.x 버전이 아직도 많이 사용되고 있습니다.

    그런데 CentOS 7.x 의 경우 Linux Kerne Version이 3.10입니다.

    참고로 최신 Linux Kernel Version은 5.6(2020년 2월 현재 기준)이며 Ubuntu 16.04의 경우 4.x 입니다.

    상대적으로 CentOS의 Kernel Version이 낮은 것을 알 수 있습니다.

    그런데 3.x의 Kernel 버전이 Memory 처리에 문제가 있는 것 같습니다. 딥러닝 관련되어 큰 작업을 실행할 경우 문제가 될 수 있으므로 Kernel을 4.x 이상으로 업데이트하라는 문서가 있습니다.

    (본 것 같은데 찾지를 못하겠네요, 찾는대로 링크 올리겠습니다.)

    OS가 CentOS 7인 Host에서 Docker Container로 Ubuntu를 사용하는 경우 Kernel은 Host의 Kernel을 사용하게 되므로 Container가 Ubuntu OS여도 Kernel Version이 3.10이 됩니다. 그래서 Ubuntu Container에서 TensorFlow를 사용하는 경우에도 Kernel Update가 필요합니다.

    CentOS의 Kernel Version Update에 대하여 알아보겠습니다.

    (아래 명령은 root 권한으로 실행하는 것을 전제로 합니다. root 사용자로 실행하거나 sudo를 사용하세요.)

     

    Version 확인

    # uname -msr

    -> Linux 3.10.0-957.el7.x86_64 x86_64

    참고로 CentOS Package Version 확인

    # cat /etc/redhat-release && cat /etc/os-release

     

    elrepo 저장소를 이용한 Kernel Update

    Kernel을 Update하는 방법은 여러 가지가 있지만 가장 편리한 방법은 elrepo 저장소를 이용하는 방법입니다. 여기서는 이 방법만을 설명합니다. 

    elrepo 는 Enterprise Linux 용 커뮤니티 기반 저장소이며, RHEL(RedHat Enterprise Linux) 및 이를 기반으로 꾸며진 기타 배포판들(Fedora, CentOS, Scientific)에 대한 지원을 제공하는 저장소입니다.

     

    1) elrepo 저장소의 커널을 이용하여 업그레이드하기 위한 사전 작업

    yum update를 할 때 기본적으로 OS Package의 마이너 업그레이드를 합니다. 즉 CentOS 7.6에서 yum update를 하면 CentOS 7.7로 update됩니다. 이 업데이트를 막으려면 /etc/yum.conf에 아래와 같은 줄을 추가합니다.

    /etc/yum.conf 파일 수정 : 아래 줄 추가
    exclude=centos-release* redhat-release*

    # yum -y update
    # yum install yum-plugin-fastestmirror (업데이트와 설치를 빠르게 할 수 있도록 입력)

    2) 인증 키 설치

    * GPG-KEY 는 GNU Privacy Guard-KEY : 배포되고 있는 패키지가 안전한 패키지가 맞는지 확인하는 일종의 인증키랍니다.
    # rpm —import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

    3) elrepo 저장소 추가(최신 URL은 elrepo.org에서 확인)

    # yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
    # yum repolist (정상적으로 저장소가 추가 되었는지 확인)
    4) 가능한 업데이트 보기 : 

    # repoquery --enablerepo=elrepo-kernel -qi kernel (공식 커널 버전)
    # repoquery --enablerepo=elrepo-kernel -qi kernel-lt (lt; long term 커널 버전)
    # repoquery --enablerepo=elrepo-kernel -qi kernel-ml (ml; maine line, 최신 커널 버전)

    (상세 보기)
    # yum list available --disablerepo='*' --enablerepo=elrepo-kernel

    참고 : 2020/02/21 현재 버전
    공식 커널(CentOS 7.5) : 3.10.0
    lt(long term) : 4.4.214 (현재 4.4 버전을 설치하였을 때 Asus Board의 네트워크 포트가 정상 작동하지 않는다.)
    ml(main line) : 5.5.5

    5) 새로운 커널 설치를 : 아래 명령 중 선택하여 설치(예, lt로 업데이트)

    # yum --enablerepo=elrepo-kernel install kernel-lt (필수 : 최신 버전(4.X.X lt)을 설치)

    # yum --enablerepo=elrepo-kernel install kernel-ml (필수 : 최신 버전(5.X.X lt)을 설치)

    # yum --enablerepo=elrepo-kernel install kernel-lt-devel.x86_64 (선택 : devel version 설치)

    # yum --enablerepo=elrepo-kernel install kernel-lt-headers.x86_64 (선택 : header file 설치)

    (확인)
    # ls -l /usr/src/kernels/$(uname -r)

    6) grub1 부트 로더 설정(부팅할 때 업데이트 된 커널이 자동으로 선택되도록 변경)

    # grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2 (부팅 가능한 커널 목록이 나온다.) 
    # /boot/grub2/grub.cfg 파일이 없을경우 경로를 /boot/efi/EFI/centos/grub.cfg로 진행
    # grub2-set-default "CentOS Linux (4.4.214-1.el7.elrepo.x86_64) 7 (Core)" (디폴트 부팅 커널, 다음 줄 반드시 실행) 
    # grub2-mkconfig -o /boot/grub2/grub.cfg

    # grub2-editenv list (확인)
    # grub2-set-default "CentOS Linux (4.4.214-1.el7.elrepo.x86_64) 7 (Core)" (디폴트 부팅 커널, 다음 줄 반드시 실행) 
    # grub2-mkconfig -o /boot/grub2/grub.cfg

    7)yum update할 때 kernel은 업데이트되지 않게 하기.

    # yum update --exclude=kernel*
    vi /etc/yum.conf : 한 줄 추가
    exclude=kernel*
    exclude=kernel* centos-release* redhat-release*

    # reboot

    'Linux' 카테고리의 다른 글

    Ubuntu에 chrome 설치  (0) 2019.11.05
    S2600WFT 서버장비 사양  (0) 2019.08.07
    add user  (0) 2019.06.19

    댓글

Starcell Inc. all right reserved