diary/Kojima

・USB-3.0 HDD へのインストール

Plamo-7.0 を USB-3.0 な外付け HDDにインストールすると、インストールは終了するものの起動できない、というトラブルが報告されたので、少し手元でも追いかけてみた。

USBってケーブル1本挿すだけで接続できるので便利なんだけど、内部的には 最初期の1.0とそれに続く2.0、現在の3.0と3つの仕様があって結構面倒。 PC側のコントローラも1.0のころはOHCI、2.0のころはEHCI、3.0になるとxHCIが要求される。

USB-2.0なHDDだとインストールできるけど、USB-3.0 な HDDではインストールできない、 という報告を聞いて、まず思ったのはPC側のコントローラで、調べてみると、Plamo-7.0のデフォルトでは xHCI はモジュールとしてビルドしていたので、そのままでは USB-3.0 な HDD を root partition に指定することができない。

 USB-3.0 なドライブを読むためのドライバが USB-3.0なドライブ上にある、という、「缶切りが缶詰の中」状態

この問題を解決するには xHCIなドライバをカーネル組み込みにすればいいはずなので、その設定でビルドしたカーネルをインストールしてみたものの、症状は全然変らない。

当初は、「他にも必要なモジュールドライバがあるのかな?」と思って、内蔵HDDをroot partitionにして起動し、USB-HDD をマウントしてモジュール類が変るかとか試してみたけど、モジュールドライバの追加は一切起きておらず、なぜ読めたり読めなかったりするのかさっぱり分からない。

カーネルのバージョンを変えたり、不要なドライバを限界まで削ったりしたカーネルで試してみても root partition な USB-3.0 な HDD をマウントできない状態は変らず、いよいよ八方塞がりな感じ。

「さて、どうしたものか。。」と思った時、root fsをマウントできずにハングするカーネルのメッセージでも調べてみようか、と思いつき、まずは boot_delay=N なオプションを起動時パラメータに追加してみる。

boot_delay=N は、カーネルの内部ログを出力する printk に一定時間の遅延を加えてメッセージ出力を見やすくする機能なものの、今回のトラブルでは複数回の printk を呼んでないようで、指定した delay は機能しない。

さて、困ったな、他に似たようなカーネルパラメータはあったっけ。。と /usr/src/linux/Documentation/admin-guide/kernel-parameters.txt を "delay" をキーワードに調べたら、root_delay=N とか rootwait というパラメータの存在に気づいた。

これらのパラメータが何をしてるのかと言うと、root partition を読み込むまでに一定時間待つ(root_delay)とか root partition が読めるまで待つ(rootwait)な機能で、これを見た時に、「USB-3.0 HDD のスピンアップが間にあっていない」という可能性がひらめいた。

考えてみると、USB-3.0 はデータの転送速度が 2.0 までよりもずいぶん速くなっているので、起動したカーネルがroot partitionを読み込むまでの余裕はかなり短かくなっていて、その間に HDD のスピンアップが間に合わなければカーネルは"root fsを読み込めない”なエラーになるはず。

それに気づいて、起動時のパラーメータに rootwait を追加してやると、USB-3.0なHDDからも問題なく起動できるようになった。

当初「カーネルが読めるならroot fsも読めるはず」と思い込んでいたけれど、カーネルはgrubが読み込んで時間制限は無いのに対し、root fs はカーネルが読もうとして読めなければエラーになるので、spin up の余裕を持たせるのは必須だった感じ。

USB-3.0なHDDにインストールできない問題をググってみると、mkinitrd に xHCI が入ってない、みたいな答を目にするものの、確かにドライバ的には xHCI が必要だけど、initrd を使う場合は spin up に余裕があって「ドライバを入れてるのにroot fsが読めない」という問題は生じないようで、このあたりは initrd を使っていないPlamo 固有の問題だった感じ。

何とか解決できたので、さっそくUSB-3.0なHDDに対応したDVDイメージを作って、手元でも3TB な USB-3.0 HDD から起動する環境を作り、現在その環境で作業中。ここ3,4年使ってマウントにずいぶん時間がかかるようになった内蔵3TB HDDから必要なファイルをUSB HDD上にコピーして、HDDを整理しようと目論んでいる(w



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:43