Open3

ゼロからのOS自作入門 読書ログ

Y. SakiY. Saki

2024-10-07

第0章

  • OSは多様なので全てに共通する機能というのはない
  • 有名なOS Windows, maxOS, Linux に絞って重要な機能を抽出してみると3つの側面がある
    1. アプリケーションに対するインターフェース
      • 機器の違いを吸収して同じインターフェースで使えるようにする
        • SATAでSSDを繋いでいるのかUSBメモリなのか……
        • 有線LANなのかUSB越しにWifiアンテナを繋いでいるのか……
      • 抽象化:詳細を隠して単純なインターフェースを提供する
    2. 計算資源分配者
      • アプリの処理に必要な資源を分配する
      • エンコード中にカーソルが動かなかったら困るよね
    3. 人間に対するインターフェース
      • アプリに共通するメインメニューがあるとか同じショートカットでコピペできるとか
      • OSカーネルじゃなくてGUIフレームワークの仕事だとも言えるがここでは広めに扱う
  • 自由のためあえてPOSIX準拠にはしていない.やりたかったら自分でやってみよう
  • コミュニティで質問してみよう: https://zero.osdev.jp/

第1章

バイナリを書く.

okteta右側の表示がなんだか本に書いてあるのと違う.チェックサムはあっているので見た目だけだと思う.

Y. SakiY. Saki

2024-10-17

第1章

続き.起動の前に開発環境の導入

  • Ubuntu 18.04 on WSLをインストール
  • 開発ツールの導入
    • Ansibleをインストール
      git clone https://github.com/uchan-nos/mikanos-build.git osbook
      sudo apt install ansible
      cd osbook/devenv
      ansible-playbook -K -i ansible_inventory ansible_provision.yml
      
    • ここで fatal: [localhost]: FAILED! => {"changed": false, "msg": "No package matching 'llvm-14-dev' is available"} というエラーが出た.
      • Ubuntu 22.04 サポートのためにllvmのバージョンが変更されているため.(cf. https://github.com/uchan-nos/os-from-zero/issues/133)
      • 旧バージョン対応版にバージョンを戻す
        git checkout 8d4882122ec548ef680b6b5a2ae841a0fd4d07a1
        
  • インストールできたのでエミュレーターを起動.
    • Hello, World!されるはずだがUEFI画面で止まってしまう.一旦次回.
Y. SakiY. Saki

2024-10-28

バイナリエディタを VSCode 拡張の Hex Editor にしてみた.これはテキスト表示が教科書と一致しているのでこちらにしておく.

チェックサム確認とコマンドの再実行をやってみたが上記の通り進まず.別のマシンでやってみるか……