Busybox 기반 ARM Linux 커널 빌드 및 QEMU 실행 가이드
Source
Evernote/Technote scraps/Busybox가 들어간 Linux를 빌드하여 ARM QEMU에 올려보자!.md
Summary
이 문서는 ARM 아키텍처용 QEMU 환경에서 Busybox를 포함한 최소 Linux 시스템을 구축하고 실행하는 방법을 단계별로 설명합니다. 주요 과정은 QEMU 빌드, Linux 커널 설정 및 빌드(모듈 지원 비활성화, EABI 활성화), Busybox 크로스 컴파일 및 정적 링크, cpio를 이용한 루트 파일시스템(rootfs) 생성, 그리고 QEMU 명령어를 통한 시뮬레이션 실행입니다. 또한 /bin/sh 대신 /sbin/init을 사용하여 proc/sysfs 마운트 및 mdev 초기화를 수행하는 부트 프로세스 구성 방법도 포함합니다.
Key Points
- 준비물: QEMU, Linux Kernel, Busybox, ARM용 크로스 컴파일러(Sourcery CodeBench Lite)
- QEMU 빌드: 의존성 패키지 설치 후 configure 및 make 명령어로 빌드
- Linux 커널 빌드: versatile_defconfig 기반 설정, loadable module 지원 제거, ARM EABI 활성화 후 빌드
- Busybox 빌드: 정적 바이너리(static binary) 옵션 활성화, arm-none-linux-gnueabi- 프리픽스 설정 후 빌드 및 설치
- 루트 파일시스템 생성: Busybox 설치 디렉토리 내용을 cpio로 압축하여 rootfs.img.gz 생성
- QEMU 실행: versatilepb 머신 모델, 128M 메모리, 생성된 커널(zImage) 및 initrd(rootfs.img.gz)를 인자로 전달하여 실행
- 초기화 스크립트 구성: /sbin/init 실행 시 /etc/init.d/rcS를 통해 /proc, /sys 마운트 및 mdev 초기화 수행