grub 订阅
GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。 展开全文
GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
信息
适用范围
计算机
类    别
操作程序
作    用
选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数
性    质
是多启动规范的实现
全    称
GRand Unified Bootloader
外文名
GRUB
GRUB基本功能
GNU GRUB 和GRUB是GRand Unified Bootloader的缩写,它是一个多重操作系统启动管理器。用来引导不同系统,如windows,linux。在X86架构的机器中,Linux、BSD 或其它Unix类的操作系统中GRUB、LILO 是大家最为常用,应该说是主流。Windows也有类似的工具NTLOADER;比如我们在机器中安装了Windows 98后,我们再安装一个Windows XP ,在机器启动的会有一个菜单让我们选择进入是进入Windows 98 还是进入Windows XP。NTLOADER就是一个多系统启动引导管理器,NTLOADER 同样也能引导Linux,只是极为麻烦罢了。在PowerPC 架构的机器中,如果安装了Linux的Powerpc 版本,大多是用yaboot 多重引导管理器,比如Apple机用的是IBM PowerPC处理器,所以在如果想在Apple机上,安装Macos 和Linux Powerpc 版本,大多是用yaboot来引导多个操作系统。因为X86架构的机器仍是主流, 所以GRUB和LILO 仍然是我们最常用的多重操作系统引导管理器。
收起全文
精华内容
下载资源
问答
  • GRUB

    千次阅读 2019-12-14 21:16:25
    GRUB的menu.lst的写法 转载AndyLizh 发布于2015-04-15 13:20:03 阅读数 6760 收藏 展开 作者:北南南北 来自:LinuxSir.Org 摘要: GRUB是多系统引导管理器,简单的说既能引导Linux,同时也能引导Windows;从...

    GRUB的menu.lst的写法
    作者:北南南北
    来自:LinuxSir.Org
    摘要: GRUB是多系统引导管理器,简单的说既能引导Linux,同时也能引导Windows;从LinuxSir.Org 讨论区近四年的观察来看,大多初学者并不能在短时间内掌握GRUB的用法,为了解决初学者在最短时间内掌握GRUB,重写GRUB入门文档还是有必要的;
    本文重点介绍了GRUB的menu.lst的写法,另外通过GRUB命令行引导系统也做了详述;这些无论是对Windows版本的WINGRUB还是Linux版本的GRUB都是适用的;
    目录索引
    一、什么是多重操作系统引导管理器,什么是GRUB;
    1、什么是多重操作系统引导管理器及工作原理;
    2、什么是GRUB;为什么我要选择GRUB;

    1)什么是GRUB;
    2)“GRUB太不好用”──对GRUB的认识的误区;
    3)为什么要选择GRUB;

    二、GRUB软件包版本选择和安装;
    1、Linux版本的GRUB及Windows版本的GRUB的说明;
    2、GRUB的Windows版本WINGRUB;
    3、GRUB的Linux版本软件包的安装;

    三、在Linux中,GRUB的配置中的安装和写入硬盘的MBR;
    1、在Linux中,GRUB配置过程中的安装grub-install;
    2、设定GRUB的/boot分区并写入MBR;

    四、GRUB的配置文件的menu.lst的写法;
    1、menu.lst的写法之一;

    1)在menu.lst中 ,通过 root (hd[0-n],y)来指定/boot 所在的分区;
    2)在menu.lst中,kernel 命令行的写法;
    3)initrd 命令行的写法;
    4)menu.lst第一种写法的总结和实践;

    1]用fdisk -l ;df -lh ;more /etc/fstab来确认分区情况;
    2]查看内核vmlinuz的和initrd文件名的全称;
    3]开始写menu.lst ;

    2、menu.lst的写法之二,精简型;
    1)第一种情况:/boot和Linux的/根分区在同一个分区;
    2)第二种情况:/boot独立一个分区,和Linux的根分区不位于同一分区;

    五、通过GRUB命令行来启动Linux操作系统;
    1、为什么需要学习GRUB的命令行;
    2、用命令行来引导Linux操作系统的步骤;

    1)进入GRUB的命令行模式 grub>
    2)获取帮助GRUB的 help
    3)cat的用法;
    4)root (hd[0-n,y) 指令来指定/boot所在的分区;
    5)kernel 指令,用来指定Linux的内核,及/所在的分区;
    6)initrd 命令行来指定initrd文件;
    7)boot 引导系统;
    8)引导Linux系统实例全程回放;

    六、通过GRUB引导Windows操作系统;
    1、通过编辑 menu.lst 来引导Windows 系统;
    2、通过GRUB指令来引导Windows ;

    七、GRUB丢失或损坏的应对策略;
    1、由于重新安装Windows或其它未知原因而导致GRUB的丢失;
    2、如果出现GRUB提示符,而不出现GRUB的菜单,如何引导系统;

    八、关于GRUB的未尽事宜;
    九、关于本文;
    十、参考文档;
    十一、相关文档;

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    正文
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    一、什么是多重操作系统引导管理器,什么是GRUB;

    1、什么是多重操作系统引导管理器及工作原理;

    系统启动引导管理器,是在计算机启动后运行的第一个程序,他是用来负责加载、传输控制到操作系统的内核,一旦把内核挂载,系统引导管理器的任务就算完成退出,系统引导的其它部份,比如系统的初始化及启动过程则完全由内核来控制完成;

    Briefly, boot loader is the first software program that runs when a computer starts. It is responsible for loading and transferring control to the operating system kernel software (such as the Hurd or the Linux). The kernel, in turn, initializes the rest of the operating system (e.g. GNU).

    在X86 架构的机器中,Linux、BSD 或其它Unix类的操作系统中GRUB、LILO 是大家最为常用,应该说是主流;
    Windows 也有类似的工具NTLOADER;比如我们在机器中安装了Windows 98后,我们再安装一个Windows XP ,在机器启动的会有一个菜单让我们选择进入是进入Windows 98 还是进入Windows XP。NTLOADER就是一个多系统启动引导管理器,NTLOADER 同样也能引导Linux,只是极为麻烦罢了;
    在Powerpc 架构的机器中,如果安装了Linux的Powerpc 版本,大多是用yaboot 多重引导管理器,比如Apple机目前用的是IBM Powerpc处理器,所以在如果想在Apple机上,安装Macos 和Linux Powerpc 版本,大多是用yaboot来引导多个操作系统;
    因为目前X86架构的机器仍是主流, 所以目前GRUB和LILO 仍然是我们最常用的多重操作系统引导管理器;

    2、什么是GRUB;为什么我要选择GRUB;

    1)什么是GRUB;

    GNU GRUB 是一个多重操作系统启动管理器。GNU GRUB 是由GRUB(GRand Unified Bootloader) 派生而来。GRUB 最初由Erich Stefan Boleyn 设计和应用;

    GNU GRUB is a Multiboot boot loader. It was derived from GRUB, GRand Unified Bootloader, which was originally designed and implemented by Erich Stefan Boleyn.

    2)“GRUB太不好用”──对GRUB的认识的误区;

    GRUB真的不好用吗?不是的,通过LinuxSir.Org 社区近四年来的运行,我发现了大多新手弟兄还是不太了解GRUB;当然这也有中文Linux社区的责任,虽然也有GRUB的中文译本,初学Linux的弟兄可能有点看不懂;
    我 们欣喜的看到LinuxSir.Org 社区的好多弟兄都曾经或正在写GRUB实践文档,也有的弟兄也总结了GRUB的一些基础知识,比如 probing兄弟的 《GRUB 学习笔记》;由于每个人的写文档时风格不同,可能同一份文档不同的人来写就有不同的风格;所以今天也抖胆也一篇入门级的教程,由于北南不会写高级教程,所 以还得请高手弟兄指教,先谢过;

    3)为什么要选择GRUB;

    基于在X86架构的CPU而开发操作系统,系统引导管理器不仅仅有GRUB ,而且也有LILO,但对于多重系统引导管理器,你只能选择其一而用;不能两个同时使用;
    目前这两个多重系统引导管理器是大家最常用的,也是主流Linux发行版而采用的;有的弟兄喜欢GRUB,比如我个人,有的弟兄喜欢LILO ,比如etony兄(谁是etony,请参见 http://debian.linuxsir.org );
    主流发行版 Fedora、Redhat、Centos等基于RPM包的系统,在最新版本中都默认GRUB引导;Slackware 目前仍采用LILO;而Debian发行版目前最新的版本也是采用GRUB;
    从目前看来,GRUB有逐渐取代LILO之势,GRUB 2.0正在开发之中;所以我们有理由用GRUB,我也有理由写GRUB使用教程;

    二、GRUB软件包版本选择和安装;

    1、GRUB的版本选择,Linux版本的GRUB及Windows版本的GRUB的说明;

    GRUB不但有Linux版本,也有Windows版本;现我们一一介绍;
    如 前面所说,目前在在Unix类的操作系统中,大多是都有GRUB;GRUB几乎能引导所有X86架构的操作系统;功能之强,使用简单是GRUB最大的卖 点;由于Windows 操作系统的先入为主的优势,使得大家对Windows的NTLOADER了解的比较多,而对开源社区的GRUB显得有点寞生,由此而带来使用上的“心理恐 惧”;究其初学者对GRUB“恐惧”的主要原因还是对GRUB没有太多的了解和深入;无论是WINGRUB还是Linux版本的GRUB,最方便的还是对 GRUB命令行的操作;一谈到命令行(Command)的操作,可能初学者对此恐惧;其实没有什么难的,象北南这样低级的写手,还能操作得起来,您也应该 能行;

    2、GRUB的Windows版本WINGRUB;

    请参考:《以WINGRUB 引导安装Fedora 4.0 为例,详述用WINGRUB来引导Linux的安装》

    3、GRUB的Linux版本软件包的安装;

    其实对于Linux的GRUB,几乎所有的Linux主流发行版都有打包,如果您安装了Linux,并且在开机后出现GRUB字样的,证明您已经安装了GRUB;而无需再次安装;Linux的GRUB软件包安装部份并不是本文的重点;
    如果您的Linux系统没有安装GRUB,或者采用的是LILO,而您想用GRUB,可以用系统安装盘自带GRUB软件包来安装,或者到相关发行版本的软件仓库下载后安装;
    GRUB 的Linux版本目前在各大发行版中都有打包;比如Fedora/Redhat/Centos/Mandrive/Mandriva/SuSE等以RPM包管理机制的系统,可以通过如下的命令来安装;
    请参考《Fedora / Redhat 软件包管理指南》
    [root@localhost ~]# rpm -ivh grub*.rpm

    如果是Slackware 您可以用如下的办法来安装;
    [root@localhost ~]# installpkg grub*.tgz

    其它的发行版本请用其自己特色的软件包管理工具来安装;
    当然您也可以通过源码包,在任何Linux的发行版上安装;至于源码包的安装方法;
    请参考:《如何编译安装源码包软件》
    [root@localhost ~]#tar zxvf grub*.tar.gz
    [root@localhost ~]#cd grub-xxx
    [root@localhost ~]#./configure;make;make install

    确认您是否成功安装了GRUB,您可以测试是否有如下两个命令;
    [root@localhost ~]# grub
    [root@localhost ~]# grub-install

    如果您不能找到这两个命令,可能您的可执行程序的路径没有设置;
    请参考:《设置可执行程序路径》,当然您可以用绝对路径;比如下面的;
    [root@localhost ~]# /usr/sbin/grub
    [root@localhost ~]# /usr/sbin/grub-install

    如果您还是找不到GRUB软件包安装在哪了;您可以用下面的命令来解决和查找;
    [root@localhost ~]# updatedb 注:这个要花很长时间;是索引slocate 的库,然后再通过locate来查找;
    [root@localhost ~]# locate grub

    比如找到的是有类似如下的;
    [root@localhost ~]# locate grub
    /sbin/grub-md5-crypt
    /sbin/grub
    /sbin/grub-install
    /sbin/grub-terminfo

    在一般情况下,在路径中带有bin或sbin中字样的,这些路径下都是可执行程序;sbin 是超级权限用户才能使用的管理命令;要使用这些命令一般的情况下得切换到root用户下才能使用;比如
    [beinan@localhost ~]$ su - 注:切换到root用户,并且切换到其家目录;
    Password:
    [root@localhost ~]#/sbin/grub 注:用绝对路径来运行grub命令;

    三、在Linux中,GRUB的配置中的安装和写入硬盘的MBR;

    1、在Linux中,GRUB配置过程中的安装grub-install;

    grub-install 命令有何用呢?其实就是把我们前面已经安装的软件包中的一些文件复制到 /boot/grub中;对于新安装GRUB软件包后,也是一个必经的过程;我们前面所说的GRUB软件包的安装;而现在我们说的是GRUB配置的过程中 的安装;虽然在洋文中都是install ,但表达的意思是不一样的;
    我们首先要运行 fdisk -l 来确认到底是硬盘的标识;
    这个过程主要是确认硬盘的标识是哪个调备,到底是/dev/hda还是/dev/hdb 还是其它的;
    [root@localhost ~]# fdisk -l

    Disk /dev/hda: 80.0 GB, 80026361856 bytes
    255 heads, 63 sectors/track, 9729 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System
    /dev/hda1 * 1 970 7791493+ 7 HPFS/NTFS
    /dev/hda2 971 9729 70356667+ 5 Extended
    /dev/hda5 971 2915 15623181 b W95 FAT32
    /dev/hda6 2916 4131 9767488+ 83 Linux
    /dev/hda7 4132 5590 11719386 83 Linux
    /dev/hda8 5591 6806 9767488+ 83 Linux
    /dev/hda9 6807 9657 22900626 83 Linux
    /dev/hda10 9658 9729 578308+ 82 Linux swap / Solaris

    如果通过fdisk -l 出现有/dev/hda字样的,我们就要用下面的命令来安装;
    [root@localhost ~]# grub-install /dev/hda
    Installation finished. No error reported.
    This is the contents of the device map /boot/grub/device.map.
    Check if this is correct or not. If any of the lines is incorrect,
    fix it and re-run the script `grub-install’.

    (fd0) /dev/fd0
    (hd0) /dev/hda

    如果是您fdisk -l 出现的有/dev/hdb呢,那就如下运行;
    [root@localhost ~]# grub-install /dev/hdb

    如果既有/dev/hda和/dev/hdb 就安装到/dev/hda中;
    [root@localhost ~]# grub-install /dev/hda

    值得注意的是如果您有一个/boot分区,应该用如下的办法来安装;
    [root@localhost ~]#grub-install --root-directory=/boot /dev/hda

    [root@localhost ~]#grub-install --root-directory=/boot /dev/hdb

    注解:具体是/dev/hda还是/dev/hdb,请以fdisk -l 为准;如果两个都有,就看您把/boot分区是放在第一块硬盘还是第二块硬盘上了,以实际情况为准;

    2、设定GRUB的/boot分区并写入MBR;;

    在Linux中,GRUB软件包的安装,及在配置过程中安装grub到 /boot中还是不够的, 还要把GRUB,写入MBR才行;有时我们重新安装了Windows,Windows会把MBR 重写,这样GRUB就消失了;如果您出现这样的情况,就要进行这个过程;
    [root@localhost ~]# grub

    会出现grub>提示符,这是grub命令行模式 ,如果能在开机中出现提示符,没有引导不起来的系统,除非您的系统破坏的极为严重。如果仅仅是GRUB被破坏了,GRUB命令行是能让操作系统引导起来的;
    接着看例子,我们要找到 /boot/grub/stage1的,在grub>后面输入;
    grub> find /boot/grub/stage1
    (hd0,6)
    (fd0) 注:这个是软驱;现在很少用软驱了,如果您有这方面的需要,自己看GRUB的DOC吧;

    注解:
    (hd0,6) 这是/boot所在的分区;不要误解为是Linux 的/所在的分区,这是值得注意的;
    (fd0) 注:这个是软驱;现在很少用软驱了,如果您有这方面的需要,自己看GRUB的DOC吧;
    grub>root (hd0,6) 注:这是/boot所在的分区;
    grub>setup (hd0) 注:把GRUB写到MBR上;

    注解:
    上面这步骤是根据 find /boot/stage1而来的,仔细看一下就明白了;现在我们一般安装很少会把/boot分区列为一个单独的分区;不过有的弟兄可能也喜欢这么做;所以还是有必要说一下为好;

    四、GRUB的配置文件的menu.lst的写法;

    对 于GRUB来说,如果没有配置menu.lst,无论是Linux版本的GRUB,还是WINGRUB,都会有命令行可用,通过命令行是一样能把操作系统 引导起来的;有些弟兄总以为menu.lst 配置错了, 或者在机器启动后出现grub>命令行模式就要重新安装系统,其实根本没有这个必要;只要学会GRUB的命令行的用法,根本没有必要重装系统;
    menu.lst 位于/boot/grub目录中,也就是/boot/grub/menu.lst 文件;您可以用vi或您喜欢的编辑器来编辑他;如果您不会用vi,还是去学习一下吧;简单的用法怎么也得会,对不对?毕竟这个文档不是讲vi的用法的;
    有的弟兄会说,我没有menu.lst怎么办?那就创建一个;用下面的命令;
    [root@localhost ~]# touch /boot/grub/menu.lst

    然后我们再做一个/boot/grub/menu.lst 的链接 /boot/grub/grub.conf
    [root@localhost ~]# cd /boot/grub
    [root@localhost ~]# ln -s menu.lst grub.conf

    现在我们来写GRUB的menu.lst了,因为/boot/grub/grub.conf是 /boot/grub/menu.lst的链接文件,改哪个都行。链接文件相当于Windows的快捷方式,这样可能能更好的理解;

    1、menu.lst的写法之一;

    首先我们看一下我的Fedora 4.0 中的/boot/grub/menu.lst 的内容;
    default=0
    timeout=5
    #splashimage=(hd0,6)/boot/grub/splash.xpm.gz
    hiddenmenu
    title Fedora Core (2.6.11-1.1369_FC4)
    root (hd0,6)
    kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
    initrd /boot/initrd-2.6.11-1.1369_FC4.img
    title WinXp
    rootnoverify (hd0,0)
    chainloader +1

    注解:
    default=0

    default=0 是默认启动哪个系统,从0开始;每个操作系统的启动的定义都从title开始的,第一个title 在GRUB的启动菜单上显示为0,第二个启动为1,以此类推;
    timeout=5

    注:表示在开机后,GRUB画面出现几秒后开始以默认启动;如果在启动时,移动上下键,则解除这一规则;
    #splashimage=(hd0,6)/boot/grub/splash.xpm.gz 注:GRUB的背景画面,这个是可选项;我不喜欢GRUB的背景画面,所以加#号注掉,也可以删除;
    hiddenmenu

    注解:隐藏GRUB的启动菜单,这项也是可选的,也可以用#号注掉;
    一般的情况下对Linux操作系统的启动,一般要包括四行;title 行;root行;kernel 行;initrd 行;

    1)在menu.lst中 ,通过 root (hd[0-n],y)来指定/boot 所在的分区;

    title XXXXX 注:title 后面加一个空格,title 是小写的,后面可以自己定义;比如FC4,自己定义一个名字就行;
    root (hd[0-n],y) ,在本例中,我们看到的是root (hd0,6) ,root (hd[0-n],y)表示的是/boot所在的分区;有时我们安装Linux的时候,大多是不设置/boot的,这时/boot和/所在的同一个分区; 这个root (hd[0-n],y)很重要,因为/boot目录中虽然有grub目录,最为重要的是还有kernel 和initrd文件,这是Linux能启动起来最为重要东西;
    有的弟兄会问,root (hd[0-n],y)是怎么来的?
    请参考:《在Linux系统中存储设备的两种表示方法》

    2)在menu.lst中,kernel 命令行的写法;

    kernel 一行,是通指定内核及Linux的/分区所在位置;
    比如例子中是;
    kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/

    在这里以kernel 起始,指定Linux的内核的文件所处的绝对路径;因为内核是处在/boot目录中的, 如果/boot是独立的一个分区,则需要把boot省略;如果/boot是独立的分区,这行要写成:
    kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/

    因 为/boot所处的分区已经在title 下一行root (hd[0-n],y)中指定了,所以就无需要再指明内核处在哪个分区了;另外Linux系统的硬盘分区的挂载配置文件在/etc/fstab ,原理是通过 mount /dev/hd[a-z]X /boot 来进行的;您可以对照着来理解;
    ro 表示只读; root=LABEL=/ 来表示Linux的根所处的分区。LABEL=/ 这是硬盘分区格式化为相应文件系统后所加的标签;如果您不了解什么是标签,也可以直接以/dev/hd[a-z]X 或者/dev/sd[a-z]X来表示;就看您的Linux是根分区是在哪个分区了。比如我的是在/dev/hda7 , 那这里就可以写成root=/dev/hda7;
    如果查看系统运行所挂载的分区,请用 df -lh 来查看,就能明白是不是/boot是独立的分区,或者查看/etc/fstab也能知道;
    [root@localhost ~]# df -lh
    Filesystem 容量 已用 可用 已用% 挂载点
    /dev/hda7 11G 9.2G 1.2G 90% /
    /dev/shm 236M 0 236M 0% /dev/shm

    在这个例子中,我们可以发现 /boot并没有出现只有/dev/hda7,这表示/boot并不是独立的一个分区;所有的东西都包含在/中;于是我们在/boot中查看内核版本;
    [root@localhost ~]# ls /boot/vmlinuz*
    /boot/vmlinuz-2.6.11-1.1369_FC4 注:看到内核vmlinuz所处的目录;

    于是我们就可以这样kernel 这行了;
    kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7

    3)initrd 命令行的写法;

    如果是/boot独立一个分区,initrd 一行要把/boot中省略;如果/boot不是处于一个分区,而是和Linux的/分区处于同一分区,不应该省略;
    比如我们在2)中用的例子;现在拿到这里,我们应该首先查看 /boot中的initrd的文件名到底是什么;
    [root@localhost ~]# ls /boot/initrd*
    /boot/initrd-2.6.11-1.1369_FC4.img

    如果是通过df -lh 得知或查看/etc/fstab 也行, 得知/boot是独立的分区;这时initrd 应该写成;
    initrd /initrd-2.6.11-1.1369_FC4.img

    如果是 /boot不是独处一个分区,而是在/同一处一个分区, 则要写成;
    initrd /boot/initrd-2.6.11-1.1369_FC4.img

    4)menu.lst第一种写法的总结和实践;

    在这里,我们只说重要的,不重要的就一带而过了;

    1]用fdisk -l ;df -lh ;more /etc/fstab来确认分区情况;

    我们过fdisk -l ;df -lh ; more /etc/fstab 来确认/boot所在的分区,及Linux的根分区所在位置;
    比如我们确认/boot和Linux的/分区同处一个分区;
    [root@localhost ~]# df -lh
    Filesystem 容量 已用 可用 已用% 挂载点
    /dev/hda7 11G 9.2G 1.2G 90% /
    /dev/shm 236M 0 236M 0% /dev/shm

    然后我们/etc/fstab 中,查看/分所在的分区或分区标签是什么;
    [root@localhost ~]# more /etc/fstab

    This file is edited by fstab-sync - see ‘man fstab-sync’ for details

    LABEL=/ / ext3 defaults 1 1
    /dev/devpts /dev/pts devpts gid=5,mode=620 0 0
    /dev/shm /dev/shm tmpfs defaults 0 0
    /dev/proc /proc proc defaults 0 0
    /dev/sys /sys sysfs defaults 0 0
    LABEL=SWAP-hda1 swap swap defaults 0 0
    /dev/hdc /media/cdrecorder auto pamconsole,exec,noauto,managed 0 0

    经 过上面的df -lh 和more /etc/fstab 的对照中得知,/boot并是独处一个分区,而是和/在同一个分区;这个Linux系统安装在/dev/hda7上,文件系统(此分区)的标签为 LABEL=/ ,/boot也是处于/dev/hda7 ,/dev/hda7也可以说是 root (hd0,6);

    2]查看内核vmlinuz的和initrd文件名的全称;

    [root@localhost ~]# ls -lh /boot/vmlinuz*
    -rw-r–r-- 1 root root 1.6M 2005-06-03 /boot/vmlinuz-2.6.11-1.1369_FC4
    [root@localhost ~]# ls -lh /boot/initrd*
    -rw-r–r-- 1 root root 1.1M 11月 26 22:30 /boot/initrd-2.6.11-1.1369_FC4.img

    3]开始写menu.lst ;

    我们根据上面所提到的,可以写成如下的样子;
    default=0
    timeout=5
    title FC4
    root (hd0,6)
    kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
    initrd /boot/initrd-2.6.11-1.1369_FC4.img

    也可以写成;
    default=0
    timeout=5
    title FC4
    root (hd0,6)
    kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
    initrd /boot/initrd-2.6.11-1.1369_FC4.img

    注解:上面两个不同之处在于一指定Linux的根/所在的分区时,一个是用了文件系统的标签,另一个没有用标签;

    2、menu.lst的写法之二,精简型;

    本写法主要是把指定/boot所位于的所分区直接写入kernel 指令行;这样就省略了通过root (hd[0-n],y)来指定/boot所位于的分区;

    1)第一种情况:/boot和Linux的/根分区在同一个分区;

    有前面的那么多的讲解,menu.lst写法之二就好理解多了;也得分两种情况,咱们先把/boot并不是独处一个分区,而是和Linux的根分区处于同一个分区;我们以 4)menu.lst第一种方法的写法总结 的实例为例子;
    default=0
    timeout=5
    title FC4x
    kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
    initrd (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img

    注解:
    title FC4x 注:自己为这个Linux 起个简单的名,以title开头,然后一个空格,后面就自己发挥吧,FC4或FC4x都行;
    kernel 空格 (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 空格 ro 空格 root=/dev/hda7
    kernel 这行这样理解 kernel (boot所在的分区)/boot/内核文件件全称 ro root=Linux根所位于的分区或标签
    initrd 空格 (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img
    initrd 这行可以这样理解 initrd (/boot所在的分区)/boot/内核文件名全称

    2)第二种情况:/boot独立一个分区,和Linux的根分区不是同一个分区;

    比如我们查看到df -lh 得到的是
    [root@localhost ~]# df -lh
    Filesystem 容量 已用 可用 已用% 挂载点
    /dev/hda6 200M 120M 80M 60% /boot
    /dev/hda7 11G 9.2G 1.2G 90% /

    我们再进一行查看/etc/fstab 得知;
    LABEL=/ / ext3 defaults 1 1
    LABEL=/boot /boot ext3 defaults 1 2

    所以我们应该写成如下的;
    title FC4x
    kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
    initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img

    因为Linux的根分区是/dev/hda7,通过/etc/fstab和df -h的内容得知标签为 LABEL=/的分区就是/dev/hda7 ,所以有;
    title FC4x
    kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
    initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img

    五、通过GRUB命令行来启动Linux操作系统;

    GRUB的命令行才是王道,如果知道怎么用命令行来启动操作系统,那理解menu.lst的写法也不难;也就是说在开机的时候,不用GRUB的菜单,通过GRUB的命令也是一样能把操作系统引导起来。
    因为menu.lst的内容就是GRUB的一个一个的指令集合;是不是Linux这玩意很神奇?

    1、为什么需要学习GRUB的命令行;

    当 我们把GRUB的menu.lst写错的时候,或者丢掉了menu.lst的时,比如在开机的时候,GRUB会出现grub>类似的命令提示符,这 时需要我们用命令行启动系统;当然您可以不用定义GRUB的菜单 ,直接用命令行来启动系统,比如我现在就是,为了写GRUB的文档,就把menu.lst 删除了,直接用命令来启动系统;

    2、用命令行来引导Linux操作系统的步骤;

    通过命令行来引导操作系统的流程,也没有什么难的;无非是把指令手工输入到grub>提示符的后面;在这个过程中,tab键的命令补齐功能就显得很重要了。如果您不知道有哪些命令,可以输入help;

    1)进入GRUB的命令行模式 grub>

    如 果开机时,GRUB出现的是grub>,说明你没有/etc/grub/menu.lst ,您需要自己写一个才会GRUB的菜单,让我们来选择进入哪个系统。如果有GRUB的菜单,您可以按Ctrl+c组合键进入GRUB的命令行模式,会出现 grub> 提示符;
    grub>

    2)获取帮助GRUB的 help

    只要您在grub>提示符的后面输入help 就能得到GRUB所有的命令提示;
    grub> help
    blocklist FILE boot
    cat FILE chainloader [–force] FILE
    clear color NORMAL [HIGHLIGHT]
    configfile FILE device DRIVE DEVICE
    displayapm displaymem
    find FILENAME geometry DRIVE [CYLINDER HEAD SECTOR [
    halt [–no-apm] help [–all] [PATTERN …]
    hide PARTITION initrd FILE [ARG …]
    kernel [–no-mem-option] [–type=TYPE] makeactive
    map TO_DRIVE FROM_DRIVE md5crypt
    module FILE [ARG …] modulenounzip FILE [ARG …]
    pager [FLAG] partnew PART TYPE START LEN
    parttype PART TYPE quit
    reboot root [DEVICE [HDBIAS]]
    rootnoverify [DEVICE [HDBIAS]] serial [–unit=UNIT] [–port=PORT] [–
    setkey [TO_KEY FROM_KEY] setup [–prefix=DIR] [–stage2=STAGE2_
    terminal [–dumb] [–no-echo] [–no-ed terminfo [–name=NAME --cursor-address
    testvbe MODE unhide PARTITION
    uppermem KBYTES vbeprobe [MODE]

    如果需要得到某个指令的帮助,就在 help 后面空一格,然后输入指令,比如;
    grub>help kernel

    3)cat的用法;

    cat 指令是用来查看文件内容的,有时我们不知道Linux的/boot分区,以及/根分区所在的位置,要查看/etc/fstab的内容来得知,这时,我们就 要用到cat (hd[0-n],y)/etc/fstab 来获得这些内容;注意要学会用tab键命令补齐的功能;
    grub> cat ( 按tab 键会出来hd0或hd1之类的;
    grub> cat (hd0, 注:输入hd0,然后再按tab键;会出来分区之类的;
    grub> cat (hd0,6)
    Possible partitions are:
    Partition num: 0, Filesystem type unknown, partition type 0x7
    Partition num: 4, Filesystem type is fat, partition type 0xb
    Partition num: 5, Filesystem type is reiserfs, partition type 0x83
    Partition num: 6, Filesystem type is ext2fs, partition type 0x83
    Partition num: 7, Filesystem type unknown, partition type 0x83
    Partition num: 8, Filesystem type is reiserfs, partition type 0x83
    Partition num: 9, Filesystem type unknown, partition type 0x82

    grub> cat (hd0,6)/etc/fstab 注:比如我想查看一下 (hd0,6)/etc/fstab的内容就这样输入;

    LABEL=/ / ext3 defaults 1 1
    /dev/devpts /dev/pts devpts gid=5,mode=620 0 0
    /dev/shm /dev/shm tmpfs defaults 0 0
    /dev/proc /proc proc defaults 0 0
    /dev/sys /sys sysfs defaults 0 0
    LABEL=SWAP-hda1 swap swap defaults 0 0
    /dev/hdc /media/cdrecorder auto pamconsole,exec,noauto,
    managed 0 0

    有的弟兄可能会说,我不知道Linux安装在了哪个分区。那根据文件系统来判断一个一个的尝试总可以吧我;只要能cat出/etc/fstab就能为以后引导带来方便;
    主 要查看/etc/fstab中的内容,主要是Linux的/分区及/boot是否是独立的分区;如果没有/boot类似的行,证明/boot和Linux 的/处于同一个硬盘分区;比如上面的例子中LABEL=/ 这行是极为重要的;说明Linux系统就安在标签为LABEL=/的分区中;
    如果您的Linux系统/boot和/没有位于同一个分区,可能cat (hd[a-n],y) 查到的是类似下面的;
    LABEL=/ / ext3 defaults 1 1
    LABEL=/boot /boot ext3 defaults 1 2

    4) root (hd[0-n,y) 指令来指定/boot所在的分区;

    其实这个root (hd[0,n],y)是可以省略的,如果省略了,我们要在kerenl 命令中指定;我们前面已经说过 (hd[0-n],y) 硬盘分区的表示方法的用途;主要是用来指定 /boot所在的分区;
    比如我们确认/boot和 (hd0,6),所以就可以这样来输入root (hd0,6)
    grub> root (hd0,6)

    如果发现不对,可以重新来过;没有什么大不了的;

    5) kernel 指令,用来指定Linux的内核,及/所在的分区;

    kernel 这个指令可能初学者有点怕,不知道内核在哪个分区,及内核文件名的全称是什么。不要忘记tab键的命令补齐的应用;

    如果我们已经通过root (hd[0-n],y) 指定了/boot所在的分区,语法有两个:

    如果/boot和Linux的/位于同一个分区,应该是下面的一种格式;

    kernel /boot/vmlinuz在这里按tab键来补齐,就看到内核全称了 ro root=/dev/hd[a-z]X

    如果/boot有自己独立的分区,应该是;

    kernel /vmlinuz在这里按tab键来补齐,就看到内核全称了 ro root=/dev/hd[a-z]X

    在这里 root=/dev/hd[a-z]X 是Linux 的/根所位于的分区,如果不知道是哪个分区,就用tab出来的来计算,一个一个的尝试;或用cat (hd[0-n],y)/etc/fstab 中得到Linux的/所在的分区或分区的标签;
    grub> kernel /boot/在这里按tab键;这样就列出/boot中的文件了;
    Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369
    _FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK memtest86±1.55
    .1 xen-syms xen.gz

    grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
    [Linux-bzImage, setup=0x1e00, size=0x18e473]

    注解: root=LABEL=/ 是Linux的/所在的分区的文件系统的标签;如果您知道Linux的/在哪个具体的分区,用root=/dev/hd[a-z]X来指定也行。比如下面的一行也是可以的;
    grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7

    也可以把/boot所在的分区的指定 root (hd[0-n],y)这行省掉,直接在kernel 中指定/boot所在的分区;所以就在下面的语法;
    如果是/boot和Linux的根同处一个分区;
    kernel (hd[0-n],y)/boot/vmlinuz ro root=/dev/hd[a-z]X

    比如:
    grub>kernel

    如果是/boot和Linux所在的根不在一个分区;则是;
    kernel (hd[0-n],y)/vmlinuz ro root=/dev/hd[a-z]X

    grub> kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
    [Linux-bzImage, setup=0x1e00, size=0x18e473]

    或下面的输入,以cat 出/etc/fstab内容为准;
    grub> kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
    [Linux-bzImage, setup=0x1e00, size=0x18e473]

    6)initrd 命令行来指定initrd文件;

    grub> initrd /boot/initrd在这里tab 来补齐;
    grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img
    [Linux-initrd @ 0x2e1000, 0x10e685 bytes]

    如果/boot是独立的一个分区,应该是如下样子的语法;比如下面的;
    grub> initrd /initrd在这里tab 来补齐;
    grub> initrd /initrd-2.6.11-1.1369_FC4.img
    [Linux-initrd @ 0x2e1000, 0x10e685 bytes]

    7)boot 引导系统;

    grub>boot

    前面的几个步骤都弄好 。就进入引导;尝试一下就知道了。。

    8)引导Linux系统实例全程回放;

    实例:/boot和Linux的/处于同一个硬盘分区;
    grub> cat (hd0,6)/etc/fstab

    This file is edited by fstab-sync - see ‘man fstab-sync’ for details

    LABEL=/ / ext3 defaults 1 1
    /dev/devpts /dev/pts devpts gid=5,mode=620 0 0
    /dev/shm /dev/shm tmpfs defaults 0 0
    /dev/proc /proc proc defaults 0 0
    /dev/sys /sys sysfs defaults 0 0
    LABEL=SWAP-hda1 swap swap defaults 0 0
    /dev/hdc /media/cdrecorder auto pamconsole,exec,noauto,managed 0 0

    grub> root (hd0,6)
    Filesystem type is ext2fs, partition type 0x83

    grub> kernel /boot/在这里按tab补齐,全列出/boot所有的文件;
    Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4
    memtest86±1.55.1 xen-syms xen.gz

    grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7 注:输入
    [Linux-bzImage, setup=0x1e00, size=0x18e473]

    grub> initrd /boot/在这里按tab补齐
    Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4
    memtest86±1.55.1 xen-syms xen.gz

    grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img 注;输入intrd文件名的全名;
    [Linux-initrd @ 0x2e1000, 0x10e685 bytes]

    grub> boot

    我们指定Linux的根时,可以用cat出来的fstab的内容中Linux的/分区文件系统标签来替代;也就是kernel 那行中 root=/dev/hd[a-z]X;
    grub> cat (hd0,6)/etc/fstab

    This file is edited by fstab-sync - see ‘man fstab-sync’ for details

    LABEL=/ / ext3 defaults 1 1
    /dev/devpts /dev/pts devpts gid=5,mode=620 0 0
    /dev/shm /dev/shm tmpfs defaults 0 0
    /dev/proc /proc proc defaults 0 0
    /dev/sys /sys sysfs defaults 0 0
    LABEL=SWAP-hda1 swap swap defaults 0 0

    /dev/hdc /media/cdrecorder auto pamconsole,exec,noauto,managed 0 0

    grub> root (hd0,6)
    Filesystem type is ext2fs, partition type 0x83

    grub> kernel /boot/在这里按tab补齐,全列出/boot所有的文件;
    Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4
    memtest86±1.55.1 xen-syms xen.gz

    grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
    [Linux-bzImage, setup=0x1e00, size=0x18e473]

    grub> initrd /boot/在这里按tab补齐
    Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK
    memtest86±1.55.1 xen-syms xen.gz

    grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img 注;输入intrd文件名的全名;
    [Linux-initrd @ 0x2e1000, 0x10e685 bytes]

    grub> boot

    如果是/boot和Linux的根分区不在同一个分区,要把kernel和initrd 指令中的/boot去掉,也就是/vmlinuzMMMMMM 或 /initrdNNNN
    也 可以不用root (hd[0-n]来指定/boot所在分区,要在kernel 和initrd 中指定;比如Linux的/根所位于的分区和/boot所位于的分区都是(hd0,6),并且我们cat出来的/etc/fstab是Linux的/根分 区的文件系统的标签为LABEL=/,引导操作系统的例子如下;
    grub>kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
    grub>initrd (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img
    grub>boot


    grub>kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
    grub>initrd (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img
    grub>boot

    如果/boot位于 /dev/hda6,也就是(hd0,5),Linux的根/位于分区/dev/hda7,并且我们cat 出来的/etc/fstab 中/分区的标签为 LABEL=/。下面的两种方法都可以引导;
    grub>kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
    grub>initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img
    grub>boot


    grub>kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
    grub>initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img
    grub>boot

    六、通过GRUB引导Windows操作系统;

    1、通过编辑 menu.lst 来引导Windows 系统;

    如果您的Windows所处于的分区在(hd0,0),可以在menu.lst 加如下的一段就能引导起来了;
    title WinXp
    rootnoverify (hd0,0)
    chainloader +1

    如果您的机器有两块硬盘,而Windows 位于第二个硬盘的第一个分区,也就是(hd1,0)
    您可以用grub的map来指令来操作把两块硬盘的序列对调,这样就不用在BIOS中设置了;在menu.lst中加如下的内容,比如下面的;
    title WinXp
    map (hd0) (hd1)
    map (hd1) (hd0)
    rootnoverify (hd0,0)
    chainloader +1
    makeactive

    如果Windows的分区不位于硬盘的第一个分区怎么办呢?比如在(hd0,2);
    这个也好办吧,把rootnoverify 这行的(hd0,0)改为 (hd0,2)
    title WinXp
    rootnoverify (hd0,2)
    chainloader +1
    makeactive

    如果Windows的在第二个硬盘的某个分区,比如说是位于(hd1,2),则要用到map指令;
    title WinXp
    map (hd0) (hd1)
    map (hd1) (hd0)
    rootnoverify (hd1,2)
    chainloader +1
    makeactive

    如 果有多个Windows 系统,怎么才能引导出来呢?应该用hide 和unhide指令操作;比如我们安装了两个Windows ,一个是位于(hd0,0)的windows 98 ,另一个是安装的是位于(hd0,1)的WindowsXP;这时我们就要用到hide指令了;
    title Win98
    unhide (hd0,0)
    hide (hd0,1)
    rootnoverify (hd0,0)
    chainloader +1
    makeactive

    title WinXP
    unhide (hd0,1)
    hide (hd0,0)
    rootnoverify (hd0,1)
    chainloader +1
    makeactive

    2、通过GRUB指令来引导Windows ;

    其实我们会写menu.lst了,在menu.lst中的除了title外,都是一条条指令;如果我们启动Windows ,只是输入指令就行了;
    比如 Windows的分区在 (hd0,0),我们在开机后,按ctrl+c ,进入GRUB的命令模式;就可以用下面的
    grub> rootnoverify (hd0,0)
    grub> chainloader +1
    grub> boot

    其它同理… …

    七、GRUB丢失或损坏的应对策略;

    如果GRUB是Linux版本才出会这样的问题;WINGRUB可以不写在MBR上;所以不会出现这样的问题。WINGRUB用起来比较简单。menu.lst 和命令行的用法和Linux版本的GRUB是一样的;

    1、由于重新安装Windows或其它未知原因而导致GRUB的丢失;

    您可以通过系统安装盘、livecd进入修复模式;
    请参考:《Linux 系统的单用户模式、修复模式、跨控制台登录在系统修复中的运用》
    首先:您根据前面所说grub-install来安装GRUB到/boot所在的分区;要仔细看文档,/boot是不是处于一个独立的分区是重要的,执行的命令也不同;
    其次:要执行grub ,然后通过 root (hd[0-n],y)来指定/boot所位于的分区,然后接着执行 setup (hd0),这样就写入MBR了,比如下面的例子;
    grub>root (hd0,6)
    grub>setup (hd0)
    grub>quit

    重新引导就会再次出现MBR的菜单了或命令行的提示符了;

    2、如果出现GRUB提示符,而不出现GRUB的菜单,如何引导系统;

    存在的问题可能是/boot/grub/menu.lst丢失,要自己写一个才行;您可以用命令行来启动系统,进入系统后写一写menu.lst就OK了。前面已经谈过了;
    写好后还要建一个grub.conf的链接,如下:
    [root@localhost ~]# cd /boot/grub
    [root@localhost grub]# ln -s menu.lst grub.conf

    八、关于GRUB的未尽事宜;

    GRUB有很多内容,比如对BSD的引导,还有一些其它指令的用法,我并没有在本文提到;主要我目前还未用到,如果您需要了解更多,请查看 《GNU GRUB 手册和FAQ》

    九、关于本文;

    本 文前后写了三四天,中间发现并不能把Linux设备的两种表现形式说的清楚,于是被迫写了《在Linux系统中存储设备的两种表示方法》;由于没有BSD 系统,所以没有写关于BSD的引导;如果正在用BSD的弟兄如果有时间不妨写一写;写的时候注意文档的结构,这样方便大家的阅读;
    GRUB有很多内容,需要大家慢慢的学习和研究;有的弟兄抑制GRUB,说不如NTLOADER,其实这是错误的;如果您想学习和使用Linux就得学习和适应Linux的操作;习惯成自然,如果您抵制学习Linux,那可能您永远会说“Linux不如Windows”;

    十、参考文档;

    《GNU GRUB 手册和FAQ》

    十一、相关文档;

    《以WINGRUB 引导安装Fedora 4.0 为例,详述用WINGRUB来引导Linux的安装》
    《系统引导管理器GRUB学习笔记》
    《如何为GRUB系统引导管理器加上密码》
    《在Linux系统中存储设备的两种表示方法》
    《合理规划您的硬盘分区》
    《系统引导过程及硬盘分区结构论述》
    《Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍》
    《实例解说 fdisk 使用方法》

    展开全文
  • grub

    千次阅读 2006-05-31 14:49:00
    Grub 源代码分析 http://www.linuxsir.org/bbs/showthread.php?t=170348grub三步通(转)################## # GRUB的优点 # ################## GRUB 是引导装入器(boot loader) -- 它负责装入内核并引导 Linux ...

    Grub 源代码分析

    http://www.linuxsir.org/bbs/showthread.php?t=170348

    grub三步通(转)

    ##################
    # GRUB的优点 #
    ##################
    GRUB 是引导装入器(boot loader) -- 它负责装入内核并引导 Linux 系统。GRUB 还可以引导其它操作系统,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT 和 2000。尽管引导操作系统看上去是件平凡且琐碎的任务,但它实际上很重要。如果引导装入器不能很好地完成工作或者不具有弹性,那么就可能锁住系统,而无法引导计算机。另外,好的引导装入器可以给您灵活性,让您可以在计算机上安装多个操作系统,而不必处理不必要的麻烦。
    GRUB 是一个很棒的boot loader。它有许多功能,可以使引导过程变得非常可靠。例如,它可以直接从 FAT、minix、FFS、ext2 或 ReiserFS 分区读取 Linux 内核。这就意味着无论怎样它总能找到内核。另外,GRUB 有一个特殊的交互式控制台方式,可以让您手工装入内核并选择引导分区。这个功能是无价的:假设 GRUB 菜单配置不正确,但仍可以引导系统。哦,对了 -- GRUB 还有一个彩色引导菜单。

    更令人惊讶的是,这是一个自由软件!!!

     

    ##################
    # GRUB菜单 #
    ##################
    先来看一个例子,这是位于/boot/grub/目录下的menu.lst文件。
    此文件将在开机是产生一个菜单,包含有Debian linux,Windows2000,RedHat linux和 Mandrake linux,共四个选择项。我一共分了8个区,一个fat16(0x6),一个ntfs(0x7),三个ext2fs分区(0x83),一个swap分区(0x82)。ntfs用来装win2000,三个ext2fs装了三个linux,c盘fat16分区没有装任何东西。
    #例子由此开始

    ######################
    # #
    # 一个GRUB configure 的例子 #
    # #
    ######################

    timeout 10
    default 2


    # --> Debian linux <--

    title Debian linux
    root (hd0,2)
    kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro
    initrd /boot/initrd-2.2.18.gz


    # --> Debian END <--

    # --> Windows 菜单选项 <--

    title Windows2000
    root (hd0,0)
    chainloader +1

    # --> Winddows 结束 <--

    # --> RedHat linux 菜单选项 <--

    title RedHat linux
    root (hd0,8)
    chainloader +1 # 在硬盘主引导分区装了lilo,所以也用了chainloader。

    # --> RedHat linux 结束 <--

    # --> Mandrake linux 菜单选项 <--

    title Mandrake linux
    root (hd0,5)
    kernel /boot/vmlinuz-2.4.3-20mdk root=/dev/hda6 ro
    initrd /boot/initrd-2.4.3-20mdk.img

    # --> Mandrake linux 结束 <--


    #例子到此结束

    以符号井"#"开头的行表示被注释掉,没有任何意义。

    timeout表示默认等待的时间,这儿是10秒钟。超过10秒,用户还没有作出选择的话,系统将自动选择默认的操作系统。

    默认的操作系统就是由default控制的。default后加一个数字n,表明是第n+1个。需要注意的是,GRUB中,计数是从0开始的,第一个硬盘是hd0,第一个软驱是fd0,等等。所以,default 2 表示默认的操作系统在这儿是 Redhat linux。

    接下来,正如你所想象的,title表示的是“Debian linux”菜单项。root (hd0,2)表示第一个硬盘,第三个分区。这儿的root 于linux的root分区及其不同,此root非彼root也!

    在 Linux 中,当谈到 "root" 文件系统时,通常是指主 Linux 分区。但是,GRUB 有它自己的 root 分区定义。GRUB 的 root 分区是保存 Linux 内核的分区。这可能是您的正式 root 文件系统,也可能不是。我们讨论的是 GRUB,需要指定 GRUB 的 root 分区。进入 root 分区时,GRUB 将把这个分区安装成只读型,这样就可以从该分区中装入 Linux 内核。GRUB 的一个很“酷”的功能是它可以读取本机的 FAT、FFS、minix、ext2 和 ReiserFS 分区。

    到目前为止,您可能会感到一点疑惑,因为 GRUB 所使用的硬盘/分区命名约定与 Linux 使用的命名约定不同。在 Linux 中,第一个硬盘的第五个分区称作 "hda5"。而 GRUB 把这个分区称作 "(hd0,4)"。GRUB 对硬盘和分区的编号都是从 0 开始计算。另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。现在,可以发现如果要引导 Linux 硬盘 hda5,应输入 "root (hd0,4)"。

    知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。
    kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro说明/boot/vmlinuz-2.2.18 就是要载入的内核。后面的都是传递给内核的参数。root=/dev/hda3就是linux的硬盘分区表示法,ro是以readonly的意思。
    initrd用来初始的linux image,并设置相应的参数。

    是不是感觉很简单啊!再来看一看windows的定义段吧。
    这里,我添加了一项来引导 Windows2000。要完成此操作,GRUB 使用了“链式装入器”(chainloader)。链式装入器从分区 (hd0,0) 的引导记录中装入 win2000 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。

    我的RedHat linux在硬盘主引导分区装了lilo,所以也用了chainloader。

    GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把“color light-gray/blue ”加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试“color light-blue/red",惊喜吗? 有趣吧!

    ######################
    # GRUB的交互性 #
    ######################

     


    GRUB 最好的优点之一就是其强健的设计 -- 在不断使用它时请别忘了这点。如果更新内核或更改它在磁盘上的位置,不必重新安装 GRUB。事实上,如有必要,只要更新 menu.lst 文件即可,一切将保持正常。

    只有少数情况下,才需要将 GRUB 引导装入器重新安装到引导记录。首先,如果更改 GRUB root 分区的分区类型(例如,从 ext2 改成 ReiserFS),则需要重新安装。或者,如果更新 /boot/grub 中的 stage1 和 stage2 文件,由于它们来自更新版本的 GRUB,很有可能要重新安装引导装入器。其它情况下,可以不必理睬!

    GRUB的最大的特点就是交互性特别强。在开机时,按一下“c”,将进入GRUB 控制台。显示如下:

    GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

    [ Minimal BASH-like line editing is supported. For the first word, TAB
    lists possible command completions. Anywhere else TAB lists the possible
    completions of a device/filename. ]

    grub>

    欢迎使用 GRUB 控制台。现在,再研究命令:
    我将通过GRUB 控制台绕过lilo来启动RedHat linux,

    grub> root (h

    现在,按一次 Tab 键。如果系统中有多个硬盘,GRUB 将显示可能完成的列表,从 "hd0" 开始。如果只有一个硬盘,GRUB 将插入 "hd0,"。如果有多个硬盘,继续进行,在 ("hd2") 中输入名称并在名称后紧跟着输入逗号,但不要按 Enter 键。部分完成的 root 命令看起来如下:

    grub> root (hd0,

    现在,继续操作,再按一次 Tab 键。GRUB 将显示特定硬盘上所有分区的列表,以及它们的文件系统类型。在我的系统中,按 Tab 键时得到以下列表:

    grub> root (hd0, (tab,按tab一下键)
    Possible partitions are:
    Partition num: 0, Filesystem type is fat, partition type 0x6
    Partition num: 2, Filesystem type is ext2fs, partition type 0x83
    Partition num: 4, Filesystem type unknown, partition type 0x7
    Partition num: 5, Filesystem type is ext2fs, partition type 0x83
    Partition num: 6, Filesystem type is fat, partition type 0xb
    Partition num: 7, Filesystem type is fat, partition type 0xb
    Partition num: 8, Filesystem type is ext2fs, partition type 0x83
    Partition num: 9, Filesystem type unknown, partition type 0x82

    如您所见,GRUB 的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解 GRUB 新奇的硬盘和分区命名语法,然后就可以继续操作了
    grub> root (hd0,8)
    现在已安装了 root 文件系统,到装入内核的时候了

    grub> kernel /boot/vmlinuz-2.4.2 root=/dev/hda5 ro
    [Linux-bzImage, setup=0x1200, size=0xe1a30]

    您已经安装了 root 文件系统并装入了内核。现在,可以引导了。只要输入 "boot",Linux 引导过程就将开始。是不是很cool啊,GRUB的menu.lst更像一个linux下的脚本程序。


    #####################
    # GRUB启动盘 #
    #####################
    要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建 ext2 文件系统。然后,将其安装,并将一些 GRUB 文件复制到该文件系统,最后运行 "grub" 程序,它将负责设置软盘的引导扇区。准备好了吗?

    将一张空盘插入 1.44MB 软驱,输入:

    # mke2fs /dev/fd0
    创建了 ext2 文件系统后,需要安装该文件系统:

    # mount /dev/fd0 /mnt/floppy
    现在,需要创建一些目录,并将一些关键文件(原先安装 GRUB 时已安装了这些文件)复制到软盘:

    # mkdir /mnt/floppy/boot
    # mkdir /mnt/floppy/boot/grub
    # cp /boot/grub/stage1 /mnt/floppy/boot/grub
    # cp /boot/grub/stage2 /mnt/floppy/boot/grub
    再有一个步骤,就能得到可用的引导盘。

    在linux bash中,从 root 用户运行“grub”,该程序非常有趣并值得注意,因为它实际上是 GRUB 引导装入器的半功能性版本。尽管 Linux 已经启动并正在运行,您仍可以运行 GRUB 并执行某些任务,而且其界面与使用 GRUB 引导盘或将 GRUB 安装到硬盘 MBR 时看到的界面(即GRUB控制台)完全相同。
    在 grub> 提示符处,输入:

    grub> root (fd0)
    grub> setup (fd0)
    grub> quit

    现在,引导盘完成了。
    如果要把GRUB装到硬盘上,也很容易。这个过程几乎与引导盘安装过程一样。首先,需要决定哪个硬盘分区将成为 root GRUB 分区。在这个分区上,创建 /boot/grub 目录,并将 stage1 和 stage2 文件复制到该目录中,可以通过重新引导系统并使用引导盘,或者使用驻留版本的 GRUB 来执行后一步操作。在这两种情况下,启动 GRUB,并用 root 命令指定 root 分区。例如,如果将 stage1 和 stage2 文件复制到 hda5 的 /boot/grub 目录中,应输入 "root (hd0,4)"。接着,决定在哪里安装 GRUB -- 在硬盘的 MBR,或者如果与 GRUB 一起使用另一个“主”引导装入器,则安装在特定分区的引导记录中。如果安装到 MBR,则可以指定整个磁盘而不必指定分区,如下(对于 hda):

    grub> setup (hd0)

    如果要将 GRUB 安装到 /dev/hda5 的引导记录中,应输入:

    grub> setup (hd0,4)

    现在,已安装 GRUB。引导系统时,应该立即以 GRUB 的控制台方式结束(如果安装到 MBR)。现在,应创建引导菜单,这样就不必在每次引导系统时都输入那些命令。

     

    小结:在这里只是介绍了 GRUB 的一部分。例如,可以使用 GRUB 来执行网络引导,引导 BSD 文件系统,或更多操作。另外,GRUB 有许多配置和安全性命令也很有用。如需所有 GRUB 功能的完整描述,请阅读 GRUB 出色的 GNU 文档。只要在 bash 提示中输入 "info grub" 就可以阅读该文档。


    有用的一些信息:xosl是一个支持鼠标的图形界面boot loader,可以于system command和boot manager相比,
    网址是www.xosl.org

    GRUB的下载:ftp://alpha.gnu.org/gnu/grub/


    再补充:三种硬盘安装方法的 grub
    命令集(采用任何一种都可以的,随便你喜欢哪个方法):

    1。用 hd.img 安装,这需要用到 grub for dos 的软盘仿真功能:

    grub> map (hd0,0)/hd.img (fd0)
    grub> chainloader (hd0,0)/hd.img
    grub> rootnoverify (fd0)
    grub> boot

    2。用 vmlinuz 和 hd.rdz 两个文件来安装(无需使用 grub for dos,用 GNU 原来的
    GRUB 都管用):

    grub> kernel (hd0,0)/vmlinuz ramdisk_size=128000 root=/dev/ram3
    automatic=method:disk acpi=ht vga=788
    grub> initrd (hd0,0)/hd.rdz
    grub> boot
    注意 kernel 一行很长,不要截断成两行。还要注意上述命令都假定这些文件位于
    (hd0,0) 的根目录,如果你的不同,当然要作适当的修改
    来源:LinuxEden


    3.首先下载grub for dos(http://grub.linuxeden.com),其最新版本支持ntfs分区,而且可以利用ntloader调用,比如winxp的引导菜单.
    提取grldr到c:/下;
    修改boot.ini,加入 C:/GRLDR=Boot Grub (方法:在桌面我的电脑点右键--属性--高级--启动和故障恢复-设置--编辑,不用到c盘去找了,麻烦);
    在c盘根目录下建立/boot/grub文件夹,建立menu.lst文本文件;
    把ML的iso放在vfat分区,提取mbvmlinuz,mbinitrd-hd.gz与iso都放在根目录下 ;
    修改menu.lst,加入
    代码:

     title Magci linux1.2-setup
          kernel (hd0,6)/mbvmlinuz ro root=/dev/ram0  ramdisk_size=32000 vga=788
          initrd (hd0,6)/mbinitrd-hd.gz

    (hd0,6)为我的放置iso和mbvmlinuz,mbinitrd-hd.gz的分区,修改成你的
    注意kernel后有个空格 ;
    重启,选择boot grub,选择Magic linux1.2-setup ;
    后面的我就不说了,按照提示一步一步来就行了;
    当然你可以在安装成功后,修改menu.lst,加入你的ML启动项,你就可以用grub
    for dos 启动你的ML。


    ################## ################## ################## ################## ################## ##################
    我的无光驱软驱,直接由iso文件安装mandriva的方法,(其它linux也同理)。
    首先,需要把第一张cd中的install/alt1目录下的vmlinuz 和 all.rdz 解压出来。说明:这层目录下面还有alt0和alt2,它们安装了
    不同的内核,详情可见install下面的说明文件,(文件名忘记了)。

    其次,这种方法利用iso安装的原理基本上就是利用grub引导安装映象,那么我介绍我所知的三种方法:

    A,已经拥有了grub引导,比如原有的linux仍存在,而且是由grub引导系统的。(这种情况比较简单)。
    1,只要确定好上一步解压出来的vmlinuz 和 all.rdz在硬盘上的位置,比如第一块硬盘的第一个分区是/dev/hda1,那么改分区的位置在grub
    中就表示为(hd0, 0);
    2,然后就可以利用原来的grub引导系统,当出现grub引导菜单的时候,根据下面的提示,按 "c",会出现命令行式的grub,然后按照一下格式
    输入:(以第一步中的位置为例)
    kernel (hd0,0)/vmlinuz ramdisk_size=128000 root=/dev/ram3 automatic=method:disk acpi=ht vga=788  #注释,然后输入回车
    initrd (hd0,0)/all.rdz    #注释,然后输入回车
    boot                      #注释,然后输入回车                                                                          

    就可以看到引导安装开始了,方法A 结束。

    B,如果没有grub,但是有装好的windows(以winxp为例),也可以利用windows的c:盘下的boot.ini 结合 grub for dos引导安装。这里根据直接用winxp 引导 grub for dos,或者进入实dos再用grub for dos,可以分为一下两种情况。

    B1, winxp 的boot.ini + grub_for_dos中的grldr;
    在新版的grub_for_dos中,出现了一个文件grldr,它可以直接由winxp引导,实现引导grub,这样就不用安装grub了。方法如下:
    1, 把grub_for_dos中的grldr 和 boot目录拷贝到c盘,就是和boot.ini所在的分区的根目录下;
    2,编辑boot.ini,在最后加上一行,
    C:/GRLDR="grub for dos"
    3, 编辑boot/grub/menu.lst,如下:
    title mandriva install
    kernel (hd0,0)/vmlinuz ramdisk_size=128000 root=/dev/ram3 automatic=method:disk acpi=ht vga=788
    initrd (hd0,0)/all.rdz
    注意,为了方便,也可以直接把menu.lst放在grldr所在的分区根目录。
    4, 重启,然后在winxp的引导菜单选grub for dos就可以引导安装了。

    B2, winxp的boot.ini + vfloppy + grub_for_dos
    1,这种方法是首先在winxp中安装vfloppy,方法就不介绍了,这样在winxp引导菜单中选vfloppy对应的项,就可以进入实dos中了;
    2,在dos中运行grub_for_dos中的grub.exe,可以直接指定由B1中编辑好的menu.lst,这样比较方便:
    grub --config-file=(hd0,0)/boot/grub/menu.lst ,运行就可以引导安装了。


    对于方法A和B,当引导安装开始后,只要指定系统安装所需的iso文件所需的位置就可以了。

    以上方法所需要的软件,可以在这里下载,http://lsec.cc.ac.cn/~peace/service/software/win4linux.rar ,当然也可以在网上下载更新
    的版本。

    再补充 不用grub,直接用u盘引导从硬盘安装linux的方法。
    1),这里利用mandriva提供的all.img,一般来说,解压cd1,在cd1/install/image/all.img;
    2),插上U盘,搞清楚U盘的设备号,用mount命令即可,我这里是/dev/sda1;
    3),用root,执行 dd if=path/all.img of=/dev/sda1即可;
    4),用u盘引导,进入图形化安装过程,输入iso文件所在的位置即可。

    展开全文
  • grub2与grub区别

    万次阅读 2016-05-13 17:41:46
    GRUB legacy(版本为0.97)是指GRUB,而非GRUB2检测版本:$ grub-install -v grub-install (GNU GRUB 1.98-1ubuntu10)GRUB2与GRUB的区别:1.GRUB2引导菜单启动项是从/boot自动生成的,不是有menu.lst配置的。...
    • 关于版本:
    • GRUB2 使之版本号为1.98之后的grub;GRUB legacy(版本为0.97)是指GRUB,而非GRUB2,grub是指 grub1.97 和以前的,grub 2 指的是 grub1.98和以后的,现在已经发布grub2.00 了。一般还是把grub2 称作grub。

    • 注意,目前我所知道的grub 2 一般用于linux下,windows下继续使用古董 grub4dos0.4.4 顶多使用chenall网友修改的 0.4.5 0.4.6。grub4dos应该是从grub1.97修改到windows下的

    • 检测版本:
    • $ grub-install -v grub-install (GNU GRUB 1.98-1ubuntu10)
    • GRUB2与GRUB的区别:
    • 1.GRUB2引导菜单启动项是从/boot自动生成的,不是有menu.lst配置的。
      2.执行grub-update之后会自动更新启动项列表,自动添加有效的操作系统项目
      3.分区编号发生变化:第一个分区现在是1而不是0,但第一个设备仍然以0开始计数,如hd0

    • 配置文件的不同更为明显:
    • /boot/grub/menu.lst - 已经被/boot/grub/grub.cfg代替。
      /boot/grub.cfg - 即使是root也不要编辑它,它在每次update-grub后自动生成。
      /etc/default/grub - 改变引导菜单外观的主要配置文件
      /etc/grub.d/ - 各种用于生成grub.cfg的脚本文件,每次update-grub时会执行里面的文件
      下面列出几个有用的:
      /etc/grub.d/40_custom - 用户自定义的配置文件模板,它不会在update-grub之后被覆盖。

    • 相关命令:
    • grub-install [OPTION] <install_device>例如,下面这条语句可以在设备sda上恢复grub,详见重装Windows后,修复Ubuntu引导菜单

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


      update-grub等价于:(在11.10中,这条指令竟然还是去更新/boot/grub/menu.lst)

    • sudo make-kpkg --initrd --revision 01fcc(必须数字开头)--append-to-version -20120224 --config menuconfig kernel_image modules_image

    • 在上层目录里找到deb安装包,用dpkg安装,生成vmlinuz后,再

      grub-mkconfig -o /boot/grub/grub.cfg
    • thinkpad@ubuntu:/boot/grub$ sudo grub-mkconfig -o /boot/grub/grub.cfg
      Generating grub.cfg ...
      Found linux image: /boot/vmlinuz-3.2.7-20120224
      Found initrd image: /boot/initrd.img-3.2.7-20120224
      Found linux image: /boot/vmlinuz-3.0.0-12-generic
      Found initrd image: /boot/initrd.img-3.0.0-12-generic
      Found Windows 7 (loader) on /dev/sda1
      Skipping Windows 7 (loader) on Wubi system
      done

    展开全文
  • 1. GRUB legacy V0.97, /boot/grub/grub.conf Grub0.97/REHL5.x/REHL6.x/Centos5.x/Centos6.x/Ubuntu6 root (hd0,0) install /grub/stage1 (hd0) /grub/stage2 p (hd0,0)/menu.lst 2. Grub4dos-0.4.4 Grldr with ....

    1. GRUB legacy V0.97, /boot/grub/grub.conf

    Note: MBR only, no support of NTFS, no support for GPT disk
    Grub0.97/REHL5.x/REHL6.x/Centos5.x/Centos6.x/Ubuntu6

    root (hd0,0)
    install /grub/stage1 (hd0) /grub/stage2 p (hd0,0)/menu.lst

    2. Grub4dos-0.4.4  Grldr with ntldr/Windows, use menu.lst
    Grub0.99/Support NTFS, command: fallback/chainloader/find --set-root etc 

    no support for GPT disk

    WindowsXP: fdisk /mbr from PE ===> ntldr ===> grldr from boot.ini

    Install from bootice into USB disk

    3. New Grub2 for Linux 

    Grub2  V1.98/V2.x/Ubuntu9~14/RHEL7
    Support uefi and gpt

    grub2的公共配置项  /etc/default/grub  

    # 注释掉下面这行将会显示引导菜单
    #GRUB_HIDDEN_TIMEOUT=0

    隐藏引导菜单
    GRUB_HIDDEN_TIMEOUT=X
    注释:启动过程中,黑屏X秒后引导默认的启动项
    注意1:如果等号后面不跟任何值,也将会显示引导菜单

    注意2:修改后执行update-grub生效 

    注意3:/boot/grub/grub.cfg, 在执行update-grub自动生成

     

    lake@lake-Latitude-5491:~$ ls -l /usr/sbin/update-grub*
    -rwxr-xr-x 1 root root 64 3月  16  2016 /usr/sbin/update-grub
    lrwxrwxrwx 1 root root 11 11月 27 18:21 /usr/sbin/update-grub2 -> update-grub
    lake@lake-Latitude-5491:~$ cat /usr/sbin/update-grub
    #!/bin/sh
    set -e
    exec grub-mkconfig -o /boot/grub/grub.cfg "$@"
    lake@lake-Latitude-5491:~$

     

    ## Add customized menu for Grub2
    /etc/grub.d/40_custom

     

     

    #Example for Centos7 ISO boot from Grub2

    #!/bin/sh
    #/etc/grub.d/40_custom
    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.
     
    set default="1"
    set ext4_data_uuid="aaaaaaaa-08bc-4163-a75b-fd6620a08ee2" #通过blkid查看ext4分区的uuid
    set isopath=/home/test/Downloads/os  # 定义iso文件存放的路径
    insmod search_fs_uuid
    search --no-floppy --set=centos_iso_part --fs-uuid $ext4_data_uuid
    set centoslivedvd=CentOS-7-x86_64-LiveGNOME-1810.iso          # centosliveGNOME版镜像
    set centosdvd=CentOS-7-x86_64-DVD-1708.iso          # centosDVD版镜像
    function load_video {
      insmod efi_gop
      insmod efi_uga
      insmod video_bochs
      insmod video_cirrus
      insmod all_video
    }
     
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt
    insmod ext2
    insmod iso9660
    insmod loopback
    set timeout=10
    ### END /etc/grub.d/00_header ###
     
     
    ### BEGIN /etc/grub.d/10_linux ###
     
    menuentry 'Start CentOS-7-LiveGnome-1810' --class fedora --class gnu-linux --class gnu --class os {
    set isofile="$isopath/$centoslivedvd"
    loopback loop ($centos_iso_part)$isofile
    probe -l (loop) --set=loopuuid
    set id=$loopuuid
    linuxefi (loop)/isolinux/vmlinuz0 root=live:CDLABEL=$id rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0 iso-scan/filename=${isofile}
    initrdefi (loop)/isolinux/initrd0.img
    }
     
    menuentry 'Start CentOS-7-1810_x86_64-DVD-1708' --class fedora --class gnu-linux --class gnu --class os {
    set isofile="$isopath/$centosdvd"
    loopback loop ($centos_iso_part)$isofile
    probe -u (loop) --set=loopuuid
    set id=UUID=$loopuuid
    linuxefi (loop)/images/pxeboot/vmlinuz iso-scan/filename=$isofile inst.stage2=hd:$id rootfstype=auto rw rd.live.image quiet rhgb
    initrdefi (loop)/images/pxeboot/initrd.img
    }

     

     
    展开全文
  • grubgrub2区别

    千次阅读 2018-12-08 14:45:40
    更新grub配置文件命令: update-grub grub2是版本号在1.98之后的grubgrub一般指grub legacy,版本号为0.97。 grub2新增加功能: 动态加载模块; 新的配置文件结构,更好地支持UUID; /boot/grub/menu.1st被/...
  • 开机出现grub rescue,修复办法

    万次阅读 多人点赞 2016-08-16 23:47:41
    开机自动进入了grubrescue说明,引导没有正常启动,常见的情况是找不到引导。 本机出现grubrescue问题是由于磁盘分区(GHOST备份时也会造成)导致grub引导文件找不到。只需要重新指定系统的引导文件即可。 grub ,...
  • 在/boot/grub[2]/grub.cfg 下添加以下行并修改对应数字进行引导 windows menuentry "Other Linux" { set root=(hd0,1) #hd0表示电脑的第一块磁盘;数字1表示磁盘上的第一个分区,可以使用fdisk查看...
  • 在Ubuntu下面经常使用update-grub来更新调整后的grub设置以生效,结果到了CentOS7下面居然找不到这个命令, 在centos7下的update-grub命令等同效果的是:grub2-mkconfig -o /boot/grub2/grub.cfg 这个命令。 还...
  • 怎样修复grub开机引导(grub rescue)

    万次阅读 2019-07-18 11:29:56
    很多时候,特别是在linux调整分区后,开机重启时会...由于分区调整或分区UUID改变造成grub2不能正常启动,从而进入修复模式了(grub rescue),也称救援模式。 在救援模式下只有很少的命令可以用:set , ls , ins...
  • grub2设置默认启动项Linux booting is usually controlled by Grub or the new Grub2. Setting the default booting entry is a frequent operations. Here, we introduce how to set the default entry in Grub2 ...
  • GRUB2

    千次阅读 2013-03-06 23:26:25
    GRUB2 Grub2配置
  • 出现错误具体原因未知,但开机不能引导肯定是grub配置文件出错,/boot/grub2/grub.cfg解决方法:一,插入安装U盘或者光盘,进入救援模式,重装grub重新生成grub.cfg文件:grub2-install /dev/sda*(boot目录所在...
  • CentOS加密GRUB&清除GRUB加密

    千次阅读 2018-05-22 18:46:27
    **默认情况下,Linux系统GRUB菜单不需要任何密码就可以进行编辑并修改root...Linux系统中**grub.conf** 配置文件为GRUB菜单设置密码保护,在/boot/grub/grub.conf 或/etc/grub.conf文件中的title字段上面新增一行。 ...
  • 遇到了grub2引导grub1

    2016-06-06 02:57:59
    之前同事把genode、nova、vbox的vdi三个合起来做成了一个u盘启动的系统,具体不太懂,现在要把u盘启动变为硬盘启动,需要grub来引导,由于之前u盘启动过,所以给我的文件里有grub1的文件menu.lst和stage2_eltorito,...
  • linux grub grub2对比

    千次阅读 2018-04-11 00:58:02
    grub测试机OS为Ubuntu 14.04.1 LTS x86_64 磁盘分区情况为:Filesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 19736236 3676896 15033756 20% /none 4 0 4 0% /sys/fs...
  • grub源码分析之grub-mkimage

    千次阅读 2019-04-18 19:17:55
    转载于 ”https://blog.csdn.net/conansonic/article/details/78760614“ ”... 本章开始分析grub-mkimage的源码,首先来看grub-mkimage文件的生成过程,从Makefile开始看。grub-mkimage目标定...
  • Grub2】制作UEFI版本Grub2引导

    万次阅读 2017-07-04 10:08:11
    本来不想设置积分,无奈最低只能设置1分,大家见谅。没有积分的还是从grub2官网下载按照...首先要从grub官网下在grub2,grub2中包含所有grub2相关的命令,可以用来生成grub2引导,这里着重介绍制作UEFI版本的grub2...
  • linux更改grub主题

    万次阅读 2019-09-08 13:47:05
    linux更改grub主题 在这个网站下载主题 将主题解压后,移动到/boot/grub下,找到theme.txt所在的位置 打开 /etc/default/grub 文件 打开grub后,更改GRUB_THEME GRUB_THEME=/boot/grub/poly-dark-master/...
  • GrubGrub引导的安装配置

    千次阅读 2018-12-17 14:30:50
    Grub引导是安装Linux经常需要的东西,有时无法进入linux系统了,也没有安装镜像,那么也可以用Grub来进入系统,修复grub2引导。   Grub安装步骤 一、下载必备软件  软件主要有2个:  1、bootice(大部分pe里都有...
  • grub rescue模式下修复grub启动项

    千次阅读 2019-06-23 19:00:25
    主要是双系统下windows升级把grub启动项破坏了, 一开机直接进入grub rescue模式 , 在救援模式下只有很少的命令可以用: (1) set 查看环境变量 , 这里可以查看启动路径和分区 (2) ls 查看设备 (3) insmod 加载模块...
  • Ubuntu开机取消Grub引导界面

    千次阅读 2021-01-17 13:24:56
    Ubuntu开机取消Grub引导界面
  • 默认10秒,有时有点措手不及,这里改成60秒 ...超级权限修改 /etc/default/grub 文件内容。(权限修改保存文件简单方法sudo gedit /etc/default/grub) 终端运行 sudo update-grub 重启可以看到等待时间变长 ...
  • GRUB2模块对于GRUB-2.0.2版本来说,官方提供的模块一共有200多个,这些模块大致可以分为以下几类(模块间的依赖关系位于"moddep.lst"文件中):命令模块[command.lst]提供了各种不同的功能,类似标准Unix命令,一共...
  • 一、Ubuntu的安装与引导 ... a) grub安装方法  提取casper文件夹中的initrd.lz和vmlinuz.efi(支持UEFI),将文件提取出来和ISO一起拷贝到一个fat32分区根目录(假设为第一个磁盘的第3个分区)。  ...
  • ubuntu更新grub

    千次阅读 2019-06-28 16:41:42
    命令 sudo update-grub 手动修改grub sudo gedit /boot/grub/grub.cfg   转载于:https://www.cnblogs.com/niocai/archive/2011/07/16/2107987.html
  • Grub2】UEFI添加grub2引导

    万次阅读 2018-04-09 11:34:31
    准备材料:下载grub-2.02-for-windows.zip第一步:将grub-2.02-for-windows.zip解压至d盘根目录。以管理员身份运行cmd。输入以下指令将当前路径切换至grub-2.02-for-windows文件夹下。cd /d d:\grub-2.02-for-...
  • Grub2 grub.cfg详解

    2015-01-29 02:36:17
    Grub2 grub.cfg详解  | grub.cfg详解 grub.cfg 默认为只读,要修改前先设为可写 sudo chmod +w /boot/grub/grub.cfg set default=0 #默认为0 insmod jpeg #添加jpg支持,如要使用png或tga...
  • Grub2】Grub2主题美化

    千次阅读 2018-01-03 17:22:34
    Grub主题美化其实很简单,结构性很强,比较有条理,逐步设置就能做出满意的theme。 资料链接: https://www.gnu.org/software/grub/manual/grub/grub.html#Theme-Elements ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,361
精华内容 11,744
关键字:

grub