私はいくつかの関連する質問を見つけましたが、それらのどれも私の問題を解決できませんでした。
Windowsハードドライブを搭載したノートパソコンがあります。私は2番目のハードドライブにDebianをインストールしたかったので、キャディを接続してWindowsハードドライブを取り外しました。その後、Debian を正常にインストールし、その時点で唯一のディスクだったので、同じディスクに GRUB をインストールしました。その後、Windowsハードドライブを再挿入しました。
これで、BIOSから起動するドライブを選択できるようになりました。 Windowsドライブは完全に起動しますが、Debianドライブから起動することを選択するとGRUBメニューが表示され、ダッシュが点滅する黒い画面が表示されます。
Windowsハードドライブを削除すると、Debianを正常に起動できるため、GRUBの設定に問題があるようです。
したがって、私はGRUBコンソールを選択します。 Linuxが(hd0,5)パーティションにあり、vmlinuzとinitrdがルートからアクセスできることを検出して、一般的なタスクを実行しました。
grub> set root=(hd0,5)
grub> linux /vmlinuz root=/dev/sda5
grub> initrd /initrd.img
grub> boot
その後、多くのinitrd出力と複数のメッセージが表示され、最後に次のメッセージBegin: Running /scripts/local-block ... done.
で失敗します。sda5 doesn't exists. Dropping to a shell
でも、まあ…あるじゃないですか…そんなことが存在してブロックされました。
ベストアンサー1
ドライブ識別とパーティション識別の2つの問題があります。
Grubは0からパーティション計算を開始し、Linuxは1からパーティション計算を開始します。したがって、Grubがhd0
Linux用の場合、sda
Grubは(hd0,5)
Linux用ですsda6
。
Grubで「root」として選択したパーティションは、必ずしもLinuxのルートパーティションである必要はありません。 Grubでは、「root」はショートカットにすぎないため、ファイル名の前にパーティション名を入力する必要はありません。別々のパーティションがある場合、Grubはその内容(カーネルイメージと初期RAMディスクイメージ)/boot
にのみ興味があるため、通常これをGrubルートに設定します。 Linuxはアップグレードする以外に/boot
内部の内容には興味がありません。/boot
GrubとLinuxの間のドライブ番号が一致しない可能性があります。 GrubはコンピュータのBIOSを使用してドライブを列挙します。 Linuxには独自のドライバがあります。ディスクが異なるインタフェースを介して接続されている場合、どのディスクコントローラがより速く応答するかによって、リストされている順序を予測することは困難です。したがって、Grubがhd0
必ずしもLinuxである必要はありませんsda
。
コンピュータが確実に起動するようにするには、ディスクの接続方法とコントローラの応答時間に関係なく、英数字の代わりにラベルまたはUUIDを使用してください。起動したら実行してください。通常、UUIDを含むファイルを生成する必要がupdate-grub
あります。/boot/grub/grub.cfg
GrubとLinuxはどちらも起動時に使用可能なパーティションを列挙し、対応するUUIDを覚えています。grub.cfg
次の行が表示されます。
search --no-floppy --fs-uuid --set=root 82aecd65-6423-4d95-9319-3034263ee747
そして
linux /vmlinux root=UUID=82aecd65-6423-4d95-9319-3034263ee747 ro