GRUBコンソールからDebianを起動
筆者は今までDebian(Linux)の起動時に何かのきっかけでgrub>というコンソール画面になると、一度電源を切ってしまっていたのですが、スマートではないと思って学習しました。
GRUBコンソール
まずその画面に移行する原因ですがgrubの選択画面でCを押すとgrub>となります。この画面はGRUBコンソールと呼ばれているそうです。
先に出ているGRUBのメニュー画面からeを押すと各エントリーの修正画面に以降します。この時はCtrl+XかF10ボタンで現在の設定値で実行。Ctrl+CかF2ボタンでコマンドラインへ以降、ESCボタンで前の画面に戻ります。
GRUBコンソールからメニューに戻る際は、「normal」とコマンドを入力します。また、「reboot」とするとそのままPCをリブートします。他、利用できるコマンドはGRUBコマンドに載っています。
GRUBコンソールからDebianを起動
GRUBコンソールからDebianを起動することもできます。その手順を紹介します。
- デバイスとパーテーションの確認
まずGRUBにLinuxカーネルが存在するデバイスとパーテーションを設定します。GRUBはLinuxとはまったく違うものでそれとは違ったデバイスとパーテーションの認識をしています。
それを確認するのはlsコマンドが使えます。これはよくあるLinuxのlsコマンドを実行しているわけではなくGRUBのコマンドです。
grub> ls (hd0) (hd0,msdos5) (hd0,msdos1) (fd0)
hd0やfd0がデバイス名、msdos5、msdos1がパーテーションとなります。
Debianにおいてsdaがデバイス、sda1の1がパーテーションを示しているのに似ているかもしれません。
sda sda1 sda5
- デバイスとパーテーションの選択
GRUBにデバイスとパーテーションを設定するには次のようにします。ここでは(hd0,msdos1)にLinuxカーネルが存在する前提です。
コマンドの入力中、キーボード配列が日本語配列でないと思います。英数の配列は印字通りですが、そうでない記号キーで使いそうなものをリストアップしておきます。
目的の文字 押すキー ( カッコ始 SHIFT+9 ) カッコ終 SHIFT+0 = イコール へ - ハイフン ほ _ アンダーバー SHIFT+ほ / スラッシュ /(そのまま) set root(hd0,msdos1) または set root=hd0,1
- カーネルの選択
起動に利用するカーネルの選択をします。カーネルイメージへのパスと、Debianのルートフォルダがあるパーテーション、ro(リードオンリー)オプションを指定します。これはlinuxコマンドの後に付与します。
GRUBはファイルシステムを読み込めるので、先のデバイスとパーテーションの設定が正しくできていればTABキーで入力補完が可能です。TABキーでの入力補完は候補がひとつの場合は自動でセットされます。
grub> linux /boot/vm (タブキー) 利用可能なファイル一覧 vmlinuz-4.9.0-7-686-pae vmlinuz-4.9.0-8-686-pae grub> linux /boot/vmlinuz-4.9.0-8-686-pae root=/dev/sda1 ro
ここではDebianのルートデイレクトリのある場所を通常のパスで指定しています。おそらく最近のGRUBの設定では、この指定がUUIDになっていると思います。前述のようにGRUBの最初のメニューからeボタンを押して設定を読みだしてみるとそれが確認ができます。
UUIDがわかればその記述でも指定が可能です。その際はroot=UUID=[UUIDの値]とします。
- 初期RAMディスクの指定
初期RAMディスクは起動中に一時的に利用される最小のLinuxシステムです。この設定はinitrdで指定します。ちなみにタブキーでの補完はコマンドでも可能です。
カーネルイメージが複数ある場合は、そのバージョンに合わせて初期RAMディスクを指定してください。また、筆者の場合はDebianでしたので、初期RAMデイスクはinitrdでしたが、initramfsファイルを指定する場合でもコマンドはinitrdです。
grub> ini (タブキー) 利用可能なコマンド一覧 initrd initrd16 grub> initrd /boot/initrd.img-4.9.0.8-686-pae
以上の設定が終わったら、bootコマンドを入力します。これでDebianが立ち上がってくるはずです。
grub> boot
OSが正常に起動されず、次のメッセージが表示された場合はどこか設定値が間違っています。エラーは上部の方に出ていると思いますが、linuxコマンドのrootオプションで指定した場所が見つからないとおきるようです。
Enter 'help' for a list of built-in commands. (initramfs)
まとめ
GRUBコンソールに入ってしまっても手動でDebianを起動することができます、normalコマンドで戻るかrebootコマンドを実行してしまう方が早いと思いますが。ただ、カーネルアップデート後に前のバージョンで起動したい時はこの方法で指定するのが、設定ファイルである/boot/grub/menu.lstやgrub.cfgを触るより早いと思います。
参考にさせていただきましたサイト一覧です。ありがとうございました。