コードとにらめっこ

試験が終わったということで、なんとか動かすことはできないかなーと調査中。

とりあえずわかったことその1、NetBSDLinuxカーネルバイナリフォーマットについて。

  • NetBSD : ELFフォーマット
  • Linux : objcopy -O binary されたrawバイナリ

というわけでNetBSDを起動させるにはELFを解釈してメモリに展開できるブートローダが必要と。そりゃkexecにぶち込んだら暴走するのも当然だわな。

ちなみにこのELF、正しくはExecutable and Linkable Formatといって実行ファイルフォーマットの1つ。そんでもってこのELFと合わせて設計されたデバッグ用データフォーマットとしてDebug With Attributed Record Format(DWARF)なんてのがある。エルフとかドワーフとか、どう見ても指輪物語ネタです。本当にありがとうございました。

ではそもそもNetBSD/zaurusはどうやって起動させているのかと思って調べてみると、どうやらzbsdmod.oというLinuxカーネルモジュールがあってそこにNetBSDカーネルを喰わせるようになっている模様。ただしノーマルZaurusを前提としているためzbsdmod.oはLinux kernel 2.4.x用。一方myZaurusはAngstrom化しているのでLinux kernel 2.6.x。ダメ元で喰わせてみるが案の定弾かれた…というわけでzbsdmodをまず移植せんといかん、と。