めったに使わないし、そこまで重要でもない。ので、いつも忘れてググってる。最近は古の記事が削除されて、検索に苦労するのでメモとしてまとめる。
コマンドライン
GRUBメニューからキー c
を押すとGRUBのコマンドメニューに入ることができる、
grub のコマンドをが起動したところ
環境変数を設定して
linuxをロードして起動
コマンドで起動する
linuxを指定して、initrdを指定して、bootする
grub> set root=(hd0 ,gpt4) grub> linux /boot/vmlinuz root=/dev/sda4 grub> initrd /boot/initrd.img grub> boot
lsなどでページを送りにする
そのままでは、スクロールなしに出力が流れてしまうので、ページャーを使う。
grub> set pager=1
root=/ HDDを決める
grub> set root=(hd0 ,gpt4)
linuxカーネルと ルートファイルシステム指定
grub> linux /boot/vmlinuz root=/dev/sda4
起動ram指定
grub> initrd /boot/initrd.img
起動
grub> boot
実際に行うと
ファイル名が微妙に異なったり、TABで補完などで上記のスクショのようにならないけど、Ubuntuはリンクを持ってるので、上記のスクショのようにすごくきれいになる。
DebianをBootした場合
HDDを探す
HDDとパーティションを探すときに、ls
を叩くだけで、HDDの一覧が見える。GPTが有効になってると、GPTのディスク・パーティションも見えた。
起動メニューを編集
GRUBのメニューでe
を押すと、起動メニューを編集することができる。
何が書いてるのか最初はわからないと思うが、上記のスクショのように「コマンド」から「boot」を体験してみるとよく分かる。
すでに見てきた通り、rootをどこにして、linuxをロードして、initrd をロードして bootを叩くだけである。
ディスクコピーやパーティション構成や順番を変えた後に、起動メニューから起動しないとき、編集から(hd0,gpt1)
のようなディスク指定を変えれば動く。ディスクの確認は、前に紹介した通りコマンドに入って ls
でディスク番号が確認できる。
insmod と lsmod
insmod でgrubに登録されているモジュールをロードできる。
モジュールは手作業でロードすることができる。
grub> lsmod grub> insmod usbserial_pl2303
lsmod がスクロールしてしまうときは、pagerを設定すると良い。
grub> set pager=1
lsmod すると見えるのは grub
作られたときにHDDにファイルが作成されている
Linux起動後は、通常シェルから確認できる。
ls -l /boot/grub/x86_64-efi/ total 3500 -rw-r--r-- 1 root root 15600 May 20 03:00 acpi.mod -rw-r--r-- 1 root root 22944 May 20 03:00 ahci.mod -rw-r--r-- 1 root root 824 May 20 03:00 all_video.mod ...(略)
grub は起動するけど起動メニューが使えないとき
HDDをディスクコピーして、grub は起動するけど、起動メニューに設定された起動設定が起動しないときに、上記のスクショのように、自分で linux ...
とinitrd ...
を指定して起動する
無事に起動したら
grub-install コマンドを使って、HDDにgrubをインストールし直す。
sudo grub-install /dev/sda
update-grubのコマンドを使って、起動メニュー起動設定を作り直してあげる。
sudo update-grub
これらのコマンドを使うと、パーティションを移動することができる。
起動しないときの大半は、hd0,gpt0が hd1,gpt4とかに変わっちゃったとかだからね。
grubすら起動しないとき
ディスクはあるけど、grubすら起動しないときは、GrubだけインストールしたUSBディスクを作れば良い
または、他のCD-ROMやUSBデバイスで起動してGRUBメニューで止める。GRUBコマンドに移行し、コマンドで起動するLinuxを指定すれば良い。
EFIでgrubを指定する
EFIは起動パーティションであり、EFIフォルダが有る。EFI内部にGrubがあり、そのGrubから、最初に見つかったGrubが起動して処理が移る。
いまどきデュアルブートなんてやらないよね、と思ってた
いまどきデュアルブートをすることなんて無いと思うじゃん。WindowsとUbuntuをデュアルブートなんてEFIで快適に使えるとしても、めんどくさいじゃん。
ただ、サーバーのメンテナンスをリモートからやるときに、デュアルブートだと別OSで起動できるので、リモートからルートファイルシステムをチェックディスクしたり、resizefs でリサイズすることができて、デュアルブートは便利かもしれない。