CentOS系统grub详解

Grub(GRand Unified Bootloader)是统一资源引导器,也就是引导加载器;它的工作是提供一个菜单,允许用户选择要启动的系统或不同的内核版本;把用户选定的内核装载到RAM中的特定空间中,然后解压、展开,而后把系统控制权移交给内核。

它目前有两个版本:1、GRUB 0.X:Grub Legacy

2、GRUB 1.X:Grub2

一、Grub Legacy概述

本文主要讲解Grub Legacy,也就是最经典的Grub程序。它分为三个部分stage1、stage1_5和stage2。

1、stage1:即写入mbr中存储的bootloader程序。它的任务就是将stage1_5(此时并不能算是磁盘分区/boot/grub/下的stage1_5,因为stage1无法识别文件系统)载入内存执行。

2、stage1_5:位于mbr之后的扇区,通过提供基本文件系统驱动让stage1中的bootloader程序能识别磁盘分区/boot/grub/上的stage2文件并载入内存执行。

注意:此处若是boot分区的文件系统类型不属于stage1_5的中的一个,则会借助ramdisk来加载在/lib64/moudles/下额外的文件系统驱动。

3、stage2:这个程序主要给用户提供一个比较友好的启动菜单,而后去加载位于同一个磁盘分区/boot/的内核文件(例如 vmlinuz-2.6.32-573.el6.x86_64)

二、Grub的配置文件和功用 

1、配置文件:/boot/grub/grub.conf,保证grub和内核等在一个目录;此外它创建了一个链接文件/etc/grub.conf指向配置文件来保证用户使用配置文件一致性;

配置项:

default=#:设定默认启动的菜单项:菜单项(title)编号从0开始

timeout=#:指定菜单项等待选项选择的时长;

splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;

hiddemenu:隐藏菜单

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

title TITLE:定义菜单项“标题”,可出现多次;

root(hd#,#):grub查找stage2及kernel文件所在设备分区:为grub的“根”

kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核

initrd /PATH/TO/INITRAMFS_FILE:内核匹配的ramfs文件

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

注意:password在不同的位置所起效果不同

password 配置示例

#可以利用grub-md5-crypt命令来生成密码,如下
~]# grub-md5-crypt 
Password: 
Retype password: 
$1$PG8va$eD0LgRT7UcU035hedUszc/
#之后将生成的密码添加在grub.conf配置文件的password字段后面如下
password --md5 $1$PG8va$eD0LgRT7UcU035hedUszc/

示例:

]# cat grub.conf 
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-573.el6.x86_64)
	root (hd0,0)
	kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=c0fe6dd3-fcf4-41ce-a951-75a4e472cb2a rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
	initrd /initramfs-2.6.32-573.el6.x86_64.img	

2、功用

(1)提供菜单、并提供交互式接口

e:编辑模式,用于编辑菜单

c:命令模式,交互式接口

(2)加载用户选择的内核或操作系统

允许传递参数给内核;可隐藏此菜单(通过grub.conf中的hiddenmenu)

(3)为菜单提供了保护机制

为编辑菜单进行认证(title上定义的password)

为启用内核或者操作系统进行认证(title下的password字段)

三、Grub的命令行接口和编辑功能

1、进入grub的命令行界面和编辑界面

 (1)启动机器时,按ESC键可进入如下界面

(2)按c可进入命令行界面如下

(3)进入编辑界面,在界面(1)下输入e可进入编辑界面如下

   2、grub的命令行命令和编辑命令

   (1)grub的命令行命令

help:获取帮助信息

help KEYWORD:获取某一具体命令的帮助信息

find (hd#,#)/PATH/TO/SOMEFFILE:查找文件(内核文件等)

root (hd#,#):设定那个磁盘是根,执行后,fnd不需指磁盘了;

kernel /PATH/TO/KERNEL_FILE:设定本次启动时用到的内核文件;

initrd /PATH/TO/OMOTRAMFS_FILE:设定为选定的initrd文件

boot:引导启动选定的内核;

示例:手动启动系统

(2)grub的编辑命令

b:boot,启动

e:edit,编辑选中的项

o:在选中行的下一行新加一行

O:在选中行的上一行添加一行

d:删除选中行

ESC:可以退出编辑界面进入主界面

示例:如何进入单用户模式

(1)编辑grub菜单(选定要编辑的title,而后使用e命令)

(2)在选定的kernel后附加 1,s,S或single 都可以

(3)ESC退出后在编辑界面,选中kernel所在行,键入"b"命令;

四、grub的安装

(1)grub-install

使用格式:grub-install --root-directory=/PATH/TO/rootDIR DEVICE

~]# grub-install --root-directory=/ /dev/sda3
Installation finished. No error reported.
This is the contents of the device map //boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install‘.

# this device map was generated by anaconda
(hd0)     /dev/sda

(2)grub命令(shell中输入,quit可退出)

grub> root (hd0,0)

grub> setup (hd0)

~]# grub
Probing devices to guess BIOS drives. This may take a long time.

    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]
grub> root (hd0,0)
root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
setup (hd0)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... yes
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/e2fs_stage1_5" exists... yes
 Running "embed /grub/e2fs_stage1_5 (hd0)"...  27 sectors are embedded.
