分区启动Grub2配置详解

本文是一篇关于分区启动的帖子

    一、

    grub.cfg

    详解

    (

    色红为说明

    )
grub.cfg

    默以为读只,要修改前先设为可写

  
sudo chmod +w /boot/grub/grub.cfg
set default=0
#

    默以为

    0
insmod jpeg
#

    加添

    jpg

    支撑,如要应用

    png

    或

    tga

    文件做背景,加上

    insmod png

    或

    insmod tga
insmod ext2
#

    除了用作启动的分区外,其他分区格式可在

    menu

    底下再加添

    
set root=(hd0,7)
#

    设定

    root

    分区

    
search --no-floppy --fs-uuid --set f255285a-5ad4-4eb8-93f5-4f767190d3b3
#

    设定

    uuid=****

    的分区为

    root

    ,和上句重复,可除删

    
#

    以下为终端配置

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

    设置终端字体,

    unicode.pf2

    支撑文中示显

    
set gfxmode=640x480
#

    设置分辨率,默以为

    640x480

    ,可用

    800x600

    ,

    1024x768

    ,议建跟你想设定的图片大小分歧

    
insmod gfxterm
#

    插入模块

    gfxterm

    ,支撑文中显

    示,它还支撑

    24

    位像图

    
insmod vbe
#

    插入

    vbe

    模块,

    GRUB 2

    引入很多模块的货色,要应用它,要需在这里参加

    
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don't
# understand terminal_output
terminal gfxterm
#

    设置

    GRUB 2

    终端为

    gfxterm
fi
fi
set timeout=10
background_image (hd0,7)/boot/images/1.jpg
#

    设置背景图片

    
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=cyan/black
#

    这两行为

    Debian

    下的菜单颜色设置,如果认默的话,你会现发背景完整被蓝色挡住了,你要需修改

    blue

    为

    black

    ,这样背景就会涌现

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

    为动自加添的前当

    root

    分区

    linux

    导引项

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

    菜单项,要括包

    menuentry

    双引号

    " "

    和大括号

    {  }

    才完整,否则不示显菜单

    
menuentry "Ubuntu, Linux 2.6.31-9-386" {
insmod ext2
set root=(hd0,7)
search --no-floppy --fs-uuid --set f255285a-5ad4-4eb8-93f5-4f767190d3b3
#

    这句与

    set root=(hd0,7)

    重复,可除删

    
linux /boot/vmlinuz-2.6.31-9-386 root=UUID=f255285a-5ad4-4eb8-93f5-4f767190d3b3 ro quite splash
#

    不喜欢看到一长串的,

    roo=UUID=***

    可用

    root=/dev/sda7

    替代

    
initrd /boot/initrd.img-2.6.31-9-386
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
linux16 /boot/memtest86+.bin
}
### END /etc/grub.d/20_memtest86+ ###
#

    动自加添存在于其他分区的统系导引项

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

    启动菜单

    
menuentry "Windows Vista (loader) (on /dev/sda1)" {
insmod ntfs
#windows

    格式为

    ntfs

    ,或为

    fat32

    为改

    insmod fat                                                                           
set root=(hd0,1)
search --no-floppy --fs-uuid --set ece067d2e067a196
#

    可除删

    
#grub2

    比拟先进的地方就是如果现发

    windows

    启动是通过

    ntldr

    导引的,定为

    2000/xp/2003

    ,会在这加上

    drivemap -s (hd0) ${root}

    ,用作相当于

    grub

    的

    map

    ,可畸形启动非第一硬盘的

    xp/2003

    统系。

    
chainloader +1                                                                        
}
#

    查找到其他分区上的

    linux

    统系并动自加添

   
