USBハードディスクからLinuxカーネルを起動するためにgrubをどのように設定すればよいですか?


17

外付けエンクロージャーにラップトップハードドライブがあり、これを大きなペンドライブとして使用しています。さらにひねりを加えるために、Linuxをインストールしたので、選択したディストリビューションで任意のマシンをブートできます(たとえば、データリカバリやb0rkedシステムの修復、またはプレインストールされたWindowsを破壊せずに借りたラップトップを使用)。問題は、ハードウェア構成によっては、USBハードドライブが異なるパスで表示される場合があることです。GRUBの構成については、GRUBの起動元(hda0,0)のデバイスに関連して使用します。にUUIDエントリがあり/etc/fstabます。またrootwait、デバイスをマウントする前にUSBサブシステムが落ち着くまで待機するように、カーネルパラメーターで指定します。

カーネルに何を渡すべきroot=ですか?現在、ペンドライブから1回起動し、デバッグメッセージをチェック/dev/sdXして、カーネルによってUSBドライブに割り当てられているデバイスを確認してから、再起動してgrub設定を編集します。Boot from USB hard driveBIOSで有効にして、内蔵ハードドライブよりも高い優先度に設定する以外、PCで何も変更できません。

ルートデバイスパスでのUUIDのサポートを含む、さまざまなinitrd生成スクリプトがありますが、残念ながら、Gentooネイティブのもの(genkernel)はサポートrootwaitしていません。

起動プロセスは次のようになります(Windowsでも非常に似ています)。

  1. BIOSはブートデバイスを選択し、MBR(grub stage-1)をロードします。
  2. Grubは、BIOSによってロードされたデバイスにroot使用(hd0)して、設定されたデバイスから構成とステージ2ファイルをロードします。
  3. Grubはカーネルをロードして起動します(同じ番号付けなので、(hd0,0)再び使用できます)。
  4. カーネルはすべての組み込みデバイスを初期化します(rootwait今では魔法のようです)。
  5. カーネルは、渡されたパーティションをマウントしますroot(これはカーネルパラメーターであり、grubパラメーターではありません)。
  6. init.dからのマウントを含む、ユーザーランドの起動プロセスを開始します/etc/fstab

パート5は私に問題を与えているものです。

回答:


6

答えはどちらroot=LABEL=...かを使用する必要があると思いますroot=UUID=...

しかし、あなたはこれがあなたのために働かないことを示します。initrdの動作に問題があるかどうかを調べることをお勧めします。


私はinitrdを持っていません、それが全体の問題です。genkernelは「rootwait」オプションをサポートしておらず、その他はGentooでは動作しません。
スコリマ08年

2

間違っているかもしれませんが、単に誤解しているかもしれませんが、起動デバイスの選択は、起動しているマシンのBIOSから設定されるものではありませんか?

ブートローダーとしてGRUBがインストールされているUSBドライブを選択し、GRUBメニューからブートするディストリビューションを選択することだと思います。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.