[转帖]linux系统下grub.cfg详解和实例操作

linux,系统,grub,cfg,详解,实例,操作 · 浏览次数 : 0

小编点评

## NeoKylin Desktop 5.0 (Loongson) USB install **1. 在进入grub界面按c进入手动输入命令界面** **2. linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda13,输入boot回车进入系统注意:root=xxx为根分区,该系统根分区为sda1,当为UEFI模式启动时,linux应改为linuxefi,同时(hd0,msdos1)为第一块硬盘第一个分区boot/目录下存放内核文件** **3. 手动启动系统实例 1、在进入grub界面按c进入手动输入命令界面** **4. linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda13,输入boot回车进入系统注意:root=xxx为根分区,该系统根分区为sda1,当为UEFI模式启动时,linux应改为linuxefi,同时(hd0,msdos1)为第一块硬盘第一个分区boot/目录下存放内核文件** **5. 手动启动系统实例 2、在进入grub界面按c进入手动输入命令界面** **6. linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda13,输入boot回车进入系统注意:root=xxx为根分区,该系统根分区为sda1,当为UEFI模式启动时,linux应改为linuxefi,同时(hd0,msdos1)为第一块硬盘第一个分区boot/目录下存放内核文件** **7. 手动启动系统实例 3、在进入grub界面按c进入手动输入命令界面** **8. linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda13,输入boot回车进入系统注意:root=xxx为根分区,该系统根分区为sda1,当为UEFI模式启动时,linux应改为linuxefi,同时(hd0,msdos1)为第一块硬盘第一个分区boot/目录下存放内核文件** **9. 手动启动系统实例 4、在进入grub界面按c进入手动输入命令界面** **10. linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda13,输入boot回车进入系统注意:root=xxx为根分区,该系统根分区为sda1,当为UEFI模式启动时,linux应改为linuxefi,同时(hd0,msdos1)为第一块硬盘第一个分区boot/目录下存放内核文件** **11. 手动启动系统实例 5、在进入grub界面按c进入手动输入命令界面** **12. linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda13,输入boot回车进入系统注意:root=xxx为根分区,该系统根分区为sda1,当为UEFI模式启动时,linux应改为linuxefi,同时(hd0,msdos1)为第一块硬盘第一个分区boot/目录下存放内核文件** **13. 手动启动系统实例 6、在进入grub界面按c进入手动输入命令界面** **14. linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda13,输入boot回车进入系统注意:root=xxx为根分区,该系统根分区为sda1,当为UEFI模式启动时,linux应改为linuxefi,同时(hd0,msdos1)为第一块硬盘第一个分区boot/目录下存放内核文件** **15. 手动启动系统实例 7、在进入grub界面按c进入手动输入命令界面** **16. linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda13,输入boot回车进入系统注意:root=xxx为根分区,该系统根分区为sda1,当为UEFI模式启动时,linux应改为linuxefi,同时(hd0,msdos1)为第一块硬盘第一个分区boot/目录下存放内核文件** **17. 手动启动系统实例 8、在进入grub界面按c进入手动输入命令界面** **18. linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda13,输入boot回车进入系统注意:root=xxx为根分区,该系统根分区为sda1,当为UEFI模式启动时,linux应改为linuxefi,同时(hd0,msdos1)为第一块硬盘第一个分区boot/目录下存放内核文件** **19. 手动启动系统实例 9、在进入grub界面按c进入手动输入命令界面** **20. linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda13,输入boot回车进入系统注意:root=xxx为根分区,该系统根分区为sda1,当为UEFI模式启动时,linux应改为linuxefi,同时(hd0,msdos1)为第一块硬盘第一个分区boot/目录下存放内核文件** **21. 手动启动系统实例 10、在进入grub界面按c进入手动输入命令界面** **22. linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda13,输入boot回车进入系统注意:root=xxx为根分区,该系统根分区为sda1,当为UEFI模式启动时,linux应改为linuxefi,同时(hd0,msdos1)为第一块硬盘第一个分区boot/目录下存放内核文件**

正文

linux系统下grub.cfg详解和实例操作

简介

