osdev-jpでは、OS開発に有用な情報を収集し公開しています

View My GitHub Profile

今現在はOS開発の為の準備を進めています。 Takym は「たかやま」と読みます。

最近は .NET ランタイムを他のOS無しで動かす方法に興味があります。

目次


リンク


OSに関係のあるプロジェクト

名前 リポジトリ 説明 備考/状態
Exyzer https://github.com/YigtyORG/Exyzer CPU の動きを理解する為のウェブアプリです。 開発継続中
OSDeveloper https://github.com/Takym/OSDeveloper OSの開発ができるIDEになる予定でした。OSを自作したら別の形を模索して再開するかもしれません。 開発中断

日本の低レイヤコミュニティ・OS開発プロジェクト

少しまとめてみましたが、完全では無いです。


いずれ日本語に翻訳したい資料


質疑応答


自分用のメモ

低レイヤ技術に関する自分用のメモです。 間違い等がありましたら、ご指摘お願いいたします。 このメモでは、CPU は基本的に x86_32 または x86_64 を想定しています。

EDK II (edk2-stable202208) on Windows 10

  1. 下記を予めインストールする。
    • NASM
      • 環境変数 NASM_PREFIX にインストール先ディレクトリを記入する。
    • Cygwin
      • C:\cygwin にインストールする。
    • Python
      • 環境変数 PYTHON_HOME にインストール先ディレクトリを記入する。
    • Microsoft Visual Studio 2019
      • 標準の場所にインストールする。
      • ワークロード「C++ によるデスクトップ開発」
      • 現時点では Microsoft Visual Studio 2022 に対応していない。
  2. 任意のリポジトリを開いて下記のコマンドを実行する。
     git submodule add https://github.com/tianocore/edk2.git modules/edk2
     cd modules/edk2
     git checkout edk2-stable202208
     git submodule update --init --recursive
     edksetup.bat Rebuild
     edksetup.bat
    
  3. modules/edk2/Conf/tools_def.txt から /WX を全て削除する。
  4. modules/edk2/Conf/target.txtTOOL_CHAIN_TAGVS2019 に設定する。
  5. リポジトリのルートディレクトリで下記のコマンドを実行して、ビルドできるか確認する。
     modules\edk2\edksetup.bat
     build
    
    • - Done - と表示され、modules/edk2/Build/EmulatorIA32/DEBUG_VS2019 が生成されれば成功。 <!– 5. EDK II LIBC をインストールする方法
      1. リポジトリのルートディレクトリで下記のコマンドを実行する。 bat git submodule add https://github.com/tianocore/edk2-libc.git modules/edk2-libc git submodule update --init --recursive –>

EDK II (vUDK2018) on Windows 10

Windows 10 (1709 ビルド 16299.1087) での EDK II (vUDK2018) の自分の環境では上手くできたインストール方法です。

  1. vUDK2018 からツールキットをダウンロードする。
  2. NASM をインストールする。(インストール先のパスは空白を含めると上手く読み込めなくなる)
    • 例: C:\nasm\
  3. 環境変数の NASM_PREFIX と PATH に NASM のインストール先のディレクトリを追加する。
  4. Microsoft Visual Studio 2017 の「C++ によるデスクトップ開発」をインストールする。
  5. Cygwin か MinGW をインストールする? (必要かどうかは試していません。)
  6. ダウンロードしておいたツールキットを適当なディレクトリに配置する。
    • ここでは便宜的に %WORKSPACE% 呼ぶ。
  7. %WORKSPACE%\BaseTools\Bin\Win32 内に edk2-BaseTools-win32 からダウンロードしてきたツールを入れる。
  8. edksetup.bat を実行。
  9. %WORKSPACE%\Conf\tools_def.txt から /WX を全て削除。
  10. %WORKSPACE%\Conf\target.txtTOOL_CHAIN_TAGVS2017 に変更する。
  11. build してテストする。

巨大なコードの読み方


GDTのGビット


VGAのカラーパレット


Rust


HLT命令と特権


UEFIの注意点


プロテクトモード移行とパイプライン


スタック領域の場所とページング


UEFIアプリケーションの開発について

UEFIアプリケーションの開発をする時には必ずしも EDK を使う必要は無い。 最初は絶対に必要な物だと勘違いしていたが、 例えば EDK II に付属している Uefi.hUEFIの仕様に合わせてインターフェースを公開しているだけであって、仕様書を見ながら自ら定義する事もできる。 EDK II に入っているソースコードは UEFI の実装の一つである。


Legacy BIOS に関する資料

Legacy BIOS に関する興味深い資料を見つけた。 https://www.glamenv-septzen.net/view/614