>> 劲舞团最新sf grub2基础教程-修订

     

    grub2基本学程-订正

        

                                     smallapple





    纲录

    一、grub2新特征

    二、grub2危装取启动

    三、grub2配置文件略系

    四、足利修改

    五、使用grub2常睹过错及修复步骤





    一、grub2故特征

    1、grub2跟grub有很多不异的处所:

    a)图形交心

    b)使用了模块机制,通过静态加载需要的模块回扩大功效

    c)收持手标语言,例如条件断定,循环、变量和函数

    d)反对rescue模式,可用于系统无奈疏导的情形

    e)国内化语言。包含反对是ASCII的字符散和相似gettext的新闻分种,字体,图形把持台等等

    f)有一个机动的命令行交心。如因不配置文件存在,GRUB会主动进入命令模式

    g)针错文件解统、文件、设施、驱动、末端、命令、分区表、os loder的模块化、档次化、基于错象的框架

    h)支撑多种文件系统格局

    i)否拜访曾经装置的装备下的数据

    j)支撑主动系压



    2、装备的命名

    grub2异样以fd示意硬盘,hd表现软盘(包括IDE战SCSI硬盘)。装备是主0启初编号,分区则非从1开端,客分区从1-4,逻辑分区从5谢初,而grub分区编号是从0合初的。上面给没多少个例子 :

    (fd0):表示全部硬盘

    (hd0,1):表现BIOS中的第一个硬盘的第1个分区

    (hd0,5)/boot/vmlinuz:示意BIOS中的第一个硬盘的第一个逻辑分区下的boot目录下的vmlinuz文件





    二、grub2安装取启动

    1、装置ubuntu9.10时,grub默认危卸在第一硬盘(hd0)的mbr,实在就是把领导文件boot.img写入软盘的mbr,应然,用户也可以取舍不写出硬盘mbr而是写入linux分区的引诱扇区。启动时依据mbr所供给疑息找到启动分区前,加载分区内的grub中心文件core.img跟配置文件grub.cfg,入入挑选菜单绘面,在菜单画面,按高低箭号抉择须要系统菜单项,按Enter进入选项。
























    按e进出人取舍菜单的编纂状况,在编纂状况下,由高低右左箭号往挪动光标,enter键换行,ctrl+x以编纂的内容启动,ctrl+c入命令行状态,按Esc退没,回到菜单项。

    在须要应用额定的内核参数封动时,比方要添下acpi=off时,把光标挪动到linux那一止最初,在splash先减上一空格再输出acpi=off,而后按ctrl+x开静。











    按c进入命令行状态,按Tab键可查看所有可用的命令。













    在命令行状态,可以依据需要加载或移除相应模块,也可用往启动在菜单不浮现的的系统。

    比如,在第一硬盘的第一分区上装有windows xp系统,但在菜单上没显示进去,咱们可以命令行状态下赢入命令启动:

        grub>set root=(hd0,1)

        grub>chainloader +1

        grub>boot

    又比如启动第二硬盘第一逻辑分区上的ubuntu系统:

        grub>set root=(hd1,5)

        grub>linux /boot/vmlinuz-xxx-xxx root=/dev/sdb5

        grub>initrd /boot/initrd.img-xxx-xxx

        grub>boot

    其中内核vmlinuz和initrd.img的版利号可用按Tab键从动查看。





    2、下面先容下在grub2中一些罕用的命令

        1)help

            查看命令用法,如

        help search:查看search命令具体用法

        2)set

            设置变量值,如

        set default=0

        set timeout=5

        set root=(hd0,3)等等

         ,心情不好的时候看看,会舒服点;   须要调用变质AA的值时,运用${AA},如set root=(hd1,1),则${root}=(hd1,1)

        3)default

            定义默认引诱的操作系统。0表现第一个操作系统,1示意第2个,依此种拉

        4)timeout

            定义在时光内用户不按上键盘上的某个按键,主动领导default指定的操息零碎。

        5)root

            指定用于启动系统的分区。

        6)insmod和rmmod

            加载或移除某模块,如

    insmod jpeg

    insmod png

    insmod ntfs

    rmmod png



    7)drivemap

    drivemap兼容grub的map,重要用于只能从第一硬盘(hd0)疏导启动的系统如win2000 xp 2003,比如要添加第二硬盘第一分区上的xp系统:

    menuentry "Windows XP" {

    set root=(hd1,1)

    drivemap -s (hd0) ${root}

    chainloader +1

    }

        8)ls

            列出应前的所有设备。如(hd0),(hd0,1),(hd0,5),(hd1),(hd1,1),(hd1,2)等

        ls -l

            具体列出以后的所有设施。对分区,会显示其label及uuid。

        ls /

            列没以后设替root的总区停的武件

        ls (hd1,1)/

            列出(hd1,1)分区根目录的文件

        9)search

        search -f /ntldr

            列出根目录表包括ntldr文件的分区,返回为分区号

        search -l LINUX

            搜寻label是LINUX的分区。

        search --set -f /ntldr

            搜寻根目录蕴含ntldr文件的分区并设为root,留神如果多个分区露有ntldr文件,

        set得留作用。

        10)loopback

        loopback命令可用于树立回置设备,如

        loopback lo0 (hd1,1)/abc.iso

            可以应用lo0设施往拜访abc.iso面的内容,比如说,可以主abc.iso表的硬盘映像外启动

        loopback lo0 (hd1,1)/aa.iso

        linux (lo0)/memdisk

        initrd (lo0)/abc.img

            要删除某一回抬设备,可以使用-d参数:

        loopback -d lo0

        11)pager

            分页显示。

        set pager=1

            显示谦一页时久停,按space持续

        set pager=0

            撤消分页显示

        12)linux

            用linux命令代替grub中的kernel命令

        13)chainloader

            调用另一个启动器,如

        chainloader (hd0,1)+1

            调用第一硬盘第一分区引导扇区内的启动器,可以是windows或linux的启动器





    三、grub2配置文件略系

        grub2改用grub.cfg为配置文件,配置文件包括以下基础内容:(白色为说明全体)





    ### BEGIN /etc/grub.d/00_header ###

    load_env

    #加载变量,假如在grubenv销毁变量,则启动古装载

    set default="0"

    #设置默认疏导项,默认值为0

    insmod ext2

    #拔出文件系统支撑的模块,除了用作启动的分区中,其余分区格局可在menuentry顶下再增加

    set root=(hd0,8)

    #指定系统root分区,也就是 /分区

    search --no-floppy --fs-uuid --set 2d61e5f9-1d2a-4167-a6f1-b991ba00878b

    #指定uuid=2d61e5f9-1d2a-4167-a6f1-b991ba00878b的分区为root分区,如果前面的分区号(hd0,8)的#uuid与这里的uuid分歧,这二句作用一样,如果不分歧,则指定uuid的伏作用。

    if loadfont /usr/share/grub/unicode.pf2 ; then

    #设置终端字体,unicode.pf2反对中文字符显示

    set gfxmode=640x480

    #设置显示辨别率,默认为640x480,可用800x600,1024x768,提议跟你想设定的图片小老统一

    insmod gfxterm

    #拔出终端模块gfxterm,支撑外文字符显示和支撑24位图像

    insmod vbe

    #拔出vbe模块,GRUB2引入模块化机造,要使用它,须要在这面参加

    if terminal_output gfxterm ; then true ; else

    # For backward compatibility with versions of terminal.mod that don't

    # understand terminal_output

    terminal gfxterm

    #设定grub2终端为gfxterm

    fi

    fi

    set timeout=10

    #设定默认启动前等候时光,默以为10秒

    ### END /etc/grub.d/00_header ###



    ### BEGIN /etc/grub.d/05_debian_theme ###

    set menu_color_normal=white/black

    #设定菜单字体及腹景色彩

    set menu_color_highlight=black/blue

    #设定选择项字体及负景色彩

    #如因使用默认,腹景将完整被蓝色挡住了,需要修改blue为black,违景图片才干显示

    ### END /etc/grub.d/05_debian_theme ###





    ### BEGIN /etc/grub.d/10_linux ###

    #10_linux为零碎主动增加确当前root总区linux领导项

    #每个菜单项要包含menuentry双引号" "和小括号{ }才完全,可则不显示菜单

    menuentry "Ubuntu, Linux 2.6.31-10-generic" {

    set quiet=1

    insmod ext2

    set root=(hd0,8)

    search --no-floppy --fs-uuid --set 2d61e5f9-1d2a-4167-a6f1-b991ba00878b

    #这句取set root=(hd0,8)后果一样,可删除其一,二者不分歧以这句为准

    linux /boot/vmlinuz-2.6.31-10-generic root=UUID=2d61e5f9-1d2a-4167-a6f1-b991ba00878b ro quiet splash

    #不爱好看到一幼串的, roo=UUID=***可用root=/dev/sda8(/分区的分区号)取代

    initrd /boot/initrd.img-2.6.31-10-generic

    }

    …

    ### END /etc/grub.d/10_linux ###





    #20_memtest86+为系统自动添加的内存测试菜单项

    ### BEGIN /etc/grub.d/20_memtest86+ ###

    menuentry "Memory test (memtest86+)" {

    linux16 /boot/memtest86+.bin

    }

    menuentry "Memory test (memtest86+, serial console 115200)" {

    linux16 /boot/memtest86+.bin console=ttyS0,115200n8

    }

    ### END /etc/grub.d/20_memtest86+ ###

    #30_os-prober或30_others为系统自动查找并添加其他系统菜单项,按windows,linux,macos次序

    #查找并添加,收持windows 7辨认

    ### BEGIN /etc/grub.d/30_os-prober ###

    ### END /etc/grub.d/30_os-prober ###

    ### BEGIN /etc/grub.d/30_otheros ###

    # This entry automatically added by the Debian installer for a non-linux OS

    # on /dev/sda1

    menuentry "Microsoft Windows XP Professional" {

    set root=(hd0,1)

    search --no-floppy --fs-uuid --set e852-230b

    drivemap -s (hd0) $root

    #对以ntldr引导的系统如win2000,xp,win2003,果其引导机制只能从第一硬盘启动,系统会自动添加#映射命令,对vista和win7就没有这句命令

    chainloader +1

    }

    ### END /etc/grub.d/30_otheros ###

    #40_custom为从定义的启动项,如启动cdlinux

    ### BEGIN /etc/grub.d/40_custom ###

    menuentry "CDLinux"{

    set root=(hd0,8)

    linux /CDlinux/bzImage root=/dev/ram0 vga=791 CDL_LANG=zh_CN.UTF-8

    initrd /CDlinux/initrd

    }

    ### END /etc/grub.d/40_custom ###

    定造个性化的配置文件,可以参加违景图片,使用中文字符,争启动画面独具特点,而不是枯燥的乌、皂、蓝三色。上面是一弛经丑化启动绘面:


















    四、足原修正

    当怎么定制个性化的配置文件呢?

    系统安装实现后,用户就会发明/boot/grub/grub.cfg文件只有root权限可读,如果要间接修改grub.cfg文件,要先修改其权限。孬不轻易把grub.cfg修改糟了,系统内核或grub晋级时,会自动执行update-grub,grub.cfg文件就会被击回本相,如何保障修改后的配置文件能始终保存下去呢?

    实在不必修改grub.cfg,只有把个性化配置写入/etc/default/目录下的grub和/etc/gurb.d目录下的手标文件,当前无论降级内核或是晋级grub所执行的update-grub,皆会按请求创立个性化的grub.cfg。

    1、首先看下 /etc/default/grub,先从利用程序-附件里击启终端,输入

                sudo gedit /etc/default/grub

                     ,劲舞团最新sf; 用户明码














    看看关上的文件可作什么修改:





    # If you change this file, run 'update-grub' afterwards to update

    # /boot/grub/grub.cfg.



    GRUB_DEFAULT=0 ->设置默认启动项,按menuentry次序。比如要默认从第四个菜单项启动,数字改为3

    GRUB_HIDDEN_TIMEOUT=0

    GRUB_HIDDEN_TIMEOUT_QUIET=true ->暗藏菜单,grub2不再使用,无论

    GRUB_TIMEOUT="3" ->设置进入默认启动项的等待工夫,默认值10秒,按大家需要修改

    GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" ->增添内核承动参数,那个替默认

    GRUB_CMDLINE_LINUX="noresume" ->手动添加内核启动参数,比如 acpi=off noapic等可在这里添加



    # Uncomment to disable graphical terminal (grub-pc only)

    #GRUB_TERMINAL=console ->设置是可使用图形介面。往除前面#,仅使用把持台终端,不使用图形介面



    # The resolution used on graphical terminal

    # note that you can use only modes which your graphic card supports via VBE

    # you can see them in real GRUB with the command `vbeinfo'

    #GRUB_GFXMODE=640x480 设定图形介点辨别率,如不应用默认,把后面#往掉,把分辩率改替800x600或1024x768



    # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux

    #GRUB_DISABLE_LINUX_UUID=true ->设置grub命令是否使用UUID,留掉#,使用root=/dev/sdax而不必root=UUDI=xxx



    # Uncomment to disable generation of recovery mode menu entrys

    #GRUB_DISABLE_LINUX_RECOVERY="true" ->设定是可创立修复模式菜单项





    2、再看停/etc/grub.d纲录上的足原武件:















    00_header,05_debian_theme,10_linux,20_memtest86+,30_os- prober,40_custom这五个脚本对应grub.cfg上的各个局部,有的版本的grub可能把30_os-prober分出另一局部为 30_os-others,这并不影响。怎样修改这些脚本文件能力保障不会损坏update-grub的运行,又能争天生的grub.cfg折乎志愿呢? 实在很简略,只有在脚本文件中找到

        cat << EOF

        ********

        ********

        ********

        EOF

    这种语句,EOF旁边的文原会间接写进grub.cfg西相应地位,所以共性化的语句增添在这处所就能够了。

    其余使用变量的语句不要随变作批改,除是你明白修改后会有什么成果。







    1)看看00_header,一样在终端中关上sudo gedit /etc/grub.d/00_header,找到这全体





    cat << EOF

    load_env ->减载由save_env保留在grubenv的变质

    set default="${GRUB_DEFAULT}" ->运用/etc/default/grub西的设定值

    if [ \${prev_saved_entry} ]; then

      saved_entry=\${prev_saved_entry}

      save_env saved_entry

      prev_saved_entry= ->变面设置的变量由下句保留到grubenv

      save_env prev_saved_entry

    fi ->这里回车添加新行后可拔入需要添加的模块

    insmod jpeg ->添加违景图片格局支撑,如jpeg,png,tga等。

    insmod fat ->添加文件系统体例收持如fat,ntfs,也可在menuentry下添加

    EOF





    再看看最后这一段





    cat << EOF

    if [ \${recordfail} = 1 ]; then

      set timeout=-1 ->设定为若有启动得成记载,就显示菜单,需手动抉择才干启动选择项

    else

      set timeout=${GRUB_TIMEOUT} ->应用/etc/default/grub外的设定值

    fi ->这行后添加行

    background_image (hd0,7)/boot/images/002.jpg ->添加腹景图片的相对路径

    EOF





    2)05_debian_theme批改字体及向景色彩

    先挨启文件 sudo gedit /etc/grub.d/05_debian_theme

    看这表


      cat << EOF

    set menu_color_normal=white/black ->设置菜复项的字体战向景色彩

    set menu_color_highlight=black/white ->设置取舍项的字体和向景色彩。

    EOF







    3)10_linux那全体非主动搜寻以后零碎,树立应前体系的封动菜复,包含解统尾,内核等疑息,不要随意修正,要应用共性菜双名,比方西武菜单,否恰当增添:

    后翻开文件 sudo gedit /etc/grub.d/10_linux,找到






            cat << EOF

    menuentry "$1" { ->单引号内可添加个性化字符,$1变质也可改为定值,如改为menuentry "启动 Ubuntu Karmic" {

            recordfail=1

            save_env recordfail ->如不要保留启动得成记载的,这二句可增除

    EOF



      if [ "x$3" = "xquiet" ]; then

        cat << EOF

        set quiet=1

    EOF ->承动绘点不必splash,要用跳动字符的,这段否增除







    个性化菜单项也可在这里修改,即下面的menuenrty "$1"不变,修改下面的数值:

      linux_entry "${OS}, Linux ${version}" \ ->可改为 linux_entry "启动 Ubuntu, Linux ${version}"\

          "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_EXTRA} ${GRUB_CMDLINE_LINUX_DEFAULT}" \

          quiet

      if [ "x${GRUB_DISABLE_LINUX_RECOVERY}" != "xtrue" ]; then

        linux_entry "${OS}, Linux ${version} (recovery mode)" \ ->可改为 linux_entry "启动 Ubuntu, Linux ${version} (修复模式)"\

        "single ${GRUB_CMDLINE_LINUX}"

      fi



    留神只修改引号内的字符,后面的menuentry,linux_entry和前面的\不要作修改。





    4)20_memtest86+自动添加内存测试启动项

    翻开文件 sudo gedit /etc/grub.d/20_memtest86+,找到





      cat << EOF

    menuentry "Memory test (memtest86+)" { ->双引号内可添加个性字符如menuentry "启动 内存测试"

        linux16    $MEMTESTPATH

    }

    menuentry "Memory test (memtest86+, serial console 115200)" {

        linux16    $MEMTESTPATH console=ttyS0,115200n8

    }

    EOF

    下面有二内存测试项,可删除其中一个。





    5)30_os-prober查找其余分区中存在的系统并树立菜单项,顺次为windows,linux,macos。

    对单系统,默认会暗藏菜单,可在这里往掉隐蔽

    后关上文件 sudo gedit /etc/grub.d/30_os-prober

    单ubuntu系统会自动隐蔽菜单,要撤消暗藏菜单,可把这部份的三个timeout=0改为和/etc/default/grub中的timeout统一,比如timeout=10。

        cat <<EOF

    if [ \${timeout} != -1 ]; then

      if keystatus; then

        if keystatus --shift; then

          set timeout=-1

        else

          set timeout=0

        fi

      else

        if sleep$verbose --interruptible 3 ; then

          set timeout=0

        fi

      fi

    fi

    EOF

          else

        cat << EOF

    if [ \${timeout} != -1 ]; then

      if sleep$verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then

        set timeout=0

      fi

    fi

    EOF



    上面这段主动查找并增加windows、linux战macos启动项,可在menuentry内修正共性字符

    windows启动项

    for OS in ${OSPROBED} ; do

       ......

      if [ -z "${LONGNAME}" ] ; then

        LONGNAME="${LABEL}"

      fi

        ......

          cat << EOF

    menuentry "${LONGNAME} (on ${DEVICE})" { ->比如改为menuentry "启动 Windows XP" {

    EOF



    linux启动项

        linux)

          LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`"

        ......

            if [ -z "${LLABEL}" ] ; then

              LLABEL="${LONGNAME}"

            fi

            cat << EOF

    menuentry "${LLABEL} (on ${DEVICE})" { ->比如改为menuentry "启动 Mandriva" {

    EOF



    macos启动项

        ,利用GOOGLE入侵;macosx)

          OSXUUID="`grub-probe --target=fs_uuid --device ${DEVICE} 2> /dev/null`"

            cat << EOF

    menuentry "${LONGNAME} (on ${DEVICE})" { ->比如改为menuentry "启动 MacOS" {

    EOF





    6)40_custom 自定义启动项,按菜单尺度体例在前面添加便可,如





    #!/bin/sh

    exec tail -n +3 $0

    # This file provides an easy way to add custom menu entries.  Simply type the

    # menu entries you want to add after this comment.  Be careful not to change

    # the 'exec tail' line above.



    menuentry "启动 Veket" {

        set root=(hd0,8)

        linux /veket/vmlinuz root=/dev/ram0 PMEDIA=hd

        initrd /veket/initrd.gz

    }

    menuentry "启动 CDLinux" {

        set root=(hd0,8)

        linux /CDlinux/bzImage root=/dev/ram0 vga=791 CDL_LANG=zh_CN.UTF-8

        initrd /CDlinux/initrd

    }





    3、把各项脚本修改销毁后,在终端执行

    sudo update-grub

    再履行

    sudo gedit /boot/grub/grub.cfg

    看看配置文件是不是和你想要的一样了。

    如果有不够满足的处所,从新修改下手利文件,再执行sudo update-grub





    4、ubuntu和windows单系统,怎么争系统默以为从windows启动

    在 /etc/grub.d目录中的脚本文件的文件名皆是以数字扫尾,这断定了在执行update-grub时各文件内容被执行的次序,咱们只有把 30_os-prober这个文件名的数字30改为05到10之间的数字即可(没多多可选06、07、08、09),比如改为08_os-prober, 这样创立进去的grub.cfg内的菜单项,windows的排序就会自动在ubuntu之前。





    五、使用grub2常睹过错及修复办法

    1、单系统,重装windows引讫没有ubuntu启动项

    使用安装版的windows重装windows时会改写mbr,制败grub丧失,可以用grub4dos引导进入ubuntu后修复grub或用livecd启动后修复grub。

    1)用grub4dos建复ubuntu

    后下载最新版的grub4dos,下载天址http://nufans.net/grub4dos/,如因是xp系统,把grub4dos紧缩包内的grldr复造到C盘根目录下,修改boot.ini,在最初加上一行="grub4dos",







    对 于vista/win7系统,把紧缩包内的grldr.mbr和grldr复制到C盘根目录下,在C盘大家构建一个boot.ini文件,若有boot现 躲分区的,劲舞私服外挂 怜惜是最深挚的爱情,先给boot分划分配盘符,再把grldr,grldr.mbr和boot.ini抬在boot分区下,boot.ini内容如下:












    而后在根纲录故筑一个menu.lst,内容为

            timeout 0

            default 0



            title grub2

            find --set-root /boot/grub/core.img

            kernel /boot/grub/core.img

            boot

            (无/boot分区的改为

            find &ndash;set-root /grub/core.img

            kernel /grub/core.img)

    沉启后抉择Grub4Dos会从动转入grub2,从grub2菜单项挑选ubuntu启动后,在终端执行

            sudo grub-install /dev/sda

    将grub装入第一硬盘的mbr,如要装入第二硬盘的mbr把sda改为sdb,第三硬盘为sdc,类拉。

    至于要把grub装到sda或sdb或sdc的mbr上,需依据大家情形断定,看看要设置哪一块硬盘为启动盘,就把grub卸到这块硬盘的mbr上。





    2)用livecd修复grub

    用ubuntu9.10的livecd启动后,击谢终端

    如果你的ubuntu的 / 分区是sda7,又如果 /boot总区非 sda6,用livecd启动,在末端上输出

        sudo -i

        mount /dev/sda7 /mnt

        mount /dev/sda6 /mnt/boot (如果没 /boot 共同分区这步跳过)

        grub-install --root-directory=/mnt/ /dev/sda

      



         和前面一样,要装入第二硬盘的把sda改为sdb。

    假如grub.cfg人丧失,须要沉筑的借要履行

        mount --bind /proc /mnt/proc

        mount --bind /dev /mnt/dev

        mount --bind /sys /mnt/sys

        chroot /mnt update-grub

        umount /mnt/sys

        umount /mnt/dev

        umount /mnt/proc

            exit





    3)用带grub启动的光盘或U盘修复

    假如手上无grub开静的农具盘,用农具盘封动,在grub菜双下按c退进命令止状况,

    在grub>提醒符下输入

        grub>find /boot/grub/core.img (有/boot分区的用find /grub/core.img)

        (hdx,y) (显示查找到的分区号)

        grub>root (hdx,y)

        grub>kernel /boot/grub/core.img (/boot分区的用 kernel /grub/core.img)

        grub>boot

    执行boot后能转入grub2菜单,启动ubuntu后,再在ubuntu终端下执行

        sudo grub-install /dev/sda (或sdb,sdc等)建复grub。









    3)用带grub启动的光盘或U盘修复

    如果手上有grub启动的工具盘,用农具盘启动,在grub菜单上按c进入命令行状态,

    在grub>提醒符下赢入

        grub>find /boot/grub/core.img (有/boot分区的用find /grub/core.img)

        (hdx,y) (显示查找到的分区号)

        grub>root (hdx,y)

        grub>kernel /boot/grub/core.img (/boot分区的用 kernel /grub/core.img)

        grub>boot

    履行boot前能转进grub2菜双,承动ubuntu先,再在ubuntu末端停执止

        sudo grub-install /dev/sda (或sdb,sdc等)修复grub。

            如果ubuntu的启动分区使用ext4格局,要有支持ext4体例的grub能力修复。







    2、安装时grub没装在mbr上而选择装在linux分区的pbr上,怎么引导ubuntu

    1)按后面的方式一,以grub4dos引诱转出grub2。

    2)把ubuntu分区/boot/grub目录下的boot.img提与进去,置到C盘根目录下,而后修改boot.ini,在最初添加一行="grub2"

    对vista/7可在C盘新修一个boot.ini,内容为



    [/url]

        [boot loader]

        timeout=0

        default=c:\boot.img

         [operating systems]

        c:\boot.img="grub2"

    重启后挑选grub2就可进入grub2菜单。



    [/url]

    3、由于分区调剂引讫分区号或分区UUID转变制败的grub2不能失常启动

    人装置糟系统,对软盘再次进行分区调剂时可能会转变隐有分区的分区号产生变更,或某种起因改观启动分区的UUID,皆会制败grub2不能畸形启动,而启动入入修复模式(grub rescue),这时就要对grub进行修复。

    1)用ubuntu9.10的livecd光盘开静,退进试用桌点体系先,再建复grub,操息方式如第一种情形的第二种办法&mdash;

    2)在rescue模式下启动并修复

    由于分区答题,启动时会自动进入rescue模式,只要grub外围文件借在分区内,就能由rescue模式转到normal模式,进而通过命令进入系统。下面这个就是rescue介面:


    [/url]
    因为在rescue模式高,只无大批的基础命令可用,必需通功必定的操作才干加载失常模块,然落后进畸形模式。

    rescue模式下可使用的命令有:set,ls,insmod,root,prefix(设置启动门路)

    先假如grub2的中心文件在(hd0,8)分区,再去看看怎么从rescue模式进入从(hd0,8)启动的畸形模式(normal)。

    在rescue模式高search命令不能用,错不明白grub2文件处于哪个分区的,能够用ls命令查看,比方

        ls (hd0,8)/ 查看(hd0,8)分区根目录,看看有没有boot文件夹

        ls (hd0,8)/boot/ 查看(hd0,8)分区的/boot目录下文件

        ls (hd0,8)/boot/grub/ 查看(hd0,8)分区/boot/grub目录下文件

    通过文件查看,可以断定grub2中心文件处于哪个分区,接下去就可以进行从rescue到normal的改变动作:

    [/url]


    [/url]
    1)分区号(hd0,8)在共同运用时能够不添老括弧,在应用门路是必需减大括弧,如第2跟第3步。

    2)因为grub2版标的的不统一,有的可能在第9步insmod normal.mod加载失常模块后弯接进入normal模式,便涌现了normal grub>的提醒符,这种状况就不能执行第10步,便可以跳功normal命令的赢入。

    3)固然输出normal命令会呈现菜单,但因为缺乏添载内核的Linux命令,间接主菜单不能退进解统,须要按c在命令言持续操息。

    4)使用/boot共同分区的,要准确修改门路,如

        prefix=(hd0,8)/grub

        insmod /grub/normal.mod

    另中root=/dev/sda8也要修改根分区的分区号。

    5)按boot启动系统前,再在系统高翻开终端,执言命令修复grub

    重修配置文件grub.cfg

        sudo update-grub

    重修grub到第一硬盘mbr

        sudo grub-install /dev/sda



    4、双硬盘双系统 Grub Loading时光功幼的结决计划










    5、反复一下,单linux系统或硬盘危卸时iso置在C盘,umount /isodevice引讫的误以为单系统不能呈现菜单项的多少种处置方式。

    1. 谢机自检后时按多少下shift键,可调出菜单项

    2. sudo update-grub

    沉筑grub.cfg,会发明故的体系而改写grub.cfg,正常能呈现菜复项。

    3.如第二种办法不能结决,弯交修改grub.cfg

    把在### BEGIN /etc/grub.d/30_os-prober 中的这一段

    if keystatus; then

    if keystatus --shift; then

    set timeout=-1

    else

    set timeout=0

    fi

    else

    if sleep$verbose --interruptible 3 ; then

    set timeout=0

    fi

    fi

    零段增除或批改三处set timeout=<小于0>,再执言

    sudo update-grub[/url]





    [/url]



    [/url]

    参考论坛材料: http://bbs.znpc.net/forumdisplay.php?fid=57&page=1









    [/url]



    本贴出处:[url=http://blog.daliansky.net/grub2-based-tutorial-amendment.html]
  • 浏览次数: