X86體系結構以保護模式內置的多線程內核
內核是使用來自源的自定義GCC交叉編譯器開發的
Scorpion幾乎擁有完整吹散整體內核中包含的所有基本組件
Scorpion是一種整體內核,用於證明內核的行為方式並可以從頭開始
蝎子發展過程中使用的常數和廣泛的參考為:https://wiki.osdev.org/main_page
以下是蝎子的一些屬性:
0x80用於用戶空間過程和內核通信內核的所有屬性可能不會在這裡捕獲,並且可以隨著時間的推移而繼續改進,但是上述屬性將保留為核心屬性。
有一些先決條件可以建立和測試蝎子
在構建內核和引導加載程序之前,我們需要通過構建交叉補償器來準備好環境。需要交叉補償器,因為您的主機可能具有與我們正在運行內核的目標不同的架構。
使用以下命令安裝交叉編譯器依賴項:
sudo apt install build-essential bison flex libgmp3-dev libmpc-dev libmpfr-dev texinfo libisl-dev
使用以下鏈接下載Bin Utils和GCC的源代碼和GCC中的$HOME/src目錄:
在$HOME/src目錄中提取兩個下載
現在,讓我們將源轉換為我們目標的編譯器對象文件
首先,需要設置一些env vars以啟用在正確的位置安裝編譯的二進製文件
export PREFIX="$HOME/opt/cross"
export TARGET=i686-elf
export PATH="$PREFIX/bin:$PATH"
運行以下命令來構建Binutils。不要忘記用自己的版本替換XYZ。
cd $HOME/src
mkdir build-binutils
cd build-binutils
../binutils-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror
make
make install
運行以下命令來構建GCC。不要忘記用自己的版本替換XYZ。
cd $HOME/src
# The $PREFIX/bin dir _must_ be in the PATH. We did that above.
which -- $TARGET-as || echo $TARGET-as is not in the PATH
mkdir build-gcc
cd build-gcc
../gcc-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers
make all-gcc
make all-target-libgcc
make install-gcc
make install-target-libgcc
一旦完成所有步驟完成,請繼續測試您的交叉補償器是否通過以下命令成功構建和安裝:
$HOME/opt/cross/bin/$TARGET-gcc --version
現在,我們的交叉編譯器已經準備好,我們準備使用引導加載程序來構建蝎子。在項目結構的根部運行以下內容
./build.sh
如果構建成功,則應在項目根部的bin目錄中生成3個二進製文件
boot.binkernel.binscorpion.bin 是時候使用上一節中使用輸出生成的二進製文件運行Scorpion OS了。在終端中運行以下命令以使用QEMU模擬蝎子
qemu-system-i386 -hda ./bin/scorpion.bin
另外,如果在BIOS菜單中正確設置了可啟動設備,則可以在物理計算機上進行測試,從而發現機器將啟動到以下外殼

左上方的蝎子版本應激活外殼提示。您現在可以開始在外殼上輸入。已經創建了一個稱為blank.elf的示例程序,並在蝎子硬盤驅動器上加載了一個示例程序,以便它可以訪問。
通過在蝎子命令提示符上執行以下以下操作,將程序加載到內存中
> blank.elf
該程序也可以加載參數,隨後的用戶過程如下:
> blank.elf 55 21 tree
這樣的輸出應根據程序是否加載或沒有參數生成:
