스터디에서 이야기했던 대로 qemu를 이용하여 실습하는 방법을 소개합니다.
qemu는 Open Source Processor Emulator로서 다양한 종류의 프로세서를 Sofrware로 구현한 프로그램입니다.
Emulate 가능한 Processor는 x86, x86_64, ARM, SPARC, PowerPC 등이며 32비트, 64비트 모두 지원합니다.
qemu는 무료이며 http://www.qemu.org에서 최신 버젼을 다운 받을수 있습니다.
최신 버젼은 아직 사용해 보지 않았고 제가 사용하는 버젼은 0.10.4입니다.
이 버젼도 우리가 실습하는데는 아무런 문제가 없는듯 합니다.
파일을 첨부합니다.
실습 방법은 아주 간단합니다.
첨부 파일을 자신의 컴에 다운로드하고 압축을 해제합니다.
압축이 해제되면 qemu-0.10.4 폴더가 생성되며 해당 폴더에 qemu-x86_64.bat라는 파일이 존재합니다.
이 파일을 편집기로 열어서 맨 마지막 줄을 아래와 같이 수정합니다.
qemu-system-x86_64.exe -L . -m 128 -hda linux.img -soundhw sb16,es1370 -localtime -M pc
이 문장을
qemu-system-x86_64.exe -L . -m 64 -fda D:/64bitOS/Source/chap1/boot.bin -localtime -M pc
이렇게 수정합니다.
설명을 간단히 하면
qemu-system-x86_64.exe <== x86-64비트 프로세서 emulator를 실행하는 batch 파일(우리가 사용하는 대부분의 CPU는 64비트)
-L . <== BIOS, VGA BIOS가 존재하는 위치 지정 . (현재 디렉토리)
-m 64 <== 가상머신의 메모리 (64MB)
-fda D:/64bitOS/Source/chap1/boot.bin <== 플로피 디스크 사용하여 부팅할 이미지 파일 지정 (주의사항은 반드시 디렉토리 표시를 /로 해야한다. 내 PC는 D:/64bitOS/Source/chap1/에 boot.bin(1장에서 생성한 이미지 파일)이 존재함)
-localtime <= localtime에 real time clock을 설정
-M pc <== 가상머신을 일반 pc 환경으로 설정
저장후 qemu-x86_64.bat를 실행하면 성공한 경우 실행결과 파일의 이미지 참조.
모두 성공하시기를
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] | woos | 2016.04.09 | 2197 |
1485 | First.S, Second.S 분석한 자료 | 도영주 | 2013.08.03 | 1441 |
1484 | kernel 에서 실행 순서 관련 문서 | 도영주 | 2013.08.03 | 1880 |
1483 | 오늘 스터디 시간에 잠깐 찾은 second.S 분석 pdf [1] | 제한재 | 2013.07.27 | 1841 |
1482 | lilo 분석 참고 자료 | 시갈 | 2013.07.27 | 1463 |
1481 | 헷갈리는 주소, 포인터 연산에 대하여 정리( #, (), [] ) [2] | 시대유감 | 2013.07.20 | 3164 |
1480 | Register 관련 몇 가지 정리. | 도영주 | 2013.07.16 | 3244 |
1479 | 처음 어셈블리 해보시는데 할만하세요? [4] | 백창우 | 2013.07.08 | 1891 |
1478 | SVN 사용법 정리 [2] | 시대유감 | 2013.06.30 | 2135 |
1477 | 회식사진 투척합니다. [5] | 김택훈 | 2013.06.30 | 2291 |
1476 | 7장 소스1 | 시갈 | 2013.06.22 | 1415 |
1475 | 분석 관련 자료 [3] | 백창우 | 2013.06.15 | 1849 |
1474 | 리눅스 커널 분석 환경 [3] | 시대유감 | 2013.06.10 | 2023 |
1473 | 오늘 풀리지 않은 문제 관련 [1] | 이경욱 | 2013.06.02 | 3305 |
» | OS 커널의 구조와 원리 실습 방법 [1] | 시갈 | 2013.05.26 | 5696 |
1471 | 제안사항 입니다. [2] | 강정근 | 2013.05.07 | 3193 |
1470 | ELF 파일 포맷 정리 [6] | 도영주 | 2013.05.04 | 11544 |
1469 | TOZ 신청방법 아시는분?! [4] | 강정근 | 2013.04.29 | 2724 |
1468 | 안녕하세요. 빠른진행을 위해 어플로 접근성을 높여보아요^^ [1] | Napoleon | 2013.04.22 | 3583 |
1467 | 교제 및 장소(투표 종료) [14] | 조유준 | 2013.04.22 | 3838 |
1466 | 반갑습니다. 이성미입니다. [1] | 이성미 | 2013.04.22 | 3396 |
.
QEMU 사용법을 잘 알려주셔서 감사합니다.
linux에서 qemu를 사용할 때, chap2 부분이 제대로 나오질 않아 조금 고생했었는데, 관련된 내용을 링크합니다.
chap2에서 boot.bin과 kernel.bin을 nasm으로 compile하고 2개의 binary를 합해야 하는데,
관련 명령어가 어떤 것인지 몰라 검색을 해보니, 그냥 cat으로 하면 되더군요.
$cat boot.bin kernel.bin > kernel.img
이렇게 해서 qemu로 돌려보면 We are in the Kernel이라는 message가 제대로 나오지 않더라구요.
그래서 또 검색을 해보니, INT 0x13 BIOS 명령어를 사용하기 위해서는 fdd size가 1.44MB로 정렬되어 있어야 한다고 하네요.그래서 kernel.asm 맨 마지막 줄에 TIME 1474048-($-$$) db 0 명령을 넣어 fdd size를 1.44MB로 정렬되게 하면 문제가 해결되어 정상적인 동작결과가 나오는 것을 확인할 수 있었습니다. 관련된 링크는 밑에 첨부합니다.
http://anster.egloos.com/v/62843