CardBus 上の HDD から Linux を起動 †EeePC を買って,VAIO U3 がお役ご免になってしまってかなり経つ. このまま放置しておくのももったいないので「Linux サーバにでもしようか」と思い立つ. Linux のディストリビューションは debian squeeze を使うことにする. ストレージの接続 †USB HDD --(USB 2.0)-- I/Fカード --(CardBus)-- VAIO U3 (swap, /) | 内蔵 HDD (/boot) VAIO U3 本体の USB インターフェースは USB 1.1 なので,CardBus スロットに USB 2.0 インターフェースカードを刺し,そこに HDD を接続することにする. また,BIOS が USB ストレージからの起動に対応していないので,起動ファイルだけは内蔵 HDD に置くことにする. 問題 †予想していたのだけれど
という事態になる. x86 PC 上での Linux の起動シーケンスは
となっているが,initramfs の段階で「root fs が mount できない」ということで,起動処理が中断している. VAIO U3 本体の USB 1.1 ポートに HDD を接続すれば(すごく遅いけど)起動はするので,
というところまで対処は絞り込める. initramfs-tools †initramfs イメージを展開して手でいじってもいいのだけれど,パッケージアップデートが入る度に変更が元に戻されてしまうことになる. そこで,initramfs イメージを生成している initramfs-tools を設定することにする. man initramfs-tools を読むが,いまいちピンと来ない. そこで,とりあえず,PC カードスロットのドライバ(pcmcia_core, pcmcia, yenta_socket)を組み込むことにする. 以下のような /etc/initramfs-tools/hooks/cardbus ファイルを作成する. #!/bin/sh PREREQ="" prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac . /usr/share/initramfs-tools/hook-functions # Begin real processing below this line force_load pcmcia_core force_load pcmcia force_load yenta_socket exit 0 で,initramfs イメージを作り直す. # update-initramfs -u そして,再起動をかけると… ありゃ,あっけなく認識してしまった. 最近では initramfs 上でも udev が動いていて,hotplug まわりの処理もやってくれるようで. 追加で何かスクリプトを仕込まないといかんのか,と思ってたので,拍子抜けである. |