grub2
grub2 console
linux のブートに利用される grub。何らかの理由で、下記の様な表示で止まった場合の対策。
基本は単純、下記コマンドを打つだけ。しかし、問題は、... の部分。
- set root=...
- linux ...
- initrd ...
- boot
以下は、この... を決める為の作業。 例えば、
- set root=(hd0,1)
- linux /boot/vmlinuz.img root=/dev/sda1
- initrd /boot/initrd.img
- boot
その前に、それぞれ...が何かを確認。
さて、どの様にして...を決めていくのか。先ずは、lsにて。
- grub> ls
- ls
(hd0) (hd0,msdos2) (hd0,msdos1)
この様に、grubが認識しているパーティションが表示される。
パーティションの中味は、
- ls (hd0,1)/
- grub> ls
(hd0,1)/ lost+found/ bin/ boot/ cdrom/ dev/ etc/ home/ lib/ lib64/ media/ mnt/ opt/ proc/ root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz vmlinuz.old initrd.img initrd.img.old
ファイルの内容が見たければ、
そんなこんなで、前記の...に埋める内容を見つける。
最後に、おまけ。
- set pager=1
- help
help を読みつつ、復旧させよう。
起動後
どうにかこうにか起動したら、grub復旧。
/dev/sda は起動ディスクでパーティションでは無いことに注意。
関連ファイル
- /boot/grub/menu.lst ; grub1用
- /boot/grub/grub.cfg ; 自動生成 by update-grub
- /etc/defaults/grub ; 編集用
- /etc/grub.d/* ; 編集用
/etc/defaults/grub
これはまた別の機会に。
grub rescue>の場合
以後は先程と同じ。set prefixは次項に。
- linux ...
- initrd ...
- boot
set prefix
/boot/grub をフルパスで設定する。通常は設定済。rescue で上がって来るのは、この変数が設定されていない、あるいはこのディレクトリからモジュールがロードできなかった場合。
(hd2,4)書式について
Grubではドライブやパーティションに対して (hdn,m) といった書式の命名法を採用しています。 n はドライブ番号、 m はパーティション番号。 ドライブはゼロから数え始めます。 プライマリパーティション番号は1から数え始め、拡張パーティションは5から数え始めます。 かつてのバージョンでは共にゼロから数え始めていましたが、今はそうではないので注意してください。 例えばパーティション sda1 は (hd0,1) となり、パーティション sdb3 は (hd1,3) となります。 Linux システムでの取り扱いとは違って GRUB では CD-ROM ドライブをハードドライブとしては扱いません。 例えば CD が hdb であり2番めのハードドライブが hdc であった場合、2番めのハードドライブは (hd1) と表記されます。
参考
https://jp.linux.com/news/linuxcom-exclusive/418274-lco20140625
http://itref.fc2web.com/unix/linux/grub.html
http://archive.linux.or.jp/JF/JFdocs/LFS-BOOK/chapter08/grub.html