找回密码
 注册
快捷导航
查看: 9796|回复: 2

【原创】还是引导的问题,希望有点用

[复制链接] |自动提醒
阅读字号:

62

回帖

0

积分

119

资产值

入门会员 Rank: 1

注册时间
2007-9-6
发表于 2008-2-1 17:02:00| 字数 3,493| - 中国–广东–深圳 电信 | 显示全部楼层 |阅读模式
安装了Linux后,双系统的引导问题的确困扰了许多人;再加上双硬盘更让人搞不明白了,该怎么设置了。
针对上面的问题,以使用grub引导为例,说说我的一些认识:

首先,看一下从给计算机加电到Linux完全启动的过程。 (操作系统启动都有类似的过程)
QUOTE:
------------------------------------------------------------------------
           ---------------------------
Power-up  |     System startup      |          BIOS / BootMonitor
   \       ---------------------------
    \       --------------------------
     \      |    Stage 1 bootloader  |          Master Boot Record (MBR)
      \     --------------------------
       \        ----------------------
        \       | Stage 2 bootloader |          LILO, GRUB, etc.
         \      ----------------------
          \         ------------------
           \        |    Kernel      |          Linux
            \       ------------------
            _\|         --------------
           Operation    |  Init      |          User-space
                        --------------
-----------------------------------------------------------------------

一般安装我们将GRUB写入MBR,这里只是GRUB的程序,GRUB引导操作系统还需要一些其他的数据文件和配置文件(menu.lst),这些一般存放在Linux系统下的 /boot/grub/ 目录下。
至于具体放入了哪个分区的 /boot/grub 中,在写入MBR前是指定了的。所以要改变,必须要重写正确的grub到MBR。
这里一般我们会遇到问题是,无法找到grub。原因有可能是:grub所在的分区已经不在了;还有grub所在分区的文件系统(filesystem)没有驱动(格式无法识别);自然无法读取grub引导信息。
解决办法一: DOS下 fdisk /mbr 就把MBR里的GRUB删掉了,这样会从第一块硬盘的第一个分区启动,那里一般是Windows。
方法二:使用LiveCD或者从网络启动(PXE)进入临时的Linux系统,设置好正确的grub信息,重新安装grub (grub-install)。
无论如何,这里只是无法引导硬盘上的系统,并不意味着系统都挂了。

当grub找到了相应的文件系统驱动,但没有找到menu.lst 文件,如果能够进入grub提示符的话,还是照样可以启动现存系统的。方法后边介绍。

接着如果发现了menu.lst 文件,就会出现grub的引导菜单了。再来简单的看一下 menu.lst 的内容
QUOTE:
default 0  # 默认从第零项启动;
timeout 5 # 等待选择超时5秒

color black/cyan yellow/cyan #设置一些显示颜色,如果高兴你可以把自己的照片做背景

# 第0项
title           Debian GNU/Linux, kernel 2.6.24-k7  # 菜单里显示的名称
root            (hd0, 2)  # 这里的root (根目录) 是针对grub而言的
                              #从下面的路径可以看得出,/boot 目录 应该是在一个单独分区里,第一块硬盘的第3个主分区
kernel          /vmlinuz-2.6.24-k7 root=/dev/sdb5 ro  # 指定内核的路径,grub就是为了引导内核的,接下来就是开始执行内核了
                                                                         # root=/dev/sdb5 指定Linux的主分区是第二块硬盘的扩展分区的第一个分区

initrd          /initrd.img-2.6.24-k7   # 这里指定了 RAMDISk 镜像的路径,initrd 里可能放了一些内核驱动模块,比如硬盘驱动,不同文件系统驱动,网卡驱动 等到那个
savedefault

# 第1项  这里是想网络安装 ubuntu,
# 网络安装很简单,一个内核,一个有安装程序的initrd就可以了 这些都可以从 网上或者ISO里找到
# 不过与上面不同,这里没有指定 root (hd0,5); 的确不用也可以,下面再指定也可以
title Install Ubuntu7.10
kernel (hd0,5)/boot/vmlinuz    # 这里就指定了 内核存放的路径 第一块硬盘的第1个扩展分区的/boot/目录里
initrd (hd0,5)/boot/initrd.gz
boot

# 引导windos
title Back To (Windwos OS)
rootnoverify (hd0,0)  
makeactive
chainloader                  +1

表示存储设备一般用hd表示IDE硬盘,sd多是SCSI, SATA或者移动存储;一块硬盘分区只能有4个主分区,
并且最后一个主分区一般做扩展分区使用;扩展分区号都是从 5 开始往后递增。

