2009-12-22 5 views
3

긍정적 인 질문을하는 것이 어려운 질문입니다. "내가 이미 운영체제를 작성할 수 없다면, 나는 싫어하는 사람과 포격을 당할 것입니다. 이제까지 운영 체계를 쓸 수 있습니다. " 글쎄, Tanembaum의 Modern OS, Linux Kernel Development, Linux 커널과 다른 것들을 읽었습니다. 운영체제를 쓸 수 있을지 모르겠지만, 앞으로 쓰려면 하나만 쓰면 될 것입니다. 알아. 그 중 제가 읽은 책 중 아무 것도 부팅 순서/컴파일 순서를 설명하는 것을 귀찮게합니다.OS Dev 튜토리얼에서 코드 컴파일 시도 중

어쨌든 나는 부정적 싫지만 난 그냥 절대적으로 최소 운영 체제 아래 bkerndev 튜토리얼의 예제 코드를 구축하고 싶은 :

http://www.osdever.net/bkerndev/index.php?the_id=90

당신은에 관련된 소스 코드를 다운로드 할 수 있습니다 여기에서 zip 형식 : 당신이 시도하고 당신이 사실로 인한 오류의 모든 종류의로 실행이 커널을 컴파일

http://www.osdever.net/bkerndev/bkerndev.zip

일의 일부가 전자 코드가 깨졌습니다. 또 다른 사용자는 여기 스택 오버 플로우에 여기에 대한 도움말을 찾고 있었다 :

compiling my own kernel (not from linux-kernel source)

많은 도움을받을하지 않았지만. 나는 gcc 플래그를 추가하여 fleading-undersres를 추가하고 일부 데이터 유형을 변경하여 이러한 오류를 해결했습니다.

http://github.com/PhillipTaylor/farmix

코드는 성공적으로 컴파일하고 kernel.bin 실행으로 날 떠나하지만 난 애벌레에서 그것으로 부팅 할 때 내가 얻을 것이다 :

오류 13 : 당신은 여기 내 코드를 볼 수 있습니다 인식 할 수없는 나 지원되지 않는 형식 (또는 그 본성에 대한 무엇인가)

저자 Zip 파일에서 kernel.bin을 직접 가져 와서 eeepc에서 실행하면 코드를 올바르게 컴파일 할 때 문제가 있다고 생각합니다. 필자는 Windows 컴퓨터에서이 파일을 작성하고 있지만 Fedora 10 i386을 GNU GCC 4.3과 함께 사용하여 컴파일하려고합니다. 문제의 원인이 무엇인지 묻습니다. 올바른 실행 파일을 작성하려면 어떻게해야합니까? 핵심? 올바른 대상 또는 잘못된 바이너리 형식이 누락 되었습니까?

정말 사람이 당황 "첫 번째 단계"

+2

당신은 더 나은 운 OSDev 포럼에서 유용한 답변을 통해 얻는있을 수 있습니다 : http://forum.osdev.org/는 – Amber

+3

나는 당신이 I "와 함께 많은 견인을받을거야 생각하지 않는다 이 큰 더미의 코드가있어 작동하지 않습니다. " 특정 문제에 대한 일련의 질문을하는 것이 더 나을 것입니다. 질문 사이의 작업 시간이 짧아서 신속한 화재 문제는 인정되지 않습니다. – dmckee

+0

누군가는 이것이 좋은 질문이라고 생각하는 것 같습니다. 자, 나는 그가 좋은 문제에 대해 노력하고 있다고 생각하지만, 도움이되지 않는 불분명 한 질문 인 것처럼 보인다. 관심을 돌리는가? – dmckee

답변

1

앱을 컴파일하는 데 사용 된 라인이 명시 적으로 "aout"포맷으로 컴파일되도록 설정되어있어 가이드가 말한 것과 내가 사실이라고 가정 한 것입니다. "barebones"가이드의 내용 만 읽으면 혼란 스러울 수도 있습니다. 그 한 줄을 "nasm -f elf"로 변경하자마자 모두 작동했습니다.

은 ..

나중에 참조 할 수 있도록 내 위치에 있던 사람들이 (자신의 운영 체제를 작성하는 방법) bkerndev 튜토리얼 코드의 기본 작업 버전을 가리키는 내 저장소에서 태그입니다 그것은 32 비트 Linux 시스템에서 빌드하기위한 makefile이 함께 제공됩니다.

http://github.com/PhillipTaylor/farmix/tree/bkerndev_tutorial_working

2

내 의견이 위의 매우 분명하지 않다 동안 저를 도와 감사하겠습니다. 내가 말한 것은 "당신의 kernel.bin 대 '그들의 files 명령 보고서는 무엇입니까?"입니다. 링커의 출력은 원시 2 진 파일입니다. 그것은 거브가 인식하는 몇 마술 단어로 시작해야합니다. 이들은 "mboot"근처의 start.asm에 정의되어 있습니다. 나는 네가 너의 것보다 다른 것 같아.

빌드 할 수 없으므로 편리하게 사용할 수 없지만 .bin 파일의 처음 몇 단어를 비교하여 시작할 수 있습니다.

+0

작성자 (작동 중) 커널에 대해 파일 명령을 실행할 때 커널이 "데이터"를 가져 와서 문제가 발생하지 않지만 vim에서 이진 파일을보고 있습니다. "Hello World"라는 단어와 저자는 그렇지 않습니다. 제공된 start.asm 파일은 grub에 올바르게 인식되도록 파일에 특정 바이트 패턴이 필요하다는 것을 알려주므로 문제가있는 것처럼 보입니다. 그러나 나는이 문제를 해결하기 위해 무엇을해야하는지 확신하지 못한다 : -s – Philluminati