Linux系统中的hdahd0和hd10,0的意思是不是第一个硬盘第一个分区

真怪自己知识不够啊Linux系统倒是咹装过几次了,但是一些知识还是不懂……

嗯百度一下,查到了IDESATASCSI这是什么东西啊?

是硬盘接口名代指不同类型的硬盘,我的硬盤是“希捷7200SATA硬盘”中关村OL上的硬盘分类为:SATA3.0SATA2.0SATA1.0PATASAS。目前最流行的当然就是SATA3.0硬盘了最贵最高档的是企业专用SAS硬盘。

IDESATASCSI是硬盘的彡个大类技术上有较大区别。其中SCSI最先进当然价格也更贵。

SAS即串行连接SCSI是新一代的SCSI技术。

好了明白硬盘类型了,接下来分析/dev/hda/dev/sda

hdasda其实是不同设备的名称,详细情况见下表:

装置在Linux内的文件名

其中hdahdb分别代表第一个IDE、第二个IDE假如你电脑上插有2IDE 硬盘,就会出现hdahdb嗎不一定,因为貌似IDE硬盘默认有两个部分MasterSlave,即主分区和扩展分区而且ab是根据IDE接 口插槽顺序来分的。这样的话第一IDE插槽主分区為hda,扩展分区为hdb第二IDE插槽主分区为hdc,扩展分区为hdd但是SATA硬盘好像 没有扩展分区,而且Linux识别SATA等类型装置的顺序不是按插槽顺序来的是按照设备被侦测到的顺序来定的,比如SATA的第15插槽分别插有硬 盘电脑上还插有一个USB,那么启动Linux的时候先后侦测到SATA的第15插槽的硬盘和USB设備,那么分配的名称就分别是

那么sda1sda2又分别代表什么呢代表分区(Partition),比如

为什么没有hda34呢因为P1~4保存给了PrimaryExtended分区。一个硬盘的结构如丅:

MBR|主分区1|主分区2|主分区3|主分区4(扩展分区)|

其中扩展分区可以分为: |逻辑分区1|逻辑分区2|……|逻辑分区n|

所以说上面的P12指明系统有两个主分区L1~5代表有5个逻辑分区。

其中MBR(主引导记录)它有512字节,貌似有些玄机(和启动有关)不过多研究了。

至于Linux的实际分区本文不作过多研究,我只知道Linux的分区很有讲究, 比如有基于FTP服务器的分区方案有基于文件服务器的分区方案等等。我们知道Linux系统多被企业用来作服务器其中包括各种各样的服务器。比如我 所知道的HTTP服务(通常是ApacheTomcat),文件服务(常用的是NFS服务器例如一个Team,各个客户端都可以挂载主機的一个目录 方便共享文件),FTP服务(这个不解释最常用的是VSFTPPure-FTP也用得比较多)

/(主分区),30GB

/(主分区)10GB

下面给出一个较好的分區方案(自用WIN7+REDHAT9.0双系统)

/usr/home/var独立出来分区,便于管理一般企业级的服务器都会把这几个独立出来。当然这个方案并不是最优的方案囿些情况会把/tmp也独立出来,或者把/tmp/root都删掉在/var下重新做链接。

至于格式嘛ext3还是ext4?我用的ext3Ubuntu工作站都是用的ext3而非ext4我想还是有一定原因吧,而且我的Linux本来就是老版本的REDHAT9.0

PS:分区的时候,遇到(hd0,4), (hd1,0)什么的又把我搞糊涂了……

GRUB是一个引导程序,它被安装在MBRMaster Boot Record即“主引导记录”)用於在启动时告诉电脑该启动哪一个OSOperation System即“操作系统”)包括windows在内,每一个OS都需要引导才能启动windows的引导程序是MSntloadNT内核的系 时会自动安裝(不需要也不会询问你是否愿意),它只会寻找已被激活的主分区并把控制权交给这个分区的引导区(不是MBR)而GRUB就要强大得多了,它 鈈但可以完成ntload的动作(即引导windows)而且可以引导linuxMac BSD等等,而且可以在出错时报错并提供简单的用户交互(命令行)。当然由于都要安装箌MBR所以GRUB不能和ntload共存于同一块硬盘

会将BIOS检测到的所有硬盘编号,从0开始计数0123……所以就是hd0hd1hd2hd3……hd就是hard

那么到底那一块硬盤对应hdx呢?首先如果你是单硬盘的话,不用想了只会是hd0。那么如果有两块或更多的硬盘呢你可以这样:在开机检测出现BIOS画面时,等箌全部硬盘的数据出现 时立即按下“Pause”键(我的位于“Page Up”键的上方),这时启动过程会暂停然后仔细看看吧。比如我有四块硬盘————两块IDE的分别是40G160G,还有两块SATA的分别是 呵呵,明白了吧!GRUB编号的原则是这样的:
1.
多快硬盘的顺序完全照抄BIOS检测结果;
2.
启动盘一定是hd0(不管BIOS如何)其他硬盘依次按BIOS检测结果重排。
3.
不管IDE还是SATA一律认作IDE硬盘!即不使用类似(sd0,0)这样的编号,这个和linux的方式不同喔!

大家知道同┅块硬盘最多只能共存四个主分区所以对于hd0硬盘,依次是 (hd0,0)(hd0,1)(hd0,2)(hd0,3)这是只分出四个主分区的情况,这个编号永远固定不变;不过这样的話你就无法使用更多 的分区了,所以通常应该牺牲掉一个主分区(通常是最后一个)把它转换为扩展分区(extend)以便在其中再细分出更哆的逻辑分区(logic)。逻辑 ok对于大多数人来说,两个以上的主分区根本没用所以惯常的做法是————一个主分区、一个扩展分区(包含若干个逻辑分区)。所以惯常会使用在同一

linux的编号方法又和GRUB不同。是严格按照BIOS检测结果第一硬盘是sda,第二硬盘是sdb第三硬盘是sdc……,而不管哪个是启动盘具体来说,我用第三硬盘启动的系统GRUB认为它是(hd0),而linux依然认为它是sdc明白?

但貌似Ubuntu8.04起,所有硬盘都编号为“sdx”即不管IDE还是SATA,一律认作SCIS硬盘

}

敬请期待该系列的后续内容

此內容是该系列的一部分:学习 Linux,101

敬请期待该系列的后续内容

在本教程中,将学习如何为 Linux 系统选择、安装和配置引导管理器学习:

  • 提供備用引导位置和备份引导选项
  • 安装和配置引导加载程序,比如 GRUB Legacy
  • 对 GRUB 2 执行基本配置更改

引导管理器引导加载程序 是代码的中间部分它帮助系统的硬件和固件为您加载一个操作系统。本教程将讨论 PC 引导过程和 Linux 中使用的三个主要引导加载程序:GRUB、GRUB 2 和 MBR 格式磁盘中的 LILO最初的 GRUB(现在稱为 GRUB-Legacy)已不再得到积极开发,而且很大程度上已被较新的 GRUB 2 所取代甚至

本教程将重点介绍使用传统 BIOS 以及具有主引导记录 (MBR) 的磁盘来实现引导。本文还将介绍可扩展统一固件接口 (UEFI) 及其相关 GUID 分区表 (GPT) 的一些基本知识以及您可能在它们中发现的引导问题,尤其在您需要在单个系统上哃时引导 Windows? 8 和 Linux 时

要从本系列教程中获得最大收获,您应该掌握 Linux 的基本知识还应该有一个正常工作的 Linux 系统,您可以在这个系统上实践本敎程中涵盖的命令您还应该熟悉教程“”中讨论的硬盘驱动器布局。有时候程序的不同版本将获得不同的输出格式,所以您的结果可能并不总是与这里显示的清单和图完全相同

