GRUB引导器

硬件基础

一块硬盘,它起始的一部分扇区为主引导扇区,包括MBR(主引导纪录)和DPT(分区表,您可以阅读分区概念章节中相关内容)

每个分区起始的一部分扇区,为分区引导扇区。

在分区引导扇区之后的部分,为文件系统的索引,文件系统通过它定位文件在硬盘上的位置。不同的文件系统采用不同的索引,例如FAT文件系统使用文件分配表和目录区。

绝大多数操作系统,对硬盘的读写操作,通过文件系统来完成,因此引导扇区中的内容,我们不能够在文件系统中进行操作,而需要专用软件,比如引导管理器。

我们对文件进行修改后,操作系统会将文件系统索引中的内容同步。

系统引导流程

1.系统启动时,首先引导至MBR,将控制权移交安装在MBR中的引导管理器

(Windows使用NTLDR,Linux通常用Grub)

2.引导管理器读取分区表

3.引导管理器读取分区中的配置文件,并按配置文件中预设的参数运行

例如,Grub读取“/boot/grub/menu.lst”文件中内容,将可引导系统通过菜单显示

4.引导管理器根据您的选择,可能会有如下活动

加载内核,启动Linux系统检查活动分区,并引导它(单一Windows系统)读取相应分区的引导扇区,将控制权移交该扇区中的引导管理器,Ubuntu系统在安装Grub时,会提问您安装在MBR或者分区引导扇区中。如果将Grub安装在分区引导纪录中,您必须确保MBR中的引导管理器能够正确的引导至分区引导扇区。

如果您在MBR中使用的是Windows的引导管理器NTLDR,完成这件工作会非常困难,因而我们推荐您使用Grub。

Grub介绍

Grub主要有以下功能:

菜单式选择

命令行模式

支持开机画面

支持大硬盘

其它的功能还有很多,就不一一介绍了。

您可以运行命令 grub 启动它。会显示一些版本信息和使用提示,当然还有命令提示符,如下:

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>

您可以使用 TAB 键补全命令和路径,这非常重要,因为Grub中路径表示方式与操作系统是不同的,您可能比较陌生,所以尽量用TAB补全它,既方便,也不容易出错。

您可以在 grub> 提示符后按 TAB 键,会将所有可用的命令显示出来。

呵呵,是不是有点晕,命令可真不少啊!!!

其实我们会用到的命令只有两个,

root

setup

Grub术语

在分区概念章节里,我们已经介绍了Linux系统中表示分区的方法 /dev/hda5

/dev/hdMN M为a起始的小写字母,表示硬盘序号;N为1起始的数字,表示分区序号

Grub中使用的表示方法为 hd0,1

hdX,Y X为0起始的数字,表示硬盘序号;Y为0起始的数字,表示分区序号

您得留意它们之间的区别:

N从1开始计数,X和Y从0开始计数

N为1~4,它是一个主分区;N为5或大于5,它是第(N-4)个逻辑分区。Y按分区在硬盘上排列的顺序排列,无论它表示的是主分区还是逻辑分区。

举例来说:

主 主 逻 逻 主

/dev/hdMN hda1 hda2 hda5 hda6 hda3

hdX,Y hd0,0 hd0,1 hd0,2 hd0,3 hd0,4

现在我们来看 root 和 setup 命令的使用:

grub>root (hd0,1)

这个命令将Grub的根分区定位为 “(hd0,1)”

grub>setup (hd0)

这个命令表示将Grub安装在“(hd0)”,因为没有指定安装的分区,所以安装位置为MBR

Grub的根分区 为Grub配置文件 /boot/grub/menu.lst 所在分区。假如您单独为 /boot 目录挂载了一个分区,那么Grub的根分区通常为您系统中 /boot 目录所在的分区。

搞错了根分区,Grub就不能正确读取配置文件,自然不能正确引导。

引导分区 ,Windows等系统的引导分区为它的安装分区,Linux系统的引导分区为它的 /boot 目录所在的分区

系统根目录所在分区 ,Linux根目录 / 的挂载分区。Linux系统的分区挂载信息保存在文件系统分配表 /etc/fstab 文件中

Grub首先读取根分区中的 /boot/grub/menu.lst

文件,并转到引导分区,如果是Windows等系统,则将控制权移动分区引导扇区中的启动管理器。如果是Linux系统,则加载内核和设备,并根据

/etc/fstab 文件的内容挂载文件系统。

看这个例子:(假设Grub安装在MBR中)

title Ubuntu

root (hd0,0)

kernel (hd0,1)/boot/vmlinuz-2.6.15-25-686 root=/dev/sda3 ro splash vga=0x31b

initrd (hd0,1)/boot/initrd.img-2.6.15-25-686

boot

Grub的安装位置为 (hd0)

root (hd0,0) ,这一行表示Grub的根分区为第一块硬盘的第一个分区 (hd0,0) ,它读取该分区中的配置文件 grub/menu.lst

kernel 和 initrd 行中的 (hd0,1) ,表示当前系统的 /boot 目录挂载到第一块硬盘的第二个分区 (hd0,1)

