2010-05-10 5 views
25

x86 PC 컴퓨터 용으로 새 운영 체제를 만들고 싶습니다. 64 비트이지만 32 비트로도 실행하고 싶습니다.현대 PC 컴퓨터 용으로 자체 x86 운영 체제를 만드는 방법

어떤 종류의 일들을 처음에 작업을 시작 않습니다

나는 이러한 질문이 있습니까? 자신의 운영 체제를 작성할 때 어디서부터 시작해야할지 알면 까다로운 주제가 될 수 있으므로 귀하의 의견에 관심이 있습니다.

일반적으로 자신의 32 비트/64 비트 운영 체제를 만드는 방법 또는 x86 컴퓨터 용 운영 체제를 직접 작성하는 데 유용한 정보가있는 유용한 리소스를 얻으려면 어떻게해야합니까? 나는 그들이하고있는 일에 여전히 관련이 있고 유용한만큼 오래 된 근원이 얼마나 중요한지 걱정하지 않는다.

주변 하드웨어에 직접 액세스하는 커널 드라이버를 갖고 싶습니다. 운영체제가 통신 할 주변 장치 하드웨어에 대한 인터페이스를 프로그래밍하고 이해하기위한 조언과 문서는 어디에서 찾아야합니까? 운영 체제가 키보드, 마우스, 컴퓨터 모니터, 하드 드라이브, USB 등을 통해 입력을 받고 상호 작용하는 방식을 이해해야합니다. 아마도 내가 아는 분야 일 것입니다.

필자는 Intel 명령어 세트 매뉴얼을 가지고 있으며 어셈블리 프로그래밍에 익숙해 져 왔기 때문에 CPU 측면에 관한 내용을 가장 잘 알고 있습니다.

이 시점에서 필자는 Linux에서 실행되는 프로그램을 내 운영 체제에서 실행할 수 있도록 내 운영 체제 내에서 Linux 시스템 호출을 구현하려고합니다. 운영 체제에서 ELF 바이너리 형식을 사용하기를 원합니다. 나는이 리눅스 호환성을 달성하기 위해 극복해야 할 장애물이 무엇인지 궁금합니다. Linux가 제공하는 시스템 호출을 구현하고 ELF 형식을 사용하는 주요 작업은 무엇입니까? 또 뭐야?

나는 또한 왜 자신의 운영 체제를 만드는 것이 좋은 생각이 아니며 자신의 운영 체제를 만드는 것이 좋은지에 대한 사람들의 생각에 관심이 있습니다.

입력 해 주셔서 감사합니다.

+2

http://stackoverflow.com/questions/1224617/how-can-i-build-a-small-operating-system-on-an-old-desktop-computer –

+7

와 유사합니다. 너무 열심히 시도하지 마십시오! " 답변. –

+2