备注:本教程中的图是在引导过程的早期截取的屏幕截图。如果使用一个屏幕阅读器来阅读夲教程您可能会发现拥有相应的配置文件作为参考对您很有帮助;可以从本教程后面的部分下载它们。

在介绍具体的引导加载程序之前让我们回顾一下传统 PC 是如何启动或引导的。名为 BIOS(表示 Basic Input Output Service基本输入输出服务)的代码存储在 ROM、EEPROM 或闪存等非易失性存储器(non-volatile memory)中。打开或偅新引导 PC 时会执行此代码。通常它会执行开机自检 (POST) 来检查机器。最后它从硬盘驱动器上的主引导记录 (MBR) 加载第一个扇区。

正如教程“”中所介绍的MBR 还包含分区表,所以 MBR 中的可执行代码量少于 512 字节没有太多的代码。每个磁盘(甚至是软盘)在其 MBR 中都包含可执行代码即使该代码只够放入一条消息,比如“Non-bootable disk in drive A:(驱动器 A 中的不可引导磁盘:)”BIOS 从第一个扇区加载的这段代码被称为第一阶段引导加载程序或階段 1 引导加载程序。

MS DOS、PC DOS 和 Windows 操作系统所使用的标准硬盘驱动器 MBR 会检查分区表查找引导驱动器上标为 active 的主分区,加载该分区的第一个扇区並将控制权传递到已加载的代码的开始处。这段新代码也称为分区引导记录分区引导记录实际上是另一个阶段 1 引导加载程序,但这个加載程序只能从分区加载一组数据块这组新数据块中的代码被称为阶段 2 引导加载程序。在由 MS-DOS 和 PC-DOS 使用时阶段 2 加载程序直接继续加载操作系統的其余部分。这就是操作系统在正常运行之前通过其引导程序启动自身的过程

这适用于具有单个操作系统的系统。如果想要使用多个操作系统比如 OS/2、Windows 7 和三个不同的 Linux 发行版,会发生什么您可以 使用某个程序(比如 DOS FDISK 程序)来更改活动分区并重新引导。但这种方法比较笨拙此外,一个磁盘最多只能有 4 个主分区标准 MBR 只能有 1 个活动主分区;而且它无法从逻辑分区进行引导。但我们的假设示例提到了 5 种操作系统每个系统都需要一个分区。天啦!

解决方案就是使用一些特殊代码以允许用户选择要引导哪个操作系统示例包括:

一个 DOS 可执行程序,可从正在运行的 DOS 系统调用该程序来引导一个 Linux 分区如果设置多引导 (multiboot) 系统是一个复杂的高风险过程,这个程序就可以 帮上大忙
一个安裝在小型专用分区中的程序。该分区被标记为 active标准 MBR 引导过程会启动 OS/2 Boot Manager,它有一个菜单可供您选择引导哪个操作系统
一个可位于某个操作系统分区中的程序,通过活动分区的分区引导记录或主引导记录进行调用示例包括:
  • GRUB 2,目前在许多常见发行版中使用的新型引导加载程序

很明显如果可将系统控制权移交给某个拥有超过 512 字节代码的程序来完成其任务,那么从逻辑分区进行引导或从位于引导驱动器之外的汾区进行引导应该不是很难上述所有解决方案都支持这些可能性,这是因为它们都能从任意分区加载引导记录或者因为它们都了解启動引导过程所要加载的具体文件。

当一个引导管理器获得控制权时它可以加载另一个引导管理器。这被称为链式加载通常发生在位于主引导记录 (MBR) 中的引导管理器加载了位于分区引导记录中的引导加载程序时。在 Linux 引导加载程序被要求引导一个 Windows 或 DOS 分区时几乎总是会执行这種链式加载,但在配置一个 Linux 系统(比如 Fedora)的 Linux 引导加载程序来加载另一个 Linux 系统(比如 Ubuntu)的引导加载程序时也有可能执行此加载。例如您鈳以使用一个分区中的 GRUB 来启动另一个分区的引导记录中的 GRUB 引导加载程序,以便启动该分区中的 Linux 系统这种情况并不常见,但它说明存在这種可能性

2,让您对它们的主要区别以及 GRUB 和 GRUB 2 如何共存有一定的了解在本教程的剩余部分中,假设 GRUB 表示 GRUB Legacy专门指出 GRUB 暗指 GRUB 2 的上下文除外。还提供了 LILO 的一个名为 ELILO 的新版本(它是为引导使用英特尔的可扩展固件接口 (EFI) 而不是 BIOS 的系统而设计的)请参见,了解 ELILO 的更多信息

前面已经提箌过,GRUB Legacy 不再得到积极开发LILO 的开发预计将于 2015 年末终止。大部分 2015 年的 Linux 系统都默认提供 GRUB 2有时它是唯一的引导加载程序。

您的发行版的安装过程可能会让您选择要安装哪个引导加载程序GRUB、GRUB 2 和 LILO 都适用于大部分现代磁盘,但一些发行版(最明显的是 Fedora)不再包含 LILO 或 GRUB Legacy请记住,磁盘技術已获得了迅猛发展所以您应始终确保您选择的引导加载程序、Linux 发行版(或其他操作系统)和您的系统 BIOS 将兼容您的新磁盘。如果做不到這一点则有可能导致数据丢失。类似地如果向现有系统添加一个新发行版,可能需要确保您的 MBR 中拥有最新的 LILO、GRUB 或 GRUB 2如果计划从 LVM 或 RAID 磁盘進行引导,那么还需要提供您的引导加载程序的一个最新版本

借助 LILO 和 GRUB 中使用的阶段 2 加载程序,您可以从多个可加载的操作系统或版本中進行选择但是,LILO 和 GRUB 有很大的区别因为只要升级了内核或对您的系统执行了其他更改,对系统的更改就会要求您使用命令来重新创建 LILO 引導设置而 GRUB 可以通过您可以编辑的配置文本文件来完成此任务。GRUB 2 还要求从通常存储在 /etc 中的一个配置文件执行重新构建

GRUB(或 GRand Unified Boot 加载程序)长期以来一直是最常用的 Linux 引导加载程序之一。可以将 GRUB 安装到可引导硬盘驱动器的 MBR 中或者将它安装到某个分区的分区引导记录中。您还可以將它安装在可移动设备上比如软盘、CD 或 U 盘。如果还不熟悉 GRUB那么在软盘或 U 盘上练习是一个好主意。本教程中的示例会向您展示如何做

備注:教程中的大部分 GRUB 示例都使用了 CentOS 6。

在 Linux 安装期间通常会指定您选择的引导管理器。 如果选择 LILO那么您有可能没有安装 GRUB。如果没有安装 GRUB而且它可以用于您的发行版,那么您需要安装适用于它的包本教程假设您已经安装了 GRUB 包。如果需要帮助请参阅教程的来了解包管理。

grub 命令(sbin/grub在某些系统上是 /usr/sbin/grub)是一个较小但比较强大的 shell,它支持用于安装 GRUB、引导系统、找到和显示配置文件以及执行类似任务的多个命囹。这个 shell 的许多代码与第 2 阶段 GRUB 引导加载程序相同所以它对学习 GRUB 很有用,这样您就无需引导至第 2 阶段 GRUB 环境GRUB 第 2 阶段可以在菜单模式下或命囹模式下运行,在菜单模式下您可以从菜单中选择一个操作系统;在命令模式下,您可以指定各个命令来加载系统还有其他一些命令(比如 grub-install),它们使用 grub shell 并帮助自动化一些任务比如安装 GRUB。

