次のページ
前のページ
目次へ
pcmciax.gz は Slackware 3.1 のカーネルと組みあわせて使うように
pcmcia-cs も 2.0.0 のカーネル用にコンパイルしていますので、カーネルを
バージョアップする際には pcmcia-cs も再コンパイルが必要です。
initrd 経由で起動している場合、pcmcia-cs が initrd で起動するファイル
システムの中に置かなければならないので、システムをバージョンアップする
際には多少の注意が必要になります。
カーネルの再構築時には 以下の項目に注意して設定してください。これら以
外のオプションはお使いの環境に合わせて設定します。
- "Loadable modules support" の "Enable
loadable module support" と "Kernel daemon support"
を設定。
- "General Setup" の "Kernel Support for a.out
binaries" と "Kernel Support for ELF binaries" を設
定(モジュールではダメ)。
- "Floppy, IDE, and other block devices" の "Loopback
device support" 、"RAM disk support" と
"Initial RAM disk(initrd) support" を設定。
- "SCSI support" の "SCSI support"、"SCSI
disk support" を設定。"SCSI tape support",
"SCSI CD-ROM support", "SCSI generic support"
は設定してもモジュールでも可。必須ではありませんが "Probe all
LUNs on each SCSI device" も念のため設定しておきます。
- NFS root を使う場合は "File systems" 中の
"NFS"と"NFS root"オプションも設定します。
カーネルをコンパイルする際には make zlilo ではなく、make
zImage で /usr/src/linux/arch/i386/boot/zImage を作りま
す。この zImage を DOS 領域にコピーして、このカーネルイメージを
loadlin.exe でロードするようにします。
# cp /usr/src/linux/arch/i386/booz/zImage /dos/linux/zimage.new
カーネルのコンパイルが終れば、モジュール類も忘れずコンパイル、インストー
ルしておきます(make modules; make modules_install )。
次回に起動するときは loadlin.exe で zimage.new を指定します。
pcmcia-cs はルートファイルシステムと initrd の双方にインストールしてや
る必要があります。pcmciax2 をループバックでマウントして
/sbin/{cardmgr, cardctl} や
/lib/modules/2.0.x/pcmcia 以下を入れ替えるのも一つの方法です
が、この場合、pcmciax には libc-4.7.6 しか入っていないことに注意してく
ださい。すなわち、コマンドである /sbin/{cardmgr,cardctl} をコ
ンパイルする場合は a.out 形式でコンパイルする必要があります。
このためには、pcmcia-cs を通常の make でコンパイルしてから、cardmgr ディ
レクトリに移り、Makefile に CC = /usr/i486-linuxaout/bin/gcc を追加し
て make clean; make します。いくつかのコマンドは a.out 形式でうまくコ
ンパイルできないかも知れません。
もう一つの方法は、 ELF 形式のコマンドを集めた新しい initrd を用意する
ことです。新しく initrd を作るには、まず ramdisk 上にファイルシステム
を作って必要なファイルを集め、それをファイルに書き出すのが簡単でしょう。
以下にそのための一つの手順を述べます。
- ramdisk 上に 4M ほどの ext2 のファイルシステムを構築する。
# mke2fs /dev/ram0 4000
initrd 経由で起動したシステムの場合、/dev/ram0 は使用中の場合
がありますので、その際は /dev/ram1 等を使ってください。
- ramdisk を適当なディレクトリにマウント。ヒナ型に使うために、pcmciax2
も別のディレクトリにマウントし、いったん pcmciax と同じファイルを
/workdir 以下にコピーします。
# mount -t ext2 /dev/ram0 /workdir
# mount /dos/linux/pcmciax /refdir -o loop,ro
# cd /refdir; tar cvf - * | (cd /workdir; tar xf -)
-
この時点で /workdir 以下は pcmciax2 と同じファイル構成になっているので、
a.out 形式のライブラリやコマンド類を ELF 形式のものに入れかえます。こ
のあたりは面倒ですが、手作業でやるしかないようです。
- pcmcia-cs を /workdir 以下にインストールします。pcmcia-cs のディレクト
リで
make config すると設定に関する質問が表示されますので、
"Alternate target install directory " で
/workdir を指定します。
# make config
Linux PCMCIA Configuration Script
The default responses for each question are correct for most users.
Consult the PCMCIA-HOWTO for additional info about each option.
Linux source directory [/usr/src/linux]:
Alternate target install directory [/]: /workdir
/workdir
C compiler name [gcc]:
......
この状態で make all して make install すれば /workdir/etc/pcmcia
や /workdir/lib/modules/`uname -r`/pcmcia に必要なモジュールがイ
ンストールされます。ただし、/workdir/usr/man 以下に pcmcia-cs の
マニュアル類もインストールされてしまうので不要ならば削除してください。
initrd 以外に、起動後に実行される実際のルートファイルシステムにも
pcmcia-cs はインストールしておく必要があります。そのためには、
pcmcia-cs を再度 "Alternate target install directory : / " に設定して
インストールしておきましょう。
-
/dev/ram0 に作成したファイルシステムを通常のファイルに落とし
ます。
# umount /workdir
# dd if=/dev/ram0 of=initrd bs=1k count=4000
- これで新しい initrd ができました。
mount initrd /workdir -o
loop として、正しくファイルシステムとして認識できるか確認しておき
ましょう。
- 新しく作った initrd を DOS からアクセスできる領域にコピーします。
initrd は圧縮しておくことも可能です。
# cp initrd /dos/linux
# gzip /dos/linux/initrd
- 新しいカーネルと initrd の組み合わせで再起動します。
手元で試作した initrd を
http://www.st.rim.or.jp/~isle/Linux/initrd.gz に用意しました。
この initrd には、対話的に外付け SCSI をルートファイルシステムにしたり、
NFS root を指定したりする dialog も付けていますので、興味のある方はお
試しください。この initrd に組みこんでいる pcmcia-cs は 2.8.23 でカー
ネル 2.0.27 用にコンパイルしています。
次のページ
前のページ
目次へ
|