리눅스 커널 빌드하는법!

RoughBoy·2024년 4월 16일
0

IoT 백신

목록 보기
1/1
post-custom-banner

지역 도서관에서 흥미있는 책을 발견해서 시작하는 프로젝트

지난주부터 최근 일주일간 카페와 집을 드나들면서 하루에 몇시간씩 이 책을 읽으면서 공부를 시작했는데!
개발 모델 설정부터 UML까지 개발에 관해 상세하게 알려주면서 실제 개발을 위한 환경 설정을 위해 가상머신 설정과 커널 빌드하는 방법을 알려주는데, 2017년에 집필된 책이다 보니까 지금의 개발환경과는 다른면도 꽤나 있습니다.

그래서 혹시나 다른 분들이 이 책을 읽으면서 커널 빌드에 어려움을 겪으신다면 이 페이지를 통해 도움이 되셨으면 하는바람에 작성해봅니다.

먼저 책에서는 우분투 14.04.6v에서 리눅스 커널 4.2.0v를 사용하는데 이는 24년에서는 과거 버전이고 제가 했던 시행착오를 여러가지 소개해드리면서 제가 성공한 방법에 대해서 말해드리겠습니다.

  1. 우분투 22.04.3 리눅스 커널 6.5.0-27-generic 설치시도 커널 6.5

  2. 우분투 14.04.6 리눅스 커널 4.4.0 설치시도 커널 4.2.0

  3. 우분투 22.04.4 리눅스 커널 6.5.0 설치시도 커널 6.8.6

우와 같이 여러방법을 시도했으나 결국 3번 최신 우분투에서 최신 커널을 설치하는데 성공하였습니다.

책에서의 빌드 순서 (디렉토리 생성 및 이동은 생략)

  1. sudo apt-get install build-essential libssl-dev : 의존성 패키지 설치
  2. apt-get source linux-image-$(uname -r) : 해당 리눅스 커널 이미지 설치
  3. cp /boot/config-$(uname -r) .config : 설정 파일 복사
  4. make -j5 bzImage : 이미지 파일 생성
  5. make modules : 모듈 생성
  6. sudo make modules_install : 모듈 설치
  7. sudo make install : 커널 설치
  8. reboot : 재부팅으로 커널 설치 확인

저도 처음에는 위와 같은 방법으로 시도 했으나 커널 2. 이미지 설치에서 커널은 없고 패키지 설정만 있었고 kernel.org 에 들어가서 커널 파일을 다운로드 받아야 커널을 구하였고 설정 파일 복사후 4. 이미지 파일 생성부터 며칠간은 뜨는 error들과 맞서 싸우느라 헤맸었습니다.

에러들 해결한 빌드 순서

  1. sudo apt-get install build-essential libssl-dev libncurses-dev libelf-dev flex bison : 의존성 패키지 설치 <- 몇가지가 추가되었습니다.

  2. wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.8.6.tar.xz : 해당 리눅스 커널 다운로드

  3. tar -xvf linux-6.8.6.tar.xz : 해당 리눅스 커널 압축해제

  4. cd linux-6.8.6 : 해당 디렉토리로 이동

  5. cp /boot/config-$(uname -r) ./.config : 설정 파일 복사

  6. make menuconfig : 복사한 설정 파일을 적용할 커널에 맞게 설정

    위와 같이 화면에 뜨는데 load, save, exit를 통해 현재 커널에 적용해줍니다.
  7. .config 파일 수정
    CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem" -> CONFIG_SYSTEM_TRUSTED_KEYS = "" CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-certs.pem" -> CONFIG_SYSTEM_REVOCATION_KEYS=""
    두줄을 인파일검색을 통해 찾아준뒤 공백란으로 바꿔줍니다.

  8. make bzImage : 이미지 파일 생성

  9. make modules : 모듈 생성

  10. sudo make modules_install : 모듈 설치

  11. sudo make install : 커널 설치

  12. reboot : 재부팅으로 커널 설치 확인

이렇게 하면 커널은 무사히 컴파일 됩니다.

지금 생각해보면 여러가지 안됐던 이유들이 지금 제가 적으면서 생각해보니까 다 해결되었네요.

앞으로 모듈을 만들어서 추가하는게 목표인데 화이팅!

profile
The day⋯ is doomed⋯. Thanks to⋯ the Rowdyruff Boys⋯.
post-custom-banner

0개의 댓글