之后grub还会遇一些问题,但都会有一个错误号,google搜索一些就可以找到是什么意思。
一般有找不到grub,原因: root (hdX,Y) 指定有误; 找不到内核或者initrd,那就是文件的路径有问题;
无法挂载root分区, root=/dev/hdaN 指定错误;等等。
遇到这类问题那就具体情况具体分析。一般方法是在grub选择菜单界面下按 C 键进入grub提示符 (shell),
然后, 从上面 root (hdX, Y) 一行一行开始试着输入上面的参数完成后在输入 boot 看能否引导成功。
怎么试呢? 按 TAB 键( 进入Linux 世界,你会发现你就离不开TAB了) ,Tab有自动补齐。

具体的案例分析:
QUOTE:
我的电脑是 IBM T40,加了硬盘托架,双硬盘的。先装XP,再从硬盘安装LINUX。
刚开始,试了两种方法:
方法一:把XP装的主盘上,UBNUTU装的第二硬盘上。GURB装在第一硬盘的MBR上。
当开机启动时,第二硬盘插在电脑上,启动正常。而当开机启动时,把第二硬盘拔下,换上光驱时,GRUB就出错。引导不了系统,XP也进入不了。就是说如果把第二硬盘的LINUX格式化后,XP跟着也完蛋了。而且开机只能带着光驱才能进入GRUB引导。制约太多,不想这样。

GRUB的配置文件都在第二块硬盘上,当然无法引导,这是行不通的。叉P没完蛋的。不知道有多少人就这样重装系统。

QUOTE:
方法二:把XP装的主盘上,UBNUTU装的第二硬盘上。GURB装在第二硬盘的MBR上。这样根本不行。就算设置BIOS从第二硬盘启动。GRUB出错,LINUX进不去(总之我的是的,不知道别人的 哈哈)。

这里没有说明是什么错误,能不能进入grub shell。这样一般问题是  hda 变成了 hdb 之类的问题, 在grub shell 里试几下一般都能搞定,完了进入Linux重新编辑一下menu.lst就OK了。

QUOTE:
想给T43装Suse Linux,买了第二块硬盘托架,安装顺序如下:

1.把第二块硬盘装在USB移动硬盘盒,当USB移动硬盘连接好
2.启动按F1,设置从CD启动
3.将Suse Linux安装盘放入CD,启动后,按提示安装到USB那块盘上
4.一起完成后,重新启动,按F12,从USD 硬盘启动,一切正常,顺利进入Suse Linux系统
5.将CD光驱取掉,将第二块硬盘装入第二块硬盘托架,然后放入光驱的位置
6.重新启动,按F12,从第二块硬盘启动,问题来了:
连grub都找不到,直接就提示:Load system error!

grub所在分区变化了,IDE硬盘装入硬盘盒后,通过USB挂载上来都被Linux认为是 /dev/sdN 了,所以改回 hdN 吧
方法,只能通过另外一个Linux系统了 LiveCD 是个好东西。

QUOTE:
描述:
机器为T60 双硬盘,最初安装XP到第一个硬盘,然后买回第二硬盘盒和硬盘,并在第二硬盘装Ubuntu, grub装在第二硬盘。启动可以选择第一硬盘的XP 和第二硬盘的Ubuntu,但如果去掉第二硬盘换上光驱,重新启动电脑,提示找不到grub, 不能启动第一硬盘的XP
问题:
不重装系统的情况下,如何没有第二硬盘,第一硬盘XP正常启动, 插上第二硬盘,XP和Ubuntu都能正常启动。

问题同上上个吧,没这样用过,应该可以实现这种效果。

针对多个硬盘,多系统的引导方法,我的建议是:
所有系统都使用一种多系统引导程序引导,比如grub;
将第一块硬盘(不经常拿出的那块)的第一个分区做为/boot 分区, 100Mbytes 大小足以;
后边随便搞了,只要grub能正常工作,引导系统是很简单的。

2694

回帖

51

积分

1万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2007-7-4
发表于 2008-2-2 12:28:12| 字数 8| - 中国–山东–滨州 移动 | 显示全部楼层
好文章,值得收藏
回复 支持 反对

使用道具 举报

2万

回帖

3

积分

5116

资产值

初级会员 Rank: 1

注册时间
2005-8-8
铜牌荣誉勋章(注册8年以上会员)
发表于 2008-2-2 20:05:08| 字数 7| - 中国–广东–揭阳–普宁市 联通/珠海市联通 | 显示全部楼层
好文章.
收藏了
向死而生
一粒砂中三千界 合目内观礼毗卢
茶气氤氲尘内外 何须槽场问生熟
回复 支持 反对

使用道具 举报

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

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2025-2-9 06:44 , Processed in 0.102906 second(s), 29 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|在线留言|专门网

返回顶部