본 블로그는 로컬 환경에서 실시되었으며, wsl과 로컬 환경 동일합니다.
linux-6.17.6 버전을 기준으로 작성 되었으며, 모든 설치 과정은 동일하니 linux-6.17.6 부분만 각자 다운받은 버전으로 변경하면 됩니다.
먼저 아래 링크에서 커널 소스를 다운 받는다.
The Linux Kernel Archives
kernel.org
다운을 다 받고, 터미널에서 다음 명령어를 실행 시킨다.
sudo mkdir /usr/src/kernel
cd /usr/src/kernel
sudo cp ~/Downloads/linux-linux-6.17.6.tar.xz ./
/usr/src/kernel 경로가 작업 디렉토리가 될 것이다.
이어서 커널 소스가 복사 되었다면 다음 명령어를 실행시킨다.
# 이후부터 작업 편의성을 위해 root 계정 접속
sudo su
tar -xvf linux-6.17.6.tar.xz
cp ./linux-6.17
다음으로 의존성 관련 설치를 진행한다.
sudo apt update
sudo apt install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev dwarves libdw-dev libdwarf-dev zlib1g-dev libiberty-dev bc fakeroot cpio kmod rsync curl clang llvm lld gawk
의존성 설치 완료 후 퍼징에 필요한 옵션 등을 만져준다.
make menuconfig
# 만약 오류나면 화면을 키우고, 뭔 퍼런 창 뜨면 ESC 두번 입력
# 다음 빌트인 방법으로 ./config 파일에 값 입력
# 퍼징/보안 서명 관련 설정
scripts/config --disable SYSTEM_TRUSTED_KEYS
scripts/config --disable SYSTEM_REVOCATION_KEYS
scripts/config --disable SYSTEM_BLACKLIST_KEYRING
scripts/config --set-str SYSTEM_BLACKLIST_HASH_LIST ""
# KCOV (커버리지 수집)
scripts/config --enable KCOV
scripts/config --enable KCOV_INSTRUMENT_ALL
scripts/config --enable KCOV_ENABLE_COMPARISONS
# KASAN (Heap overflow 등 탐지)
scripts/config --enable KASAN
scripts/config --set-str KASAN_MODE "inline"
# KMSAN (Uninitialized memory 탐지)
scripts/config --enable KMSAN
scripts/config --enable KMSAN_KCOV
# UBSAN (Undefined behavior 탐지)
scripts/config --enable UBSAN
scripts/config --enable UBSAN_SANITIZE_ALL
# Lockdep (Lock debugging)
scripts/config --enable PROVE_LOCKING
scripts/config --enable DEBUG_LOCK_ALLOC
scripts/config --enable LOCKDEP
# Debug info (syzkaller용 커버리지 심볼 필요)
scripts/config --enable DEBUG_INFO
scripts/config --enable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
scripts/config --enable DEBUG_KERNEL
scripts/config --enable DEBUG_FS
scripts/config --enable GDB_SCRIPTS
# 기타 빌드 관련 최적화 옵션
scripts/config --disable CONFIG_DEBUG_INFO_REDUCED
scripts/config --disable CONFIG_LTO_CLANG
scripts/config --disable CONFIG_STACK_VALIDATION
scripts/config --enable CONFIG_CONFIGFS_FS
#################################################
# 선택사항 : 퍼징 대상 모듈 선택
scripts/config --module DRIVERS_MISC
scripts/config --module DRIVERS_INPUT
scripts/config --module DRIVERS_NET
scripts/config --module DRIVERS_USB
scripts/config --module DRIVERS_BLOCK
scripts/config --module DRIVERS_CHAR
scripts/config --module FILE_SYSTEMS
scripts/config --module NETFILTER
#################################################
# 설정 반영
make olddefconfig
설정 반영까지 완료 후 빌드를 진행한다.
make -j$(nproc)
이 과정에서 적으면 10분 내외, 길면 1시간도 걸린다. 오류가 뜨면 make -j$(nproc)를 다시 입력해서 뜨는 로그 그대로 복사해서 GPT랑 오붓한 데이트 하면 해결 될겁니다.

위와 같은 Kernel: arch/x86/boot/bzImage is ready 문구가 나온다면 성공한 것이다.
이어서 모듈을 설치 하도록 하겠다.
make modules
sudo make modules_install
sudo make install

이렇게 done가 나오면 잘 설치 된 것이다.
이제 ls /boot/ 해보면

다음과 같이 vmlinuz-6.17.6가 존재 한다는 것을 알 수 있다. 잘 빌드가 된 것이다. 이제 이 커널로 부팅이 가능하다.
'환경 구축' 카테고리의 다른 글
| [리눅스 커널 취약점 분석] 리눅스 커널 퍼징을 위한 Syzkaller 빌드 (0) | 2025.11.01 |
|---|---|
| [리눅스 커널 취약점 분석] 리눅스 커널 퍼징을 위한 qemu, BusyBox 빌드 (0) | 2025.11.01 |
| [리눅스 커널 취약점 분석] 환경 구성, 커널 빌드 (4) | 2025.08.25 |