zoukankan      html  css  js  c++  java
  • Gurb说

    网上有一篇文章说用 Grub4Dos修复Mbr,的三步:

    root (hdx,y)
    kernel (hdx,y)/boot/yourkernelname ro root=/dev/hdxx
    setup (hd0)

    第二步实在写不出来,才有了这一篇随笔,及以下引用的文章。

    Grub4Dos 官方安装文档:http://grub4dos.sourceforge.net/wiki/index.php/Grub4dos%E5%AE%89%E8%A3%85%E5%92%8C%E5%90%AF%E5%8A%A8#.E9.80.9A.E8.BF.87Windows_Vista.E7.9A.84.E5.90.AF.E5.8A.A8.E7.AE.A1.E7.90.86.E5.99.A8.E5.90.AF.E5.8A.A8GRUB4DOS

    引一篇 安装四个系统的文章,顶。

    http://hi.baidu.com/%B0%EB%C3%CE%B0%EB%D0%D12009/blog/item/b897b5426b00fd189213c6c9.html

    我的分区情况: 两个主分区(不包括扩展分区), 一个主分区装 Win7 , 另一个装FreeBsd(BSD必须安装在主分区。) 。(其实,主分区的顺序可以放在扩展分区之后。 所以在分区的时候,可以这样分: 一个主分区,一个扩展分区分好区后,最后一个盘留的大些。需要用主分区的时候,用最后一个分区的最后一部分作主分区即可。)

    我是先安装了 Win7 , 又安装了 OpenSuse11.2(安装在了逻辑分区), suse 把启动信息放在了 MBR 。 接着安装 FreeBsd8, 注意的是, FreeBsd8 不安装任何启动信息(不安装MBR,不安装 BootManager,Gurb会生成这些菜单。我的Menu.lst:

    default 2
    timeout 8
    ##YaST - generic_mbr
    gfxmenu (hd0,9)/boot/message
    ##YaST - activate

    ###Don't change this comment - YaST2 identifier: Original name: linux###
    title Desktop -- openSUSE 11.2 RC 1 - 2.6.31.3-1
        root (hd0,9)
        kernel /boot/vmlinuz-2.6.31.3-1-desktop root=/dev/disk/by-id/ata-ST3500418AS_6VM3BKH8-part10 resume=/dev/disk/by-id/ata-ST3500418AS_6VM3BKH8-part9 splash=silent quiet showopts
        initrd /boot/initrd-2.6.31.3-1-desktop

    ###Don't change this comment - YaST2 identifier: Original name: failsafe###
    title Failsafe -- openSUSE 11.2 RC 1 - 2.6.31.3-1
        root (hd0,9)
        kernel /boot/vmlinuz-2.6.31.3-1-desktop root=/dev/disk/by-id/ata-ST3500418AS_6VM3BKH8-part10 showopts apm=off noresume nosmp maxcpus=0 edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 x11failsafe
        initrd /boot/initrd-2.6.31.3-1-desktop

    ###Don't change this comment - YaST2 identifier: Original name: windows 1###
    title windows 7
        rootnoverify (hd0,0)
        chainloader +1

    ###Don't change this comment - YaST2 identifier: Original name: windows 2###
    title FreeBsd8
        rootnoverify (hd0,1)
        chainloader +1

    ###Don't change this comment - YaST2 identifier: Original name: Linux other###
    title Seconed Disk
        rootnoverify (hd1,0)
        chainloader +1

    )。

    通过Windows Vista的启动管理器启动GRUB4DOS

    首先,把grldr.mbr拷贝到C:\下,然后在cmd中使用以下的命令:

    bcdedit /create /d "Start GRUB4DOS" /application bootsector
    bcdedit /set {id} device boot
    bcdedit /set {id} path \grldr.mbr
    bcdedit /displayorder {id} /addlast


    然后把grldr和menu.lst拷贝到任意一个FAT16/FAT32/NTFS/EXT2分区的根目录。

    该方案也可应用于Windows NT/2000/XP/2003,但这些系统中修改启动菜单不是使用bcdedit,而是通过在boot.ini的最后加上这样的一行:

    <pre>c:\grldr.mbr="Start GRUB4DOS"</pre>

    下一次启动Windows时,你会发现启动画面中多了Start GRUB4DOS这一选项,使用它便可启动GRUB4DOS。

    该方案的优点:

        * 不需要修改MBR和启动扇区
        * 能够自动搜索硬盘上各个分区的grldr文件 
    使用grub4dos引导Linux
    昨天重装XP系统,不小心把ubuntu的引导菜单弄丢了,不过没有关系,我有功能强大的grub4dos,用它就可以重新引导ubuntu了。现在就将我的操作过程一一道来,以供各位朋友参考。只要按照以下步骤操作,必能修复你的Linux引导菜单!

    1、下载grub4dos,提取里面的两个文件:grldr和grub.exe,放在C盘根目录下。

    2、修改C盘根目录下的boot.ini文件(隐藏文件),在最后一行加上一句:C:\grldr="Ubuntu 8.04" ,

    双引号里的文字可以随心所欲的修改,那只是一个显示标题而已。比如我修改后的文件是这样的:

    [boot loader]
    timeout=5
    default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
    C:\grldr="Ubuntu 8.04"

    3、这一步最为关键,也是本文重点,请仔细阅读。

    下载一个叫explore2fs的工具,这个工具可以在windows下查看linux里的东西。运行之,在/boot/grub/(可能有所差别)下找到menu.lst文件,然后右键点击它,选择“导出文本”(不是“导出文件”),保存到C盘根目录下,文件名和扩展名均不变,仍为menu.lst。可以用记事本打开,关键的只有几句,如:

    title  Ubuntu 8.04.1, kernel 2.6.24-19-generic
    root  (hd0,2)
    kernel  /boot/vmlinuz-2.6.24-19-generic root=UUID=a6ae6905-49ff-4767-853e-712d1f01311c ro splash
    initrd  /boot/initrd.img-2.6.24-19-generic
    quiet

    4、大功告成,重启电脑即可!

    总结:原理上,在C盘根目录下有boot.ini、grldr、grub.exe和menu.lst等几个文件便可以引导windows和linux双系统,boot.ini本来已有,只需稍加改动;而menu.lst的编写较为复杂,网上众说纷纭,然而其实可以在linux文件系统里找到,只需借助工具提取,不必要自己编写。
    如何获得grub4dos最新版

    可从以下网址下载GRUB4DOS最新版及较早版本。
        http://download.gna.org/grub4dos/
        http://download.gna.org/grubutil/
        http://grub4dos.jot.com/WikiHome
        https://gna.org/projects/grub4dos/
        http://grub4dos.sourceforge.net/wiki (官方说明文档)


    GRUB4DOS是一个优秀的双(多)系统引导软件,使用GRUB4DOS可以很方便的引导各种操作系统,比如DOS、Windows、

    Linux等。
      使用说明:
      解压GRUB4DOS后,将其中的grub.exe文件放在你的一个FAT32分区中。
      具体修复过程如下:
      1.使用DOS启动盘或Windows 98的启动盘启动到DOS模式下,然后键入:d:\tmp\grub.exe 这里的d:\tmp是笔者解

    压缩GRUB4DOS的目录。这样就进入了GRUB环境,可以看到一个 grub>提示符。
      2.恢复GRUB引导记录。在 grub> 提示符下键入:
      root (hdx,y)
      kernel (hdx,y)/boot/yourkernelname ro root=/dev/hdxx
      setup (hd0)
      上面第一条命令是指定你的/boot分区位置,如果/boot没有单独分区,那么就是你的/分区。
      第二条命令指定内核位置,具体位置根据自己的实际情况确定。
      第三条命令是将GRUB引导记录写入MBR。
      如果对Linux分区位置不十分清楚,可以使用Tab键补全功能来查看确定。执行完setup命令后会看到“succeed!”

    字样,此时重启即可。
      3.如果只是想启动Linux,而不是修复GRUB,那么可以在进入DOS后键入下面命令启动你的Linux系统。
      d:\tmp\grub.exe --config-file=(hdx,y)/boot/grub/grub.conf
      其中参数同上。
      wingrub(GRUB4DOS)的安装:
      1、下载地址: http://grub4dos.sourceforge.net
      在上面的网址中,有下载页面,里面说的就是wingrub;
      2、安装:
      1]安装grub软件到机器中,点鼠标应该会吧,就直接按它默认的安装,下一步、下一步就安装好了;
      2]安装grub;
      打开 wingrub程序,选择 tools菜单,然后点击 install grub ,出来一个对话框;
      这里面有两个方法供我们选择;(个人建议选B)
      A) 我们直接点一下Boot From Grub Partion 就行,然后点击,右边的下接框;选择要安装在哪个分区中,然后

    按最下边的[install];
      您可能在下拉的菜单的对话框中,看到的是 (hd0,0)或者 (hd0,1)等,那就选(hd0,0);如果您只看到(hd0,1),

    说明您的第一个分区是NTFS的,这也没有什么,很正常;如果您看不到什么下拉框,您就看下面的办法;
      B)您可以点 Systerm Device ,然后在右边的选择框中,选C ; 然后再点BOOT FROM BOOT.INI 就好,如果不行

    就换;在Title 中写入mygrub ; 然后在 Time OUT 写上 10;
      这样grub就安装好了;他的配置文件在 c:\grub\中 ,配置文件是c:\grub\menu.lst ,这个配置文件起到决定性

    作用;所以我们一定要写好;语法和Linux中的没有区别;是一样的;
      A和B还是有点小小的区别,A的方法是开机就能看到所有的在menu.lst中系统;而 B,则必须按一下刚才我们所填

    写的mygrub ,然后才能看到在menu.lst所提到的系统;
      3、配置 grub ;
      其实最简单的配置方法不是来自于图形的点鼠标,初学Linux的弟兄可能会说,我不点鼠标,我能做什么?呵。。

    。。没错,但在配置 grub的过程中,最没有效率的就是点鼠标;其实我们点了十几分钟的鼠标,也是达到一个目的,

    就是把grub配置起来。而他的配置文件就是c:\grub \menu.lst ,我们挥汗如雨的点鼠标,无非是配置这个文件;如

    果不用点鼠标的办法来配置,
      一分钟都不到就OK ;只要掌握一点小小的技巧;有何难呢??
      在配置 c:\grub\menu.lst的过程中,我们只是再用一下 wingrub的查看分区的界面,其它的只是用记事本就能写

    好;c:\grub是隐藏起来的,我们要在游览器中加入c:\grub 就
      可以看得到;
      0]打开wingrub,点tools =》partioinlist (分区列表),这里能了解到机器的分区,比如我们可能看到的

    FAT32的分区是 (hd0,1)等等,事实上,我们的确需要fat32分来来存放下载的Linux光盘映象;我们通过这个能知道我

    们把光盘ISO存放到(hdX,Y)了,也能知道(hdX,Y)所对应的Windows分区的是哪个,是C,还是D ,还是E ,明白了吧;
      1]首先我们找一个FAT 32的分区,把下载下来的ISO直接放到分区的根目录下面,不要放在任何目录中;
      2]还是在这个分区,建一个目录,比如是linux,从下来下来的第一张ISO中isolinux中抽取 vmlinuz 和

    initrd.img 两个文件,放到linux目录中; 注意只放这两个文件,不要放其它的内容,如果放了其它的,可能出现安

    装到中途退出的情况;
      注意:目录是名是小写的;在书写menu.lst 时,我们要用半角英文,标点之类的全是半角的;title root

    kernel initrd 全是小写的英文;切注意大小写;
      3]书写menu.lst ,怎么书写,对我来说难吗?不难!
      我们打开menu.lst 后,可能里面已经有内容了,比如有个 timeout 10 ,如果没有这行可以自己写上;没有什么

    难的;
      timeout 10 #这是开机等待进入系统的时间,是10秒
      title WindowsXP # 我们的机器 中都有 windows ,这个就是用来启动windows的;总共有四行,不要弄错了,可

    以照抄到你的配置文件中;
      root (hd0,0)
      makeactive
      chainloader +1
      简单的 menu.lst 配置 linux 引导说明;通过menu.lst ,我们可以配置 Linux的启动和引导;不只是安装的引

    导,也可以引导已经安装好的Linux系统;语法结构有下的四条,举例如下:总共
      有两个书写格式,任选其一;
      格式一:最简单:
      代码:
      title redflag5
      root (hd0,1)
      kernel (hd0,1)/linux/vmlinuz
      initrd (hd0,1)/linux/initrd.img
      title 这行就是我们在开机时,所看到的菜单 ,显示的就是 redflag5 ,要加在 title 的后面,title是必须保

    留的,是grub的语法的标签 ,我们可以在title 后面写我们想要加的东西,这是自己可
      以定义的,比如 title redflag5也是可以的;
      root (hd0,1) 这行能用 以root开头,然后加一个空格,至于您把vmlinuz和initrd.img 放在哪个分区了,用打

    开 wingrub,点tools =》partioinlist (分区列表) 中查到
      kernel 这行,以kernel 开头,然后加一个空格,主要说的是vmlinuz文件放在哪个分区,哪个目录了;除了

    kernel 后面有一个空格外,在这行中,其它地方没有空格;这行说的是我们用放在(hd0,1)分区下的linux目录中的

    kernel 来内核来启动;
      initrd 这行, 和 kernel 那行类似;没有什么难的,自己的文件放在哪个分区,哪个目录了,自己最知道吧;
      格式二:比较麻烦一点:理解着看吧;
      代码:
      title redflag5
      root (hd0,1)
      kernel /linux/vmlinuz ro root=/dev/hda6
      initrd /linux/initrd.img
      title 这行就是我们在开机时,所看到的菜单 ,显示的就是 redflag5 ,要加在 title 的后面,title是必须保

    留的,是grub的语法的标签 ,我们可以在title 后面写我们想要加的东西,这是自己可以定义的,比如 title

    fc4setup也是可以的;
      root 这行,在本例中是 root (hd0,1),这行就是我们打开 wingrub,点tools =》partioinlist (分区列表)

    中查到的;我们通过这个知道我们把解压出来的 vmlinuz和initrd.img 所处的分区和路径;
  • 相关阅读:
    艾伟_转载:ASP.NET缓存 狼人:
    艾伟_转载:VS 2010 和 .NET 4.0 系列之《在VS 2010中查询和导航代码》篇 狼人:
    艾伟_转载:Visual Studio DSL 入门 2 狼人:
    艾伟_转载:VS 2010 和 .NET 4.0 系列之《代码优化的Web开发Profile》篇 狼人:
    艾伟_转载:对ArrayList中的自定义类型进行搜索 狼人:
    艾伟_转载:总结字符串比较函数 狼人:
    poj 2739 Sum of Consecutive Prime Numbers
    BBIT工作感想(二)
    Zenoss4.2.3对中文事件的部分支持修改
    第五周项目一(扩展)矩形类
  • 原文地址:https://www.cnblogs.com/iamnewsea/p/1594835.html
Copyright © 2011-2022 走看看