简述grub启动引导程序配置及命令行接口详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简述grub启动引导程序配置及命令行接口详解相关的知识,希望对你有一定的参考价值。

参考技术A 1、grub 命令行接口(一次性设置)

系统启动过程中按 c 键可进入grub 命令行界面,就可以自定义grub 启动参数了。常用命令有:

 help   ##查询帮助

 help   COMMAND ##查询命令帮助

ls : 显示系统磁盘及分区情况

 root (hd#,#)   :将hd#的第#号分区设置为根分区;(CentOS 6)

  kernel /PATH/TO/KERNEL_FILE : 设定本次启动用到的内核文件(CentoS 6)

  set root=(hd#,msdos#)  : 将第#块硬盘的第#个分区设置为根分区;(CentOS 7)

linux /PATH/TO/KERNEL_FILE : 设定本次启动用到的内核文件(CentoS 7)

r oot=/dev/mapper/cl-root ro init=/bin/sh   : 指明根分区路径;以ro/rw格式挂载; 第一个运行的程序是bash ;

initrd /PATH/TO/INITRAMFS_FILE_FILE : 为选定的内核提供额外的ramdisk ;

CentOS 7:

然后boot 重启,将会出现以下定制的系统了:

CentOS 6:

2、grub 配置文件:   永久配置是要在grub 的配置文件中配置的;

        CentOS 6 : /boot/grub/grub.cfg

                default=0  : 设置默认启动菜单项;编号从0开始;

                timeout=5 :  设置菜单项等待被选择的时长

                title CentOS Express   ##定义内核菜单选项

                        root (hd0,0)

                        kernel /vmlinuz-VERSION-release ro [selinux=0]  root=/dev/mapper/vg0-root (根据系统设置)

                        initrd /initramfs-VERSION-release.img

        CenOS 7 : /boot/grub2/grub.cfg (/etc/grub2.cfg ), 不要直接修改 ;

                        grub2-mkconfig会调用/etc/grub.d中的脚本去搜集/etc/default/grub 中的配置参数,生成/etc/grub2.cfg ; 

                        /etc/default/grub中的参数被修改,就可以使用grub2-mkconfig重新生成/etc/grub2.cfg

                         #grub2-mkconfig –o /boot/grub2/grub.cfg

3、给Grub 添加保护

CentOS 6:

            配置项:

                default=0

                timeout=5

               password [--md5] STRING : 菜单编辑认证 ;

               title TITLE : 

                            root (hd#,#) : 

                            kernel /PATH/TO/VMLINUXZ_FILE [PARAMETERS] 

                            initrd /PATH/TO/INITRAMFS_FILE 

                            password [--md5] STRING : 启动选定的内核或操作系统时需要进行认证;

CentOS 7:

a.添加grub菜单和命令行的密码认证:

        >>> grub2-setpassword    ##输入密码两次生成/boot/grub2/user.cfg 文件

        >>> cat /boot/grub2/user.cfg

                GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.CC6F56BFCFB90C49E6E16DC7234.....

        >>>grub2-mkconfig -o /boot/grub2/grub.cfg  ##重新生成配置文件

                Generating grub configuration file ...

                Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64

                Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img

                Found linux image: /boot/vmlinuz-0-rescue-f9725b0c842348ce9e0bc81968cf7181

                Found initrd image: /boot/initramfs-0-rescue-f9725b0c842348ce9e0bc81968cf7181.img

                done

       >>> shutdown -r now

            再次键入e 或 c ,系统都会要求输入用户名和密码的;

rel:  https://www.thegeekdiary.com/centos-rhel-7-how-to-password-protect-grub2-menu-entries/

b. 删除grub 密码保护(删除掉user.cfg,重新生成配置文件即可)

        >>>rm -rf /boot/grub2/user.cfg

        >>>grub2-mkconfig -o /boot/grub2/grub.cfg

        >>>reboot

grub命令行和配置文件配置配置信息

一、grub简介

GNU GRUB(简称“GRUB”)是一个来自GNU项目启动引导程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

GNU GRUB的前身为Grand Unified Bootloader。它主要用于类Unix系统;同大多Linux发行版一样,GNU系统也采用GNU GRUB作为它的启动器。Solaris从10 1/06版开始在x86系统上也采用GNU GRUB作为启动器。

二、GRUB的特性

GRUB可动态配置;它在启动时加载配置信息,并允许在启动时修改,如选择不同的内核和initrd。为此目的,GRUB提供了一个简单的类似Bash命令行界面,它允许用户编写新的启动顺序。

GRUB非常轻便。它支持多种可执行格式;它除了可适用于支持多启动的操作系统外,还通过链式启动功能支持诸如WindowsOS/2之类的操作系统。GRUB支持大部分的Unix文件系统,也支持Windows适用的FATNTFS文件系统,还支持LBA模式。GRUB允许用户查看它支持的文件系统里文件的内容。

GRUB具有多种用户界面。多数Linux发行版利用GRUB对图形界面的支持,提供了定制的带有背景图案的启动菜单,有时也支持鼠标。GRUB可通过GFX支持更美观的开机画面和开机菜单。通过对GRUB的文字界面的设定,可以通过串口实现远程终端启动。

GRUB可以从网络上下载操作系统镜像,因此可以支持无盘系统。GRUB支持在启动操作系统前解压它的镜像。

与其它启动器不同,GRUB可以通过GRUB提示符直接与用户进行交互。载入操作系统前,在GRUB文本模式屏幕下键入c键可以进入GRUB命令行。在没有作业系统或者有作业系统而没有”menu.lst”(或grub.cfg)配置文件的系统上,同样可以进入GRUB提示符。通过类似bash的命令,GRUB提示符允许用户手工启动任何操作系统。把合适的命令记录在”menu.lst”(或grub.cfg)文件里,可以自动启动一个操作系统。

GRUB拥有丰富的终端命令,在命令行下使用这些命令,用户可以查看硬盘分区的细节,修改分区设置,临时重新映射磁盘顺序,从任何用户定义的配置文件启动,以及查看GRUB所支持的文件系统上的其它启动器的配置。因此,即便不知道一台电脑上安装了什么,也可以从外部设备启动一个操作系统。

GRUB采用滚动屏幕选择想要启动的操作系统。通过向”menu.lst”(或grub.cfg)文件中添加相关信息,GRUB可以控制150或者更多的启动选项,在启动时用方向键进行选择。

通过链式启动,一个启动器可以启动另一个启动器。GRUB通过2到3行的命令就可以从DOSWindowsLinuxBSDSolaris系统启动。

尽管GRUB为类Unix系统进行了编译和打包,但也有供DOS和Windows使用的变种GRUB4DOS等。GRUB也可以不附带任何操作系统而作为孤立系统安装。从CD上启动时运用GRUB需要1个文件,而从软盘、硬盘和USB设备上启动时需要2个文件。这些文件可以在任何支持GRUB的Linux CD上找到,用户可以很容易的找到它们。

三、GRUB的配置方法

grub命令行的指令其实就是/boot/grub/grub.conf文件的配置信息,两者基本完全一样

grub legacy配置文件

配置文件:/boot/grub/grub.conf

default=#: 设定默认启动的菜单项;落单项(title)编号从0开始
timeout=#:指定菜单项等待选项选择的时长
splashimage=(hd#,#)/PATH/XPM_FILE:菜单背景图片文件路径
password [–md5] STRING: 启动菜单编辑认证
hiddenmenu:隐藏菜单
title TITLE:定义菜单项“标题”, 可出现多次
root (hd#,#):查找stage2及kernel文件所在设备分区;为grub的根
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核
initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件
password [–md5|–encrypted ] STRING: 启动选定的内核或操作系统时进行认证

生成grub口令

grub-md5-crypt
grub-crypt

破解root口令:

启动系统时,设置其运行级别1进入单用户模式:
(1) 编辑grub菜单(选定要编辑的title,而后使用e命令)
(2) 在选定的kernel后附加1, s, S或single都可以
(3) 在kernel所在行,键入“b”命令

启动一个操作系统必要的配置只需要三行:

  1. # 指定boot分区,(hd0,0)一般指向的都是boot分区,如果不是再更换
  2. root (hd0,0)
  3. 启动参数 # root分区标识可以是uuid也可以是/dev下的分区设备名,启动参数很多可以不填
  4. kernel /vmlinuz-version root分区标识
  5. # 指定init文件 "/"代表的是boot分区,这里boot为最开始的根分区
  6. initrd /initramfs-version.img
  7. #启动系统,这行配置只在命令行模式下使用,配置文件不写
  8. boot

 

四、GRUB Legacy 更多的应用和配置

https://wiki.archlinux.org/index.php/GRUB_Legacy_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

以上是关于简述grub启动引导程序配置及命令行接口详解的主要内容,如果未能解决你的问题,请参考以下文章

开机启动及grub基础知识和光盘镜像制作

编译UEFI版本Grub2引导多系统文件efi

Linux启动时显示Grub命令行及修改

引导工具GRUB详解

linux(十六) 系统引导过程及服务控制详解

Linux的启动流程以及GRUB详解