一個基於單片內核的微型32位X86 PC操作系統,具有一些類似於Unix的特徵,並以C ++子集編寫。
請注意:此元文件仍在進行中:-)
一個具有UNIX式功能的小桌面操作系統,該操作系統是在Hogeschool Utrecht的一年級TI學生中寫成的,它可以在教育環境中使用。
在可能的情況下,犧牲性能和特徵以降低複雜性並提高可讀性。這應該有助於該軟件在教育環境中更容易理解。然而,應實施來自霍格斯學校的OS-Courses的重要主題。
儘管它應該在真實硬件上啟動,但考慮使用仿真器或虛擬機,Rikaios是為了簡單起見而有意限制了受支持的硬件。
強制性免責聲明:操作系統可能會融化您的主板,並在使用真實硬件,無擔保,Yada Yada時食用寵物鼠標,請在您的家庭計算機上運行此之前,請閱讀許可證文件中的免責聲明。
請參閱./aux目錄。雖然不要期望任何浮華 - 目前都是串行終端捕獲!
及其當前功能集的操作系統是在2019年2月至7月的大約6個月內開發的。
Rikaios還不是完整的Linux替代品;-)
有一些需要工作或目前正在處理的功能(另請參見貢獻部分):
grep -ERn 'TODO|FIXME|XXX' src/kernel/src src/kernel/include src/user/請注意,Rikaios的目標是保持較小:例如,網絡堆棧或USB驅動程序可能不會考慮實施。
您需要安裝此軟件(在Linux-ish主機上)來構建和運行Rikaios:
版本號應該是最新的,尤其是對於Clang,LLVM和LLD。提供了一個Arch Linux Dockerfile(感謝@peikos),其中包括上述依賴項的兼容版本。
如果您需要的話,您可以使用GCC而不是Clang/LLVM,前提是您對i686-Elf有GCC交叉鍊鍊。有關如何切換工具鏈的詳細信息,請參見src/kernel/Makefile 。
| 目錄 | 描述 |
|---|---|
/src/boot | 引導加載程序(Bootsector和Stage2) |
/src/boot/utils | 引導加載程序安裝程序 |
/src/kernel | 內核代碼 |
/src/kernel/include | 內核標題暴露於Userland |
/src/kernel/include/os-std | OS標準庫(數學,容器等) |
/src/user | Userland軟件 |
/src/user/libsys | Userland C ++系統庫 |
/src/disk | (FAT32)可用於操作系統的文件系統 |
| makefile | 描述 |
/src/Makefile | 構建所有內容,創建啟動磁盤並運行模擬器 |
/src/boot/Makefile | 構建引導程序和安裝程序 |
/src/kernel/Makefile | 構建內核 |
/src/user/Makefile | 建立用戶世界 |
上面的每個makefile都包含(如果有),則在同一目錄中使用Makefile.local文件。這使您可以覆蓋任何工具鏈可執行的名稱和路徑,並可以選擇添加其他目標。
不要忘記通過-j 4 (或更高)以提高多核心系統的構建性能。
這將構建內核和引導加載程序,並創建使用QEMU虛擬機 /仿真器運行的引導磁盤。與操作系統的串行連接在您運行make命令的終端中打開。
製作磁盤&&進行運行
當前,OS Shell和TTY驅動程序沒有復雜的線條編輯功能和命令行歷史的支持。為了方便起見,您可以將Qemu與rlwrap包裹起來,以利用事物主機側的線條編輯設施(強烈建議):
製作磁盤&& rlwrap -a進行運行
為了在VirtualBox中運行,請執行以下操作:
vdi目標製作磁盤:做VDI
然後:
disk.vdi文件添加為IDE磁盤現在,您應該能夠通過VirtualBox啟動VM。
請注意,串行I/O可能很難上班。默認情況下,當前的OS版本與屏幕和鍵盤/鼠標的交互不多。
系統啟動並運行系統後,您應該在串行終端中看到一個提示(如果您連接了一個顯示器,則可能會出現飛濺屏幕)。您可以使用串行終端與OS進行交互。首先,嘗試help命令。
磁盤上提供了許多實用程序。通過鍵入ls bin來查看安裝程序(假設您仍在/disk0p1目錄中)。 /disk0p1/bin中的所有ELF程序都可以作為命令執行,而無需鍵入完整路徑(將其視為隱式$PATH目錄)。同樣,工作目錄中的任何ELF文件(例如forth.elf )都可以通過鍵入其名稱來運行。
要查看實用程序的工作原理或添加您自己的工作方式,請參閱此存儲庫的src/user目錄中的REDME文件。
按下鍵盤上的ESC(在視頻窗口中而不是串行終端)將啟用內置調試實用程序內核外殼。這可用於打印有關運行過程和內存的各種統計信息和信息(在KSHELL中,請參見help命令)。
您可以使用Qemu或Bochs調試內核:
有關啟動選項,請參見./src/gdbrc(您可以在Makefile.local中覆蓋此文件路徑)。
製作磁盤&&進行調試
有關配置選項,請參見./src/bochsrc(您可以在Makefile.local中覆蓋此文件路徑)。
製作磁盤&&製作玻璃
ld.lld:錯誤:無法找到庫-LClang_RT.Builtins -I386
locate clang_rt.builtins )kernel/Makefile.local ,帶有內容: LD_BUILTIN_DIR += /the/directory/containing/the/clang/lib 我知道目前公開可用的文檔是有限的,因此請不要猶豫,打開問題或發送電子郵件。
請打開一個github / gitlab問題,以便我們可以確保任何重複的努力:-)
應在接下來的幾週內對此進行正式化的過程 - 肯定可以在難度 /大小的情況下進行一些開放的問題 /功能。我將很快記錄下來。
該項目是根據Apache許可證2.0許可的。有關更多信息,請參見/license。
該操作系統是從頭開始寫的,只有以下例外: