안녕하세요.
제 블로그에 유입량이 가장 많은 포스팅이 리눅스 커널 컴파일 (http://harryp.tistory.com/9 http://harryp.tistory.com/839) 인데요.
둘 다 우분투에서 커널 컴파일 한 내용이라...
이번 포스팅에서는 페도라, CentOS 등의 레드햇 계열에서 커널 컴파일 하는 방법을 적어 볼까 합니다.
기본적인 내용은 위에 링크한 이전 커널컴파일 포스팅을 참조하시면 될 것 같습니다.
필수 설치 패키지, 마지막에 빌드 방법 들만 다르고 우분투와 거의 유사합니다.
* 캡쳐 화면은 우분투 것을 그대로 사용하였습니다.
* CentOS 7 기준으로 작성하였습니다.
1. 현재 커널 버전 확인
# uname -r
2. 커널 소스 다운로드
커널 소스는 http://kernel.org 에서 받으시면 됩니다.
3. 필수 패키지 설치
다음 명령어를 이용해 필수 패키지 들을 설치해 줍니다.
# sudo yum install ncurses-devel make gcc bc openssl-devel elfutils-libelf-devel rpm-build
4. 다운로드 받은 커널 소스 이동 및 압축 해제
다운로드 받은 커널 소스를 '/usr/src/kernels' 디렉토리로 이동시켜 줍니다.
그리고 해당 디렉토리로 이동하여 압축을 풀어 줍니다.
# sudo mv 커널소스파일명 /usr/src/kernels
# cd /usr/src/kernels
# sudo tar xz -d 커널소스파일명.tar.xz
# sudo tar xf 커널소스파일명.tar
# cd 커널소스디렉토리
5. 현재 커널의 config 파일 복사
현재 커널의 configuration현재 커널의 configuration 파일을 복사 합니다.
현재 커널 설정을 그대로 가져갈 경우 별다른 수정 없이 사용할 수 있습니다.
먼저 현재 커널의 버전을 'uname -a' 명령어로 확인합니다.
그리고 현재 커널의 configuration 파일을 복사합니다.
파일 경로 및 파일 명은
/boot/config-현재커널명
입니다.
커널 소스 디렉토리에 '.config' 라는 이름의 파일로 복사해 줍니다.
# sudo cp /boot/config-현재커널명 ./.config
현재 커널 버전이 4.15.0-36-generic일 경우,
# sudo cp /boot/config-4.15.0-36-generic ./.config
명령어를 사용하였습니다.
(원본 파일명을 치실 때 'tab' 키를 활용하시면 좀 더 편하게 사용하실 수 있습니다.
6. 커널 컴파일 (커널 설치 이미지 생성)
이제 커널 컴파일을 하여 설치 이미지를 생성하면 됩니다.
빠른 빌드를 위해 CPU 코어 개수를 확인 합니다.
# grep -c processor /proc/cpuinfo
해당 명령어를 입력하시면 코어 개수가 출력 됩니다.
그리고 다음 명령어로 커널 컴파일을 진행 합니다.
# sudo make -j CPU개수 rpm-pkg
-j 옵션은 멀티 코어 옵션으로 여러 개의 cpu 코어를 사용해서 컴파일을 빠르게 해줍니다.
CPU 코어 개수가 4개라면
sudo make -j 8 rpm-pkg
를 입력하시면 됩니다.
컴파일이 정상적으로 완료 된다면
홈 디렉토리의 rpmbuild/RPMS/x86_64 디렉토리에 rpm 이미지가 생성됩니다.
7. 새로운 커널 설치
커널 이미지가 생성된 위치로 이동합니다.
그리고 해당 디렉토리에 생성된 커널 rpm 패키지를 설치 합니다.
# cd ~/rpmbuild/RPMS/x86_64
# yum install ./커널설치패키지명.rpm
보통 커널 이미지는 일반커널, header, devel (개발자용) 세개가 생성 됩니다.
kernel-커널버전명-플랫폼.rpm (kernel-4.14.10.x86_64.rpm 등의 이름) 패키지를 설치해 주시면 됩니다.
8. 새로 설치 된 커널로 부팅
새로 설치 된 커널로 부팅하여 uname -r 명령어를 사용하시면 새로운 커널로 부팅이 된 것을 확인하실 수 있습니다.
만약 default 커널을 변경하고 싶으시면 grub 설정을 변경하시면 됩니다.
https://harryp.tistory.com/752 포스팅의 제일 마지막 부분을 확인해 주세요.
'Computer System > Linux' 카테고리의 다른 글
[Linux] rpm 명령어 주요 옵션 정리 (0) | 2020.08.04 |
---|---|
[Linux] 리눅스 쉘 예약 변수 (Reserved Variables, 예약 환경 변수) (0) | 2020.06.16 |
[Linux] 리눅스 CLI 환경에서 네트워크 인터페이스 설정하기 (network-scripts, NIC 설정) (0) | 2019.07.01 |
[Linux] 우분투 deb 패키지, CentOS rpm 패키지 다운로드 (데비안, 레드햇 패키지 다운로드, 의존성 패키지 다운로드) (4) | 2019.05.02 |
[Ubuntu] 리눅스 (우분투) 커널 컴파일 (우분투 18.04, 4.20 커널) (60) | 2019.01.13 |