Miniosは、32ビットX86アーキテクチャCPUで実行できるオペレーティングシステム開発学習者向けのミニチュアオペレーティングシステムカーネルです。 Miniosは、オペレーティングシステムの開発におけるコアの概念と基本原則の学習と調査に焦点を当て、一般的なハードウェアに基づいてオペレーティングシステムのさまざまな基本的なサブシステムまたはモジュールを実装しています。
LinuxやFreeBSDなどの人気のあるオペレーティングシステムカーネルは優れていますが、カーネル開発の初心者には適していません。一方で、これらのオペレーティングシステムカーネルは長年開発されており、膨大な量のコードを蓄積してきました(2005年にリリースされたLinuxカーネルV2.6.12の初期バージョンにはすでに約400万回のコードがありました)。一方、生産環境でのアプリケーションのニーズのため、これらのカーネルコードには、オペレーティングシステムの基本原則に関連しない多数の詳細が含まれており、初心者が重要なポイントを把握することは困難です。したがって、少量のコードを備えたシンプルなオペレーティングシステムカーネルから始めて、短時間を使用してオペレーティングシステムのカーネル開発分野のコアコンセプトと基本原則を習得し、習得し、これらの基本的な知識を特定のレベルに習得し、Linuxなどの実用的なカーネルの開発に専念します。カーネル開発に従事する予定がない場合でも、簡単に開始できるカーネルを介してオペレーティングシステムに関する基本的な知識を学ぶことで、より堅牢で実行するアプリケーションの作成に役立ちます。
Miniosは主にC言語とX86アセンブリ言語に基づいて開発されており、使用される開発ツールには以下が含まれます。
その中で、Binutilsは、静的ライブラリを作成するためのツール、バイナリファイルからシンボルテーブルを削除してファイルサイズを削減するためのツールなど、バイナリファイルを操作するためのツールのセットです。
Miniosは現在、フロッピーディスクから開始されており、スタートアッププロセスは次のとおりです。
Miniosは学習者向けのオペレーティングシステムカーネルであるため、現在、主に仮想マシンで実行されており、BochsやQemuを含むオプションの仮想マシンを使用しています。
BochsでMiniosを実行します
sudo apt-get install bochsを直接実行してインストールできます。最初にBochsのソースコードをダウンロードしてから、コンパイルしてインストールできます。ソースコードを介してインストールするときに、Bochsの目的バージョンを選択できます。tar zxvf misc/80m.img.tar.gz . 、そして、ハードディスク画像圧縮パッケージからハードディスクイメージを解凍します。bochsコマンドを実行します。 Bochsは、最初にBochSRCファイルから構成情報を読み取り、次にBochsが提供する実行プロンプト情報を確認して、MiniosがBochsで実行できるようにします。QemuでMiniosを実行します
sudo apt-get install qemu-system-x86か、コンピレーションとインストールのためにqemuのソースコードをダウンロードすることができます。tar zxvf misc/80m.img.tar.gz . 、そして、ハードディスク画像圧縮パッケージからハードディスクイメージを解凍します。./launch-qemu.shコマンドを実行して、QEMU仮想マシンを起動すると、MiniosはQEMUで直接実行を開始します。 QEMU仮想マシンは、bochsrcのような構成ファイルを使用しません。構成情報は、コマンドラインオプションを介して指定されます。スクリプトLaunch-QEMU.shには、現在使用されている構成オプションが含まれています。 Miniosは、BochsまたはQemuに含まれるデバッグ機能を使用して、アセンブリレベルでデバッグできますが、このデバッグ方法は、アセンブリプログラムの読みが長くて困難であるため、使用するのがそれほど便利ではありません。幸いなことに、BochsとQemuの両方にGDBサポートが組み込まれています。 GDBが提供するリモートデバッグ関数と組み合わせることにより、MINIOSはCソースコードでデバッグできます。
bochs+gdbでミニオをデバッグします
./launch-bochs-gdb.shを実行します。実行中のシェルスクリプトは、GDBを新しい端子ウィンドウで実行し、カーネルバイナリのデバッグバージョンをロードします。target remote :2345を実行して、Bochsとの接続を確立します。QEMU+GDBでMiniosをデバッグします
./launch-bochs-gdb.shを実行します。実行中のシェルスクリプトは、GDBを新しい端子ウィンドウで実行し、カーネルバイナリのデバッグバージョンをロードします。target remote :1234を実行して、QEMUとの接続を確立します。 # 编译 MiniOS 内核和用户程序 init,并写入到软盘镜像 a.img 中
make image
# 清除所有 .o 目标文件
make clean
# 清除所有 .o 目标文件和可执行文件
make realclean