清单 1 显示了一个非常复杂的 GRUB 配置文件在浏览它时,请记住一件重要的事: GRUB(至尐是 GRUB Legacy)会从 0 开始对驱动器、分区和需要计数的资源进行计数而不是从 1 开始。 CentOS 的第二项有一个非常长的内核行 清单 1显示了包含反斜杠 (\) 的內核行,反斜杠指出了需要断行的地方以便让版面变得美观。

中的第一组选项控制 GRUB 如何操作对于 GRUB,这些选项被称为菜单命令它们必須显示在其他命令之前。其余部分为您想要允许 GRUB 引导的操作系统提供了按映像划分的选项“Title” 被认为是一个菜单命令。每个 title 实例后面都囿一个或多个一般命令或菜单项命令

适用于 中的其他所有部分的菜单命令是:

任何以 # 开头的行都是注释,GRUB 会忽略它们这个特定的配置攵件最初是由 anaconda(Red Hat 安装程序)生成的。如果在安装 Linux 时安装了 GRUB那么您可能会发现 GRUB 配置文件中添加了一些注释。 这些注释通常用于帮助系统升級程序以便您的 GRUB 配置能够与升级后的内核保持一致。如果自行编辑该配置请注意为此用途而保留的所有标记。
如果用户没有在超时时間内做出选择该命令会指定要加载哪个系统。在 中default=0 表示加载第一个条目。 请记住GRUB 从 0 而不是从 1 开始计数。如果未指定那么默认值是引导第一个条目,也就是编号为 0 的条目
指定引导默认条目之前的超时时间,以秒为单位请注意,LILO 使用 0.1 秒为超时单位而 GRUB 使用 1 秒作为超時单位。
开始计数该图像是一个使用 gzip 压缩的 XPM 文件。对 splashimage 的支持需要一个补丁该补丁可能未包含在您的发行版中。
指定在您能够解锁菜单、编辑一个配置行或输入 GRUB 命令之前必须输入的密码这个密码可能是明文形式的。GRUB 还允许将密码存储为 MD5 摘要就像 中注释掉的示例一样。這种形式更加安全而且大多数管理员都会设置密码。无需设置密码用户就能完全访问 GRUB 命令行。
这是一个描述性标题在执行 Grub 引导时显礻为菜单项。 使用箭头键上下移动标题列表然后按下 Enter 选择一个特殊条目。
尝试挂载此分区来检查它并在某些情况下向已引导的操作系統提供一些值。
指定要加载的内核映像和所需的所有内核参数kernel 值(比如 /boot/grub2/i386-pc/core.img)通常表示从指定的根分区加载一个 GRUB 2 引导加载程序。
这是初始 RAM 磁盤的名称该磁盘包含内核在挂载文件系统前需要的模块。
本示例中未使用如果指定了菜单命令 default=saved 并对某个操作系统指定了 savedefault 命令,那么引導该操作系统会导致它成为默认选择直到引导了另一个指定了 savedefault 的操作系统。在 中指定 default=0 会覆盖所有已保存的默认值。
这是一个可选的参數告诉 GRUB 引导所选的操作系统。这是处理完某次选择的所有命令后的默认操作
未包含在 中。在输入密码之前不会引导指定的条目。如果使用此命令那么您还应该在初始选项中指定一个密码;否则,用户可以编辑您的锁定选项并引导系统或者向其他条目之一添加 “single”。如果您愿意的话还可以为个别条目指定不同的密码。
类似于 root但 GRUB 不会尝试挂载文件系统或验证其参数。这通常用于不受 GRUB 支持的文件系統比如 NTFS。如果想要 GRUB 加载一个硬盘驱动器上的主引导记录(例如用于访问不同的配置文件或重新加载您以前的引导加载程序),也可以使用此命令
指定另一个将加载为阶段 1 文件的文件。值 “+1” 等效于 0+1表示加载一个从扇区 0 开始的扇区;也就是说,加载 root 或 rootnoverify 所指定的设备的苐一个扇区
指定正在运行的 GRUB 副本使用从目标位置加载的配置文件替换其配置文件。为了实现此目的最好让加载新配置文件的 GRUB 版本与构建它的版本同样新。

现在您已经对可在典型的 /boot/grub/grub.conf(或 /boot/grub/menu.lst)文件中找到的内容有所了解。还有其他许多 GRUB 命令对引导过程提供了广泛控制并帮助安装 GRUB 和执行其他任务。可以在 GRUB 手册中了解有关这些的更多信息该手册应该可以通过命令 info grub 在您系统上找到。

在学习如何处理这种大型 GRUB 配置文件之前我们回过头来看一个更小、更简单的示例。我使用了在 /dev/sda11 上安装 CentOS 6 时它为我构建的文件该文件如 所示。同样地我使用了反斜杠 (\) 来显示需要对较长的内核行进行断行的地方,以便让版面变得美观

请注意之前未曾看到过的命令 hiddenmenu。 这会导致 GRUB 不显示菜单而是在超时結束后立即引导默认条目。在我们的例子中这意味着将在 5 秒内 (timeout=5) 引导第一个条目 (default=0)。如果在此期间按下 Enter则会显示菜单。

在拥有 GRUB 配置文件后需要安装它,或者最好是测试它我首先将介绍如何进行安装,然后展示如何使用软盘(如果您还有)或 CD 测试它

我会将 GRUB 安装在包含我嘚 CentOS 发行版的分区的分区引导记录中。我使用了grub-install 命令并指定了 512 字节的阶段 1 引导加载程序应该访问的设备。在我的示例中该设备是 /dev/sda11 或使用 GRUB 記法 (notation) 的 (hd0,10)。参见 您需要拥有根权限,然后才能编写分区引导记录如果添加或删除了设备,您可能 需要删除 /boot/grub/device.map 文件并允许 grub-install 重新构建它,如峩们的示例中所示这种情况不会经常发生,但是如果 grub-install 抛出某个您无法理解的奇怪错误,您可能发现删除

由于您已经知道标准 DOS MBR 无法引导邏辑分区所以需要采用其他某个工具来引导此系统。一种选择是通过运行 grub-install /dev/sda 将 GRUB 安装在 MBR 中这还会将 GRUB 安装在我们磁盘 (/dev/sda) 的 MBR 中。稍后我还会向您展示如何使用 GRUB 2 实现此目的但在决定采用方法步骤之前,您可能想要使用 GRUB 引导 CD 测试您的设置

在重新引导您的新系统之前,构建一个可引導的 GRUB CD 可能是一个好主意首先,在硬盘驱动器上准备一个 CD 映像您需要一个临时目录,假设该目录名为 grubcd其中包含子目录 boot 和 boot/grub。随后需要将 stage2_eltorito 攵件从您的 GRUB 发行版文件复制到您刚创建的 grub 目录然后,使用 genisoimage 创建一个可引导的 .iso 映像文件您可以使用您最喜欢的刻录工具将它刻录到 CD 上。展示了如何将 CD 映像创建为 grubcd.iso执行此操作不需要根权限。我们的 stage2_eltorito 位于 /usr/share/grub/x86_64-redhat 中此位置在其他系统上可能有所不同,特别是 32 位系统或者,您可能會在 /usr/lib/grub 下找到它可以使用 locate 命令来查找它,如 中所示

您可以在任意 PC 中引导此 CD;该 PC 不需要是安装了 Linux 系统的 PC。如果引导该 CD则会从 CD 加载 GRUB shell。在引導时会获得一个 GRUB 引导提示符。可以按下 tab 键或使用 help 命令来查看可用命令的列表还可以尝试使用 help commandname 获得关于名为

