LinuxSir.cn,穿越时空的Linuxsir!

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

关于Grub引导器的疑问(若发错版请帮忙转到正确版)

[复制链接]
发表于 2007-5-8 16:15:01 | 显示全部楼层 |阅读模式
一般在/boot/grub/menu.lst中会含有(以下例子网上找的):
title           Ubuntu, kernel 2.6.17-10-generic
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.17-10-generic root=/dev/hda5 ro quiet splash

initrd          /boot/initrd.img-2.6.17-10-generic
quiet
savedefault
boot

注:(1)root  (hd0,0)   MS也是设置/boot所在分区/dev/hda1的  kernel一行的才是设置
根分区/dev/hda5的 ???
    (2 也看到过这种写法的:         
kernel     (hd0,0)/boot/vmlinuz-2.6.17-10-generic root=/dev/hda5 ro quiet spla
sh
initrd     (hd0,0)/boot/initrd.img-2.6.17-10-generic
这俩中应该等价的吧
如果理解有误,欢迎指正!



假设: /    <----    /dev/hda2
       /boot<----    /dev/hda1
(/和/boot分属不同分区,并且只有一块硬盘)

由于一些原因需重写grub(比如重装Windows时)
(1) grub>root (hd0,0) #此处刚开始我以为是/的分区,应该是/boot所在的分区
     grub>setup (hd0)  #重写grub到mbr
(2) #grub-install /dev/hda    #重写grub到mbr
上面两条应该都可以的,但(1)为什么要定位/boot而(2)不需要????????



下面是我自己画的硬盘示意图,如有错误敬请指正
    mbr   /dev/hda1 /dev/hda2     /dev/hda3
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|      a   |   b          |         c         |  d
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

(a)grub引导器  
(b)menu.lst   vmlinuz  initrd.imag.....            
(c)Linux 根分区
(d) window分区
我个人理解:
grub引导器现寻找menu.lst,根据其内容引导linux or 其他系统.........
不知道上图中的windows分区里的开头是不是也有其引导记录<其中有其引导器?>(因为我在menu.lst里的wind
ows部分 都如下所是
title   Windows 95/98/NT/2000
root    (hd0,0)
makeactive
chainloader   +1

)???????
发表于 2007-5-8 16:52:11 | 显示全部楼层
我的理解:

更准确的说是在安装grub的时候,得让它知道到哪儿去找menu.lst这个文件

然后在启动项中得给它指定一个启动文件所在的分区和启动文件在该分区中的绝对路径

如果boot与/不在一个文件系统中(分区),那么写法是不一样的

至于实际的根分区处于那个位置,就与grub无关了,是在kernel那一行写参数,这个参数是给kernel的,不是给grub的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-8 18:12:47 | 显示全部楼层
ls的,你的意思是:
grub只管kernel,initrd的位置,通过root (hdx,y)确定的.或者直接在kernel  (hdx,y)/vmliuz处确定
根系统的位置是通过kernel后参数确定的

那为什么grub-install  /dev/hda不要只定到哪去找menu.lst
grub>root (hdx,y)要呢?
回复 支持 反对

使用道具 举报

发表于 2007-5-8 21:09:31 | 显示全部楼层
grub-install会自动做这些事情的
回复 支持 反对

使用道具 举报

发表于 2007-5-8 21:10:28 | 显示全部楼层
你可以试试:

将 /boot/grub这个目录删除

然后用grub-install,它会自动创建这个目录,并复制一些必要的文件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-8 22:21:36 | 显示全部楼层
ls 的,再问一个:
kernel /boot/vmlinuz-2.6.17-10-generic root=Lable=/
里Lable=/是怎么定义的?
回复 支持 反对

使用道具 举报

发表于 2007-5-11 22:09:14 | 显示全部楼层
From /init of initrd:
  root=*)
    ROOT=${x#root=}
    case $ROOT in
    LABEL=*)
      ROOT="/dev/disk/by-label/${ROOT#LABEL=}"
      ;;
    UUID=*)
      ROOT="/dev/disk/by-uuid/${ROOT#UUID=}"
      ;;
    /dev/nfs)
      BOOT=nfs
      ;;
    esac
    ;;

rick@rick-debian:~/ss$ uname -a
Linux rick-debian.nju.edu.cn 2.6.17-2-486 #1 Wed Sep 13 15:56:30 UTC 2006 i686 GNU/Linux
回复 支持 反对

使用道具 举报

发表于 2007-5-16 00:38:36 | 显示全部楼层
mark下~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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