카페인에 의해 첫 번째 OS가 연료를 공급 받았다.
이것은 학습 프로젝트입니다. 우리는 그것이 얼마나 멀리 진행되는지 볼 것입니다. 내가 "카페인에 의해 연료를 공급 받았다"고 말할 때, 나는 문자 그대로 새로운 OS 빌딩 프레임 워크가 아니라 카페인을 의미합니다. 그러나 그것은 OS 빌딩 프레임 워크의 꽤 멋진 이름 일 것입니다.
이 프로젝트를 Ubuntu18.04 LTS에서 운영하고 있습니다. PC에서 Visual Studio를 사용하여 원격 빌드를 사용하고 있지만 Ubuntu 시스템에서 MakeFile을 직접 사용할 수 있습니다. 내 OS는 현재 우분투의 VM에서 실행 중입니다. BIOS 및 ROM 데이터를 허구로 변경하여 실수가 컴퓨터를 벽돌로 만들 수 있기 때문에 "금속"을 실행하는 것을 권장하지 않습니다. 다음은이 프로젝트를 진행하기 위해 설치 한 패키지입니다.
MakeFile은 실행할 때마다 같은 이름의 동일한 위치에 ISO 파일을 생성합니다. VirtualBox에서는 512MB RAM, VDK/VMDK 없음 및 ISO 파일 및 "Live CD"상자를 가리키는 Caffeineos라는 VM을 만들었습니다.
ISO 파일이 각 빌드마다 변경 되더라도 VM은 항상 동일한 위치로 이동하여 ISO를 찾아 부팅합니다.
지금은 부팅 가능한 kernal이 있습니다. OS 이름을 인쇄하는 것 외에는 아무것도하지 않습니다. 지금까지 나는 토양을 따랐지만,이 시점을 넘어서는 것은 거의 없습니다. 내가 찾은 것은 C ++, Only C를 사용했습니다.
다음에 제작해야 할 커널의 다음 부분이 무엇인지 조사하고 있습니다. 내 생각은 역동적 인 메모리입니다. 현재 VGA 주소를 사용하여 출력을 달성하여 화면에 텍스트를 작성하고 있습니다. 아직 입력을 찾지 못했습니다. 내가 말했듯이, 튜토리얼은 실제로 부팅 가능한 "Hello World"OS를 지나치지 않습니다.
나는 RAM을 감지하고 (낮은 mem ~ = 640kb, Low+Hi ~ = 512MB)를 만드는 값을 얻었으므로 정말 행복합니다. 또한 UINT32_T를 const char*에 시전하고 포인터에서 인쇄 배열을 시전하여 부트 로더에서 문자열을 얻을 수있었습니다. gnu.org 사이트에서 Multiboot.h 사양을 사용하고 있습니다. multiboot.h 파일에는 부트 로더 (Grub2.02)가 multiboot_info_t*를 통해 보내는 정보의 블록 크기와 일치하는 emmpty struct 및 typedef 선언이 포함되어 있습니다. 블록 크기를 알면 부트 로더에서 필요한 데이터에 포인터를 캐스팅 할 수 있습니다.