menuentry "Ubuntu karmic (development branch) (9.10) (on /dev/sda3)" {
insmod ext2
set root=(hd0,3)
search --no-floppy --fs-uuid --set 4d893970-0685-44ed-86b3-1de45b2db84a
linux /boot/vmlinuz-2.6.31-9-generic root=/dev/sda3
initrd /boot/initrd.img-2.6.31-9-generic
}
#

    若存在

    macos

    会动自在这里加添。

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

    以下为手动加添的菜单项

    
### 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 ###
#

    手动加添时,硬盘编号从

    0

    开始

    (hd0)

    ,主分区编号从

    1

    开始

    (hd0,1)

    ,逻辑分区从

    5

    开始

    (hd0,5)

    二、

    grub2

    终端部份命令绍介

    

    在涌现择选菜单时,按

    C

    进入终端命令行式模,按

    E

    进入前当菜单项编辑式模(和

    grub

    一样),编辑中按

    Ctrl + C

    出退,按

    Ctrl + X

    以编辑内容启动。

    
1. help

    查看命令用法,示显全部可用命令

    
help search
search

    命令用法

    
2. ls

    列出前当的全部备设。如

    (hd0) (hd0,1) (hd0,5) (hd1) (hd1,1) (hd1,2) .......
ls -l

    细详列出前当的全部备设。对于分区,会示显其

    label

    及

    uuid

    。

    
ls /

    列出前当设为

    root

    的分区下的文件

    
ls (hd1,1)/

    列出

    (hd1,1)

    分区下文件

    
3. search
search -f /ntldr

    列出根目录里含包

    ntldr

    文件的分区,返回为分号区

    
search -l LINUX

    搜索

    label

    是

    LINUX

    的分区。

    
search --set -f /ntldr

    搜索根目录含包

    每日一道理
青春是用意志的血滴和拼搏的汗水酿成的琼浆——历久弥香;青春是用不凋的希望和不灭的向往编织的彩虹——绚丽辉煌;青春是用永恒的执著和顽强的韧劲筑起的一道铜墙铁壁——固若金汤。

    ntldr

    文件的分区并设为

    root

    ,注意如果多外分区含有

    ntldr

    文件,

    set

    得到用作。

    
4. 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
5. set

    应用

    set

    可以设置变量的值

    
set root=
set timeout=

    要需用调变量的值时,应用

    ${AA}

    ,如

    set root=(hd1,1)

    则

    ${root}=(hd1,1)
6. pager

    分页示显。

    
set pager=1

    满页时暂停,按

    space

    续继

    
set pager=0

    取消分页

    
7. linux
linux

    代替

    grub

    中的

    kernel

    三、

    

    单

    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=

    四、双硬盘双统系

    Grub Loading

    时光太长的解决方案

    
grub2

    的

    boot.img

    设定

    root

    的

    uuid

    从第一分区开始搜索分区的

    /boot/grub

    下的模块并载加,

    如果

    linux

    分区处于第二硬盘甚至第三硬盘,会致使搜索时光太长而,涌现菜单时光会长达

    10

    多秒。

    

    对双(多)硬盘的情况议建把

    grub

    安装在

    ubuntu

    地点硬盘的

    mbr

    上,

    /boot

    分区或

    /

    分区

    尽量靠前,并设该硬盘为启动盘,会大大收缩启动时光。

    

    五、

    grub2

    几种修复法方

    
1.

    双统系重装

    windows

    成造

    grub2

    被改写的修复

    

    法方一

    grub4dos0.4.4

    在

    Windows

    启动项上加上

    grub4dos

    启动(多不说了,看置顶贴),重启择选进入

    grub

    ,在命令行下输入

    (/boot

    独单分区的去掉

    /boot)

    

    代码

    :

    

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

    进入

    grub2

    菜单,进入统系后再行执

    

    

    代码

    :

    

    
    sudo grub-install /dev/sd

    ?

    

    法方二

    进入

    Livecd

    后修复(感激

    billbear

    )

    

    

    引用

    :

    

    
sudo -i
mount

    你的根分区

    /mnt
mount

    你的

    /boot

    分区

    /mnt/boot #

    如果有的话

    
