Starguard
开发笔记
Toggle navigation
Starguard
全部笔记
Unity
大话存储笔记
C语言
MongoDB
About Me
归档
标签
(七)GRUB2环境变量与命令
grub2
2020-02-02 09:54:08
282
0
0
admin
grub2
# 目录 [TOC] # 环境变量 ## root 根目录名称,如 ``` grub> set root=(hd0,msdos1) ``` 设置root为第一个硬盘的第一个MBR分区,之后文件名就无需指定设备名: ``` grub> linux /vmlinuz-4.18 ``` ## prefix * prefix变量是/boot/grub的绝对路径,一般prefix变量在GRUB2启动时赋值,由grub2-install提供的信息获取,root变量由prefix变量确定。 * 例如GRUB安装在第一块硬盘的第一个分区,prefix可能被设置为(hd0,msdos1)/boot/grub,root就会被设置为(hd0,msdos1)。 * 由于root变量由prefix变量设置,是prefix的根目录,所以一般将内核文件和ramdisk文件放在/boot目录,GRUB相关的目录和文件都在该目录下,ESP分区在/boot/efi。 ## pager 如果设置为1,则输出占满屏幕后会等待键盘输入后翻页,默认会一直滚动到结束。 ## chosen 执行一个菜单入口后,chosen变量被设置为菜单标题。如果选择的是子菜单,父级标题和子标题用">"隔开。 ## timeout 设置在启动默认内核之前的超时秒数,有键盘输入就会中断倒计时。 设置为0表示不显示菜单,直接启动;设置为-1表示无限等待。 ## gfxpayload 控制Linux内核启动时的视频模式,替代内核的"vga="引导选项。 可以设置为text,以通常的文字模式启动;设置为keep可以预留"gfxmode"设置的图形模式;也可以设置为"gfxmode"的任何允许值以图形模式启动。 该变量默认值是和平台相关的,在本地是文字模式的平台,如PC BIOS平台,默认值是text;其他情况下是auto或特定的视频模式。 可以通过/etc/default/grub的`GRUB_GFXPAYLOAD_LINUX`设置。 ## gfxmode 设置"gfxterm"图形终端的分辨率,默认值是auto。 只有显卡支持VESA BIOS Extensions(VBE)时才能使用。 # 命令 ## set 设置环境变量,如: ``` grub> set root=(hd0,gpt1) ``` 不加参数显示所有已设置的环境变量: ``` grub> set ``` ## linux 在X86系统上,内核将会使用32位启动协议启动,这意味着"vga="选项无法工作,如果要设置特殊的视频模式,需要使用`set gfxpayload=1024x768`或`set gfxpayload=keep`代替,GRUB2会自动检测"vga="的一些功能,转换成"gfxpayload"的设置。 ## linux16 以传统的16位启动协议(boot protocol)启动内核,除了避免linux命令的"vga="问题,还允许启动一些实现了Linux启动协议的程序。 该命令只能用于X86系统上。 ## initrd 为Linux内核加载初始内存文件系统,必须跟在linux命令后面。 ## loopback 相当于挂载,loopback -d卸载。 ``` loopback loop0 /path/to/image ls (loop0) loopback -d loop0 /path/to/image ``` ## search ``` search [--file|--label|--fs-uuid] [--set [var]] [--no-floppy] [--hint args] name ``` * 通过文件[--file]、卷标[--label]、文件系统UUID[--fs-uuid]来搜索设备。 * 如果使用了"--set"选项,则会将第一个找到的设备设置为环境变量"var"的值,默认的变量"var"为'root'。 * 搜索时可使用"--no-floppy"选项来禁止搜索软盘,因为软盘速度非常慢,已经被淘汰了。 * 有时候还会指定"--hint=XXX",表示优先选择满足提示条件的设备,若指定了多个hint条件,则优先匹配第一个hint,然后匹配第二个,依次类推。 * linux下查看分区的UUID和label: ``` $ ls -l /dev/disk/by-uuid # 查看所有分区的UUID $ ls -l /dev/disk/by-label # 查看所有分区的label $ blkid # 查看所有分区的UUID和label $ e2label /dev/sda1 # 查看某分区的label ``` ## insmod 加载GRUB2模块: ``` grub> insmod normal ``` 如果是UEFI引导,从ESP分区的`EFI/<OS>/<arch>/<arch>-efi/`下查找<模块名>.mod文件,并加载。 如果是Legacy BIOS引导,从`/grub2/<arch>-pc/`下查找<模块名>.mod文件,并加载。 如果不存在 ![title](/api/file/getImage?fileId=5e36845b56fec85adb000001) ![title](/api/file/getImage?fileId=5e36846956fec85adb000002) ## chainloader 将一个文件作为链式加载器(chain-loader)加载,用于加载其他Bootloader,例如GRUB2无法直接引导DOS或Windows,就需要该命令引导。
上一篇:
HTTPS解析
下一篇:
Documentation_efi-stub.txt
0
赞
282 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
文档导航