在使用 CD 重新引导之前,还有朂后一件事要做:您可以从 Linux 命令行练习 GRUB shell 中可用的一些 GRUB 命令 演示了 grub 命令和一些可用的命令,包括显示菜单和查看它是否是您想要的一些命令(比如 find)需要 root 权限,所以我的示例使用了 root 用户还要注意的是,在尝试按下 Enter 来加载第一个配置条目时GRUB 会因为分段错误而崩溃。请记住您可以从 Bash 命令行练习部分 GRUB shell 命令,而不是所有命令向上和向下箭头键可能不可用。同样地较长的内核行已使用 \ 进行拆分。

还可以在 GRUB 掱册中了解这些 GRUB 命令尝试在 Linux 终端窗口中键入 info grub 来打开该手册。

如果您有软盘可以使用

现在,您已经准备好使用刚构建的 GRUB CD 来重新引导您的系统了如果 BIOS 未被设置为自动从 CD 或 DVD(如果已存在)进行引导,那么您可能需要按下某个特定于系统的键(在我的 BIOS 上为 F8)来选择硬盘驱动器鉯外的一个引导设备从 CD 引导至一个 GRUB 提示符,如 所示

的分区引导记录中,所以我使用chainloader 命令来告诉 GRUB 引导 (hd0,10) 的第一个扇区中的任何引导加载程序最后,我使用 boot 命令来引导这个新的加载程序(在我们的示例中同样是 GRUB)结果请参见

在这种情况下,可按下 Enter 来查看该菜单否则 hiddenmenu 选项呮会显示正在引导的行和一个倒数计时器。

现在我将介绍如何使用 GRUB shell 编辑配置。出于此目的您将引导进入单用户模式,但在必要时您鈳以更改任何行,甚至添加或删除所有配置行 例如,如果您忘记了 root 行那么可以添加它。可以按下 e 来编辑配置然后使用向下箭头来突絀显示 kernel 行。结果如 所示

再次按下 e,然后在该行的末尾处键入单词 single如 所示。

最后按下 Enter 返回到您在 中看到的屏幕,然后按下 b 将 CentOS 引导进入單用户模式在执行系统引导时,会有一个根提示符可以使用此模式对无法正常引导的系统进行紧急修复。

此刻您可以重复以前的过程来引导进入正常的图形模式或者您设置您的系统引导进入的任何模式。如果想让 GRUB 控制系统上的所有引导那么现在可以运行

GRUB 2 是 GRUB 的继任者。它是完全重新编写的以便使其更加模块化和可移植。它面向许多不同的架构和引导方法拥有许多新特性,包括处理 UEFI 固件和 GPT 格式的驱動器的能力请参见,获取更多信息的链接如果熟悉 GRUB 并开始使用 GRUB 2,您会发现它们完全不同而且您可能会获得很多惊喜。

对于 GRUB 2您可能紸意到的第一点是,它不能作为一个分区引导加载程序进行安装如果告诉 Linux 安装程序将 GRUB 安装在一个分区中,该分区将无法通过链式加载进荇引导 在更新系统后,必须重新构建 GRUB 2大多数系统更新流程都会为您完成此操作,但是如果一个系统上有多个操作系统,您可能需要洎行完成一些工作 现在,我将介绍如何单独使用 GRUB 2或者将它与 GRUB

grub2-tools 提供的 grub2-mkimage。请参阅和获得关于查找包含一个特殊命令的包的帮助。显示了┅个 Ubuntu 14.04 系统上的 GRUB 二进制文件和平常一样,请查阅手册页或尝试使用 --help 选项运行程序以获得更多的信息。您可能需要在网络上进行搜索来获嘚更多的帮助由于技术的迅猛发展,所以请做好会在文档中发现不一致性的心理准备

grub-install --help(如 中所示)来了解被调用来执行所有这些工作嘚程序。一些程序与 Grub Legacy 类似但也有一些新程序,比如

如果运行 grub-install /dev/sda该过程会为您构建一个核心映像文件,构建一个配置文件并将 GRUB 2 安装在您嘚 MBR 中。如果还没有准备好在您的全部设置中使用 GRUB 2您可以自行构建这些部分,然后从 GRUB Legacy 或 LILO 引导 GRUB 2 核心映像

发行版的部分、针对其他操作系统嘚部分,以及您自己的自定义增加项如果需要自定义 GRUB 2 菜单,那么您应该将更改添加到 /etc/grub.d/ 中的一个文件中比如 40_custom,或者添加您自己的文件請记住,该文件必须是可执行文件 稍后在介绍如何从 GRUB 2 链式加载 GRUB Legacy 时,会展示一个自定义示例

显示了结果配置文件的标头部分, 显示了前幾个菜单项我已经说过,为了版面美观较长的行已使用一个反斜杠 (\) 进行断行。请注意menuentry 代码段看起来更像是 shell 脚本,而不像是没有 GRUB Legacy 逻辑嘚纯命令与

构建一个新核心映像文件的最简单的方法是运行 grub-install(或根据您的系统运行 grub2-install),但不要更新 MBR该程序的一些版本使用 -grub-setup 选项安装引導扇区,以指示实际设置了哪个程序将此设置为 /bin/true,以便不执行任何操作并避免引导扇区更新其他版本没有 -grub-setup 选项,但有 -non-sectarian 选项检查手册頁。我将在 中展示两个不同的示例我首先删除现有的 core.img,以表明确实已生成该文件

Xorriso 未找到或处于错误级别的错误消息,那么您需要安装此包 展示了如何在文件 rescue.iso 中创建一个 GRUB 2 急救映像。创建急救 ISO 不需要执行引导操作

在创建 ISO 映像后,可以使用您最喜欢的刻录工具将它刻录到 CD(或 DVD)中如果您喜欢的话,还可以将它复制到一个 USB 闪存驱动器并从该驱动器进行引导只要您的 BIOS 支持从这些设备进行引导。展示了如何使用 dd 命令将 ISO 映像复制到 USB 闪存驱动器

警告:请确保您将映像复制到了正确的设备将它复制到错误的设备可能会毁坏大量数据。

您现在应该囿一个可引导的 CD 或可引导的 USB 闪存驱动器它将引导进入一个 GRUB 2 提示符。

您将引导 USB 闪存驱动器来查看它的工作原理和 GRUB Legacy 一样,这个急救磁盘引導进入一个 GRUB 提示符您可以在这里输入命令。我将展示一些命令您可以使用它们来启动我之前为其构建了配置文件的 Ubuntu 14 系统。显示了执行引导并输入一些命令后的屏幕

没有参数,列出找到的设备此命令的运行可能会花费一些时间。闪存驱动器通常不是 BIOS 驱动器但是,如果从一个闪存驱动器引导它可能会显示为 hd0 并取代其他驱动器,导致它们没有按您预期的进行编号可以使用可引导的 CD 或 DVD 来避免这个问题。
设置变量值在本例中,您可以设置 root 变量与 GRUB Legacy root 命令进行比较。您使用 hd1 代替了 hd0因为前面的命令已告诉您,hd0 现在是您从中引导的 USB 闪存驱动器
有一个路径,显示了文件或目录使用类似 Bash 的 tab 键补全功能来补全您键入的路径组件,或者获取可能的补全列表就像在这里看到的一樣(我在输入 /boot/grub/gru 后按下 tab 键)。
和 GRUB Legacy 一样可以使用 configfile 命令加载配置文件。我们加载了之前构建的一个配置文件

在加载配置文件后,您的屏幕类姒于

和 GRUB Legacy 一样,您可以在引导系统之前编辑配置条目或输入命令

类似地,您可以向 GRUB 2 配置文件添加一个条目以便链式加载 GRUB Legacy 引导加载程序。更新模板文件 /etc/grub.d/40_custom而不是直接编辑配置文件。 显示了一个完成此任务的典型条目这个条目来自我的 Fedora 22 安装。它将根设置为 (hd0,1)在我的系统上,这是一个特殊的引导分区我稍后会讨论它。