grub是引导操作系统的程序,它会根据自己的配置文件,去引导内核,当内核被加载到内存以后,内核会根据grub配置文件中的配置,找到根分区所使用的文件系统对应的驱动,通过根分区文件系统对应的驱动,挂载根分区,从而达到启动操作系统的目的。

特殊变量

变量详解
?上一条命令的返回值,零表示成功,非零表示失败[与bash一样]。由GRUB2自动设置。你只能使用此变量,而不能修改它
check_signatures是否在加载文件时强制验证签名,可以设为’yes’或’no’
chosen当前被执行的菜单项名称(紧跟"menuentry"命令之后的字符串或者’–id’选项的参数),例如’Windows 7’。由GRUB2自动设置。你只应该使用此变量,而不应该修改它
cmdpath当前被加载的"core.img"所在目录(绝对路径)。例如:UEFI启动可能是’(hd0,gpt1)/EFI/UBUNTU’或’(cd0)/EFI/BOOT’,BIOS启动可能是’(hd0)’。由GRUB2自动设置。你只应该使用此变量,而不应该修改它
debug设为’all’时表示开启调试输出[会显示大量信息,谨慎开启]
default默认选中第几个菜单项(从’0’开始计数)
fallback如果默认菜单项启动失败,那么就启动第几个菜单项(从’0’开始计数)
gfxmode设置"gfxterm"模块所使用的视频模式,可以指定一组由逗号或分号分隔的模式以供逐一尝试:每个模式的格式必须是:‘auto’(自动检测),‘宽x高’,‘宽x高x色深’之一,并且只能使用VBE标准指定的模式[640x480,800x600,1024x768,1280x1024]x[16,24,32]。可以在GRUB SHELL中使用"videoinfo"命令列出当前所有可用模式。默认值是’auto’
gfxpayload设置Linux内核启动时的视频模式,可以指定一组由逗号或分号分隔的模式以供逐一尝试:每个模式的格式必须是:‘text’(普通文本模式,不能用于UEFI平台),‘keep’(继承"gfxmode"的值),‘auto’(自动检测),‘宽x高’,‘宽x高x色深’之一,并且只能使用VBE标准指定的模式[640x480,800x600,1024x768,1280x1024]x[16,24,32]。在BIOS平台上的默认值是’text’,在UEFI平台上的默认值是’auto’。除非你想明确设置Linux控制台的分辨率(要求内核必须"CONFIG_FRAMEBUFFER_CONSOLE=y"),或者打算在BIOS平台上使用图形控制台(要求内核必须"CONFIG_FRAMEBUFFER_CONSOLE=y"),否则不要设置此变量
gfxterm_font设置"gfxterm"模块所使用的字体,默认使用所有可用字体
grub_cpu此GRUB所适用的CPU类型。例如:‘i386’, ‘x86_64’。由GRUB2自动设置。你只应该使用此变量,而不应该修改它
grub_platform此GRUB所适用的平台类型。例如:‘pc’, ‘efi’。由GRUB2自动设置。你只应该使用此变量,而不应该修改它。 lang设置GRUB2的界面语言,必须搭配"locale_dir"变量一起使用。简体中文应设为’zh_CN’
locale_dir设置翻译文件(*.mo)的目录,通常是’$prefix/locale’,若未明确设置此目录,则禁止国际化。 pager如果设为’1’,那么每一满屏后暂停输出,等待键盘输入。缺省是’’,表示不暂停
prefix绝对路径形式的’/boot/grub’目录位置(也就是GRUB2的安装目录),例如’(hd0,gpt1)/grub’或’(hd0,msdos2)/boot/grub’。初始值由GRUB在启动时根据"grub-install"在安装时提供的信息自动设置。你只应该使用此变量,而不应该修改它
root设置"根设备"。任何未指定设备名的文件都视为位于此设备。初始值由GRUB在启动时根据"prefix"变量的值自动设置。在大多数情况下,你都需要修改它。
superusers设置一组"超级用户"(使用空格/逗号/分号进行分隔),以开启安全认证的功能
theme设置菜单界面的主题风格文件的位置,例如:"/boot/grub/themes/starfield/theme.txt"。关于如何定制界面风格(背景图片/字体/颜色/图标等)的细节,可以参考GRUB2手册中的" Theme file format"部分
timeout在启动默认菜单项前,等待键盘输入的秒数。默认值是’5’秒。‘0’表示直接启动默认菜单项(不显示菜单),’-1’表示永远等待
quiet只打印重要信息,硬件自检不回显
rhgb图片来代替启动过程中显示的文本信息,这些信息在启动后用dmesg也可以看到
loglevel打印日志等级,loglevel=0打印等级最低,打印信息最少,loglevel=7打印等级最高
splash开机动画显示