#

    载挂你其他的分区,如果有的话

    
#

    重建

    grub

    到

    sda

    的

    mbr
grub-install --root-directory=/mnt /dev/sda
2.

    由于

    root

    分区

    uuid

    转变成造的不能畸形启动,只能进入

    grub rescue

    式模的修复

    

    

    代码

    :

    

    
grub rescue>set
grub rescue>prefix=(hd

    ?

    ,

    ?

    )/grub
grub rescue>root=hd

    ?

    ,

    ?

    
grub rescue>set root=hd

    ?

    ,

    ?

    
grub rescue>set prefix=(hd

    ?

    ,

    ?

    )/boot/grub
grub rescue>set
grub rescue>root=hd

    ?

    ,

    ?

    
grub rescue>prefix=(hd

    ?

    ,

    ?

    )/boot/grub
grub rescue>insmod /boot/grub/normal.mod
grub rescue>normal

    这时就能够调出

    /boot/grub/grub.cfg

    ,修改应相

    uuid

    ,

    

    改到命令行下

    
grub>insmod /boot/grub/linux.mod
grub>set root=hd

    ?

    ,

    ?

    
grub>linux /boot/vmlinuz-*** root=/dev/sd

    ??

    
grub>initrd /boot/initrg.img-****

    进入统系

    
hd

    ?

    ,

    ?

  

    是

    grub

    文件地点分区

    sda

    ?

    是

    /

    分区。

    
3. grub

    模块和配置文件

    grub.cfg

    受损没法启动时修复

    
Livcd

    启动进入试用

    

    

    引用

    :

    

    
sudo -i
mount

    你的根分区

    /mnt
mount

    你的

    /boot

    分区

    /mnt/boot #

    如果有的话

    
#

    载挂你其他的分区,如果有的话

    
#

    重建

    grub

    到

    sda

    的

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

    重建

    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

    六、

    一些充补说明

    
1. chainloader
grub2

    将支撑

    chainloader /file  

    的用法。

    

    现在支撑的文件只有

    grub2

    的

    boot.img

    和

    grub4dos

    的

    grldr

    和

    grub.exe

    。希望正式版能支撑

    ntldr bootmgr peldr

    等文件。

    
2. drivemap
drivemap

    兼容

    grub

    的

    map

    ,要主于用只能从

    (hd0)

    导引启动的统系如

    win2000 xp 2003

    ,可以象

    map

    用法一样如

    :
menuentry "Windows XP" {
insmod ntfs
drivemap (hd0) (hd1)
drivemap (hd1) (hd0)
set root=(hd1,1)
chainloader +1
}

    实际上

    drivemap  

    有了更便方的用法:

    
menuentry "Windows XP" {
insmod ntfs
set root=(hd1,1)
drivemap -s (hd0) ${root}
chainloader +1
}
3. grub2

    导引盘软

    img

    镜像启动

    

    比如要载加

    (hd1,1)

    根目录下的

    a.img

    镜像,先把

    memdisk

    从

    memdisk.gz

    中解压出来,用法是

    :
linux (hd1,1)/memdisk   #

    镜像文件过超

    2.88M

    要加上

    c=* h=* s=*
initrd (hd1,1)/a.img
boot

    当初有

    bug

    ,载加

    memdisk

    会动自重启,

    beta2

    还没正修。

文章结束给大家分享下程序员的一些笑话语录: 程序员打油诗   
  写字楼里写字间,写字间里程序员;
  程序人员写程序,又拿程序换酒钱。
  酒醒只在网上坐,酒醉还来网下眠;
  酒醉酒醒日复日,网上网下年复年。
  但愿老死电脑间,不愿鞠躬老板前;
  奔驰宝马贵者趣,公交自行程序员。
  别人笑我忒疯癫,我笑自己命太贱;
  不见满街漂亮妹,哪个归得程序员。

你可能感兴趣的:(分区启动Grub2配置详解)