環境:Windows 上の Ubuntu 18.04 仮想マシン
実践してみる#
🎯目標:自分のシステムで "Hello OS" を出力する
ソースコードのダウンロード#
- システムの任意の場所で、ターミナルを開いて以下のコマンドを実行し、ソースコードを仮想マシンにダウンロードします
git clone https://gitee.com/lmos/cosmos.git
bin ファイルの生成#
- リポジトリの具体的な位置:/lesson02/HelloOS で、ソースコードをコンパイルして HelloOS.bin を生成します
- まず、ツール gcc、make、nasm をインストールする必要があります。デフォルトでは nasm のみがインストールされており、他のツールが必要な場合は再インストールします
sudo apt update
sudo apt install nasm
- 次に、コンパイルを実行します。デフォルトでは Makefile のルールに従って、HelloOS.bin を生成します
make
bin ファイルの移動#
- HelloOS.bin を /boot/ ディレクトリに移動します
mv HelloOS.bin /boot/
grub 起動設定の変更⭐#
- /boot/grub/grub.cfg ファイルを変更します
- sudo 権限を使用して、vim で開きます
sudo vim /boot/grub/grub.cfg
- 最後の位置に以下のコードを挿入します。2 つの場所を変更することに注意してください:set root、multiboot2
menuentry 'HelloOS' {
insmod part_msdos # GRUBがパーティションモジュールを読み込んでパーティションを認識
insmod ext2 # GRUBがextファイルシステムモジュールを読み込んでextファイルシステムを認識
set root='hd0,msdos4' # bootディレクトリがマウントされているパーティションに注意
multiboot2 /boot/HelloOS.bin # GRUBがmultiboot2プロトコルでHelloOS.binを読み込む
boot # GRUBがHelloOS.binを起動
}
- 内容をこの手順を参考にして変更し、別のターミナルを開いて df /boot/ の結果を観察し、2 つの場所に注意します:ファイルシステム、マウントポイント

- ファイルシステム⭐
- /dev/sda1 の場合、1 に対応して set root='hd0,msdos1' を変更します
- sda でない場合 [他のシステム環境]、状況に応じて変更が必要です [コースのコメントを参照]
- マウントポイント⭐
- /boot の場合、multiboot2 /HelloOS.bin を変更します
- / の場合、変更は不要です
PS::w!
で保存し、:q
で編集を終了します

マシンを再起動#
- マシンを再起動し、システムが読み込まれる前に shift キーを連打します [他のキー、例えば esc キーも可能]、grub ブート画面に入ります

- 自分のシステムを選択し、enter キーを押します

- ここでエラーが発生した場合、主にシステムタイプ(物理マシン、他の仮想マシンシステム)、システムパーティションタイプ(UEFI)、パーティションテーブルタイプ(GPT)などの要因が関与します。以下の参考内容を参照してください👇
参考内容#
他の環境で実行する場合は、コース内のコメントや関連ブログを参照してください
- オペレーティングシステム実践 45 講 01:HelloOS を実行する——CSDN
- pedro/pos—— 码云
- 非デスクトップ環境(WSL2 など)で実現可能
- 彭東の【オペレーティングシステム実践】交流グループの核心問題まとめ—— 石墨
- ❗ ここでほとんどの答えが見つかります!
- 02 | 数行のアセンブリと数行の C:最も簡単なカーネルを実現する—— ギークタイム
コースリンク#
QR コードをスキャンして参加できます: