GRUB のメニューの待ち時間を短くしたくて /boot/grub/grub.cfg を直接書き換えた
カーネルを更新したら元に戻ってた
【疑問】起動メニューの待ち時間を変えたのに反映されへん。GRUB 2 の /etc/default/grub と grub-mkconfig、GRUB Legacy の menu.lst【LPICレベル1】
前提のおさらい。起動は ファームウェア → ブートローダ → カーネルと initramfs → init の順。GRUB はブートローダで、カーネルとパラメータを選んで読み込む
>>1
GRUB 2 の grub.cfg は grub-mkconfig が作るファイルで、作り直すたびに上書きされる。書き換えるのは /etc/default/grub と /etc/grub.d/ のほう
>>3
手順
1. /etc/default/grub を直す
2. grub-mkconfig -o /boot/grub/grub.cfg で作り直す(Debian 系は update-grub が同じことをする。中身はこの1行のスクリプトやった)
Red Hat 系は grub2-mkconfig -o /boot/grub2/grub.cfg のように名前に 2 が付く
>>4
/etc/default/grub のよく使う項目(GRUB のマニュアルから)GRUB_TIMEOUT メニューを出して待つ秒数。既定5、0ですぐ起動、-1でずっと待つGRUB_DEFAULT 既定のメニュー。0から数えた番号か、savedGRUB_CMDLINE_LINUX すべての Linux の項目に付けるカーネルパラメータGRUB_CMDLINE_LINUX_DEFAULT 通常の項目だけに付ける(リカバリーの項目には付けない)
>>3
/etc/grub.d/ には何があるん?
>>6
grub-mkconfig が番号の順に動かすスクリプト。Debian 13 の grub-common には 00_header、10_linux、30_os-prober、40_custom などがあった。自分の項目を足すなら 40_custom に書く
>>2
起動のときのメニューでできることは?
>>8
矢印で選んで Enter で起動。e で選んだ項目をその場で書き換えられて、Ctrl+x でその内容で起動(保存はされない)。c でコマンドラインになる
linux の行の最後に systemd.unit=rescue.target を足して起動、みたいにして保守モードに入れる
>>1
grub.cfg の中身はどんな形?
>>10
項目ごとに menuentry '名前' { … } があって、中に linux /boot/vmlinuz-… root=UUID=… ro quiet と initrd /boot/initrd.img-…。自分で書くのは勧められてないから、読めればいい
>>11
GRUB Legacy は?
>>12
昔の版で、設定は /boot/grub/menu.lst(ディストリビューションによって grub.conf)を直接書く。作り直しのコマンドはないdefault 0、timeout 5、title Linux、root (hd0,0)、kernel /vmlinuz root=/dev/sda1 ro、initrd /initrd.img
>>13
(hd0,0) の数え方に注意。GRUB Legacy はディスクもパーティションも0から数えるから、(hd0,0) は1台目の1つ目のパーティション。GRUB 2 はパーティションを1から数えて、(hd0,1) が1つ目(GRUB のマニュアル)
>>2
GRUB そのものを入れ直すのは?
>>15grub-install /dev/sda。BIOS ならディスクの先頭(MBR)にブートローダを書く。UEFI なら --target=x86_64-efi --efi-directory=/boot/efi のように ESP を指定して .efi を置く。--boot-directory で /boot/grub 以外の場所も選べる
>>4
grub.cfg は直接触らん、/etc/default/grub を直して grub-mkconfig か update-grub。Legacy は menu.lst で0から数える。これで戻らへんようになった
管理人のひとこと
- GRUB 2 の /boot/grub/grub.cfg は grub-mkconfig が生成するので直接編集しない。/etc/default/grub と /etc/grub.d/(40_custom など)を直し、
grub-mkconfig -o /boot/grub/grub.cfg(Debian 系は update-grub、Red Hat 系は grub2-mkconfig と /boot/grub2/)。 - /etc/default/grub:GRUB_TIMEOUT(既定5、0 すぐ、-1 待ち続ける)、GRUB_DEFAULT(0 から数えた番号か saved)、GRUB_CMDLINE_LINUX、GRUB_CMDLINE_LINUX_DEFAULT。
- 起動メニュー:
eで一時的に編集して Ctrl+x で起動、cでコマンドライン。 - GRUB Legacy は /boot/grub/menu.lst(grub.conf)を直接書く。default・timeout・title・root・kernel・initrd。パーティションは0から数える((hd0,0))。GRUB 2 は1から((hd0,1))。
grub-install /dev/sdaで入れ直す。UEFI は--efi-directoryで ESP を指定する。