본 블로그는 로컬 환경에서 실시되었으며, wsl과 로컬 환경 동일합니다.
linux-6.17.6 버전을 기준으로 작성 되었으며, 모든 설치 과정은 동일하니 linux-6.17.6 부분만 각자 다운받은 버전으로 변경하면 됩니다.
본 블로그의 작업 디렉토리는 /usr/src/kernel 입니다.
qemu 설치
sudo apt install qemu-utils qemu-system-x86 qemu-kvm
이 명령어 한 줄이면 qemu 설치는 끝난다.
qemu를 실행하기 위해선 BusyBox를 빌드 해야한다.
위 링크에서 원하는 버전을 다운받자. ( 접속이 잘 안 되기에 무지
성 시도하다보면 언젠가 됩니다.)

중간의 BusyBox 1.37.0 버튼을 누르면 다운 받을 수 있다.
이어서 busybox를 빌드하는 과정은 다음과 같다.
cd /usr/src/kernel
sudo cp ~/Downloads/busybox-1.37.0.tar.bz2 ./
sudo tar -xvf ./busybox-1.37.0.tar.bz2
cd busybox-1.37.0
make menuconfig
menuconfig가 켜지면 아래 두가지 옵션을 확인한다.
- Settings → Build options → build static binary 선택
- Networking Utilities → inetd 선택 해제
- Networking Utilities → tc 선택 해제
방향키, 스페이스바, 엔터를 통해 내부에서 이동 및 선택할 수 있다.
이어서 의존성 설치 후 빌드를 진행한다.
sudo apt update
sudo apt install -y libncurses-dev libnl-3-dev libnl-genl-3-dev linux-headers-$(uname -r)
sudo make CONFIG_PREFIX=../result install

이런 출력이 나온다면 빌드에 성공한 것이다. 이어서 다음 명령어를 실행시켜 준다.
cd ../result/
mkdir var dev etc lib proc tmp sys
# init 파일 만들기
cat << 'EOF' > ./init
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devtmpfs devtmpfs /dev
exec 0</dev/console
exec 1>/dev/console
exec 2>/dev/console
echo "7 4 1 7" > /proc/sys/kernel/printk
cp /proc/kallsyms /tmp/kallsyms
setsid cttyhack setuidgid 1000 sh
umount /proc
umount /sys
poweroff -d 0 -f
EOF
chmod 755 ./init
find .| cpio -o --format=newc > ../rootfs.cpio
잘 실행되었다면 다음 명령어를 실행한다.
cd ../
# 압축 해제
mkdir rootfs
mv ./rootfs.cpio ./rootfs
cd ./rootfs
cpio -id -v < rootfs.cpio
#압축
find .| cpio -o --format=newc > ../rootfs.cpio
cd ../
이또한 잘 실행되었다면 바로 qemu가 정상 실행 되는지 확인 해보자
cd /usr/src/kernel
qemu-system-x86_64 \
-m 4G -smp 4,cores=4,threads=1 \
-kernel /usr/src/kernel/linux-6.17.6/arch/x86/boot/bzImage \
-initrd ./rootfs.cpio \
-append "root=/dev/ram rw console=ttyS0 oops=panic panic=1 quiet" \
-netdev user,id=t0, -device e1000,netdev=t0,id=nic0 \
-nographic \
-cpu host \
-enable-kvm \
-s

저런 라인이 뜬다면 잘 실행 된 것이다. exit를 입력해 종료하자
이상으로 qemu, busybox 빌드에 대해 알아보았다.
'환경 구축' 카테고리의 다른 글
| [리눅스 커널 취약점 분석] 리눅스 커널 퍼징을 위한 Syzkaller 빌드 (0) | 2025.11.01 |
|---|---|
| [리눅스 커널 취약점 분석] 리눅스 커널 퍼징용 커널 빌드 (0) | 2025.11.01 |
| [리눅스 커널 취약점 분석] 환경 구성, 커널 빌드 (4) | 2025.08.25 |