GRUB2命令

说明
对于GRUB-2.0.2版本来说,所有可用的命令有大约200个之多,他们中的绝大多数由各种各样的模块提供。我们没有必要去了解所有这些200个命令,只需要了解一些常用的命令即可。

menuentry "title" [--class=class …] [--users=users] [--unrestricted] [--hotkey=key] [--id=id] [arg …] { command; … }
  • 1
命令详解
title当此菜单项被选中时,GRUB将会把环境变量"chosen"的值设为"id"(使用了[–id=id]选项)或"title"(未使用[–id=id]选项),然后执行花括号中的命令列表,如果列表中最后一个命令执行成功,并且已经载入了一个内核,那么将执行"boot"命令
–class指定菜单项所属的"样式类",从而可以使用指定的主题样式显示菜单项
–users指定只允许特定的用户访问此菜单项,如果没有使用此选项,则表示允许所有用户访问
–unrestricted指明允许所有用户访问此菜单项
–hotkey设置访问此菜单项的热键(快捷键)。"key"可以是一个单独的字母,或者’backspace’,‘tab’,'delete’之一
–id此菜单项设置一个全局唯一的标识符。"id"必须由ASCII字母/数字/下划线组成,且不得以数字开头
[arg …]可选的参数列表。你可以把它们理解为命令行参数。实际上"title"也是命令行参数,只不过这个参数是个必须参数而已。这些参数都可以在花括号内的命令列表中使用,“title"对应着”$1",其余的以此类推
–append指定的终端加入到激活的输入终端列表中,所有列表中的终端都可以用于向GRUB提供输入
–remove指定的终端从激活的输入终端列表中删除
authenticate [userlist]检查当前用户是否位于"userlist"或环境变量"superusers"中。[注意]如果环境变量"superusers"的值为空,此命令将返回’真’
background_color color设置当前激活的输出终端的背景颜色。“color"可以使用HTML风格的颜色表示法(”#RRGGBB"或"#RGB")
–force强制载入文件,而不管它是否有正确的签名。通常用于加载有缺陷的启动载入器(例如 SCO UnixWare 7.1)
echo [-n] [-e] string …显示所要求的文本并换行(除非使用了 -n 选项)。如果有多个字符串,依次输出它们,并用空格分隔每一个
export envvar导出环境变量"envvar",以使其对于使用"configfile"命令载入的配置文件可见
false不做任何事,只返回一个失败的结果。主要用在if/while之类的控制构造中
gettext string把"string"翻译为环境变量"lang"指定的语言。MO格式的翻译文件从环境变量"locale_dir"指定的目录加载
halt [–no-apm]关闭计算机。如果指定了 --no-apm 选项,表示不执行APM BIOS调用。否则,计算机使用APM关闭
help [pattern …]显示内建命令的帮助信息。如果没有指定"pattern",那么将显示所有可用命令的简短描述
initrd file为以32位协议启动的Linux内核载入一个"initial ramdisk",并在内存里的Linux设置区域设置合适的参数
initrd16 file为以16位协议启动的Linux内核载入一个"initial ramdisk",并在内存里的Linux设置区域设置合适的参数
insmod module载入名为"module"的GRUB2模块
linux file …使用32位启动协议从"file"载入一个Linux内核映像,并将其余的字符作为内核的命令行参数逐字传入
linux16 file …以传统的16位启动协议从"file"载入一个Linux内核映像,并将其余的字符作为内核的命令行参数逐字传入。这通常用于启动一些遵守Linux启动协议的特殊工具(例如MEMDISK)
loopback [-d] device file将"file"文件映射为"device"回环设备。例如:loopback loop0 /path/to/image
lsfonts列出已经加载的所有字体
lsmod列出已经加载的所有模块
normal [file]进入普通模式,并显示GRUB菜单
normal_exit退出当前的普通模式
parttool partition commands对分区表进行各种修改。目前只能作用于MBR分区表(DOS分区表),而不能用于GPT分区表
password user clear-password定义一个名为user的用户,并使用明文口令’clear-password’
read [var]从用户读取一行输入
reboot重新启动
rmmod module卸载"module"模块
set [envvar=value]将环境变量"envvar"的值设为’value’。如果没有使用参数,则打印出所有环境变量及其值
source file直接将"file"文件的内容插入到当前位置。与"configfile"不同,此命令既不切换执行环境,也不会显示一个新的菜单
true不做任何事,只返回一个成功的结果
unset envvar撤销环境变量"envvar"
videoinfo列出所有当前可用的视频模式

应用实例

特殊变量

#默认启动第一个菜单项
set default=0
#如果第一个菜单项启动失败,转而启动第二个菜单项
set fallback=1
#优先使用最常规的1024x768分辨率,以保证在不同的屏幕上拥有一致的菜单效果,如果失败再自动匹配分辨率
set gfxmode=1024x768,auto
#使用自己制作的24px的大号字体以避免默认字体太小看不清
set gfxterm_font=WenQuanYiMicroHeiMono24px
#将GRUB2设置为简体中文界面
set lang=zh_CN
#指定翻译文件(*.mo)的目录,若未明确设置此目录,则无法显示中文界面。
set locale_dir=$prefix/locale
#每一满屏后暂停输出,以免信息太多一闪而过看不清
set pager=1
#开启密码验证功能,并设置一个名为'root'的超级用户
set superusers=root
#设置菜单的超时时间为5秒
set timeout=5

    公共模块

    #两种最流行的磁盘分区格式
    insmod part_gpt
    insmod part_msdos
    #常见文件系统驱动
    insmod btrfs
    insmod exfat
    insmod ext2
    insmod fat
    insmod iso9660
    insmod jfs
    insmod ntfs
    insmod reiserfs
    insmod udf
    insmod xfs
    insmod zfs
    #一次性加载所有可用的视频驱动
    insmod all_video
    #图形模式终端
    insmod gfxterm
    #背景图片支持
    insmod png
    

      公共命令(必须放在模块和变量之后)

      #激活图形模式的输出终端,以允许使用中文和背景图
      terminal_output  gfxterm
      #设置背景图片
      background_image $prefix/themes/1024x768.png
      #加载自己制作的24px的大号字体文件($prefix/fonts/WenQuanYiMicroHeiMono24px.pf2)
      loadfont WenQuanYiMicroHeiMono24px
      #设置'root'用户的哈希密码[通过"grub-mkpasswd-pbkdf2"工具生成]
      password_pbkdf2 root grub.pbkdf2.sha512.69.7DBCA469F80EA1C0A8A1E2FEBC4F8463.B073C1C89EC1E85309C3D6A1BAFF4356
      

        U盘安装系统grub.cfg实例

        menuentry 'NeoKylin Desktop 5.0 (Loongson) USB install'{
        set root=(${root})
        linux ${prefix}/vmlinuz console=tty inst.stage2=hd:LABEL=NeoKylin-Desktop-5.0(Loongson) ks=hd:sd*:/ks.cfg quiet splash loglevel=0
        initrd ${prefix}/initrd.img
        boot
        }
        

          硬盘启动系统grub.cfg实例

          menuentry 'NeoKylin Desktop 5.0 (x86)' --class neokylin --class gnu-linux --class gnu --class os --unrestricted   'gnulinux-simple-7c468e57-7e0c-4ab8-949e-b62f569b02f6' {
                  load_video
                  set gfxpayload=keep 
                  insmod gzio
                  insmod part_msdos
                  insmod ext2
                  set root='hd0,msdos1'
                  if [ x$feature_platform_search_hint = xy ]; then
                    search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  48556c0b-2f69-42a1-aacf-41bf6c3b4830
                  else
                    search --no-floppy --fs-uuid --set=root 48556c0b-2f69-42a1-aacf-41bf6c3b4830
                  fi
                  linux16 /vmlinuz-4.4.13-200.nd7.3.x86_64 root=/dev/sda3 ro rhgb quiet  loglevel=0 LANG=zh_CN.UTF-8
                  initrd16 /initramfs-4.4.13-200.nd7.3.x86_64.img
          }
          

            手动启动系统实例

            1、在进入grub界面按c进入手动输入命令界面;
            2、linux (hd0,msdos1)/boot/vmlinuz-3.10.0 root=/dev/sda1
            3、输入boot回车进入系统
            注意:root=xxx为根分区,该系统根分区为sda1,当为UEFI模式启动时,linux应改为linuxefi,同时(hd0,msdos1)为第一块硬盘第一个分区boot/目录下存放内核文件;
            
              文章知识点与官方知识档案匹配,可进一步学习相关知识
              CS入门技能树Linux入门初识Linux31333 人正在系统学习中

              与[转帖]linux系统下grub.cfg详解和实例操作相似的内容:

              [转帖]linux系统下grub.cfg详解和实例操作

              linux系统下grub.cfg详解和实例操作 简介 grub是引导操作系统的程序,它会根据自己的配置文件,去引导内核,当内核被加载到内存以后,内核会根据grub配置文件中的配置,找到根分区所使用的文件系统对应的驱动,通过根分区文件系统对应的驱动,挂载根分区,从而达到启动操作系统的目的。 特殊变量

              [转帖]Linux系统下rpm命令使用详解

              简介 rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。 rpm命令十分

              [转帖]Linux系统下cpio命令详解

              简介 cpio主要是解压或者将文件压缩到指定文件中即copy-in和copy-out模式。 参数说明 参数参数说明-icopy-in模式,解压文件-ocopy-out模式,即压缩文件-d自动生成目录-v打印处理的文件-m保留文件修改的时间 具体操作 [root@localhost casper]#

              [转帖]linux命令行下如何格式化json并进行各种json处理操作

              https://blog.csdn.net/penriver/article/details/122016563 有时需要在linux 的命令行下,需要查看json的内容或针对json进行各种操作,本文针对此进行梳理、总结。 在Linux系统下基于python json.tool可以格式化json,

              [转帖]Linux查看硬件信息超强命令sar,以及可视化工具ksar

              https://juejin.cn/post/6947470401135968286 一、概述 sar(System Activity Reporter,系统活动情况报告)是Linux下系统运行状态统计工具,可从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU

              [转帖]Linux系统多网卡环境下的路由配置

              https://www.cnblogs.com/connect/p/linux-static-route.html Linux下路由配置命令 1. 添加主机路由 route add -host 192.168.1.11 dev eth0 route add -host 192.168.1.12 gw

              [转帖]Linux系统:page fault

              Linux进程如何访问内存 Linux下,进程并不是直接访问物理内存,而是通过内存管理单元(MMU)来访问内存资源,原因后面会讲到。 为什么需要虚拟内存地址空间 假设某个进程需要4MB的空间,内存假设是1MB的,如果进程直接使用物理地址,这个进程会因为内存不足跑不起来。既然进程不是直接访问物理内存,

              [转帖]Linux系统中的Page cache和Buffer cache

              Free命令显示内存 首先,我们来了解下内存的使用情况: Mem:表示物理内存统计 total:表示物理内存总量(total = used + free) used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。 free:未被分配的内存。 sh

              [转帖]Linux下wget命令详解

              https://zhuanlan.zhihu.com/p/429960828 wget命令是Linux系统用于从Web下载文件的命令行工具,支持 HTTP、HTTPS及FTP协议下载文件,而且wget还提供了很多选项,例如下载多个文件、后台下载,使用代理等等,使用非常方便。 接下来就介绍一下wget

              [转帖]Linux系统top命令中的io使用率,很多人都误解了它的具体含义

              https://baijiahao.baidu.com/s?id=1641356547223820839&wfr=spider&for=pc 最近在做连续数据流的缓冲系统,C语言代码实现后,粗略测试了下,功能上应该没有问题。那么,接下来就该测试性能了。输入 top 命令,的确可以看到一系列 cpu