Embedded Linux

커널 컴파일 하기

작성자 임베디드코리아 작성일24-11-29 22:25 조회585회 댓글0건
<* 커널 컴파일 하기 *>
    우분투 환경에서 리눅스 커널 컴파일과 시스템 호출 구현을 해보도록 한다 .

1) 커널 소스 다운로드
    Firefox를 켜고  http://kernel.org 이곳에 들어가서 커널 소스를 다운받는다.
    이 사이트에서 받은 소스를 내 컴퓨터에 설치할 수 있게 만드는 과정을 커널 컴파일 이라고 한다.
    ►  [tarball]을 눌러 tar.xz 파일로 다운받는다.
    4.19.x 버전을 다운받았는데, 버전은 크게 상관없기 때문에 원하는 버전으로 다운받으면 된다.
      $ cd ~
      $ mkdir  Kernel_Work
      $ cd  Kernel_Work
      $ w get    https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.14.9.tar.xz

2) 필요 패키지 설치
    - 다음 명령어를 통해 커널 컴파일시 필요한 주요 패키지를 설치할 수 있다.

      $ sudo apt-get  update
      $ sudo apt-get  install  build-essential libncurses5 libncurses5-dev bin86 kernel-package libssl-dev bison flex libelf-dev

3)  커널 압축 해제
      $ cd  ~/Kernel_Work
      $ sudo tar -xvf linux-4.19.282.tar.xz -C/usr/src

4) 커널 컴파일 환견 설정
    $ cd  /usr/src/linux-4.19.0
    $ make menuconfig
        ► 메뉴를 보면서 환경 설정을 한다.
        ► 좌우방향키로 움직이면 된다.
        ► Load 클릭 후 .config 파일을 불러온다. 후에 Save 누르고 저장 후 Exit로 나간다.
        ►  "End of the configuration" 문구가 확인되면 설정이 잘 적용된 것이다.
    -------------------------------------------------------------------
      --> 현재 커널의 config 파일 복사
    ► 현재 커널의 configuration 파일을 복사하면 환경 설정을 하지 않아도 된다.
    ► 먼저, 현재 커널의 버전을 'uname -a' 명령어로 확인한 다음 현재 커널의 configuration 파일을 복사한다.
        $ cd  /usr/src/linux-4.19.0
        $ sudo cp  /boot/config-5.15.0-71-generic    ./.config
      ----------------------------------------------------------------------------------------------------------------------------------

5)  커널 컴파일
      • 커널 컴파일은 시간이 많이 걸리는 작업이다.
          - 짧게 걸리면 1시간 안쪽이고 오래걸리면 수시간이 소요된다.

    ①  먼저 CPU 코어 개수를 확인해준다. 
          $ grep  -c  processor  /proc/cpuinfo
            코어 개수가 출력된다.

    ②  커널 컴파일을 할 때 사용하는 명령어는 아래와 같이 크게 2가지가 있다.
            $ sudo make-kpkg -j* --initrd --revision=1.0 kernel_image    # 1번
            $ sudo make -j*                                                                        # 2번 -*에 코어 개수를 입력하면 된다. (나의 경우 4코어이므로 -j4)

6) 커널 설치
    커널 컴파일 시 어떤 명령어를 사용했냐에 따라 커널 설치 시 사용하는 명령어도 달라진다.
      "$ sudo make-kpkg -j* --initrd --revision=1.0 kernel_image"  사용했을 시
      $ sudo dpkg -i 커널이미지파일명

      "$ sudo make -j*"  사용했을 시
      $ sudo make modules_install install

7) GRUB설정을 변경
    $ sudo vim /etc/default/grub
        GRUB_TIMEOUT_STYLE=menu # 수정
        GRUB_TIMEOUT=10        # 수정
          GRUB_TERMINAL=console  # 추가

      ► 변경 내용 적용 후 재시작 한다.
          $ sudo update-grub