* CardBus 上の HDD から Linux を起動 [#j221f05b]

EeePC を買って,[http://www.vaio.sony.co.jp/Products/PCG-U3/ VAIO U3] がお役ご免になってしまってかなり経つ.
このまま放置しておくのももったいないので「Linux サーバにでもしようか」と思い立つ.
Linux のディストリビューションは debian squeeze を使うことにする.

** ストレージの接続 [#o348be00]


 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 に置くことにする.



** 問題 [#yfe7dfcb]

予想していたのだけれど
> root fs が mount できずに Linux が起動しない

という事態になる.

x86 PC 上での Linux の起動シーケンスは
+ 電源投入
+ BIOS
++ grub をロード
+ grub
++ Linux カーネルと initramfs をロード
++ initramfs 上で Linux を起動
+ initramfs
++ root fs に必要なドライバをロード
++ root fs に pivot root
+ 本起動

となっているが,initramfs の段階で「root fs が mount できない」ということで,起動処理が中断している.

VAIO U3 本体の USB 1.1 ポートに HDD を接続すれば(すごく遅いけど)起動はするので,
> initramfs 上で CardBus カードを認識させればいい

というところまで対処は絞り込める.

** initramfs-tools [#l78bc608]

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 まわりの処理もやってくれるようで.
追加で何かスクリプトを仕込まないといかんのか,と思ってたので,拍子抜けである.

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS