문제

나는 프로그래밍 과제를 좋아하고 커널을 작성하는 것은 프로그래밍 과제 인 것 같습니다.

불행히도, 커널은 기본적으로 운영 체제의 핵심이기 때문에 테스트하기가 어려우므로 운영 체제 위에서 쉽게 실행할 수 없습니다.

그러나 컴퓨터 하드웨어를 모방 할 수있는 가상 머신이라는 응용 프로그램에 대해 알고 있습니다.

가상 머신을 사용하여 커널 (C+어셈블리)을 개발하고 테스트하는 가장 쉬운/가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

Bochs는 애완 동물 OS에 무언가가 끔찍하게 잘못되었을 때를 알려주는 데 더 나은 것 같습니다. 나는 범용 테스트에 virtualpc를 사용하고 상황이 어두워 질 때 Bochs를 사용합니다.

또한 2 분마다 OS를 부팅 할 가능성이 높으므로 가상 PC에서 부팅 이미지를 빌드하고 발사하는 일종의 자동화 된 방법을 갖추는 데 도움이됩니다.

루트에서 kernel.bin을 부팅하기 위해 필요한 모든 것들이있는 그루브 부츠 플로피 이미지를 만들었습니다. 배치 파일을 사용 하여이 파일을 가상 프로젝트 디렉토리에 복사합니다. 지방 이미지 생성기 내 커널을 이미지에 복사합니다. 그런 다음 VirtualPC 프로젝트를 시작하십시오. 볼라!

배치 파일에서 발췌 :

COPY Images\Base.vfd Images\Boot.vfd /Y
fat_imgen.exe modify Images\Boot.vfd -f Source\Bin\KERNEL.BIN
COPY Images\Boot.vfd Emulators\VirtualPC\ /Y
START Emulators\VirtualPC\MyOS.vmc

마지막 제안 : virtualpc 프로세스 우선 순위를 낮게 설정하십시오 - 이것에 대해 나를 믿으십시오! 코드를 교환하게되어 기쁩니다!

도구 : dgjpp, nasm, grub.
암호: osdev.org, osdever.net

다른 팁

당신은보고에 관심이있을 수 있습니다 헬레 노스. SIMICS 및 QEMU와 같은 시뮬레이터를 사용하여 개발 된 많은 아키텍처 (베어 메탈에서는 부츠)에 포팅 된 스크래치 마이크로 커널에서.

빌드 프로세스 중에 최종 ISO에 복사 된 정적 그럽을 사용합니다. OS가 자체 호스팅이 될 때까지 어떤 것들이 그렇게해야합니다. 처음부터 모든 것을하고 싶지 않으면 자신의 사용자 공간 C 라이브러리를 구현하지 않는 것이 좋습니다.

SIMICS는 무상이지만 커널을 만드는 동안 (및 디버깅/프로파일 링 도구를 내장) 추천합니다. QEMU는 일종의 커널 콘솔과 로거가 제자리에 설치되면 아주 좋은 작업을 수행합니다.

간단합니다. 가상 머신을 설정하고 커널을 쓰고 가상 머신에 복사하고 가상 머신을 부팅합니다.

보다 구체적인 조언을 원한다면 더 구체적이어야합니다.

아마도 기계 (x86, 추측)를 설정 한 다음 부팅 중에 어떻게 작동하는지 정확하게 조사 할 것입니다. 호스트 머신의 파일 시스템에 가상 머신의 파일 시스템 역할을하는 하나 이상의 파일이 있어야하며, 개발중인 커널이 부팅되도록 부팅 섹터 정보를 넣어야합니다.

물론 호스트의 빌드 시스템은 커널을 가상 머신의 파일 시스템에 쓸 수있는 방법이 있음을 의미합니다. 이는 어려움이 다를 수 있습니다.

무작위로 하나를 선택하고 보크 있는 것 같습니다 지원하다 DD 등과 같은 표준 도구를 사용하여 외부에서 부팅 미디어 편집

자신에게 물어봐야 할 첫 번째 질문은 어떤 하드웨어 아키텍처를 목표로하고 있습니까? 나는이 토론을 위해 당신이 IA_32 아키텍처를 목표로하고 있다고 가정하겠습니다. 아마도 해당 프로세서에 쉽게 구할 수있는 문서가 많이 있기 때문에 현명한 선택 일 것입니다.

이 사업에 대해 진지하게 진지한 경우 에뮬레이터 또는 VM에 대해 디버그/코드/빌드/배포 사이클을 실행하고 싶을 것입니다. 누군가 Bochs를 언급했는데, 이것은 매우 인기가 있습니다. 에뮬레이션 속도가 당신의 일이라면, QEMU라는 에뮬레이터가 Boch보다 빠릅니다.

개발 환경은 Linux 또는 Windows에서 실행되는 것을 제안합니다. 이는 DEV 환경에 사용 가능한 문서로 인해 다시 현명한 선택 일 것입니다.

Make는 당신의 친구입니다. 이를 사용하여 빌드/실행 프로세스를 자동화하십시오. 도구 세트/컴파일러를 선발하고 잘 배우는 데 시간을 보내는 것이 좋습니다. 그것은 장기적으로 당신을 구할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top