読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】起動メニューの待ち時間を変えたのに反映されへん。GRUB 2 の /etc/default/grub と grub-mkconfig、GRUB Legacy の menu.lst【LPICレベル1】

17レスカテゴリ:Linux
1: 名無しさん

GRUB のメニューの待ち時間を短くしたくて /boot/grub/grub.cfg を直接書き換えた
カーネルを更新したら元に戻ってた

2: 名無しさん

前提のおさらい。起動は ファームウェア → ブートローダ → カーネルと initramfs → init の順。GRUB はブートローダで、カーネルとパラメータを選んで読み込む

3: 名無しさん

>>1
GRUB 2 の grub.cfg は grub-mkconfig が作るファイルで、作り直すたびに上書きされる。書き換えるのは /etc/default/grub と /etc/grub.d/ のほう

4: 名無しさん

>>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 が付く

5: 名無しさん

>>4
/etc/default/grub のよく使う項目(GRUB のマニュアルから)
GRUB_TIMEOUT メニューを出して待つ秒数。既定5、0ですぐ起動、-1でずっと待つ
GRUB_DEFAULT 既定のメニュー。0から数えた番号か、saved
GRUB_CMDLINE_LINUX すべての Linux の項目に付けるカーネルパラメータ
GRUB_CMDLINE_LINUX_DEFAULT 通常の項目だけに付ける(リカバリーの項目には付けない)

6: 名無しさん

>>3
/etc/grub.d/ には何があるん?

7: 名無しさん

>>6
grub-mkconfig が番号の順に動かすスクリプト。Debian 13 の grub-common には 00_header、10_linux、30_os-prober、40_custom などがあった。自分の項目を足すなら 40_custom に書く

8: 名無しさん

>>2
起動のときのメニューでできることは?

9: 名無しさん

>>8
矢印で選んで Enter で起動。e で選んだ項目をその場で書き換えられて、Ctrl+x でその内容で起動(保存はされない)。c でコマンドラインになる
linux の行の最後に systemd.unit=rescue.target を足して起動、みたいにして保守モードに入れる

10: 名無しさん

>>1
grub.cfg の中身はどんな形?

11: 名無しさん

>>10
項目ごとに menuentry '名前' { … } があって、中に linux /boot/vmlinuz-… root=UUID=… ro quiet と initrd /boot/initrd.img-…。自分で書くのは勧められてないから、読めればいい

12: 名無しさん

>>11
GRUB Legacy は?

13: 名無しさん

>>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

14: 名無しさん

>>13
(hd0,0) の数え方に注意。GRUB Legacy はディスクもパーティションも0から数えるから、(hd0,0) は1台目の1つ目のパーティション。GRUB 2 はパーティションを1から数えて、(hd0,1) が1つ目(GRUB のマニュアル)

15: 名無しさん

>>2
GRUB そのものを入れ直すのは?

16: 名無しさん

>>15
grub-install /dev/sda。BIOS ならディスクの先頭(MBR)にブートローダを書く。UEFI なら --target=x86_64-efi --efi-directory=/boot/efi のように ESP を指定して .efi を置く。--boot-directory で /boot/grub 以外の場所も選べる

17: 名無しさん

>>4
grub.cfg は直接触らん、/etc/default/grub を直して grub-mkconfig か update-grub。Legacy は menu.lst で0から数える。これで戻らへんようになった

管理人のひとこと