Tiny OS x86_64アーキテクチャで実行されているオペレーティングシステムです。
このプロジェクトはlinuxシステムで開発されています。 windowsシステムでは、 WSLをインストールしてlinuxサブシステムを実行できます。
WSLを使用している場合:
windowsにXサーバーをインストールします。 XmingまたはVCXSVRをインストールすることをお勧めします。-acを介してXサーバーを起動するか、GUIを介してdisable access control確認する必要があります。WSLで:WSLを使用する場合(バージョン1): export DISPLAY=:0WSL2 (バージョン2)を使用する場合: export DISPLAY= $( cat /etc/resolv.conf | grep nameserver | awk ' {print $2} ' ) :0~/.bashrcまたは~/.profileファイルの最後に追加します。Could not initialize SDL (No available video device) ...た場合、Xサーバーが起動しているかどうか、環境変数DISPLAY正しく設定されているかどうかを確認してください。Rustは最新のシステムレベルのプログラミング言語であり、このプロジェクトは主にRust言語を使用して開発されています。 Rust公式Webサイトからダウンロードしてインストールしてください。注:このプロジェクトでは、ツールチェーンのnightlyバージョンをインストールする必要があります。
インストールが完了したら、 rustup経由でllvm-toolsをインストールします。
rustup component add llvm-tools-preview開発のためにcargoを介していくつかの有用なツールをインストールしてください。
cargo install cargo-binutilsbochsエミュレータをインストールしますbochsシミュレーターによるシミュレーション。ソースコードダウンロードリンク:ソースフォージ-Bochs X86 PCエミュレーター。ダウンロードした後、コンパイル、インストール。
コマンドは次のとおりです。
cargo run --releaseコンパイルされたカーネルイメージパスはtarget/os.imgです。
bximageを介して./bochsディレクトリにos.imgファイルを作成します。
bximage -func=create -hd=10M -imgmode=flat ./bochs/os.img -q engrave ./target/os.img into ./bochs/os.imgをddて:
# 注意下面的参数 count 要根据生成的 target/os.img 文件的大小进行调整
dd if=target/os.img of=bochs/os.img bs=512 count=250 conv=notruncbochsを実行しますbochs/confディレクトリに次の構成ファイルを持っています。
bochsdbg-gdb.bxrc : gdbを介してリモートでデバッグしてBind localhost:1234 ( bochsをコンパイルするときに有効にする必要があります--enable-gdb-stub必要です)bochsdbg-win : windowプラットフォーム上にグラフィカルインターフェイスを備えたbochs debuggerを開くbochsrc.bxrc : debug機能なしで最も基本的なbochs構成ファイルシミュレーションを有効にするためにbochsを実行します。
bochs -q -f bochs/conf/bochsrc.bxrcqemuを実行しますbochsとは異なり、 qemu生成されたtarget/os.imgを直接ロードできます。
qemu-system-x86_64 -drive format=raw,file=bochs/os.img -boot c
プロジェクトのルートディレクトリにMakefileファイルがあります。これは、実行中およびデバッグコマンドを定義します。
clean :生成されたファイルのクリーンに使用されますbuild-release : releaseバージョンのカーネル画像をコンパイルするために使用されますbuild-debug : debugバージョンカーネル画像のコンパイルに使用されます(完了していません)run-bochs :カーネル画像をコンパイルしてbochsシミュレーションを開始するために使用されますrun-qemu :カーネル画像をコンパイルしてqemuシミュレーションを開始するために使用されますdebug-bochs :カーネル画像をコンパイルし、 bochsを開始し、 rust-gdb経由のリモートdebugに使用しますdebug-qemu :カーネル画像をコンパイルし、 qemuを開始し、 rust-gdb経由のリモートdebugに使用しますこのプロジェクトは、主に4部分に分割されています。
builder : srcディレクトリにあり、主にカーネル画像をコンパイルして構築するために使用されますboot : bootディレクトリにあり、 tiny OSのbootloaderですboot_info : boot_infoディレクトリにあり、 BootInfo構造を提供しますkernel : kernelディレクトリにあり、それはtiny OSのカーネルコードですlong modeに入りますbootloaderステージからkernelに情報を渡すためのBootInfo構造を準備するelfファイルのロードloggerを準備する(カーネル開発中にtiny os印刷機能を実装し、デバッグするために使用) Page Fault GP Faultの予備処理Double Faultを処理しますlinked_list_allocatorを介して予備メモリ割り当てを実装しますbuddy systemメモリアロケーターを実装しますspawnを実装しますFAT32ファイルシステムの実装shellを実装しますBuilderを実装します( debugコンパイルして画像releaseことを選択できます) bochs/os.imgにddツールを介して彫刻するのではなく、 bochsを直接ロードできるカーネル画像を生成します