시작하려면 몇 가지 코드를 찾으려면 [이 최소 OS] (http://stackoverflow.com/a/6143888/309483)를 참조하십시오. –

답변

13

가상 머신 내부에서 실행 되기만하면됩니다. 실제 하드웨어에서 OS를 개발하려고하는 PITA입니다 (재부팅 및 디버깅 - 직렬 케이블 사용).

VM 내부에는 일반적으로 초기 개발을 쉽게 수행 할 수 있도록 지원되는 단순화 된 (상대적으로 표준화 된) 하드웨어 집합이 있습니다. 특히, 다른 사람에게 자신의 OS를 보여주고 싶다면 .vhd 파일을 제공하고 그것이 당신을 위해 일한다면 합리적으로 확신 할 수 있습니다.

처음에는 이미 &이 실행 중입니다. 예를 들어 마이크로 소프트의 Singularity은 꽤 깔끔합니다. 그렇게하면 지루한 부트 로더와 기본 장치 드라이버를 모두 없애고 "고기가 많은"물건을 더 빨리 얻을 수 있습니다.

+1

굉장합니다.bochs와 같은 에뮬레이터 http://bochs.sourceforge.net/? – mudge

+1

Bochs는 매우 인기있는 amoungst OS devers 예입니다. VMWare, Virtual PC 및 VirtualBox도 모두 충분할 것입니다. (Bochs는 OS 디버깅을 아주 잘 지원합니다.) –

+0

Qemu가 Bochs 대신 빠르고 쉽게 스크립트 된 대체품이라는 것을 알았습니다. Bochs는 실행 시간 (매번 업데이트 할 때마다 많이 실행하면 성가신 경우)이나 설정 파일로 구성됩니다. 개인적으로, 나는 설정 파일을 사용하는 것을 좋아하지 않는다. 더 많은 디버그 정보를 얻을 수 있습니다. 특히 추가 디버깅이 활성화 된 상태에서 직접 빌드하는 경우 더욱 그렇습니다. 반면 Qemu는 Comand 라인에서 구성 할 수 있습니다. 또한 Bochs는 에뮬레이터이지만 Qemu는 JIT 기반 가상 시스템입니다. 그것은 어느 쪽의 방식 으로든 절충점입니다. – Tyler

4

당신은 32 비트 모드를 사용하는 디스크립터 테이블의 여러 가지를 구현해야합니다. 멀티 스레딩을 사용하는 것은 쉬운 일이 아니며 필수적으로 필수적입니다. 플로피 이미지 또는 현재 사용중인 모든 것을 가져 오려면 초기에 파일 시스템 지원을 개발하고 싶을 것입니다.

이전에이 웹 사이트를 방문했을 것입니다. http://wiki.osdev.org/Main_Page 하지만 많은 훌륭한 기사가 있습니다.

또한 개발 단계에 유용 할 수 있습니다. The Indispensable PC Hardware Book이 책은 매우 자세하게 설명되며 많은 다이어그램과 일부 코드 스 니펫을 포함합니다.

6

또는 Minix3을 교육용으로 빌드 한 Minix1과 같은 작은 OS를 먼저 공부하는 것이 좋습니다 (POSIX 호환).

20

Linux 0.01 소스 코드를 살펴 보는 것이 좋습니다. 이것은 OS의 첫 번째 버전입니다. 그것은 매우 간단하고 유익합니다.

1

부트 로더를 시작하고, 메모리 맵을 얻고, PCI 버스를 스캔하고, APIC과 같은 다양한 칩을 초기화하고, 보호 모드로 전환하는 방법을 배웁니다.

로드 된 커널의 처음 부분에 화면에 출력하고, 키보드에서 읽고, 간단한 디버거를 얻고, 실제 메모리 관리자와 가상 메모리 관리자를 차례로 실행하는 루틴을 작성해보십시오. 운영 체제를 포함하여 모든 프로그램이 순서대로 메모리를 할당하고 해제하는 방법을 필요로하기 때문에 후자의 두 프로그램은 오랫동안 연기 될 수 없습니다.

1

새로운 제안 접근 방식을 제공하기 위해 부트 로더를 USB 또는 RW CD로 이미지화 한 다음 컴퓨터에 기본 장치로 사용하도록 지시 할 수 있습니다. Vista가 설치되어 있고 단순히 장난감 로더와 kernel.bin 파일로 USB를 연결하기 만하면 내 장난감 OS를 테스트 할 수 있습니다. 하드 드라이브를 손상시키지 않도록 동일한 장치를 사용하여 추가 파일 또는 추가 항목을 저장하십시오. 운영 체제가 모든 기본 기능을 갖추고 있으면 정크 컴퓨터를 구입하고 OS를 설치 한 다음 거기에서 확장하십시오.

1

https://github.com/rajneshrat/ratos

이 지원 - 네트워킹을 다음과 최소 운영 체제이며, VM 지원, 인터럽트 지원, 의 PCI를 지원합니다.

+0

나는 그 OS를 시도하지 않았다. 자신의 버전을 만들기 전에 그것을보고 싶어하는 사람들을 위해 표준 플로피 이미지를 제공 할 수 있습니까? – ssh

2

자신의 운영 체제를 개발하고 싶다면 osdev 포럼 (http://forum.osdev.org/)을 방문하고 위키를 잘 읽으십시오 : http://wiki.osdev.org/Main_Page.

나는 거기에있는 사람들을 잘 알고있을뿐만 아니라 매우 도움이된다는 사실을 발견했습니다. 그들은 여러분의 코드 조각에서 실수를 지적하기도합니다!

제임스 몰로이 (Google이이 링크를 게시 할 수 없음)의 x86 자습서로 시작했습니다. 그의 코드로 시작한 다음 해킹, 해킹, 해킹을 시작할 수 있습니다 :-).

+0

James Molloy의 튜토리얼은 버그입니다. 자세한 내용은 http://wiki.osdev.org/James_Mollo's_Tutorial_Known_Bugs를 참조하십시오. – glauxosdever

관련 문제