[Linux] 우분투에서 리눅스 커널 컴파일, 분석하기!
🖥️

[Linux] 우분투에서 리눅스 커널 컴파일, 분석하기!

카테고리
📖 Docs
작성자
박용성박용성
작성일
2024년 06월 02일
태그
C
Linux
Slug
class-1
floatFirstTOC: right

🖥️ 시작하며

지금 학교에서 start_kernel 스터디를 진행하고 있는데, 커널에 대한 궁금증이 늘어나기도 했고 직접 실습할 수 있는 환경이 있으면 좋겠다 싶어 컴파일을 하게 되었습니다.

1. Ubuntu 설치

저는 Parallels로 진행했습니다.
기본 작업을 진행하겠습니다.
# 업데이트 sudo apt-get update && upgrade # 커널 버전 확인 uname -a
# 사용 가능한 헤더 파일 확인 sudo apt-cache search linux-headers-`uname -r` # 위에서 출력된 버전으로 설치 sudo apt-get install kmod linux-headers-5.15.0-76-generic

2. 커널 다운로드

해당 사이트에서 원하는 버전의 커널을 다운습니다. 지금 스터디에서는 6.8.1 버전으로 진행하고 있기에 해당 버전을 다운받았습니다.
cd /usr/src/ # 다운로드 sudo wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.8.1.tar.gz # 압축 해제 sudo tar -xzvf linux-6.8.1.tar.gz # config 파일 복사 sudo cp linux-headers-5.15.0-76-generic/.config linux-6.8.1
 

🔍 config 수정 (ssh로 수정하면 쉽습니다!)

ssh에서 권한 오류가 날 시, sudo chown -R 계정명 . 하면 됩니다.
cd linux-6.8.1/ # config 파일 수정 sudo nano .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=""
 

🔍 필요 패키지 설치

sudo apt install build-essential libncurses5 libncurses5-dev bin86 kernel-package libssl-dev bison flex libelf-dev dwarves #필요 패키지 설치 # 이후 재부팅 sudo reboot
 

🔍 menuconfig 생성

cd /usr/src/linux-6.8.1/ sudo make menuconfig # 순서대로 load -> ok -> exit -> yes로 하면 됩니다.
 

(선택사항) 커널 이름 변경

sudo nano Makefile
notion image

3. 커널 컴파일

🔍 커널 수 확인

# 여기서 출력된 코어 수를 아래에서 사용 grep -c processor /proc/cpuinfo
sudo make -j2 # 코어 수를 뒤에 써주시면 됩니다. 저는 2가 나와서.. sudo make modules_install sudo make install
 

4. kernel 변경

🔍 Boot kernel 순서 확인

awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg
parallels@ubuntu-linux-22-04-02-desktop$ awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg Ubuntu ---->> 1 Ubuntu, with Linux 5.4.214.test ---->> 1>0 Ubuntu, with Linux 5.4.214.test (recovery mode) ---->> 1>1 Ubuntu, with Linux 5.4.0-162-generic ---->> 1>2 Ubuntu, with Linux 5.4.0-162-generic (recovery mode) ---->> 1>3
# grub 파일 수정 sudo nano /etc/default/grub
 
notion image
sudo update-grub sudo reboot

5. kernel 변경 확인

uname -a
 
 
하지만 계속 오류가 나서 실패!!!!!!! 왜 실패하는건지..
notion image
 

🗂️ 출처

 
 

댓글

guest