BAK (1020) の日記
うーむ
会社の隣の席では,同僚が某ボード用の Linux の MTD ドライバに挑戦している. オンボードの Flash ROM をディスクとして使うためである. が,何か手こずってる様子.
この仕事が間に合わないと,私のところに降ってくるのは明白なので,どうにか頑張って欲しいところである. というわけで,どこではまっているか,聞いてみる.
聞くと,mkfs.jffs をネイティブ環境でコンパイルできない,という. pread というシステムコール(のラッパ)が libc に無いため,というのは,この前調べてあげたのだが,そのため,glibc-2.2 を構築しようとしてるのだそうだ. が,mkfs.jffs は,この前,私のクロス環境で static link して作った実行ファイルを渡しているはずなのだが. しかも,pread は,lseek と read をアトミックに行うシステムコールなので,他に邪魔するプロセスがいなければ lseek と read で書き直せることも教えたはずだ.
私のあげた実行ファイルではどうなのか,と聞くと「エラーが出て実行できない」という. どこぞの web のプリントアウトを見ながら作業してるので,その紙を奪って読んでみる. とりあえず,手持ちの mkfs.jffs.c を x86 環境でコンパイルして実行してみる. 確かにその紙の通りには実行はできない. が,単に -o のオプションを受け付けず,stdout に出力する,というだけである.
「む,出力ファイル?」 さらに記述を読むと,そのファイルを cat で MTD デバイスに流し込んでいる. つまり,これは mkisofs みたいにフォーマット済みのイメージファイルを出力するツールなのである.
「…というツールなので,x86 上でイメージを作って,そのイメージをボード上に持っていけば簡単」とアドバイス. が「x86 とは別のアーキテクチャなので動くはずが無い」という. 「エンディアンは一緒だし,動かない,という明確な理由はあるのか」と問い詰めるが,ごにょごにょいうばかり.
そこに社長がやってきたので,用途について聞いて「それじゃ MTD + ext2 でも問題はないですね」ということになる. で,MTD は動いているんだよね,と確認すると「動いてない」とか言い出す. この前動いていたように思ったのだが,勘違いだったのかな. 動いたと思って実は動いてなかった,というのはよくあることなので,このことはまあいい.
が,MTD が動いていない状態で mkfs.jffs のコンパイルを頑張ってどうするつもりなのだ?
ここでひとつの疑念.
「こいつ,C 言語わかるのか?」
まさか,とはおもうが,C わからない奴にカーネルハックやらせてるとしたら,なかなか豪快な会社である.