OS自作入門
32 bit Operating System based on the book「30日でできる! OS自作入門」
低レイヤーの勉強も兼ねて、最近色々なところで人気の川合秀実さんの「30日でできる!OS自作入門」をやってみようと思いました。このページ自体は自分向けのメモ代わりに使おうと思っているのであまり参考にもならないかもしれませんが、作業の過程や詰まった箇所を記していきます。また初心者なので色々な方々のコードやHPを参考に作ってみているので、どこを参考にしたかも書いておきたいです。また、勉強中の段階なので色々間違ったことや不十分な説明もあるかもしれませんが、そのときは教えてもらえると本当に喜びます。
作業環境
MacOS Catalina 10.15.3
QEMU 4.2.0
GNU Make 3.81
開発環境を作るにおいて、@noanoa07さんの『30日でできる!OS自作入門』 for macOS Catalina を参考にさせていただきました。書籍付属の著者作成の独自ツール(tolsetツール)は元々Windows用であり、MacOSでは動きません。そのためMacOS向けの開発環境を用意してくださっている@sandaiさんのhttps://github.com/sandai/30nichideosjisaku などを参考にさせていただきましたが、ここにあるMac向けツール「TolsetOSX」をCatalinaで動かすことができなかったので、結局@noanoa07さんが行っていた方法で自分もやってみようかと思いました。ご丁寧に情報をまとめて下さりありがとうございます。ツールの使い方や代替方法は『30日でできる!OS自作入門』を macOS Catalina で実行する に沿ってやってみました。
Day 3 - 9 : ついにC言語導入へ
bootpack.cをコンパイルするためにhttps://vanya.jp.net/os/haribote.html#hrb にある「OS用リンクスクリプト」を使わせて頂きました。このファイルをhrd.ldとして作成し、これをリンクしてコンパイルしました。コンパイルするには、リンクスクリプトを-Tで指定できるようi386-elf-gccを使いました。
この時点でのMakefileの中身を解説しておきます。
これでmake run すると下図のような黒い画面が表示されます。
Day 3-10 : とにかくHLTしたい
naskfunc.nasを作成し、io_hlt関数を新しく定義する。アセンブリの中身はHLTとRETをするだけです。bootpack.cでio_hlt関数を使えるように以下のように更新する。
Makefileでnaskfunc.oを新しくelf形式でアセンブルし、bootpack.hrbをコンパイルする際にリンクしました。make runして同じく黒い画面が表示されれば成功です。本の通りにやるとエラーでmakeできなかった箇所があったので30日OS自作入門-3日目(C言語導入)- などを参考にさせて頂きました。
参考文献
多くの方々のQiita記事やブログ記事、Githubレポを参考にさせて頂きました。自分も早く成長して他の人のためになれるような発信をしていきたいです。
Last updated