grub
文章出自个人博客https://applelin8.github.io/2020/12/13/grub,转载请申明
content
前置知识:你必须知道grub的启动过程以及bios和uefi的相关基础知识,可以参考:《Unified Extensible Firmware Interface Wikipedia》、《linux启动过程简介》
format
ls /boot/grub/
fonts grub.cfg grubenv locale unicode.pf2 x86_64-efi
grub.cfg
grub.cfg:这是grub的启动shell脚本,对于用户来说,是最重要的文件,几乎是用户配置grub的唯一的配置文件。通过这个文件用户可以控制grub加载操作系统的行为,比如添加一个menuentry就是添加一个操作系统启动选项,每个选项中可以指定操作系统内核镜像和initramfs镜像等等。
grub.cfg一般都不会手动编辑的,而是用过grub-mkconfig -o /boot/grub/grub.cfg去生成。
grubenv:预设的一些环境变量可以放到这,是一个文本文件.
grep -wn menuentry grub.cfg
/etc/default/grub
ls /etc/grub.d/
00_header 05_debian_theme 10_linux 20_linux_xen 20_memtest86+ 30_os-prober 30_uefi-firmware 40_custom 41_custom README
set
/etc/default/grub
GRUB_DEFAULT
设定预设的menu entry,可以是数字,或者是menu entry的标头,或是『saved』。
GRUB_DEFAULT="${submenu id}>${menu entry id}"
example
to set
GRUB_DEFAULT="gnulinux-advanced-c635a47d-c750-40a1-b647-54f27cacbb87>gnulinux-4.9.151abc-advanced-c635a47d-c750-40a1-b647-54f27cacbb87"
set
sudo sed -e 's/GRUB_DEFAULT/#GRUB_DEFAULT/g' -e '/GRUB_DEFAULT/i\GRUB_DEFAULT=0' -i /etc/default/grub
sudo sed -e '/GRUB_DEFAULT/d' -i /etc/default/grub
sudo sed -e '6i\GRUB_DEFAULT="gnulinux-advanced-c635a47d-c750-40a1-b647-54f27cacbb87>gnulinux-4.9.151abc-advanced-c635a47d-c750-40a1-b647-54f27cacbb87"' -i /etc/default/grub
grep -n GRUB_DEFAULT /etc/default/grub
6:GRUB_DEFAULT="gnulinux-advanced-c635a47d-c750-40a1-b647-54f27cacbb87>gnulinux-4.9.151abc-advanced-c635a47d-c750-40a1-b647-54f27cacbb87"
sudo update-grub
sudo reboot
uname -r
4.9.151abc
submenu
grep -n "gnulinux-advanced-c635a47d-c750-40a1-b647-54f27cacbb87" /boot/grub/grub.cfg
19: set default="gnulinux-advanced-c635a47d-c750-40a1-b647-54f27cacbb87>gnulinux-4.9.151abc-advanced-c635a47d-c750-40a1-b647-54f27cacbb87"
130:submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-c635a47d-c750-40a1-b647-54f27cacbb87' {
menu entry
grep -n "gnulinux-4.9.151abc-advanced-c635a47d-c750-40a1-b647-54f27cacbb87" /boot/grub/grub.cfg
19: set default="gnulinux-advanced-c635a47d-c750-40a1-b647-54f27cacbb87>gnulinux-4.9.151abc-advanced-c635a47d-c750-40a1-b647-54f27cacbb87"
635: menuentry 'Ubuntu, with Linux 4.9.151abc' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.151abc-advanced-c635a47d-c750-40a1-b647-54f27cacbb87' {
评论:
技术文章推送
手机、电脑实用软件分享
微信公众号:farmer in city