再次运行 grub-mkconfig 后此条目会添加到配置文件末尾处,显示在最后面

您会在本教程后面的 部分看到这些方法的实际应用。

多年来LInux LOader (LILO) 一直是最常见的 Linux 引导加载程序之一。可以将 LILO 安装到可引导的硬盘驱动器的 MBR 中或者安装在某个分区的汾区引导记录中。还可以将它安装在可移动设备上比如软盘、CD 或 U 盘。和 GRUB 和 GRUB 2 一样如果您还不熟悉 LILO,那么在软盘或 U 盘上练习是一个好主意

在 Linux 安装期间,通常会指定一个引导管理器如果选择 GRUB,那么您可能没有安装 LILO如果还没有安装它,那么您需要安装它的包您可能还想偠安装 lilo-doc 包,以便获取额外的文档和更多的示例从现在开始,我假设您已经安装了 LILO 包如果需要帮助,请参阅教程的来了解包管理

可以使用一个配置文件来配置 LILO,这个配置文件通常是 /etc/lilo.conf可以使用 liloconfig 命令(通常可以在 /usr/sbin 中找到)来生成一个启动配置文件,然后根据需要编辑它 Φ的配置文件就是以这种方式生成的。该文件添加了明确的注释lilo 和 lilo.conf 的手册页提供了更多的帮助。这是一个可用在包含 Windows 以及一个或多个 Linux 系統的双引导系统上的典型 LILO 配置文件和以前一样,为了版面美观我对一些较长的行进行了断行。断行的地方显示了一个反斜杠 (\)

lilo 命令使鼡了您准备好的配置文件来设置 LILO。使用 -b 选项指定 LILO 引导扇区的位置例如,使用 /dev/sda 表示您的第一个硬盘驱动器的 MBR或者使用 /dev/sda6 表示第 6 个分区。

用戶指南中找到更多的信息该指南应该安装在您的文档目录中,但准确的位置可能因系统不同而有所不同

请记住,在使用 LILO 时只要更新叻配置文件 (/etc/lilo.conf),就必须运行 lilo 命令如果添加、移动或删除了分区,或者执行其他任何可能使生成的引导加载程序失效的更改也应该运行 lilo 命囹。

大多数发行版都提供了更新系统的工具这些工具通常知道所使用的引导加载程序,常常自动更新您的配置文件如果构建您自己的洎定义内核,或者喜欢使用具有非标准名称或位置的配置文件那么您可能需要自行更新该配置文件。

  • 如果使用 GRUB可以编辑 /boot/grub/grub.conf 文件来执行更妀,而且 GRUB 阶段 2 加载程序会在重新引导时读取该文件通常不需要重新安装 GRUB,因为会添加一个新内核但是,如果移动一个分区或添加驱动器可能需要重新安装 GRUB。请记住阶段 1 加载程序非常小,所以它拥有阶段 2 加载程序的块地址列表 移动该分区并且地址发生了更改,这样階段 1 加载程序就无法再找到阶段 2 加载程序接下来我将介绍一些恢复策略,还将讨论 GRUB 的阶段 1.5 加载程序
  • 如果使用 GRUB 2,需要按照中的描述重新構建 GRUB 2 配置
  • 如果使用 LILO,只要更新了配置文件或执行了一些更改比如添加硬盘驱动器或删除分区,就必须运行 lilo 命令
  • 如果在不同的分区上運行多个 Linux 系统,可以考虑

现在,让我们来看看您精心准备的引导设置可能会出错的地方特别是在您安装并引导多个操作系统时。要记住的第一件事是控制您最初的恐慌倾向恢复通常只需几个步骤。这里的战略可以帮助您应对许多类型的危机

任何能够物理地访问机器嘚人都拥有许多权力。同样地任何能够访问 GRUB 命令行的人也能够访问您系统的文件,即使他并没有运行系统所提供的所有权或其他安全供應在选择引导加载程序时,请牢记这几点选择 LILO、GRUB 还是 GRUB 2 从很大程度讲是个人偏好问题,尽管 GRUB 2 已经成为主导 选择最能满足您的特殊需求囷工作风格的加载程序。

另一次安装毁坏了您的 MBR

安装另一个操作系统时可能会无意中覆盖您的 MBR。 一些系统(比如 DOS 和 Windows)会始终安装自己的 MBR这种情况通常很容易恢复。如果养成每次运行 lilo、重新安装 GRUB 或更新 GRUB 2 时都创建一个恢复软盘、USB 闪存驱动器或 CD 的习惯就会避免许多烦恼。 可鉯从软盘引导进入 Linux 系统并适当地重新运行

如果没有自己的恢复介质,但有几乎所有 Linux 发行版的实时或安装介质那么您可以使用发行版介質或实时介质的恢复模式来修复损坏的 MBR,或者像本教程中所做的那样构建恢复介质

如果移动了一个分区,但忘记了您的引导设置您会遇到一个临时问题。通常LILO 或 GRUB 会拒绝加载。LILO 可能会打印一个 ‘L’ 来表明阶段 1 加载程序已加载然后停止加载。 GRUB 会提供一条错误消息这里絀现的情况是,阶段 1 加载程序(它有一个要加载到阶段 2 加载程序的扇区的列表)可能从它拥有的地址加载扇区但这些扇区不再拥有阶段 2 嘚签名。和毁坏了 MBR 的情况一样您需要重新安装引导加载程序,所以可以像我介绍的那样使用您的恢复 CD 或 Linux 发行版

您可能已经注意到,配置示例对您在 中看到的分区使用了一些通用唯一标识符 (UUID)(例如 中显示的代码段)。

在 UUID 出现之前还可以使用 e2label 命令或分区工具(比如 gparted)为 MBR 汾区分配一个标签。这些标签与分区移动之间具有一定的独立性

在移动分区时,我常常使用这样的 UUID 来帮助避免问题您仍然需要更新 GRUB 或 LILO 配置文件并重新运行 lilo,但不需要再更新 /etc/fstab如果在一个系统上创建一个分区映像,并将它还原到另一个系统上的不同位置这非常方便。如果从一个可能没有始终附加到同一个位置的驱动器(比如 USB 驱动器)进行引导这也很方便。

可以使用 blkid 命令显示磁盘的标签(如果有)和 UUID洳 所示。如您所见我的一些分区使用了标签,一些没有

GRUB 2 现在会生成使用旧设备名称作为提示的配置文件,但根设备实际上是基于 UUID(或標签)进行设置的 请查阅 GRUB 2 手册了解更多的细节。 中显示了我之前为其构建了一个配置文件的 Ubuntu 14 系统的示例代码段将根设备初步设置为 'hd0,msdos12' 后,随后的逻辑会使用 search 命令和一些提示来查找根设备的实际位置(如果未执行任何更改该位置将为 /dev/sda12)。

您之前在从恢复闪存驱动器引导时看到过此代码的使用。 请记住闪存驱动器变成了 (hd0),第一个硬盘驱动器变成了 (hd1)

除了这里提到的方法和工具之外,网络上还有一些恢复囷引导包这些包通常包含某个可引导系统和一些有用的恢复工具。示例包括 Knoppix 等包和系统急救 CD(参见来获取链接或者在网络上搜索这些包的许多精彩评论之一)。

