日曜日, 4月 23, 2006

ようやくお仕事用Linux CF完成

お仕事で使う組み込み用PCのLinux環境の作成メモ。

glibcが2.2系、カーネルがacpiをサポートした2.4.22以降、pcmciaが使えること。
最初はRedhat9をベースに作っていたのだが、サポートが既に終了している為、情報があまり正確に残ってない。
カーネルにACPIサポートを入れてビルドし直したりしたけど、カーネル構築で他に必要なものを入れ忘れたりで、何度か繰り返したりで、結局面倒くさくなって挫折。

で、今インストールイメージが入手できて、ACPIがパッケージでインストールできそうなvine2.6を発見し、
こいつをベースに環境構築を始める。

とりあえずgccも使えるようにと1GBのCFで作成。
Xはいらないから、パッケージを選択して1GBに収まるように設定。
代替のデスクトップPCでのインストールだから、明示的にノートPC用のPCMCIAサポートを忘れずに選択。

インストール完了後、ACPIをVinePlusからダウンロードしてインストール。
rpm -UVh acpid-・・・・
このままでは、シャットダウンスクリプトが正しくないので修正
サンプルをコピーし以下の名前で作成。
/etc/acpid/events/power

# /etc/acpid/events/power

event=button.power.*
action=/sbin/poweroff

書き換え後、acpidを起動
/etc/rc.d/init.d/acpid start

電源ボタンでシャットダウンを確認する。

さて、このまま入れ換えて実機で起動をかけてみたところ、
実機では起動できずKernel Panic
何故かと考えてみたら、元々内蔵しているHDDがhdaとして認識されてしまい、起動できないようである。

別のPCにIDE-CFアダプタつけて起動し、liloの設定/etc/lilo.confを書き換えて、
lilo -v
して、liloをコンパイルして書き込みして再起動

OKOK。これで起動はOK。

しかーし、今回はたまたまCFから起動できる別のPCがあったから良いが、実際にはこれでは不便。
てな訳で、aptのsource.listを修正して、
#apt-get install grub
でgrubをインストールし、grubをMBRに書き込む
# /usr/sbin/grub-install /dev/hda

そして再起動
これでgrubで再起動が可能になった。
とりあえず、これでCFをマウントできるLinuxがあればgrub.confを書き換えてやれば、
hdaだろうがhdbだろうがコンパイルなしで切り替えられる。

さて、ここまで来てPCMCIAのカードを入れてみる。
認識されない・・・・・(-o-;

/etc/sysconfig/pcmciaをみると、
pcmcia=noになってた。
ここいらをちょいと弄くって再起動

そんなこんなでようやく終了。

あとは、/etc/rc.localで、自動マウントやら自動プログラム起動を書いて終了。
次はいらないものが何処まで削れるかだな。