それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

grubメニューからLinux起動の手順をみて、Grubのコマンドを扱う方法を調べる。

GrubメニューでLinuxをコマンドから起動する。

めったに使わないし、そこまで重要でもない。ので、いつも忘れてググってる。最近は古の記事が削除されて、検索に苦労するのでメモとしてまとめる。

コマンドライン

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ディスクを作れば良い

Rufusで手軽にGRUBを作ることができる。

または、他のCD-ROMやUSBデバイスで起動してGRUBメニューで止める。GRUBコマンドに移行し、コマンドで起動するLinuxを指定すれば良い。

EFIgrubを指定する

EFIは起動パーティションであり、EFIフォルダが有る。EFI内部にGrubがあり、そのGrubから、最初に見つかったGrubが起動して処理が移る。

いまどきデュアルブートなんてやらないよね、と思ってた

いまどきデュアルブートをすることなんて無いと思うじゃん。WindowsUbuntuデュアルブートなんてEFIで快適に使えるとしても、めんどくさいじゃん。

ただ、サーバーのメンテナンスをリモートからやるときに、デュアルブートだと別OSで起動できるので、リモートからルートファイルシステムをチェックディスクしたり、resizefs でリサイズすることができて、デュアルブートは便利かもしれない。