succeeded
 Running "install /grub/stage1 (hd0) (hd0)1+27 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub> quit
quit

五、一种损坏状况及修复解决方式。

mbr中的bootloader程序损坏,注意分区表不可被破坏,此时系统无法启动

解决办法:插入一个系统引导光盘,进入救援模式重新安装grub

总结:linux的启动引导过程主要由grub完成,所以配置以及损坏之后的修复十分重要。

时间: 2024-10-16 16:56:16

CentOS系统grub详解的相关文章

自动化运维平台之系统自动化安装Cobbler系统使用详解

一.简介 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP.DNS.以及yum仓库.构造系统ISO镜像. Cobbler支持命令行管理,web界面管理,还提供了API接口,可以方便二次开发使用. Cobbler客户端Koan支持虚拟机安装和操作系统重新安装,使重装系统更便捷. 二.cobbler提供的功能 使用

24、Linux启动流程和grub详解

还记得Windows的启动流程吗?相信大家能说出来个大概,为什么说出个大概呢,因为Windows是图形界面启动的,但是开机过程都做了什么,你知道吗,相反,Linux启动的时候,会把这些加载到屏幕上面显示,那接下来我们来看看Linux启动都发生了些什么把!!! Linux启动流程图 简解开机启动流程 当用户打开电源后,BIOS开机自检,确定启动设备,安装启动设备启动设备上面安装的GRUB开始引导Linux,Linux首先先进行内核引导,通过跟切换,执行init程序,init程序确定启动级别,根据启

CentOS开机流程详解

CentOS开机流程详解 一.linux开机流程: BIOS:(Basic Input Output System)基本输入输出系统,它是一组固化到计算机内主板上一个ROM芯片 上的程序,保存着计算机最重要的基本输入输出的程序.开机后自检程序和系统自启动程序,可从CMOS中读写系统设置的具体信息. MBR:Master Boot Record,主要引导记录区. Boot Loader:启动引导程序. 二.详细流程 第一步:加载BIOS 打开计算机电源,计算机硬件会自动加载BIOS,读取BIOS内

Linux的启动流程以及GRUB详解

 一.Linux引导和启动流程       概述,计算机电源接通后通过BISO之后,没有问题,就会去硬盘上找到MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区,它记录着主引导记录中包含了硬盘的一系列参数和一段引导程序,其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,并将控制权交给启动程序(GRUB).GRUB启动引导器是计算机启动过程中运行的第一个真正的软件,GRUB负责加载启动硬盘分区中的操作

CentOs之yum详解及程序的编译安装

CentOs之yum详解 yum的地位:yum是rpm的前端管理工具,而且依赖于rpm.  yum仓库:yum repository,仓库里存储了众多rpm包,以及包的相关的元数据文件.yum仓库里会有个repodata目录存在. yum支持的文件服务器类型: ftp://  http:// file:///(本地服务器,例光盘)   /nfs:// 查看yum的信息: [[email protected]]# rpm -q yum ------查看yum命令的安装包是哪个 yum-3.4.3-

Windows XP硬盘安装Ubuntu 16.04双系统图文详解

需要下载的东西有两个,一个是grub4dos,另一个是Ubuntu 16.04 LTS的镜像文件,具体下载地址如下: 1 2 3       1.grub4dos  点击下载 grub4dos 2.Ubuntu 16.04 点击下载 Ubuntu 16.04.iso 准备工作 1.解压grub4dos压缩包,会得到一个名为grub4dos-0.4.4的文件夹,将以下文件拷贝到C盘(其中前两个文件是必需的,后两个文件网上有些资料说不需要,为了保险起见还是放上吧,反正也没什么坏处-): 1   gr

引导工具GRUB详解

引导工具GRUB详解 导读 引导程序是驻留在硬盘第一个扇区(MPR.主引导记录)的程序.GRUB是一个功能强大的多系统引导程序,专门处理Linux与其它操作系统共存的问题.下面就由我介绍一下grub.conf文件里的具体内容及其含义. 使用一下命令可以查看grub.conf文件内容: #vi /boot/grub/menu.lst 参数解释 1. default=0 # default后加一个数字n,表示n+1个"title"操作系统,0表示第一个"title"?的

Linux01-Linux日志系统syslog详解55

一.日志系统 1.日志系统:syslog() 信息详细程序:日志级别 日志子系统:facility 日志记录动作:Action Linux上的日志系统: syslog syslog-ng: syslog-ng作为syslog的替代工具,可以完全替代syslog的服务,并且通过定义规则,实现更好的过滤功能 系统启动过程的日志: kernel --> 物理终端(/dev/console) --> /var/log/dmesg 查看日志命令: dmesg /var/log/dmesg cat /va

mysql show variables系统变量详解

mysql系统变量详解 mysqld服务器维护两种变量.全局变量影响服务器的全局操作.会话变量影响具体客户端连接相关操作. 服务器启动时,将所有全局变量初始化为默认值.可以在选项文件或命令行中指定的选项来更改这些默认值.服务器启动后,通过连接服务器并执行SET GLOBAL var_name语句可以更改动态全局变量.要想更改全局变量,必须具有SUPER权限. 服务器还为每个客户端连接维护会话变量.连接时使用相应全局变量的当前值对客户端会话变量进行初始化.客户可以通过SET SESSION var