zoukankan      html  css  js  c++  java
  • 分区启动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

        还没正修。

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

  • 相关阅读:
    利用vuex 做个简单的前端缓存
    EFcore 解决 SQLite 没有datetime 类型的问题
    dotnet 清理 nuget 缓存
    .net 5 单文件模式发布异常 CodeBase is not supported on assemblies loaded from a single-file bundle
    ubuntu 开启ip转发的方法
    Vue-ECharts 6 迁移记录
    System.Text.Json 5.0 已增加支持将Enum 由默认 Number类型 转换为String JsonStringEnumConverter
    Windows 10 LTSC 2019 正式版轻松激活教程
    Mac 提示Permission denied
    苹果手机代理 charles 提示(此链接非私人连接)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3043201.html
Copyright © 2011-2022 走看看