Grub

Posted by Vincent on October 27, 2005

http://www.linuxsir.org/bbs/showthread.php?t=181878

win/linux双系统安装grub

2004-04-23 15:18 pm

作者:作者来自:Linux知识宝库现载:http://www.douzhe.com/linuxtips/534.html地址:无名   我的是windows2000+linux, 当我重装windows,格式化c:后,会把MBR的grub格掉,重装windows后应如何恢复grub??

  用启动盘启动执行grub 进去   root (hd0,X)–这里的0是ide0,如果你的LINUX不是在第一块硬盘上,相应改正,X是你的BOOT区   setup (hd0,y)–Y是你要安装GRUB的区,一般是(hd0)– MBR 或(hd0,X) – X同上

  你可以使用光盘进入linux rescue模式。先执行mount命令,将正确的文件系统连接起来。再执行chroot /mnt/sysimage命令。执行grub-install /dev/hda安装GRUB就可以了。

Troubleshooters.Com and T.C Linux Library Present

Grub From the Ground Up

Copyright (C) 2005 by Steve Litt , All rights reserved. Material provided as-is, use at your own risk.

转载并翻译自 troubleshooters 网站,译文遵循 GNU FDL,仅正文部分可自由修改,重发布时正文之外的部分必须同时原样发布。译者对未告知作者表示歉意,但对误读的后果表示不负责。

彻底搞定 Grub

目录

  • 免责声明

  • 总结

  • 制作简单的 grub 启动软盘

  • 你一定要知道的事情

  • 使用 grub 来查找文件

  • 制作全功能的 grub 启动软盘

  • 从软盘安装 grub

  • 使用完全安装的 grub

Disclaimer

This document contains a series of exercises accessing, and in some cases overwriting, your boot loader. There’s a significant possibility of overwriting your existing boot loader, which can lead to lost time and even lost data. There may be other risks.

You use this document at your own risk. I am not responsible for any damage or injury caused by your use of this document, or caused by errors and/or omissions in this document. If that’s not acceptable to you, you may not use this document. By using this document you are accepting this disclaimer.

免责声明

本文档包括一系列的实验,读取甚至重写你的引导程序 (boot loader)。重写你现有的引导程序的可能性非常大,可能导致费时的修复甚至数据丢失。另外还有其他危险。

使用本文档,你要自己承担危险。我对使用本文档,误读文档或是忽略部分文档造成的任何损失不负责。如果你无法接受,那么就不要使用本文档。如果使用了本文档,那么就视为已经接受了这份免责声明。

[正文开始]

总结

grub 是一个超一流的引导程序,但是文档很少。很多地方它比 lilo 出色得多。例如,使用 Knoppix 重建一个 grub 引导程序,比起重建一个 lilo 引导程序要容易得多。但是,除非你很熟悉 grub,否则你会感到正相反。grub 经常会送上一个提示符

代码:

grub>

但是不告诉你应当做什么。你可能听说过只要三个命令就可以成功重启,但是究竟是哪三个?grub 的文档就是那样,除非你已经知道了它是什么意思,否则就看不明白。

本文要解决的,正是这种尴尬的情况。本文将教你足够专业的 grub 技能,使你可以在一台安装了 grub 的机器上 (只要安装了就可以,不必作为引导程序) 创建 grub 启动软盘,使用这张软盘中的简单的引导程序来启动一台 linux 机器,然后使用这张软盘来真正地将 grub 安装为引导程序。

本文不讨论使用 grub 来引导 (或配置多引导) Windows,mach,BSD 或其他非 linux 操作系统。也许我会再写一篇有关的文档。但是,当你对 grub 的原则和实践比较熟悉之后,研究一下已有的文档,你就会学会如何用 grub 来引导非 linux 操作系统了。

制作简单的 grub 启动软盘

本文大部分都是关于在 “grub>” 提示符下应当做什么的内容,因此你必须可以进入这样的环境。最简单的办法,是使用一张简单的 grub 启动软盘。在任何安装了 grub 的机器上都可以创建它,无论这台机器是否用 grub 引导。下列 bash 命令展示了如何制作简单的 grub 启动软盘

代码:

[root@mydesk grub]# cd /boot/grub[root@mydesk grub]# cat stage1 stage2 > /dev/fd0u1440[root@mydesk grub]#

要提醒一句。在 1990 年假如买 50 张软盘,其中超过 45 张会是质量很好的。如今假如你买到的软盘中有一半是好的,重格式化之后可以再用,就很不错了。1990 年软驱的价格接近 100 美元,可以工作相当长的时间。如今的软驱只有原来 1/10 的价格,工作时间却也只有原来的 1/10。因此,多创建几张 grub 启动软盘,如果在启动过程中发生读错误,可以换张别的。

别着急,虽然要进入 “grub>” 提示符环境,只要将做好的软盘插入软驱,重启电脑,调整 bios 设置为从软驱启动优先,然后重启继续就可以了。但是首先,你必须知道一些东西……

