Bo2SS

Bo2SS

1 新しい体験:一つのHelloから別のHelloへ

環境:Windows 上の Ubuntu 18.04 仮想マシン

実践してみる#

🎯目標:自分のシステムで "Hello OS" を出力する

ソースコードのダウンロード#

  1. システムの任意の場所で、ターミナルを開いて以下のコマンドを実行し、ソースコードを仮想マシンにダウンロードします
git clone https://gitee.com/lmos/cosmos.git

bin ファイルの生成#

  1. リポジトリの具体的な位置:/lesson02/HelloOS で、ソースコードをコンパイルして HelloOS.bin を生成します
  • まず、ツール gcc、make、nasm をインストールする必要があります。デフォルトでは nasm のみがインストールされており、他のツールが必要な場合は再インストールします
sudo apt update
sudo apt install nasm
  • 次に、コンパイルを実行します。デフォルトでは Makefile のルールに従って、HelloOS.bin を生成します
make

bin ファイルの移動#

  1. HelloOS.bin を /boot/ ディレクトリに移動します
mv HelloOS.bin /boot/

grub 起動設定の変更⭐#

  1. /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 つの場所に注意します:ファイルシステム、マウントポイント
image-20210515092657939
  • ファイルシステム⭐
    • /dev/sda1 の場合、1 に対応して set root='hd0,msdos1' を変更します
    • sda でない場合 [他のシステム環境]、状況に応じて変更が必要です [コースのコメントを参照]
  • マウントポイント⭐
    • /boot の場合、multiboot2 /HelloOS.bin を変更します
    • / の場合、変更は不要です

PS::w!で保存し、:qで編集を終了します

image-20210515092718504

マシンを再起動#

  1. マシンを再起動し、システムが読み込まれる前に shift キーを連打します [他のキー、例えば esc キーも可能]、grub ブート画面に入ります
image-20210515092730798
  • 自分のシステムを選択し、enter キーを押します
image-20210515092740876
  • ここでエラーが発生した場合、主にシステムタイプ(物理マシン、他の仮想マシンシステム)、システムパーティションタイプ(UEFI)、パーティションテーブルタイプ(GPT)などの要因が関与します。以下の参考内容を参照してください👇

参考内容#

他の環境で実行する場合は、コース内のコメントや関連ブログを参照してください

コースリンク#

QR コードをスキャンして参加できます:

image-20210523213829681

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。