用生鏽寫的操作系統。
要構建操作系統,請確保使用nightly生鏽。由於使用了一些不穩定的旗幟和屬性,這些旗幟和屬性僅在nightly構建中可用。
注意:已在
.cargo/config.toml中指定了目標。
cargo build注意:如果為定制目標編譯,則可以使用
--target <target>標誌覆蓋目標。
cargo build --target x86_64-fractal_os.json要創建可引導圖像,我們使用Bootloader依賴項。在旁邊,我們將使用bootimage工具來編譯內核和引導加載程序,然後將它們鏈接在一起。
確保安裝了啟動圖。
cargo install bootimage注意:要運行bootImage並構建引導加載程序,您需要安裝
llvm-tools-previewRustup組件。
rustup component add llvm-tools-preview安裝了依賴項和工具後,您可以運行貨物啟動圖以創建可引導磁盤映像。
cargo bootimage生成可啟動圖像文件後,您可以在諸如QEMU之類的模擬器上輕鬆運行分形。
qemu-system-x86_64 -drive format=raw,file=target/x86_64-fractal_os/debug/bootimage-fractal_os.bin您也可以在BootImage Runner的幫助下使用貨物跑步者運行它。
cargo run以上將指向可啟動圖像的最後構建,並啟動QEMU實例。您還可以提供特定的目標並通過QEMU選項。
cargo run --target < target > -- [QEMU options] --的一切都將傳遞給Qemu。
要運行Fractalos的自定義測試框架,您可以運行貨物測試命令。
cargo test這將運行所有單元和集成測試。
注意:集成測試位於
/tests目錄下,而單元測試在/src混凝土實現文件中是獨立的。
內核正在使用compiler_builtins板條箱及其mem實現。然而,功能非常不優化。目前有一個針對此問題的公共公關,因此要么需要使用我們自己的memcmp和memcpy等功能的實現,要么等到此PR合併為止。
作為具有EEE背景(電力和電子工程)背景的軟件工程師,我一直很喜歡找出什麼使事情發癢,還有什麼更好的方法可以找出操作系統如何與所有硬件一起使用,而該軟件除了編寫自己的硬件之外?
同時,探索是什麼使乾淨操作系統的所有元素成為什麼因素,我也在學習Rust。我發現它非常愉快。
這些只是要實施的一些必需品。沒有順序。