Linux多系统并存的GRUB配置文件
在Linux多系统并存的情况下,GRUB(GRand Unified Bootloader)是一个常用的引导程序,用于管理多个可启动操作系统的引导。GRUB的配置文件位于/boot/grub目录下,文件名为grub.cfg(或者menu.lst)。
以下是一个示例的GRUB配置文件:
### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=5
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root c72b9d59-7eaf-4934-98d8-bb5dd6ff2f9e
linux /boot/vmlinuz-5.4.0-88-generic root=UUID=c72b9d59-7eaf-4934-98d8-bb5dd6ff2f9e ro quiet splash
initrd /boot/initrd.img-5.4.0-88-generic
}
menuentry 'Fedora' --class fedora --class gnu-linux --class gnu --class os {
load_video
insmod gzio
insmod part_msdos
insmod xfs
set root='(hd0,msdos2)'
search --no-floppy --fs-uuid --set=root cbe376ad-7342-4519-95a0-4a4477f5013c
linux /boot/vmlinuz-5.14.0-rc7 root=UUID=cbe376ad-7342-4519-95a0-4a4477f5013c ro quiet splash
initrd /boot/initramfs-5.14.0-rc7.img
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 10' --class windows --class os {
insmod ntfs
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set=root 8A90223D90222653
ntldr /bootmgr
}
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "System Reboot" {
reboot
}
### END /etc/grub.d/40_custom ###
上述配置文件中,包含了三个菜单项:Ubuntu、Fedora和Windows 10。每个菜单项中都设置了对应的操作系统引导信息,包括内核路径、根目录UUID等。以及其他一些选项,如设置默认引导项、超时时间等。
需要注意的是,GRUB的配置文件是由一系列脚本文件生成的。每个脚本文件对应一个菜单项的生成规则,可以在/boot/grub.d目录下找到这些脚本文件,它们按执行顺序组成了最终的配置文件。
完成对GRUB配置文件的修改后,需要运行sudo update-grub
命令更新配置文件,使其生效。在系统启动时,GRUB将根据配置文件中的内容显示相应的菜单项供用户选择。