目录
前言
GRUB多重启动管理器。
一、GRUB是什么
GRUB(GRand Unified Bootloader简称“GRUB”)是GUN项目的多操作系统启动程序,它允许用户在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。
二、示例
cat /etc/default/grub
返回如下信息:
# If you change this file, run 'update-grub' afterwards to update /boot/grub/grub.cfg.
(更改后运行"update-grub")
# For full documentation of the options in this file, see:info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0 (0表示第一个启动项,saved表示上次选择项)
GRUB_TIMEOUT=5 (等待选择启动项的时间为5秒,0表示直接进入默认选项)
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`(提取发行版本号)
GRUB_CMDLINE_LINUX_DEFAULT="quiet"(此处有3个选项,"quiet"的意思是内核启动时候简化提示信息,"splash"的意思是启动的时候使用图形化的进度条代替init的字符输出过程,"text"的意思是启动后进入命令行界面,不设置“text"参数默认进入图形界面。可以选择多个参数,如"quiet text"。调整命令行界面或者图形界面后,需要运行"sudo systemctl set-default multi-user.target"使配置生效,使用“startx"命令进入图形界面)
GRUB_CMDLINE_LINUX=""(在引导时将传递给内核的命令行参数。 对于所有已安装的内核,这些参数将添加到grub.cfg的内核行中,这意味着所有已安装的内核在引导时将具有相同的参数。 建议删除“quiet”参数,以便在引导和启动过程中可以看到内核和systemd输出的所有非常有用的消息)(GRUB_CMDLINE_LINUX中的选项始终有效,GRUB_CMDLINE_LINUX_DEFAULT中的选项仅在正常引导期间有效,恢复模式期间无效)
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console(计算机启动时,禁用GRUB图形界面)
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480(设置图形界面分辨率为640x480,只能使用显卡支持的分辨率,可以在grub模式下输入"vbeinfo"查看)
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true(设置是否使用UUID引导,即使用root=/dev/sdax还是root=UUDI=XXX)
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"(GRUB为每个已安装的内核创建一个恢复条目。 设置为“ true”时,不会创建恢复条目。 无论此设置如何,最后一个内核条目始终是“救援”选项。恢复条目可以在命令行中根据runlevel命令引导至运行级别1,要求输入密码以进入维护模式,也可以按Ctrl-D组合键以继续正常启动到默认运行级别。 )
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"(GRUB启动时扬声器的音量)
三、原理
GRUB主配置文件
- /boot/grub/grub.cfg文件
- /etc/grub.d目录
- /etc/default/grub文件
/boot/grub/grub.cfg按照由小到大顺序调用/etc/grub.d目录中的脚本实现不同的功能。如果直接去修改/boot/grub2/grub.cfg文件,后期内核升级后所有的配置都会失效。如更需要自定义这个文件,可以修改/etc/grub.d目录中对应的脚本或者/etc/default/grub文件,然后通过使用update-grub命令重新生成/boot/grub/grub.cfg文件。
/etc/grub.d目录定义每个菜单项的脚本,这些脚本的名称必须有两位的数字前缀,其目的是构建GRUB菜单时定义脚本的执行顺序以及相应菜单项的顺序,比如00_header文件首先被读取。在使用update-grub命令生成配置文件时,需要加载/etc/grub.d目录。该文件描述如下
- 00_header 设置grub默认参数
- 10_linux 系统中存在多个linux版本
- 20_ppc_terminfo 设置tty控制台
- 30_os_prober 设置其他分区中的系统(硬盘中有多个操作系统时设置)
- 40_custom和41_custom 用户自定义的配置
/etc/default/grub是一个文本文件,可以在该文件中设置通用配置变量和GRUB菜单的其他特性,修改此文件后,需要使用update-grub命令更新GRUR配置文件才能使更改生效。
GRUB中设备和分区命名规则如下:
GRUB以fd表示软盘,hd表示硬盘(包括IDE和SCSI硬盘),设备从0开始编号、分区从1开始,主分区为1-4,逻辑驱动器从5开始。下面介绍设备和分区的使用方法:
- (fd0):表示第一个软盘
- (hd0):表示第一个硬盘(大多数U盘与USB接口的移动硬盘以及SD卡也都被当作硬盘看待)
- (hd0,msdos1):表示第一个硬盘的第一个分区
- (hd0,msdos1)/boot/vmlinuz-3.10.0-327.e17.x86_64:表示第一个硬盘的第一个分区下的boot目录下的vmlinuz-3.10.0-327.e17.x86_64文件
- (hd1,msdos1):表示第二硬盘的第一个分区
- (cd):启动光盘(仅在从光盘启动GRUB时可用)
- (cd0):第一个光盘
总结
未完待续。