zoukankan      html  css  js  c++  java
  • [转]Grub安装修复


    用Grub安装三系统

    作者:剑气凌人 时间: 2003-04-28 文档类型: 来自:蓝色理想

          RedHat9和Mandrake9.1在最近一个月都分别放出,笔者作为Linux的狂热爱好者,当然不能放过这么好的机会,下载,刻盘ing...可是如果让它们和平相处了,用Grub是最好的办法,因为它是RedHat默认安装的,Grub为何物,简单来说就是系统的引导程序,用它来引导三个系统一点都没问题,也不用到处找别的收费软件了。

    一、分区
          本人的电脑中有两块硬盘,基本的想法是80G为Win系统,10G的硬盘放两个Linux系统,第一块硬盘中已有Win2K系统,如果你只有一个硬盘,可以用PQ分一个空区出来,然后在空出来的区中划一个交换分区,格式为/swap,大小一般为内存的1.5倍,如果你的内存为512M或者以上的交换分区和内存大小一样就行了,再分出两个大小为5G左右的根分区,格式化为EXT3。这样做的好处就是当安装完Linux系统后,Win系统不会因为不识别EXT3格式再变得非常缓慢。


    二、安装Linux系统

    现在安装Linux已经非常方便了,只要按屏幕上的提示来就行了,系统的安装不分先后,但是安装RedHat9时把Grub安装在硬盘hda1的MBR上,安装Mandrake9.1时把LILO或Grub安装到/boot的第一个扇区上就OK了。在linux中,主分区是hda1,第二个硬盘的主分区是hdb1,逻辑分区是从hda5开始的,如果有两个硬盘,可能就是从hdb5开始,以此类推。如果您不知道是怎么回事,就要用fdisk -l或df-la来查看。要安装系统的时候,也会有相应的让您选择安装位置,也是hdaX或者hdbX分区之类的,Linux下没有Win的C和D盘之分。


    三、修改grub.conf

    系统安装完了,但是现在只能引导RedHat9和Win系统,必须要改一下/boot/grub/grub.conf才能让三系统正常运行,用root用户进入系统,先用fdisk -ld 终端中查看你的分区情况,知道分区情况就好办了,用任何文件编辑器来打开/boot/grub/grub.conf,一般来说,Win系统会自动加载到grub里面的,下面是笔者的grub.conf文件,我们来分析一下
    default=0
    timeout=10
    splashimage=(hd1,2)/boot/grub/splash.xpm.gz
    title Windows2K
        rootnoverify (hd0,0)
        chainloader +1
    title RedHat9
        root (hd1,2)
        kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL=/
        initrd /boot/initrd-2.4.20-8.img
    title Mandrake9.1
    kernel (hd1,4)/boot/vmlinuz root=/dev/hdb5 quiet devfs=mount acpi=off vga=788
    initrd (hd1,4)/boot/initrd.img

    default=X为默认启动的系统,0为排在第一个的系统,以此类推。
    timeout=X为Grub菜单停留的时间,单位为秒
    title XXX,XXX为标题,也就是你要引导的操作系统的名字,可以自己修改
    root (hdX,Y)X和Y都代表一个数值,X是linux的根分区在哪个硬盘上。如你只有一个硬盘。那就是hd0。如果你的linux的一个发行版是安装在第二个硬盘,这个X,就是1。Y是代表您所安装的linux是在哪个区。这个数值有点不同,不太好说清楚。举个例子来说。比如我把Mandrake安装到第二块硬盘的第二个分区,也就是hdb5了。那他的root (hdX,Y),就应该写为root (hd1,4),也就是说Y=hdaZ或hdbZ中的Z减去1。
    kernel (hdX,Y)/boot/vmlinuz root=/dev/hdaZ和initrd (hdX,Y)/boot/initrd.img就是要引导哪个硬盘分区的映像和initrd文件,一定要写正确XY的数值,不然无法引导系统。
    quiet devfs=mount acpi=off vga=788为启动的参数。

    rootnoverify (hdX,Y)如果不能启动Win的话,可以改为root (hdX,Y)来试试
    chainloader +1意思是指定此分区上的第一个磁道来启动

    想加入别的操作系统到Redhat 中的GRUB中,也不过是如此,如者用其它发行版中的GRUB来引导别的发行版,原理也是一样的。这和Win2K和XP中的BOOT.INI差不多,grub很简单吧,多试几次就会了。

    最后吗,当然是存盘重启电脑,这时,我们就能享受多系统和平相处的乐趣了。




    重装Grub一法

    一般我们的硬盘安装的系统都不只一个红旗,比如会有windows98,或者是win2000,xp,那么在我们重新安装windows的时候windows会重写mbr(主引导记录),因而我们的红旗变不能正确引导了,这里给出我的解决办法。

    前提条件: 安装红旗3.2的时候制作了启动软盘。

    用启动盘引导进入红旗linux。
    在终端或者是rxvt中按如下步骤进行。

    #grub
    grub> root (hd0,?)
    #这行注释,hd0是假设你是单硬盘的情况,我想应该是这#样的吧,"?"的具体内容视你linux根分区所在位置而#定,比如你安装在hda1,则是 0 ,假设是安装在hda5,则#是4,就是实际的分区号减 1 。
    grub> setup (hd0)
    #注释,安装在MBR了。

    如果你不想安装在MBR则可以将最后一步改为

    grub> setup (hd0,4)

    这样就安装在hda5了,这里首先假设了你的linux是安装在hda5的。

    至此恢复完毕。

    如果你是用windows 的OS loader引导的linux.在grub损坏而可以进入grub的控制台的情况下也可以用此方法。




    用安装盘来修复GRUB [转]
    http://www.chinaunix.net 作者:
    HopeCao  发表于:2002-12-05 11:37:25


    用安装盘来修复GRUB 
    [linuxsir.com]

    一、本解决方案所要解决的问题: 

    我们可能在安装WIN时,把GRUB或者LILO从MBR上清除。如果在没有系统引导软盘只有安装盘的情况下,所采取的解决解决办法。 

    常用恢复MBR的办法还有一种是用升级系统的办法,这种办法经过验证,是极不可靠的。我们经过近二三十次的实践,证明效果几乎很少,这个办法用于没有安装GRUB的还是可行的。如果已经把GRUB安装上,后来就重装WINDOW或者别的操作系统而带的LILO,而导致系统不能正常引导,这种办法就失效了。所以说,本方案最适合GRUB的恢复。 

    二、解决过程[以RedHat 7.3为例] 
    1.把安装盘的第一张放到光驱,然后重新启动机器,在BOIS中把系统用光驱来引导。 
    2.等安装界面出来后,按[F4]键,也就是linux rescue模式。 
    3.一系列键盘以及几项简单的配制,过后就[继续]了。。。这个过程,我不说了,比较简单。 
    4.然后会出现这样的字符 
    sh# 
    5.我们就可以操作GRUB了。。。哈。。。只要能出现这样的,以后都是小KISS了,我就是不说 ,谁也能明白,地球人都知道了。。。。 
    sh#grub 
    会出现这样的字符 
    grub> 
    我们就可以在这样的字符后面,输入 
    grub>root (hdX,Y) 
    grub>setup (hd0) 
    如果成功会有一个successful...... 
    这里的X,如果是一个盘,就是0,如果你所安装的linux的根分区在第二个硬盘上,那X就是1了;Y,就是装有linux系统所在的根分区。 setup (hd0)就是把GRUB写到硬盘的MBR上。 

    我来举个例子吧,如果以我的硬盘为例。我在第一个硬盘上装了XP,在第一个硬盘的hda9个装了RH73.我总共有两个硬盘。如果我把GRUB丢了,就用这种办法找回来。 如果你不知道你的linux安装到哪个分区上,也就是说,不知道这个Y是多少,这也不要紧,先输入root (hdX,然后用[TAB]来查看,一下就明白了... 

    操作如下:[前面开机启动的上面有说明] 

    sh# grub 

    会出现下面的字样的 

    grub> 

    然后再这样操作,如果我知道我的linux装在第一个硬盘上,但我不知道装在哪个分区上,就可以先输入root (hd0,然后用[TAB]键来补齐,然后就明白了。 
    [code:1:3249bf1c31]
    grub>root (hd0,8) 
    grub>setup (hd0) 
    [/code:1:3249bf1c31]
    请弟兄们结合文章及这个例子,仔细想一想。 

    我的第一个硬盘的分区情况是这样的。。 
    /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 


    最后就是按一下[RESET]键,重新启动,就OK了。。。。这步应该是最简单的吧。。。哈。。。。
    作者:zjingwei 发表于2005-2-18 9:53:00 原文链接
    阅读:1227 评论:0 查看评论
  • 相关阅读:
    如何使用KeyChain保存和获取UDID
    ios 使用keychain来存储token
    关于button中设置文字不显示的问题
    实现uitable cell中点击button设置当前cell为选中状态
    setImageEdgeInsets 和 setImage配合使用达到button区域大并可调节其上图片显示区域大小的效果
    C#之Action的实际应用例子
    ConcurrentQueue队列的基本使用方式
    【转】C#中base关键字的几种用法
    C# Activator和new的区别
    C#回调浅析(委托、接口回调)
  • 原文地址:https://www.cnblogs.com/basecn/p/3264290.html
Copyright © 2011-2022 走看看