另一种恢复(或者可能是避免恢复的)方法是使用一个合适的分区来引导您刚才已经看到,对系统更改而言GRUB 2 已变得更加灵活。但是对于 GRUB Legacy 和 LILO,如果您有一个测试系统其中包含多个您可能频繁地重新构建的发行版,引导分区可能特别有用引導分区不需要很大,大约 100MB 左右就够用了将此分区放在某个不可能移动的地方,以及不可能通过添加或删除另一个分区来改变它的分区编號的地方在 Windows 和 Linux 混合环境中,/dev/sda2(或 /dev/hda2具体情况取决于磁盘的标记方式)通常是引导分区的不错选择。事实上您之前看到的 显示了我在自巳的系统上使用的小型引导分区

尽管出于本教程的目的,我添加了一个条目来直接引导进入 CentOS但我平常的战略是保持条目简单,使用它们鏈式加载另一个引导加载程序或者加载 GRUB 2 core.img 文件。 您在 部分看到的示例使用了这个简单的战略如果使用直接引导进入某个特殊内核的条目,只要更新了目标系统就需要手动更新这些条目。尽可能地避免额外的工作显示了我的简单的 GRUB 菜单。

图 8. 一个简单的 GRUB 引导分区菜单

对于此分区我使用了一个自定义的初始图像,这是使用我在科罗拉多州大沙丘国家公园拍摄的一张照片制作的请查阅手册页或进行在线搜索,了解创建自己的初始图像的更多信息图 9显示了使用 /etc/grub.d/40_custom 文件添加到我的 Fedora 22 GRUB 2 菜单末尾处的条目。

在引导分区使用一个不受引导加载程序支持嘚文件系统时需要拥有一个引导分区。例如在根分区 (/) 使用 LVM(它不受 GRUB Legacy 支持)时,通常会有一个 ext2 或 ext3 格式的 /boot 分区

如果系统上有多个发行版,不要在它们之间共享 /boot 分区记得将 LILO 或 GRUB 设置为从以后挂载为 /boot 的分区进行引导。还请记住一个发行版的更新程序通常会更新系统的 GRUB 或 LILO 配置。在包含多个系统的环境中您可能想将一个拥有自己的 /boot 分区的系统保留为主系统,在更新另一个系统需要使用它时再手动更新它的配置文件。另一种方法是让每个系统将一个引导加载程序安装在自己的分区引导记录中让您的主系统链式加载各个系统的分区引导记录,為您提供一个类似我所使用的流程的两阶段 (two-stage) 菜单流程

尽管本教程重点介绍了 MBR 格式的驱动器,但许多概念仍适用于 GPT 格式的驱动器UEFI 固件与 BIOS 囿很大的区别,而且功能强大得多当然,它也带来了新的挑战新功能之一是安全引导 的概念,它只允许经过签名的二进制文件进行引導许多 UEFI 系统仍支持传统模式 (legacy mode) 引导,这使得旧系统能够在硬件上进行引导 Windows 8 需要 UEFI 和安全引导,以及 GPT 格式的磁盘所以如果想要与 Windows 8 或更高版夲一起安装,需要对 UEFI 和安全引导有一定的了解

一些实时 Linux 发行版(比如 Ubuntu 和 Fedora)和它们的衍生版本支持在启用了安全引导的 UEFI 系统上进行引导。建立信任链的方法在 Linux 内核开发社区中存在一些争议我将介绍如何将 Ubuntu 15.04 发行版 ISO 映像解包到一个 USB 闪存驱动器上,让您可以了解该设置

对于本練习,我使用了一个 Ubuntu 14 系统将一个小型 USB 闪存驱动器格式化为 GPT,然后创建一个 2GB 的分区如 所示。我将该分区格式化为 FAT32因为 UEFI 固件需要 FAT32 分区中嘚一些文件。请小心使用正确的设备;您的设备可能不在 /dev/sdf 上

在准备好闪存驱动器后,需要挂载它然后,需要将 Ubuntu 15 ISO 映像解包到这个闪存驱動器上显示了您实现此目标的许多可能方法之一。

在卸载闪存驱动器之前请查看它之上的一些文件。如果列出根目录就会看到两个目录 EFI 和 boot,还有其他一些文件和目录根目录是您的 GRUB 2 引导目录,而 EFI 目录是 UEFI 固件搜索要引导的已签名二进制文件的目录这个目录必须有一个 FAT 攵件系统(或 CD 上的 ISO 9660 文件系统)。这正是我将该分区格式化为 FAT32 的原因 显示了这些文件。您现在可以卸载并弹出闪存驱动器尝试在一个同時启用了安全引导和禁用了传统引导的系统上引导它。

清单 22. 检查闪存驱动器上的根目录

要在只启用了安全引导和 UEFI 引导的 Windows 8 系统上进行引导鈳能需要禁用快速引导,因为这会导致从 semi-hibernat3ed 模式重新引导还需要知道如何从 USB 闪存驱动器等设备进行引导。完成两项任务的一种方法是使用 Windows 恢复环境(参见 )访问此环境的一种方法是在正在运行的

在我在系统上选择 Use a device 后,下一个提示允许我选择一个 EFI USB 设备 从类似这样的一个提礻符,您可以引导刚创建的闪存驱动器

在引导您的 Ubuntu 系统后,可以挂载您的 Windows 8 系统的 EFI 分区并检查它在我的例子中,该分区是 /dev/sda2显示了此分區上的 EFI 目录。

同样地您可以找到一个 bootx64.efi 可执行文件,UEFI 固件知道在何处寻找它

您已经学习了传统 Linux 系统的主要引导加载程序,包括如何从错誤和引导问题中恢复您还简单了解了 UEFI 引导和引导问题。

  • 在 网站上查找这些认证的详细目标、任务列表和样例问题。具体地讲请参阅:
  • 接口的允许任何符合条件的引导加载程序加载任何符合条件的操作系统。
  • 包含一个 UEFI 安全引导指南
  • 请参阅 ,了解 Windows 8 及其更高版本的修复和恢复工具的信息
  • 下载,这是可在线获得的众多工具之一可帮助您在崩溃后恢复系统。
  • 是一个实时 Linux 系统它有许多可以安装在 CD、DVD 或 USB 驱动器上的恢复工具。
  • 提示符和执行更多的操作
  • 拥有各种各样有用的文档,尤其是它的基础知识文档
  • :为使用 linux 开发人员准备的技术信息和資料。这里提供产品下载、how-to 信息、支持资源以及免费技术库包含 2000 多份技术文章、教程、最佳实践、IBM Redbook 和在线产品手册。
}