kernel 行的 root=/dev/sda3 ,表示当前系统的 / 目录挂载到第一块硬盘的第三个分区 (hd0,2) ,内核根据该分区中的 /etc/fstab 文件来挂载文件系统

Grub配置文件

/boot/grub/menu.lst 文件,主要由一些下面这样的块构成的

title Ubuntu

root (hd0,2)

kernel (hd0,2)/boot/vmlinuz-2.6.15-25-686 root=/dev/sda3 ro splash vga=0x31b

initrd (hd0,2)/boot/initrd.img-2.6.15-25-686

boot

title Windows xp

root (hd0,0)

makeactive

chainloader +1

每一块代表一个操作系统,包含下面里几个部分

title xxx 标题,title和分隔符后的内容为Grub菜单中显示的条目

root (hdX,Y) 引导分区,可以留空,默认为 grub/menu.lst 所在分区(根分区),可以使用 grub>root (hdX,Y) 命令设置,或者在您安装系统时自动设置

如果您计划引导至分区引导扇区,如Windows或者Unix系统(Unix和Linux系统,您需要选择将引导管理器安装到分区中),那么需要这样配置

makeactive 设置活动分区,系统默认设置,可以删除

chainloader +1 链式引导,不要动它。

如果以这种方式引导系统,上面 root (hdX,Y) 这一行通常需要配置, (hdX,Y) 为您的系统所在的分区。假如您的Windows在第一块硬盘的第一个分区,则这样写 root (hd0,0)

如果您引导的是Linux系统(没有在分区中安装引导管理器,而是安装到MBR),则需要这样配置

kernel (hd0,2)/boot/vmlinuz-2.6.15-25-686 root=/dev/sda2 ro splash vga=0x31b

initrd (hd0,2)/boot/initrd.img-2.6.15-25-686 设备镜像文件,与上一行保持一致

boot 不要动它

kernel 这一行最关键,它控制系统内核的加载。行末以 ro 起始的部分为参数(ro只读,splash显示启动画面,vga设定启动屏幕分辨率)

之前的部分可以写为这种形式:

kernel (hdX,Y)/boot/vmlinuz root=/dev/sdMN

(hdX,Y) 通常不是必须的,如果您安装了多个Linux系统,或者 /boot``目录与根目录 ``/ 不在一个分区,则应把它写为 /boot 目录所在分区。而后面的 root=/dev/sdMN 为系统根目录 / 所在的分区。

initrd 这一行的 (hdX,Y) 与上一行保持一致。

Grub安装

上面已经向您介绍了Grub的安装,不过更多的侧重理论。现在我们来实践一下,假设您的系统不能引导,您可以尝试下面的方法:)

1.

1. 找一张Ubuntu的LiveCD (Knoppix也是不错的选择)

2. 也可以使用安装光盘,启动后在 boot 提示符后输入 linux rescue ,回车进入救援模式。

2. 如果您拥有root权限,命令行提示符为 # ,如果是普通用户,则为 $ 。

1. 在救援模式下,通常你已经具有了root权限

b. 如果是LiveCD且没有root权限,请在终端中输入 su

命令切换到root,会提问你root的密码。如果不知道root密码,可以使用这个命令 sudo su

,只要你知道自己的密码,并且你在ID在sudoer列表中就可以了。

3. 在终端中输入 grub ,会进入到Grub的提示符界面

