diary/Kojima/2018-07-16
の編集
http://plamo.linet.gr.jp/?diary/Kojima/2018-07-16
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
diary/Template
[[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 #comment
タイムスタンプを変更しない
[[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 #comment
テキスト整形のルールを表示する