Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Shared Folder
- fscanf
- 속도저하
- 멀티프로세싱
- sscanf
- 문자형 디바이스 파일
- makefile
- fprintf
- ubuntu
- context switch
- interrupt handler
- memcmp
- DMA
- activities
- sprintf
- context
- HDR
- gparted
- pagefile.sys
- 프레임버퍼
- 소캣
- 환경 변수
- intents
- interrupt context
- layouts
- 디스크립터
- 디스크 축소
- 젠킨스
- jenkins
- usb2.0
Archives
- Today
- Total
do{학습}while
Kernel) 디버깅을 연습을 위한 환경 셋팅(x86 환경) 본문
QEMU Cheat Sheet (x86_64, 커널 디버깅 중심)
qemu 가상머신에서 컴파일된 커널이미지를 실행 시키는 명령어입니다.
rootfs 없이 커널만을 실행이 가능합니다.
qemu-system-x86_64 \
-kernel arch/x86/boot/bzImage \
-append "console=ttyS0 nokaslr" \
-nographic
-s -S
핵심 옵션
| 옵션 | 설명 |
| -kernel bzImage | 부팅할 커널 이미지 (압축된 bzImage) 지정 |
| -append "..." | 커널 부트 인자 전달 (console, init, nokaslr 등) |
| -nographic | VGA 끄고 시리얼로 모든 출력 (터미널 기반) |
| -s | GDB 서버 포트 1234 열기 (= -gdb tcp::1234) |
| -S | 부팅 직후 CPU 정지 (GDB 붙기 전까지 실행 멈춤) |
CPU / 메모리 관련
| 옵션 | 설명 |
| -smp N | CPU 코어 수 설정 (-smp 4) |
| -m SIZE | 메모리 용량 설정 (-m 1024 → 1GB) |
| -cpu qemu64 | CPU 모델 선택 (host, qemu64, max 등) |
루트 파일 시스템 (옵션으로 연결)
| 옵션 | 설명 |
| -initrd rootfs.cpio | initramfs 이미지 지정 |
| -hda rootfs.img | 하드디스크 이미지 연결 |
| `-drive file=img,format=raw | qcow2` |
디버깅 & 개발 관련
| 옵션 | 설명 |
| -gdb tcp::1234 | GDB 서버를 1234 포트에 염 (=-s) |
| -no-reboot | panic 후 자동 리부트 방지 (로그 확인에 유용) |
| -serial mon:stdio | 시리얼 포트를 현재 터미널에 연결 |
| -d int,cpu_reset | 내부 디버그 로그 활성화 |
| -trace events=file | 특정 QEMU trace 이벤트 추적 |
콘솔 / 그래픽 관련
| 옵션 | 설명 |
| -display none | 그래픽 디스플레이 비활성화 |
| -serial stdio | 시리얼 출력을 현재 터미널로 연결 |
| -monitor none | QEMU 모니터 비활성화 |
예시: GDB 연동용 QEMU 실행
qemu-system-x86_64 \
-kernel arch/x86/boot/bzImage \
-append "console=ttyS0 nokaslr" \
-nographic \
-s -S \
-m 512 \
-smp 2
추천 부트 인자 (-append)
| 인자 | 설명 |
| console=ttyS0 | 시리얼 콘솔 사용 (nographic 출력에 필수) |
| init=/bin/sh | busybox init 실행 테스트용 |
| nokaslr | 주소 랜덤화 끄기 (GDB 디버깅 용이) |
| root=/dev/ram0 | 루트파일 시스템 위치 지정 (initramfs 사용 시) |
'Linux > Kernel' 카테고리의 다른 글
| Kernel) QEMU와 Buildroot로 ftrace 실습 환경 만들기 (1) | 2025.05.24 |
|---|---|
| Kernel) 커널 동기화 (0) | 2025.05.15 |
| Kernel) Interrupt, Interrupt handler, Interrupt context (0) | 2025.05.15 |
| Kernel) 프로세스 VS 스레드 (0) | 2025.05.14 |
| Kernel) Context와 Context Switch란 무엇인가 (0) | 2025.05.14 |