a. 输入命令 root (hd 后按 Tab 键,屏幕上就会列出所有可用选项。比如我的是这样的:

Possible disks are: hd0 hd1

这表示我装了两块硬盘,如果你只有一块硬盘的话,那么一定是hd0。

在 root(hd 后输入 0 ,按 Tab ,会自动补上一个 , ,现在你输入的内容成为这样:

root(hd0,

再按 Tab 键,会列出所有可用选项,我的是这样的。

Possible partitions are:

Partition num: 0, Filesystem type unknown, partition type 0x7

Partition num: 1, Filesystem type is fat, partition type 0xc

Partition num: 2, Filesystem type is reiserfs, partition type 0x83

Partition num: 4, Filesystem type is reiserfs, partition type 0x83

Partition num: 5, Filesystem type unknown, partition type 0x82

Partition num: 6, Filesystem type unknown, partition type 0x7

Partition num: 7, Filesystem type is fat, partition type 0xc

输入你的选择,比如为 1 , Tab 一次后,结果是这样的:

root (hd1,1)

现在回车

2.

输入命令

setup (hd0)

将grub安装在mbr中

3. quit 命令退出GRUB

Grub使用

命令行

在Grub启动菜单中,您可以选择您要的选项,按下 e 键,进入到命令行模式

修改您的启动参数,完成后回车

按 b 键,Grub将以您修改后的参数引导系统。

其它

在Grub启动菜单中,按下 c 进入命令行模式

按下 d 删除当前选中的项

时间: 2024-11-08 10:25:05

GRUB引导器的相关文章

linux 启动引导器 grub,单用户模式:

Linux启动引导器 安装linux操作系统的时候就已经将启动引导器安装到硬盘上去了,才能通过硬盘的读取方式启动操作系统. 引导器分为2种: Lilo:功能比较简单,使用比较麻烦,后续发行版中使用grub. 启动引导器保存在硬盘扇区中,负责引导硬盘分区中指定的操作系统启动的程序代码.Windows有windows的操作系统启动引导器,linux有linux操作系统的启动引导器.Linux用的是grub或者lilo,widows和mac都有自己的.引导器都会集成到操作系统安装程序中. 操作系统的安

linux命令:系统裁剪之一grub引导

Linux系统裁剪笔记 1.什么裁剪? 本篇文章的主要目的是让笔者和读者更深的认识Linux系统的运作方式,大致内容就是把Linux拆开自己一个个组件来组装,然后完成一个微型的Linux系统,从而达到系统缩减,订制特殊系统. 2.原理 大家都知道,操作系统的启动流程是(主要是Linux):POST->BIOS->MBR(grub)-kernel-->initrd-->sbin/init, POST,BIOS都不是我们管的,所以这里我们从MBR开始,Linux的系统引导先主要是用的g

在主引导记录(MBR)的救援模式下如何重新安装GRUB引导装载程序

系统: redhat 6.5 x64 问题: 系统安装完毕,启动系统时夯住,如图: 原因: 问题的原因可能是MBR偶然的被擦除或是在BIOS中将磁盘控制器设置成SATA-controller. 解决: 该问题可通过重装grub来解决 1.进入救援模式: 2.chroot /mnt/sysimage: 3.grub-install /dev/sda     #根据你的ks文件,grub应该是安装在/dev/sda上: 4.exit: 在主引导记录(MBR)的救援模式下如何重新安装GRUB引导装载程

在Fedora20用grub引导freeBSD10

装完FreeBSD10的安装,安装完退出之后,发现启动项里面只剩下fedora的启动项,我的电脑是Fedora20+FreeBSD双系统,想用GRUB引导修复freeBSD的启动项,网上搜了一堆方法.但是都不可行. 我的FreeBSD是装在gpt5中 修改/ect/grub.d/40-custom #!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply typ

Ubuntu+Windows双系统重装Windows后修复Grub引导

通过Live CD进入Ubuntu的试用界面. 打开终端输入以下命令: sudo -i fdisk -l (找一找你的ubuntu安装在那个分区) 也可以直接打开硬盘管理找到你的硬件上的ubuntu在哪个位置. 比如我的ubuntu在 sda10 分区 . 下面挂载原系统的根目录: mount /dev/sda10 /mnt (10替换成你Ubuntu所在分区编号) grub-install --root-directory=/mnt /dev/sda (注意: /mnt后面有空格键) 如果看到

[ubuntu]windows重装以后,恢复grub引导

前几天重装了windows,window在重装过程中会自动把grub引导擦去,现在提供一个可行的最简单的最安全的恢复grub引导的方案: 准备: Ubuntu14.04 (U盘或光盘均可) 1.插入U盘或者光盘,进入bios更改启动方式,设置相应的启动方式. 2.选择试用Ubuntu,ctrl+alt+T调出terminal.首先进入root模式: sudo su root 3.列出磁盘信息,找到Linux的分区号sdaX并且记住. # fdisk -l 4.挂载Linux所在的硬盘分区 # m

修复grub引导

大部分安装了linux的一定还保留着windows,有的甚至不是双系统,是三系统甚至更多(1)Ubuntu的grub重装和修复.在装了winxp和Ubuntu的电脑上,winxp还原或重装后,grub的启动菜单会丢失,开机会看到 grub2的提示符,虽然说grub2从命令行也可以引导,但是我从来没成功过,因此重建菜单是唯一的路:用启动盘启动选择试用ubuntu到ubuntu下(硬盘启动的情况没试过),在终端输入命令:sudo -i fdisk -l   (显示你的分区情况,一般sda是我们的硬盘

为GRUB引导菜单设置密码

1. 什么是GRUB引导菜单? GRUB是一个引导管理程序, 可以引导linux.xp.windows等等系统. 2. 为什么要给GRUB引导菜单设置? 单纯为了安全.    GRUB菜单密码分为密文.明文. 3. 如何为GRUB菜单设置密文? [[email protected] ~]# grub-md5-crypt                     #创建md5加密字符 Password: Peter                     #此部分为隐藏的, 为了让大家看见,我把创建

CentOS GRUB引导错误无法进入系统解决办法

本来想整个LFS试试,结果在最后关头设置LFS系统启动的时候挂了.其余的安装笔记没写多少,先来写写系统怎么挂的. 在LFS之前就在想,万一把我宿主机挂了咋办,没想到真挂了. 但我进行到LFS系统grub安装时,那LFS说明上说的也不明白,我做的也稀里糊涂.似乎把宿主机系统GRUB损坏了,重写了.结果LFS系统也没装好,重启后LFS进不去,宿主机系统就更别说了,根本没有宿主机进系统的选项.... 于是开始找办法,我想即便是LFS挂了,恢复出宿主机也好啊,结果手贱点错了,直接双击了.vmdk文件,立