GRUB is a bootloader responsible for loading vmlinuz and initrd.img into RAM at booting.
Configuration files.
/etc/default/grub
/etc/grub.d
/boot/grub2/grub.cfg
Parameters.
| Parameters | Meaning | Examples |
|---|---|---|
| GRUB_TIMEOUT | Timeout for grub menu | -1, 0, 5 |
| GRUB_TIMEOUT_STYLE | Menu style | menu, countdown, hidden |
| GRUB_DEFAULT | Default entry to boot | Index or ID of meny entry |
| GRUB_CMDLINE_LINUX | Kernel parameters | console=ttyS0 |
| GRUB_DISABLE_OS_PROBER | Menu entries for other OS | true, false |
Change configuration.
# edit config
$ vi /etc/default/grub
# validate config
$ grub-script-check -v /etc/default/grub
# apply change
$ grub-mkconfig -o /boot/grub/grub.cfgAdd menu entry.
$ vi /etc/grub.d/40_custommenuentry 'Ubuntu' {
insmod gzio
insmod part_gpt
insmod ext2
linux /vmlinuz-5.15.0-164-generic /dev/mapper/ubuntu--vg-ubuntu--lv ro
initrd /initrd.img-5.15.0-164-generic
}$ grub-mkconfig -o /boot/grub/grub.cfgInstall grub to a device.
# install grub
$ grub-install /dev/sdb
# verify
$ xxd -l 512 /dev/sdbMaster Boot Record.
| Offset | Size | Purpose |
|---|---|---|
| 0x0000 | 446 B | Boot code |
| 0x01be | 64 B | Partition table (4 entries × 16B) |
| 0x01fe | 2 B | Boot signature (0x55aa) |