MacMiNTの下でBSDのツールを作る


Pages in English

まず最初に、"make"(bsd make), "cc"(実際にはgcc), "cpp", "cc1", "as", "ld",のような、BSDのツールが必要だとわかった。
使ったほとんどのソースはNetBSD1.0からのものであるが、 "config"のソースはNetBSD-currentのものである。

  1. 第一に"make"を作り始めた(試しに)[95年9月]
    Makefile.bootという"gnu make"用のMakefileがあったので、 そのころまだMakefileと言うものに慣れていない私にとって 楽だった。 MacMiNTのインクルードファイルとBSDのそれとは異なっているので、 ソースディレクトリの中に"bsdinc"というディレクトリを作り、 Makefile(元はMakefile.boot)の"CFLAGS"に"-Ibsdinc"を加えた。 そして、BSD固有のインクルードファイルをその中に入れた。 "make"のコンパイルが成功した。[95年10月]
  2. それから、 "sys.mk"や/usr/share/mk(Unixファイルシステムで)からの 他のファイルをコピーした。なぜか、"bsd.dep.mk"というファイルが 読まれなかったので、("Could not find"エラー) "bsd.dep.mk"を"bse.dep.mk"にコピーした。 そして、"bsd.*.mk"の中の名前を変更した。 [95年10月]
  3. 次に、GNUのツール("cc", "cpp", "cc1", "as", "ld")をコンパイルすることに挑戦した。 [95年11月]
    これらをコンパイルする上での問題は、ソース中に"alloca"が 多量にあることだった。これにより、プログラムを実行すると 異常終了してしまった。"alloca"を"malloc"(実際には メモリが足りないと異常終了する"xmalloc")に変えなくてはならなかった。 それは、大変な仕事だった。実は、すべての"alloca"を変えたわけではない。 あまりメモリを必要としないものは変えなかった。 その後、これらをコンパイルすることができた。 [96年1月]
  4. カーネルを構築するには、"config","mkdep","ranlib","tsort", "lorder"も必要である。 "config"はディレクトリにリンクを張ろうとするので、 そこをコメントアウトした。なぜなら、MacMiNTはディレクトリのリンクに 対応していないからだ(たぶん)。そして、リンクの代わりにコピーした。 他のものを作るのはそれほど難しくなかった。 これらすべてをコンパイルした。 [96年2月]
  5. "config.new"(古い名前),"ar","nm",and "yacc"も 作ったが、これらはカーネルをコンパイルするのには必要なかった。
さて、カーネルを作る準備ができた。

もっと信頼のあるドキュメントが ここ(puma)にある。