Centos Ubuntu 18.04,
1. 현재 사용하는 커널의 버전 확인
$ uname -r
2. www.kernel.org/ 통해 커널 다운로드
만약 원하는 커널 버젼이 5.4.84일때
$ cd /usr/src
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.84.tar.xz
$ tar xz -d linux-5.4.84.tar.xz
$ tar xf linux-5.4.84.tar
$ cd linux-5.4.84
3. 컴파일에 필요한 패키지 설치
$ apt install build-essential libncurses5 libncurses5-dev bin86 kernel-package libssl-dev bison flex libelf-dev
4. config 파일 수정
사용하는 시스템에 설치되어있는 하드웨어, 소프트웨어, 네트워크 특성에 맞게 커널을 구성하는 Configure 파일.
보통 자신이 사용하고있는 config 파일을 그대로 사용한다.
# ls /boot/config*
사용하게되면 현재 설치되었던, 설치된 커널 버전마다의 config 파일이 존재함을 알 수있다.
따라서 현재 커널의 구성형식을 컴파일할 커널의 폴더로 복사한다.
$ cp /boot/config-4.14.78 ./.config
만약 커널구성에 대해 수정사항이 있다면
# make menuconfig
명령어를 사용해 구성을 수정할 수있다.
5. 커널 컴파일
$ make-kpkg --J(Core개수) --initrd --revision=1.0 kernel_image
-J 옵션은 멀티 스레드를 사용해 병렬적으로 컴파일 한다는 뜻이다. 따라서 싱글 스레드비해 속도가 빠르다.
만약 자신이 사용하는 시스템의 CPU 스레드 개수를 모른다면
$ grep -c processor /proc/cpuinfo
사용하면 된다.
revision 은 차후 동일한 커널을 재 컴파일할때 2.0 3.0등 원하는 버전으로 수전해주면 된다.
컴파일이 완료되면 현재 디렉토리의 상위 폴더에 .deb 파일이 생성된다.
# cd ..
# dpkg -i kernel_image-version.deb
통해서 새로운 커널 이미지를 설치하면 된다.
$ reboot
리부팅해주시고 uname -r을 사용해 커널 버전이 바뀌었는지 확인하면 끝입니다.
6. GRUB Configuration
만약 재부팅후 커널 버전이 바뀌지 않거나, 버전을 선택하는 GRUB이 나타나지 않는다면
$ vi /etc/default/grub
를 사용해 GRUB config를 수정한다.
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUOT=0
위와 같은부분을 앞에 #을 추가하여 무시하도록 설정한다.
모두 수정한 후 GRUB update를 한다.
$ update-grub
7. 만약 커널과 커널 모듈을 따로 컴파일 할때
$ make -j(Core 개수)
$ make modules_install
$ make install
$ reboot
단순 커널파일만 재 컴파일 하고, 수정하고 싶을때
$ make bzImage -j(Core 개수)
$ cp archcp arch/x86/boot/bzImage /boot/vmlinuz-(kernel_version)
$ reboot
'개인 공부 > 리눅스' 카테고리의 다른 글
Centos 7, gcc 버전 업데이트 (0) | 2021.03.16 |
---|---|
Centos 7, SPEC2006 설치 - 1 (0) | 2021.03.11 |
Ubuntu 라이브러리 생성 (0) | 2021.01.07 |
Ubuntu 시스템콜 추가 (2) | 2021.01.07 |
커널 컴파일(CentOS) (0) | 2020.12.17 |