최신 커널 소스 코드 받기

최신 커널 소스 코드 받기

디버그 모드에서 Linux 커널 버전 3.10.107 및 4.13.8을 빌드해 보았습니다. 커널을 빌드하기 위해 다음 단계를 사용했습니다.

호스트 시스템에는 Ubuntu 16.04 운영 체제가 있으며 디버그 정보를 사용하여 커널을 최신 버전(4.13.8)으로 업데이트하려고 시도합니다.

최신 커널 소스 코드 받기

wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.13.8.tar.xz
mkdir linux-4.13.8 && tar xvf linux-4.13.8.tar.xz -C $(pwd)/linux-4.13.8/
cd linux-4.13.8

호스트 Linux에서 .config 복사

cp /boot/config-`uname -r`* .config

디버그 모드에서 커널을 빌드하려면 다음 옵션을 활성화하십시오.

gedit .config
CONFIG_DEBUG_KERNEL=y
CONFIG_FRAME_POINTER=y
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_DEBUG_INFO=y

menuconfig의 GUI 메뉴를 확인했습니다.

make menuconfig

커널 해킹 옵션(커널 디버깅, 커널 디버그 메시지 컴파일, Printk 옵션)이 활성화되어 있으며 기본 디버그 메시지 및 콘솔 수준은 7입니다.

make 명령이 실행되었습니다. 커널 빌드가 성공했습니다.

-j4를 만드세요

커널 설치

sudo make modules_install install 

업데이트된 Grub2

sudo update-grub2

운영 체제를 다시 시작하십시오.

reboot

OS가 최신 커널 4.13.8로 업데이트되어 제대로 실행되지만 디버그 정보와 printk 출력이 dmesg 콘솔 출력 및 로그 파일(예: var/log/kern.log, dmesg, syslog)에 표시되지 않습니다.

또한 gdb를 사용하여 커널 이미지를 디버깅하려고 시도했는데 (디버그 기호를 찾을 수 없음) 표시되었습니다.

커널 디버깅을 도와주세요. 내 목적은 시스템 호출, 트랩, 사용자 공간에서 커널 공간으로의 전환, 메모리 관리를 세부적으로 디버그하고 분석하는 것입니다. (strace 출력보다 더 많은 디버깅 정보를 기대합니다)

관련 정보