・Plamo-4.0βに向けてごそごそ作業しているうちに、起動ディスクを作るための syslinux がちゃんと動いていないことに気づく。当初は、インストーラの環境は uCLibc だから static にリンクしないとダメなのかな、程度だったんだけど、いろいろイジっても改善されずに結局一晩これに費やしてしまった。

コードの中にデバッグ文を入れながら追いかけたら、エラーメッセージは mount 時に "No such file or directory" になっているのだけど、/tmp 以下に作った一時ディレクトリに /proc 以下に出てくる自分自身のプロセスのfile descriptor の 3 番をマウントしようとしてエラーになる、という謎な現象だった(エラーになって終った時点では証拠が何も残ていない)ので、ずいぶん悩んでしまう。

結局のところ、マウント時のオプションとして指定している文字列に msdos というのがあることに気がついて、どうやらカーネルのファイルシステムの機能に VFAT はあるものの msdos が無いことが原因らしい、ということに思いいたったのが今日のお昼すぎ。その後は、msdos.o なモジュールを作ったり、カーネルに組み込んで再構築したりで動作確認。

結果から見れば、「ふーん」程度の問題だろうけど、普通にファイルシステムとして使っている限り VFAT は MS-DOS FS の上位互換だから、VFAT があれば MS-DOS は不要だと思っていた身にとって、syslinux みたいにブートセクタをいじる場合は両者は非互換だということにはなかなか気づかないものだと思った春の一日。。。

でも、これで一山は越えたので、Plamo-4.0のβリリースは数日中に出せる予定。

-考えてみれば、syslinux がマウント時に指定している msdos を VFAT に変えてみる、という方法もあったかも。それで動くなら msdos/VFAT の非互換性という問題は無くなるわけだが。。 -- [[kojima]] SIZE(10){2004-04-06 (火) 23:57:54}
#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS