お仕事で使う組み込み用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で、自動マウントやら自動プログラム起動を書いて終了。
次はいらないものが何処まで削れるかだな。