讨论区近四年的观察来看大多初学者并不能在短时间内掌握GRUB的用法,为了解决初学者在最短时间内掌握GRUB重写GRUB入门文档还是有必要的;本文重点介绍了GRUB的menu.lst的写法,另外通过GRUB命令行引导系统也做了详述;这些无论是对Windows版本的WINGRUB还是Linux版本的GRUB都是适用的;目录索引一、什么是多重操作系统引导管理器什么是GRUB;1、什么是多重操作系统引导管理器及工作原理;2、什么是GRUB;为什么我要选择GRUB; 1)什么是GRUB;2)“GRUB太不好用”──对GRUB的认识的误区;3)为什么偠选择GRUB; 二、GRUB软件包版本选择和安装;1、Linux版本的GRUB及Windows版本的GRUB的说明;2、GRUB的Windows版本WINGRUB;3、GRUB的Linux版本软件包的安装; 三、在Linux中,GRUB的配置中的安装和写入硬盘的MBR;1、在Linux中GRUB配置过程中的安装grub-install;2、设定GRUB的/boot分区并写入MBR; 四、GRUB的配置文件的menu.lst的写法;1、menu.lst的写法之一; 1)在menu.lst中 ; 2、menu.lst的写法之二,精简型;1)第一种情况:/boot和Linux的/根分区在同一个分区;2)第二种情况:/boot独立一个分区和Linux的根分区不位于同一分区; 五、通过GRUB命令行来启动Linux操作系統;1、为什么需要学习GRUB的命令行;2、用命令行来引导Linux操作系统的步骤; 1)进入GRUB的命令行模式 ; 七、GRUB丢失或损坏的应对策略;1、由于重新安裝Windows或其它未知原因而导致GRUB的丢失;2、如果出现GRUB提示符,而不出现GRUB的菜单如何引导系统; 八、关于GRUB的未尽事宜;九、关于本文;十、参考攵档;十一、相关文档;++++++++++++++++++++++++++++++++++++++++++++++++++++++++正文++++++++++++++++++++++++++++++++++++++++++++++++++++++++一、什么是多重操作系统引导管理器,什么是GRUB;1、什么是多重操作系统引导管理器及工作原理;系统启动引導管理器是在计算机启动后运行的第一个程序,他是用来负责加载、传输控制到操作系统的内核一旦把内核挂载,系统引导管理器的任务就算完成退出系统引导的其它部份,比如系统的初始化及启动过程则完全由内核来控制完成;Briefly, 也有类似的工具NTLOADER;比如我们在机器中咹装了Windows 98后我们再安装一个Windows XP ,在机器启动的会有一个菜单让我们选择进入是进入Windows 98 还是进入Windows XPNTLOADER就是一个多系统启动引导管理器,NTLOADER 同样也能引導Linux只是极为麻烦罢了;在Powerpc 架构的机器中,如果安装了Linux的Powerpc 版本大多是用yaboot 多重引导管理器,比如Apple机目前用的是IBM Powerpc处理器所以在如果想在Apple机仩,安装Macos 和Linux Powerpc 版本大多是用yaboot来引导多个操作系统;因为目前X86架构的机器仍是主流, 所以目前GRUB和LILO Boleyn.2)“GRUB太不好用”──对GRUB的认识的误区;GRUB真的鈈好用吗不是的,通过LinuxSir.Org 社区近四年来的运行我发现了大多新手弟兄还是不太了解GRUB;当然这也有中文Linux社区的责任,虽然也有GRUB的中文译本初学Linux的弟兄可能有点看不懂;我 们欣喜的看到LinuxSir.Org 社区的好多弟兄都曾经或正在写GRUB实践文档,也有的弟兄也总结了GRUB的一些基础知识比如 probing兄弚的 《GRUB 学习笔记》;由于每个人的写文档时风格不同,可能同一份文档不同的人来写就有不同的风格;所以今天也抖胆也一篇入门级的教程由于北南不会写高级教程,所 以还得请高手弟兄指教先谢过;3)为什么要选择GRUB;基于在X86架构的CPU而开发操作系统,系统引导管理器不僅仅有GRUB 而且也有LILO,但对于多重系统引导管理器你只能选择其一而用;不能两个同时使用;目前这两个多重系统引导管理器是大家最常鼡的,也是主流Linux发行版而采用的;有的弟兄喜欢GRUB比如我个人,有的弟兄喜欢LILO 比如etony兄(谁是etony,请参见  );主流发行版 2.0正在开发之中;所鉯我们有理由用GRUB我也有理由写GRUB使用教程;二、GRUB软件包版本选择和安装;1、GRUB的版本选择,Linux版本的GRUB及Windows版本的GRUB的说明;GRUB不但有Linux版本也有Windows版本;现我们一一介绍;如 前面所说,目前在在Unix类的操作系统中大多是都有GRUB;GRUB几乎能引导所有X86架构的操作系统;功能之强,使用简单是GRUB最大嘚卖 点;由于Windows 操作系统的先入为主的优势使得大家对Windows的NTLOADER了解的比较多,而对开源社区的GRUB显得有点寞生由此而带来使用上的“心理恐 惧”;究其初学者对GRUB“恐惧”的主要原因还是对GRUB没有太多的了解和深入;无论是WINGRUB还是Linux版本的GRUB,最方便的还是对 GRUB命令行的操作;一谈到命令行(Command)的操作可能初学者对此恐惧;其实没有什么难的,象北南这样低级的写手还能操作得起来,您也应该 为例详述用WINGRUB来引导Linux的安装》3、GRUB的Linux版本软件包的安装;其实对于Linux的GRUB,几乎所有的Linux主流发行版都有打包如果您安装了Linux,并且在开机后出现GRUB字样的证明您已经安装了GRUB;而无需再次安装;Linux的GRUB软件包安装部份并不是本文的重点;如果您的Linux系统没有安装GRUB,或者采用的是LILO而您想用GRUB,可以用系统安装盘自带GRUB软件包来安装或者到相关发行版本的软件仓库下载后安装;GRUB grub*.tgz其它的发行版本请用其自己特色的软件包管理工具来安装;当然您也可以通过源码包,在任何Linux的发行版上安装;至于源码包的安装方法;请参考:《如何编译安装源码包软件》[root@localhost ~]#tar zxvf grub[root@localhost ~]# grub-install如果您不能找到这两个命令可能您的鈳执行程序的路径没有设置;请参考:《设置可执行程序路径》,当然您可以用绝对路径;比如下面的;[root@localhost ~]# 注:用绝对路径来运行grub命令;三、在Linux中GRUB的配置中的安装和写入硬盘的MBR;1、在Linux中,GRUB配置过程中的安装grub-install;grub-install 命令有何用呢其实就是把我们前面已经安装的软件包中的一些文件复制到 /boot/grub中;对于新安装GRUB软件包后,也是一个必经的过程;我们前面所说的GRUB软件包的安装;而现在我们说的是GRUB配置的过程中 的安装;虽然茬洋文中都是install 但表达的意思是不一样的;我们首先要运行 fdisk -l 为准;如果两个都有,就看您把/boot分区是放在第一块硬盘还是第二块硬盘上了鉯实际情况为准;2、设定GRUB的/boot分区并写入MBR;;在Linux中,GRUB软件包的安装及在配置过程中安装grub到 /boot中还是不够的, 还要把GRUB写入MBR才行;有时我们重噺安装了Windows,Windows会把MBR 重写这样GRUB就消失了;如果您出现这样的情况,就要进行这个过程;[root@localhost ~]# grub会出现grub>提示符这是grub命令行模式 ,如果能在开机中出現提示符没有引导不起来的系统,除非您的系统破坏的极为严重如果仅仅是GRUB被破坏了,GRUB命令行是能让操作系统引导起来的;接着看例孓我们要找到 /boot/grub/stage1的,在grub>后面输入;grub> find 注:把GRUB写到MBR上;注解:上面这步骤是根据 find /boot/stage1而来的仔细看一下就明白了;现在我们一般安装很少会把/boot分區列为一个单独的分区;不过有的弟兄可能也喜欢这么做;所以还是有必要说一下为好;四、GRUB的配置文件的menu.lst的写法;对 于GRUB来说,如果没有配置menu.lst无论是Linux版本的GRUB,还是WINGRUB都会有命令行可用,通过命令行是一样能把操作系统 引导起来的;有些弟兄总以为menu.lst 配置错了 或者在机器启動后出现grub>命令行模式就要重新安装系统,其实根本没有这个必要;只要学会GRUB的命令行的用法根本没有必要重装系统;menu.lst 位于/boot/grub目录中,也就昰/boot/grub/menu.lst 文件;您可以用vi或您喜欢的编辑器来编辑他;如果您不会用vi还是去学习一下吧;简单的用法怎么也得会,对不对毕竟这个文档不是講vi的用法的;有的弟兄会说,我没有menu.lst怎么办那就创建一个;用下面的命令;[root@localhost ~]# 注:GRUB的背景画面,这个是可选项;我不喜欢GRUB的背景画面所鉯加#号注掉,也可以删除;hiddenmenu 注解:隐藏GRUB的启动菜单这项也是可选的,也可以用#号注掉;一般的情况下对Linux操作系统的启动一般要包括四荇;title 行;root行;kernel 行;initrd ,root (hd[0-n],y)表示的是/boot所在的分区;有时我们安装Linux的时候,大多是不设置/boot的这时/boot和/所在的同一个分区; 这个root (hd[0-n],y)很重要,因为/boot目录中虽嘫有grub目录最为重要的是还有kernel 和initrd文件,这是Linux能启动起来最为重要东西;有的弟兄会问root (hd[0-n],y)是怎么来的?请参考:《在Linux系统中存储设备的两种表示方法》2)在menu.lst中kernel 命令行的写法;kernel 一行,是通指定内核及Linux的/分区所在位置;比如例子中是;kernel 来进行的;您可以对照着来理解;ro 表示只读; root=LABEL=/ 来表示Linux的根所处的分区LABEL=/ 这是硬盘分区格式化为相应文件系统后所加的标签;如果您不了解什么是标签,也可以直接以/dev/hd[a-z]X 或者/dev/sd[a-z]X来表示;就看您的Linux是根分区是在哪个分区了比如我的是在/dev/hda7 , 一行要把/boot中省略;如果/boot不是处于一个分区而是和Linux的/分区处于同一分区,不应该省略;仳如我们在2)中用的例子;现在拿到这里我们应该首先查看 /boot中的initrd的文件名到底是什么;[root@localhost ~]# ls /boot/initrd-2.6.11-1.1369_FC4.img注解:上面两个不同之处在于一指定Linux的根/所在的汾区时,一个是用了文件系统的标签另一个没有用标签;2、menu.lst的写法之二,精简型;本写法主要是把指定/boot所位于的所分区直接写入kernel 指令行;这样就省略了通过root (hd[0-n],y)来指定/boot所位于的分区;1)第一种情况:/boot和Linux的/根分区在同一个分区;有前面的那么多的讲解menu.lst写法之二就好理解多了;也嘚分两种情况,咱们先把/boot并不是独处一个分区而是和Linux的根分区处于同一个分区;我们以 4)menu.lst第一种方法的写法总结 (hd0,5)/initrd-2.6.11-1.1369_FC4.img五、通过GRUB命令行来启动Linux操作系统;GRUB的命令行才是王道,如果知道怎么用命令行来启动操作系统那理解menu.lst的写法也不难;也就是说在开机的时候,不用GRUB的菜单通過GRUB的命令也是一样能把操作系统引导起来。因为menu.lst的内容就是GRUB的一个一个的指令集合;是不是Linux这玩意很神奇1、为什么需要学习GRUB的命令行;當 我们把GRUB的menu.lst写错的时候,或者丢掉了menu.lst的时比如在开机的时候,GRUB会出现grub>类似的命令提示符这 时需要我们用命令行启动系统;当然您可以鈈用定义GRUB的菜单 ,直接用命令行来启动系统比如我现在就是,为了写GRUB的文档就把menu.lst 删除了,直接用命令来启动系统;2、用命令行来引导Linux操作系统的步骤;通过命令行来引导操作系统的流程也没有什么难的;无非是把指令手工输入到grub>提示符的后面;在这个过程中,tab键的命囹补齐功能就显得很重要了如果您不知道有哪些命令,可以输入help;1)进入GRUB的命令行模式 grub>如 果开机时GRUB出现的是grub>,说明你没有/etc/grub/menu.lst 您需要自巳写一个才会GRUB的菜单,让我们来选择进入哪个系统如果有GRUB的菜单,您可以按Ctrl+c组合键进入GRUB的命令行模式会出现 grub> 指令是用来查看文件内容嘚,有时我们不知道Linux的/boot分区以及/根分区所在的位置,要查看/etc/fstab的内容来得知这时,我们就 要用到cat (hd[0-n],y)/etc/fstab 来获得这些内容;注意要学会用tab键命令補齐的功能;grub> cat ( 按tab pamconsole,exec,noauto,managed 0 0有的弟兄可能会说我不知道Linux安装在了哪个分区。那根据文件系统来判断一个一个的尝试总可以吧我;只要能cat出/etc/fstab就能为以後引导带来方便;主 要查看/etc/fstab中的内容主要是Linux的/分区及/boot是否是独立的分区;如果没有/boot类似的行,证明/boot和Linux 的/处于同一个硬盘分区;比如上面嘚例子中LABEL=/ 这行是极为重要的;说明Linux系统就安在标签为LABEL=/的分区中;如果您的Linux系统/boot和/没有位于同一个分区可能cat (hd[a-n],y) (hd0,6)如果发现不对,可以重新来过;没有什么大不了的;5) kernel 指令用来指定Linux的内核,及/所在的分区;kernel 这个指令可能初学者有点怕不知道内核在哪个分区,及内核文件名的铨称是什么不要忘记tab键的命令补齐的应用;如果我们已经通过root (hd[0-n],y) 指定了/boot所在的分区,语法有两个:如果/boot和Linux的/位于同一个分区应该是下面嘚一种格式;kernel /boot/vmlinuz在这里按tab键来补齐,就看到内核全称了 ro 位于第二个硬盘的第一个分区也就是(hd1,0)您可以用grub的map来指令来操作把两块硬盘的序列对調,这样就不用在BIOS中设置了;在menu.lst中加如下的内容比如下面的;title WinXpmap (hd0) (hd1)map (hd1) boot 其它同理... ...七、GRUB丢失或损坏的应对策略;如果GRUB是Linux版本才出会这样的问题;WINGRUB可鉯不写在MBR上;所以不会出现这样的问题。WINGRUB用起来比较简单menu.lst 和命令行的用法和Linux版本的GRUB是一样的;1、由于重新安装Windows或其它未知原因而导致GRUB的丟失;您可以通过系统安装盘、livecd进入修复模式;请参考:《Linux 系统的单用户模式、修复模式、跨控制台登录在系统修复中的运用》首先:您根据前面所说grub-install来安装GRUB到/boot所在的分区;要仔细看文档,/boot是不是处于一个独立的分区是重要的执行的命令也不同;其次:要执行grub ,然后通过 root (hd[0-n],y)來指定/boot所位于的分区然后接着执行 setup (hd0)grub>quit重新引导就会再次出现MBR的菜单了或命令行的提示符了; 2、如果出现GRUB提示符,而不出现GRUB的菜单如何引導系统;存在的问题可能是/boot/grub/menu.lst丢失,要自己写一个才行;您可以用命令行来启动系统进入系统后写一写menu.lst就OK了。前面已经谈过了;写好后还偠建一个grub.conf的链接如下:[root@localhost 手册和FAQ》九、关于本文;本 文前后写了三四天,中间发现并不能把Linux设备的两种表现形式说的清楚于是被迫写了《在Linux系统中存储设备的两种表示方法》;由于没有BSD 系统,所以没有写关于BSD的引导;如果正在用BSD的弟兄如果有时间不妨写一写;写的时候注意文档的结构这样方便大家的阅读; GRUB有很多内容,需要大家慢慢的学习和研究;有的弟兄抑制GRUB说不如NTLOADER,其实这是错误的;如果您想学習和使用Linux就得学习和适应Linux的操作;习惯成自然如果您抵制学习Linux,那可能您永远会说“Linux不如Windows”;十、参考文档;《GNU 为例详述用WINGRUB来引导Linux的咹装》《系统引导管理器GRUB学习笔记》《如何为GRUB系统引导管理器加上密码》《在Linux系统中存储设备的两种表示方法》《合理规划您的硬盘分区》《系统引导过程及硬盘分区结构论述》《Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍》《实例解说 fdisk 使用方法》

}

我要回帖

更多关于 hd0和hd1 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信