你一定要知道的事情

为了能用 grub 启动电脑,你必须知道如下内容:

  1. 包含内核的分区

  2. 分区中,内核所在的目录路径和文件名

  3. 包含 /sbin/init 的分区

另外,可能需要知道 initrd 文件所在的分区,路径和文件名,但是在 grub 中通常不是必要的。

引用:

注意 我遇到过内核在没有 initrd 语句时 panic 的情况,它只能在存在 initrd 的情况下启动。但是,等到启动完成,我可以去掉 initrd 语句,重新运行 grub 的安装命令,这时启动时就不需要 initrd 语句了。如果你遇到内核 panic 的情况,不清楚原因,那么就加上一句 initrd 语句。

现在来看一个例子。假设一台系统将 /dev/hda1 挂载为 /boot,将 /dev/hda9 挂载为 /。在 /boot 目录中,内核的文件名是 vmlinuz-i686-up-4GB。现在我们可以回答上面四个问题了:

  1. 包含内核的分区是 /dev/hda1,如果用 grub 的说法就是 (hd0,0)

  2. 分区中,内核所在的目录路径和文件名是 /vmlinuz-i686-up-4GB (记住,由于 /dev/hda1 被直接挂载到 /boot,因此内核就在它的根目录)

  3. 包含 /sbin/init 的分区是 /dev/hda9

这种情况下,要引导系统,应当输入这样的命令

代码:

grub> root (hd0,0)grub> kernel /vmlinuz-i686-up-4GB root=/dev/hda9 grub> boot

这样的命令对于引导一台 Linux 主机通常已经足够了。单独的 root 语句给出了包含内核的分区。 kernel 语句描述了分区中,内核文件的路径和文件名。参数 root= 给出了包含 /sbin/init 的分区,这当然是系统的根分区了。

小心这里出现了两个 root 关键字。单独的那个是 grub 看到的根分区,包含着内核。而作为 kernel 语句参数的,是启动后的系统看到的根分区,包含着 /sbin/init。

还要小心有时使用 grub 的分区表示,有时使用 linux 的分区表示。除了 kernel 语句中的 root= 参数之外,都应当使用 grub 的分区表示 ((hd0,0))。在 root= 参数中,使用的是 linux 的分区表示。在 linux 的表示中,驱动器以 a 表示第一个 IDE 端口的主驱动器,b 表示第一个 IDE 端口的从驱动器,c 表示第二个 IDE 端口的主驱动器,d 表示第二个 IDE 端口的从驱动器,其他 IDE 端口以此类推。在 linux 的表示中,驱动器内的分区号从 1 开始。

在 grub 的分区表示中,第一块可读取的硬盘驱动器是 (hd0),第二块可读取的硬盘驱动器 (即使它被连接在第三,第四或更高的 IDE 端口上) 是 (hd1),以此类推。在 grub 的分区表示中,分区号从 0 开始。因此,/dev/hda1 与 (hd0,0) 是相同的分区。

有时,你需要指定 initrd,尽管这种情况很少。这样的话,只要在 kernel 语句之后,boot 语句之前,添加这样一句

代码:

initrd /initrd-i686-up-4GB.img

如果要使用 initrd 语句,那么你使用的 initrd 文件必须与你使用的内核文件相匹配。

另一种从 grub 启动的方法是将 grub 的 root 语句与 kernel 语句结合到一起:

代码:

grub> kernel (hd0,0)/vmlinuz-i686-up-4GB root=/dev/hda9grub> boot

如果这样做的话,在 initrd 语句中也必须结合 root 语句。

引导外语的发行版

假如你的母语是美国

安装grub

2004-04-23 15:18 pm

作者:作者来自:Linux知识宝库现载:http://www.douzhe.com/linuxtips/569.html地址:无名如果有一个能启动RH的启动盘,能用引导进入RH。

具体方法是:用启动盘启动,进入LINUX 系统。。 按下面的方法进行。。 cd /boot/grub #grub grub>root (hdX,Y) grub>setup (hdX) 如果成功会有一个successful…… 这里的X是你的硬盘,如果是一个盘,就是0,Y,就是装有GRUB系统所在的根分区。 我来举个例子吧,如果以我的硬盘为例。我在第一个硬盘上装了XP,在第一个硬盘的hda9个装了RH73.我总共有两个硬盘。我就是把GRUB写到第一个硬 的MBR上。。 操作如下: #cd /boot/grub #grub 会出现下面的字样的 grub> grub>root (hd0,8) grub>setup (hd0)

就OK了。。。请弟兄们结合文章及这个例子,仔细想一想。

我的第一个硬盘的分区情况是这样的。。 /dev/hda1 主分区 NTFS /dev/hda2 扩展分区 /dev/hda5 NTFS /dev/hda6 FAT /dev/hda7 FAT /dev/hda8 /boot ext3 /dev/hda9 / ext3 /dev/hda10 /swap ext3


Published At: 2005-10-27 09:01:15 +0800