LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 8262|回复: 89

用GRUB引导LFS!

[复制链接]
发表于 2002-11-20 10:35:07 | 显示全部楼层 |阅读模式
用 GRUB 代替 Lilo


在 LFS BOOK 里,是用 Lilo 做启动引导器的,我是按照书上装好了 Lilo,后来又按照一篇提示(http://hints.linuxfromscratch.org/hints/lilo.txt)给它用上了 LFS 的背景,还挺好看的,不过很多人都比较喜欢 GRUB,那么我也试一试在 LFS 中安装 GRUB。下面的内容都是在 LFS 下进行的,而不是在 chroot 环境里,我不知道在 chroot 环境里会产生什么影响,最好不要这样做。在安装前先提醒一下,最好准备好启动盘,没有软盘有 CDROM 也行,如果安装失败了,还能修复。


首先要下载软件,我下了三个,一个是 GRUB 0.92(ftp://alpha.gnu.org/pub/gnu/grub/grub-0.92.tar.gz),一个是用图片背景的补丁(http://archive.linuxfromscratch. ... eprecated.patch.bz2),最后是 LFS 的启动图片(http://linuxfromscratch.org/~gerard/lfs-grub-splash.xpm)。这个补丁可找了我很长的时间,因为 LFS 的 GRUB-HOWTO 提示还没有更新,只好到邮件列表里找。


然后就把它们放在 /usr/src/grub 下。当然这时候已经是 root 了,下面也都是用 root 用户来做的。解压缩软件包:



tar zxvf grub-0.92.tar.gz &&
bunzip2 01-grub-0.92-vga-nodeprecated.patch.bz2


然后是安装了:



cd grub-0.92 &&
patch -Np1 -i ../01-grub-0.92-vga-nodeprecated.patch &&
./configure --prefix=/usr &&
make &&
make install &&
mkdir /boot/grub &&
cp /usr/share/grub/i386-pc/stage1 /boot/grub &&
cp /usr/share/grub/i386-pc/stage2 /boot/grub &&
cp ../lfs-grub-splash.xpm /boot/grub



好了,下面就要开始设置 GRUB。首先跟大家说说我的分区情况。我有两个硬盘,hda6 安装的是 redhat 8,hdc4 安装的是 LFS,hdc5安装的是 Mandrake 8.1。在你开始之前,应该确认一下你的分区情况。下面是我的 hdc :



/sbin/fdisk -l /dev/hdc

Disk /dev/hdc: 255 heads, 63 sectors, 1582 cylinders
Units = cylinders of 16065 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hdc1   *         1        44    353398+  82  Linux swap
/dev/hdc2           428       555   1028160    5  Extended
/dev/hdc3           556      1582   8249377+   c  Win95 FAT32 (LBA)
/dev/hdc4            45       427   3076447+  83  Linux
/dev/hdc5           428       555   1028128+  83  Linux



现在你要编辑一个 /boot/grub/menu.lst (不是1,2,3的1,而是英语的"l")文件,把你想加载的分区写上,写的方法可以参考一下你原有的发行版,我的这个文件是这样的:



default=0
splashimage=(hd1,3)/boot/grub/lfs-grub-splash.xpm
timeout=10
title TLFS
kernel (hd1,3)/boot/lfskernel root=/dev/hdc4
title Mandrake
        root (hd1,4)
        kernel /boot/vmlinuz ro root=/dev/hdc5
        initrd /boot/initrd.img
title Red Hat Linux (2.4.18-14)
        root (hd0,5)
        kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hda6
        initrd /boot/initrd-2.4.18-14.img
title Win2000
        rootnoverify (hd0,0)
        chainloader +1



上面的 (hd1,3) 这些如果搞不清楚,就看看你原来版本里是怎么写的,原来版本里没有也没关系,过一会等我们设置完 GRUB 后,可以再回过头来改。


运行 GRUB (root身份哦):



/usr/sbin/grub


等几分钟后,就进入 GRUB 的控制台了。在这里输入:



find /boot/grub/stage1


这个命令是看看你在哪些分区上有 /boot/grub/stage1 这个文件。有这个文件才能设置成根分区。下面是我的结果:



(hd0,5)
(hd1,3)
(hd1,4)


要注意的是,这里的 hd1 是我的 /dev/hdc。(hd1,3) 是我的 /dev/hdc4。 GRUB 所使用的硬盘/分区命名约定与Linux 使用的命名约定不同。在 Linux 中,第一个硬盘的第五个分区称作 "hda5"。而 GRUB 把这个分区称作 "(hd0,4)"。GRUB 对硬盘和分区的编号都是从 0 开始计算。另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。


下面把 LFS 的分区作为根分区,这个命令也是在 GRUB 的控制台下输入的:



root (hd1,3)


最后,把设置写到我第一块硬盘的 MBR(还是在 GRUB 的控制台下输入):



setup (hd0)


上面这一步要尤其注意,我第一次是用setup (hd1)的,结果不能启动了:( ,在这个命令后,你能看到一些信息。如果一切正常,就退出控制台:



quit


好了,看一下你的 /boot/grub/menu.lst 文件里设置的参数对不对,然后就重启动,你可以看到 LFS 的图片了。这时应该能正常地进入你的所有操作系统。上面我所做的只是 GRUB 的基本用法,还有一些高级的用法,如果你感兴趣的话,可以看看它的 info 页,有些比较有用的比如:map(能启动第二个硬盘上的 windows),stage1.5(能在启动的时候直接给出内核和根分区)。好了,我就不多说了,自己探索一下,体验 LFS 的乐趣!
发表于 2002-11-20 10:45:15 | 显示全部楼层
帅.....
这个lilo那个hint链接用个mirro的阿. 这个根本连不了的.

lilo画面是随笔换是吧........好....换成自己的帅哥照先.
 楼主| 发表于 2002-11-20 16:13:23 | 显示全部楼层
呵呵,那个是从书里面自己生成的,等我改改啊,用哪一个mirror好呢?
 楼主| 发表于 2002-11-20 17:15:02 | 显示全部楼层
现在我用了us的hints镜象,把改过的那个包发给你了!
发表于 2002-11-20 20:24:25 | 显示全部楼层

在LFS下进行,我现在还进入不了,只能在虚拟环境下啊!!!
有没有在虚拟环境下安装的英文说明呢?如果有请给个连接也好。
 楼主| 发表于 2002-11-20 20:30:21 | 显示全部楼层
我不知道能不能在chroot下啊,我也没有看到这样的提示,因为lilo是不能在chroot下安装的,你的问题是怎样的?是不是要用redhat的grub来引导lfs?如果只是这样的话,那就比较容易了
 楼主| 发表于 2002-11-20 20:58:30 | 显示全部楼层
告诉你一个好消息,我看到一篇文章,说grub是能在chroot下装的,等我试试,再写出来!
发表于 2002-11-20 22:41:54 | 显示全部楼层

hi

先不要了,我在此先请教一下,(自己做晕了),我现在的RH上已经有GRUB,能否在此基础上来添加引导LFS呢?另附我的GRUB。CONF:
grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,6)
#          kernel /boot/vmlinuz-version ro root=/dev/hda7
#          initrd /boot/initrd-version.img
#boot=/dev/hda
default=3
timeout=10
splashimage=(hd0,6)/boot/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-18.8.0)
        root (hd0,6)
        kernel /boot/vmlinuz-2.4.18-18.8.0 ro root=LABEL=/ hdc=ide-scsi
        initrd /boot/initrd-2.4.18-18.8.0.img
title Red Hat Linux (2.4.18-17.8.0)
        root (hd0,6)
        kernel /boot/vmlinuz-2.4.18-17.8.0 ro root=LABEL=/ hdc=ide-scsi
        initrd /boot/initrd-2.4.18-17.8.0.img
;title Red Hat Linux (2.4.18-14)
        root (hd0,6)
        kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ hdc=ide-scsi
        initrd /boot/initrd-2.4.18-14.img
title WinXP
        rootnoverify (hd0,0)
        chainloader +1
发表于 2002-11-20 23:04:28 | 显示全部楼层

hi

这儿的问题是,我已经做到第八章的最后一步,安装LILO引导LFS,如果按照兄弟的方法,我的系统已经有了GRUB,也就是不需要安装它了,只需要在GRUB中设置参数则可,问题是自己设置的参数要系统认可才能启动,我需要解决的就是这个问题。
 楼主| 发表于 2002-11-20 23:15:46 | 显示全部楼层
就这应该不难的,你的lfs在哪一个分区上?要说明的是,要用grub引导,在lfs中还是要装grub的,你可以按照我上面的装一下,你的redhat有启动盘么?光盘也行,如果有,就随便搞,顶多升级安装一下就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表