Skip to content
Takahiro Itazuri edited this page Dec 18, 2021 · 59 revisions

zulinx86 の個人ページ

低レイヤーの技術に興味があり、個人的に勉強を進めています! まだまだ初学者ですが、頑張ります!

過去の勉強の成果物

SNS

「ゼロからのOS自作入門」読書記録

環境

  • 開発環境
    • ローカル PC: macOS Catalina 10.15.7
    • ビルド環境: Ubuntu 18.04 on EC2 (AMI: ami-0ef85cf6e604e5650)
  • 実機環境
    • ASUS ZenBook UX310UQ
      • CPU: Intel Core i5-7200U
      • GPU: NVIDIA GeForce 940MX
      • Memory: 8 GB (DDR4-2133)
      • Storage: SSD 256 GB

0 章 (2021/03/25)

1 章 (2021/03/25)

  • バイナリエディタ Hex Friend をインストール
  • 「Disk Utility」から USB を「MS-DOS (FAT)」にフォーマットし、BOOTX64.EFI をコピー
  • 1.1 ハローワールド
    • 実機で動作確認
  • 1.4 エミュレータでのやり方
    • QEMU で動作確認
$ git clone https://github.com/uchan-nos/mikanos-build.git
$ MIKANOS_BUILD=<mikanos-build へのパス>

$ qemu-img create -f raw disk.img 200M
$ hdiutil attach -nomount disk.img
/dev/disk3     
$ newfs_msdos /dev/disk3
$ mkdir mount
$ mount -t msdos /dev/disk3 mnt/
$ mkdir -p mnt/EFI/BOOT
$ cp BOOTX64.EFI mnt/EFI/BOOT
$ hdiutil deatch disk3
$ qemu-system-x86_64 -drive if=pflash,file=$MIKANOS_BUILD/devenv/OVMF_CODE.fd -drive if=pflash,file=$MIKANOS_BUILD/devenv/OVMF_VARS.fd -hda disk.img

2 章 (2021/03/26)

  • EDK II による build 時に No module named 'distutils.util' エラーが出たら、python3-distutils をインストール
$ sudo apt install python3-distutils

3 章 (2021/03/29)

4 章 (2021/03/31)

5 章 (2021/03/31)

6 章 (2021/04/01 ~)

7 章 (2021/04/11)

0 章 (2021/12/14)

  • 色々あって途中で挫折してしまったが、2021 年のやり残したこと No.1 なので、再開することを決意。
  • とりあえず写経は諦めて読破を目標とし、一度読破した後に、写経したり、気になったところを深掘りしていく。

1 章 (2021/12/14)

  • 気になった点・深掘りしたい点
    • コンパイラやリンカのオプションがそれぞれどういう意味なのか。

2 章 (2021/12/14 & 2021/12/15)

  • 気になった点・深掘りしたい点
    • AppPkg 配下のアプリケーションの例を通して、UEFI に慣れたい。
    • OVMF の実装を読みたい。

3 章 (2021/12/15)

  • 気になった点・深堀りしたい点
    • 名前修飾 (name mangling) の規則を調べる。
    • -fno-rtti の動的型情報とは何か。なぜ必要か。
    • -z norelro でリロケーション情報を read only にしてはいけない理由は何か。
    • reinterpret_cast を含むキャスト周りとしっかりと勉強しておきたい。https://en.cppreference.com/w/cpp/language/reinterpret_cast
    • alignasalignof を使ってみる。

4 章 (2021/12/16)

  • 気になった点・深堀りしたい点
    • C++ の純粋仮想関数や継承、メソッドオーバーライド周りを復習しておきたい。
    • 配置 new を定義するときのシンタックスを確認しておきたい。https://en.cppreference.com/w/cpp/language/new
    • 「リンカ・ローダ実践開発テクニック」も積読にしてしまってるので、読んでおきたい。

5 章 (2021/12/16)

  • 気になった点・深掘りしたい点
    • makefont.py の中身を読んでおきたい。
    • Newlib の中身が気になる。
    • Newlib を使わずに標準ライブラリの関数を自前実装してみたい。

6 章 (2021/12/17)

  • 気になった点・深堀りしたい点
    • USB ドライバーの実装を読む。
    • PCI / PCIe について理解を深める。

7 章 (2021/12/18)

  • 気になった点・深堀りしたい点
    • 「30 日でできる!OS 自作入門」でやった割り込みと違って PIC の初期化とかがなかったが、UEFI がやってくれてるのだろうか。
    • 「30 日でできる!OS 自作入門」でやった割り込みでは、IRETD 命令を使って割り込み処理から抜けていて、EOI への通知は明示的に実行してなかったが、この辺がどうなってるのか。
Clone this wiki locally