녹으로 작성된 운영 체제.
OS를 구축하려면 nightly 녹 만들기를 사용하십시오. 이것은 nightly 빌드에서만 사용할 수있는 불안정한 플래그 및 속성을 사용하기 때문에 필요합니다.
참고 : 대상은
.cargo/config.toml에 지정되었습니다.
cargo build참고 : 사용자 정의 대상을 위해 컴파일하는 경우
--target <target>플래그를 사용하여 대상을 무시할 수 있습니다.
cargo build --target x86_64-fractal_os.json 부팅 가능한 이미지를 만들기 위해 BootLoader 종속성을 사용하고 있습니다. 우리는 bootimage 도구를 사용하여 커널과 부트 로더를 컴파일하고 함께 연결합니다.
BootImage가 설치되어 있는지 확인하십시오.
cargo install bootimage참고 : BootImage를 실행하고 BootLoader를 구축하려면
llvm-tools-previewRustup 구성 요소가 설치되어 있어야합니다.
rustup component add llvm-tools-preview종속성 및 도구가 설치된 후에는화물 부트 리메지를 실행하여 부팅 가능한 디스크 이미지를 만들 수 있습니다.
cargo bootimage부팅 가능한 이미지 파일을 생성 한 후 QEMU와 같은 에뮬레이터에서 Fractal을 쉽게 실행할 수 있습니다.
qemu-system-x86_64 -drive format=raw,file=target/x86_64-fractal_os/debug/bootimage-fractal_os.binBootimage Runner의 도움으로화물 러너와 함께 실행할 수도 있습니다.
cargo run위는 부팅 가능한 이미지의 마지막 빌드를 가리키며 QEMU 인스턴스를 시작합니다. 특정 대상을 제공하고 QEMU 옵션을 통과 할 수도 있습니다.
cargo run --target < target > -- [QEMU options] 이후 -- 모든 것은 Qemu에게 전달됩니다.
Fractalos의 맞춤형 테스트 프레임 워크를 실행하려면화물 테스트 명령을 실행할 수 있습니다.
cargo test이것은 모든 장치 및 통합 테스트를 실행합니다.
참고 : 통합 테스트는
/tests디렉토리 아래에 있으며 단위 테스트는/src콘크리트 구현 파일에 자체 포함됩니다.
커널은 compiler_builtins 크레이트와 mem 구현을 사용하고 있습니다. 그러나 기능은 상당히 최적화되지 않습니다. 현재이 문제에 대한 공개 PR이 있으므로 memcmp 및 memcpy 와 같은 기능의 구현을 사용 하거나이 PR이 병합 될 때까지 기다려야합니다.
EEE (Electric and Electronic Engineering)에 대한 배경 지식을 가진 소프트웨어 엔지니어로서 저는 항상 물건을 진드기로 만드는 것이 무엇인지, 그리고 모든 하드웨어와 함께 운영 체제가 어떻게 작동하는지 알아내는 방법을 찾는 것을 좋아합니다.
깨끗한 운영 체제의 모든 요소를 만드는 것을 탐구하는 동시에 Rust를 배우고 있습니다. 나는 그것이 매우 즐겁다는 것을 안다.
이것들은 구현되는 길에있는 몇 가지 필수 요소입니다. 순서대로.