选择特殊符号

选择搜索类型

热门搜索

首页 > 百科 > 建设工程百科

grub

GNU GRUB(GRand Unified Bootloader简称"GRUB")是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

grub基本信息

grub命令特性

GRUB可动态配置;它在启动时加载配置信息,并允许在启动时修改,如选择不同的内核和initrd。为此目的,GRUB提供了一个简单的类似Bash的命令行界面,它允许用户编写新的启动顺序。

GRUB非常轻便。它支持多种可执行格式;它除了可适用于支持多启动的操作系统外,还通过链式启动功能支持诸如Windows和OS/2之类的不支持多启动的操作系统。GRUB支持所有的Unix文件系统,也支持Windows适用的FAT和NTFS文件系统,还支持LBA模式。GRUB允许用户查看它支持的文件系统里文件的内容。

GRUB具有多种用户界面。多数Linux发行版利用GRUB对图形界面的支持,提供了定制的带有背景图案的启动菜单,有时也支持鼠标。通过对GRUB的文字界面的设定,可以通过串口实现远程终端启动。

GRUB可以从网络上下载操作系统镜像,因此可以支持无盘系统。GRUB支持在启动操作系统前解压它的镜像。

与其它启动器不同,GRUB可以通过GRUB提示符直接与用户进行交互。载入操作系统前,在GRUB文本模式屏幕下键入c键可以进入GRUB命令行。在没有作业系统或者有作业系统而没有"menu.lst"文件的系统上,同样可以进入GRUB提示符。通过类似bash的命令,GRUB提示符允许用户手工启动任何操作系统。把合适的命令记录在"menu.lst"文件里,可以自动启动一个操作系统。

GRUB拥有丰富的终端命令,在命令行下使用这些命令,用户可以查看硬盘分区的细节,修改分区设置,临时重新映射磁盘顺序,从任何用户定义的配置文件启动,以及查看GRUB所支持的文件系统上的其它启动器的配置。因此,即便不知道一台电脑上安装了什么,也可以从外部设备启动一个操作系统。

GRUB采用滚动屏幕选择想要启动的操作系统。通过向"menu.lst"文件中添加相关信息,GRUB可以控制150或者更多的启动选项,在启动时用方向键进行选择。

通过链式启动,一个启动器可以启动另一个启动器。GRUB通过2到3行的命令就可以从DOS、Windows、Linux、BSD和Solaris系统启动。

尽管GRUB为类Unix系统进行了编译和打包,但也有供DOS和Windows使用的GRUB。GRUB也可以不附带任何操作系统而作为孤立系统安装。从CD上启动时运用GRUB需要1个文件,而从软盘、硬盘和USB设备上启动时需要2个文件。这些文件可以在任何支持GRUB的Linux CD上找到,用户可以很容易的找到它们。

查看详情

grub造价信息

  • 市场价
  • 信息价
  • 询价

grub文件系统

一些用户常困惑于GRUB中根文件系统(root filesystem)这一术语的用法。GRUB的根文件系统与Linux的根文件系统是没有关系的!

查看详情

grub​引导过程

由硬盘启动时,BIOS通常是转向第一块硬盘的第一个扇区,即主引导记录(MBR)。

装载GRUB和操作系统的过程,包括以下几个操作步骤:

装载记录

基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。

装载Grub

这第二引导装载程序实际上是引出更高级的功能,以允许用户装载一个特定的操作系统。

装载系统

如linux内核。GRUB把机器的控制权移交给操作系统。

不同的是,微软操作系统都是使用一种称为链式装载的引导方法来启动的,主引导记录仅仅是简单地指向操作系统所在分区的第一个扇区。

设备名称

IDE硬盘用hd开始,SCSI硬盘用sd开头。软盘用fd开头。命名和linux不大一样。是从0算起。

(hd0,0)。表示C盘。

(hd0,4)。表示D盘。当然这里指的是(第一个逻辑分区,如果D盘也是主分区,应该写成hd0,1)

系统的第一个硬盘驱动器表示成(hd0),其上的第一个分区表示为(hd0,0),也就是说对于硬盘,采用(hdx,y)的形式来表示,x、y都是从0开始计数的,x表示硬盘号,y表示分区号。

由于主分区只能有四个,所以第一硬盘的四个主分区分别用(hd0,0)~(hd0,3)来表示;逻辑分区则从(hd0,4)开始算,即第一逻辑分区用(hd0,4),第二逻辑分区用(hd0,5)来表示,依次类推。

一般机子的硬盘都是一个主分区,其余是逻辑分区。因此C盘用(hd0,0),D盘用(hd0,4)来表示。 光盘用(cd)表示,第一软驱用(fd0)表示。

文件的表示:( , ) /path/to/file

在Linux系统中,如ubuntu,(hdx,y)中的y是从1开始计数的。第一逻辑分区用(hd0,5),第二逻辑分区用(hd0,6)来表示

装置

Lilo

Grub

IDE1 master

hda, hda1, hda2

(hd0), (hd0,0), (hd0,1)

IDE1 slave

hdb, hdb1, hdb2

(hd1), (hd1,0), (hd1,1)

IDE2 master

hdc, hdc1, hdc2

(hd2), (hd2,0), (hd2,1)

IDE2 slave

hdd, hdd1, hdd2

(hd3), (hd3,0), (hd3,1)

查看详情

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接口

当GRUB环境开始载入第二步引导装载程序时,它寻找自己的配置文件(menu.lst)。当找到配置文件后,它使用这个配置文件建立一个要载入的操作系统的菜单列表, 然后显示引导菜单接口。 如果配置文件没有被找到,或者如果配置文件不能读取,那么GRUB将载入命令行接口。

菜单接口

在菜单接口上,按[e]键,对高亮菜单项中的命令进行编辑。按[c]键载入一个命令行接口。 添加(加在当前行后面(用[o]键),加在当前行前(用[0]键),编辑(用[e]键),删除(用[d]键)。

在所有的改变都完成后,用[Enter]键来执行这些命令,并引导操作系统。[Esc]键来放弃

命令行接口

命令接口

以下是几个常用命令:

boot - 引导先前已经被指定并载入的操作系统或链式装载程序。

chainloader - 将指定的文件作为一个链式装载程序载入。为了获取在一个指定分区第一 扇区内的文件,使用+1作为文件名。

displaymem - 显示当前内存的使用情况,这个信息是基于BIOS的。这个命令有助于确定系统在引导前有多少内存。

initrd - 使用户能够指定一个在引导时可用的初始RAM盘。当内核为了完全引导而需要某些模块时,这是必需的。

install p - 安装GRUB到系统的主引导记录。这个命令允许系统重启时出现GRUB接口。

(警告:install命令将覆盖主引导扇区中的其他信息。如果命令被执行,那么除了GRUB信息之外的其他用于引导其他操作系统的信息都将丢失。在执行这条命令前,确定你对它有正确的了解。)

kernel - 当使用直接载入方式引导操作系统时,kernel命令指定内核从GRUB的根文件系统中载入 。

比如 kernel /vmlinuz root=/dev/hda5

Vmlinuz是内核。。它从GRUB的根文件系统载入的,如(hd0,0)。同时,后面一个选项被传给内核。它指出当Linux内核载入时,内核的根文件系统应该是位于hda5,第一个IDE硬盘的第五个分区。

查看详情

grub手动启动

有时候grub出现问题,不能通过启动选项启动目标操作系统,以启动一个linux为例

按c键切换到命令行模式

grub> root (hd0,0) 设置根目录为第一硬盘的第一个分区

grub> kernel /boot/vmlinuz 设置内核文件,有的linux发行版会有一个名为wmlinuz的软连接指 向真正的内核文件

grub> initrd /boot/initrd 设置initrd文件,也有可能用软连接代替真正的文件名

grub> boot (hd0,0) 从硬盘启动

以上命令可以用tab键补全 根据实际情况有所不同

查看详情

grub命令

color - 设定在菜单中使用的颜色, 一种是作为前景色,一种作为背景色。可以简单地使用颜色名称,如red/black。比如:

color red/black green/blue

default - 默认项目的标题名称。如果菜单接口超时,那它将被载入。

fallback - 当这个命令被使用时,如果第一次尝试失败,那么这个项目的标题名称将被使用。

hiddenmenu - 这个命令被使用时,它不显示GRUB菜单接口,在超时时间过期后载入默认项。用户通过按[Esc]键,可以看到标准的GRUB菜单。

timeout - 这个命令设定了在GRUB载入由default命令指定的项目的时间间隔,以秒为单位。

splashimage - 它指定在GRUB引导时所使用的屏幕图像的位置。

title - 设定用来装载一个操作系统的一组特定命令的标题。

字符#用来在菜单配置文件放置注释。

查看详情

grub例子

这是个非常基本的用于引导Red Hat Linux或Microsoft Windows 2000的GRUB菜单配置文件可能如下所示:

安装wingrub

在安装软件到机器中时,就直接按它默认的安装,下一步、下一步就好了

在安装过程中会出现一个Base Setup的提示窗口,ChooseDrive即是grub配置文件的存放位置,一定要选一个(一般选择第一个,提醒你注意软件的标题栏,不同的选择会显 示的不一样),如果你选择cancel,则不会有menu.lst 文件产生(这个文件很重要),Base Setup提示窗口下面的copy stage files和keep old directory不点击也可以,它们的区别就是前者把grub文件夹中的文件和menu.lst一起放在新产生的grub文件夹下,而后者新产生的 grub文件夹中只有menu.lst ,如果不点击则只会产生只含menu.lst文件的grub文件夹,都点击则是copy stage files那种情况。

安装grub

GRUB的一个重要的特性是安装它不需依附一个操作系统;但是,这种安装需要一个Linux副本。由于单独工作,GRUB实质上是一个微型系统,通过链式启动的方式,它可以启动所有安装的主流操作系统。

与LILO不同,修改GRUB的配置文件后,不必把GRUB重新安装到MBR或者某个分区中。

在Linux中,"grub-install"命令是用来把GRUB的步骤1安装到MBR或者分区中的。GRUB的配置文件、步骤2以及其它文件必须安装到某个可用的分区中。如果这些文件或者分区不可用,步骤1将把用户留在命令行界面。

GRUB配置文件的文件名和位置随系统的不同而不同;如在Debian和OpenSUSE中,这个文件为/boot/grub/menu.lst, 而在Fedora和Gentoo中为/boot/grub/grub.conf。Fedora提供了一个从/etc/grub.conf到/boot/grub/grub.conf的符号链接。

除了硬盘外,GRUB也可安装到光盘、软盘和闪存盘等移动介质中,这样就可以带起一台无法从硬盘启动的系统。

软件使用

打开wingrub程序,选择 tools菜单,然后点击Install grub ,弹出一个对话框;如下图所示:

这里面有两个方法供选择;

A) 直接单击Boot From MBR Partion ,然后单击右边的下拉菜单;选择要把Linux系统安装在哪个分区中,再单击最下边install按钮。

在下拉列表框中,如果看到(hd0,0)或者(hd0,1)等,则选(hd0,0);如果只看到(hd0,1),说明计算机硬盘的第一个分区是NTFS的文件格式,如果看不到什么下拉列表框,就使用下面的办法,

B)选择Systerm Device ,在右边的下拉列表框中,选C:然后再选中BOOT FROM 下的BOOT.INI 单选按钮,在Title 中输入mygrub ;最后在 Time OUT 中输入30;

单击Install按钮,这样grub就安装好了。

grub的配置文件在c:\grub\中(如果你的不是,则可以从wingrub的标题栏看出),配置文件名为menu.lst ,这个配置文件起到决定性作用;所以一定要编辑好。

A和B还是有一些区别,A的方法是开机就能看到所有在menul.lst中的系统;而B,则必须按一下刚才所填写的mygrub ,然后才能看到在menu.lst所提到的系统。

【个人首选B项,因为A安装的grub会覆盖掉原有的启动引导程序,即重写了MBR,而B则是把原有的引导程序修改了,加了一个启动项。如果你想安 装两个系统,Windows为主,Linux为副,那么B就可以更好的实现。当然,在安装Linux时也要注意安装程序中有一个"配置高级引导装载程序选 项"就是对grub的安装位置进行设置。

▲▲▲配置启动文件▲▲▲

运行wingrub,单击菜单中的tools菜单选择Partition List(分区列表),在这里能了解到硬盘的分区情况,比如可能看到 FAT32的分区是(hd0,1)等,要把Linux的光盘映像文件保存在fat32分区中;通过这个能知道把光盘ISO存放到(hdX,Y)了,也能知 道(hdX,Y)所对应的Windows分区是C,是D,还是E。配置启动文件的过程如下:

1]先找一个FAT 32的分区,把下载下来的ISO直接放到分区的下面,不要放在任何目录中,这个分区里也不要存放其他文件。

2]在这个分区中,再新建一个文件夹,命名为linux,从下载的第一张Linux系统安装ISO文件isolinux中抽取 vmlinuz 和 initrd.img 两个文件,放到linux目录中: 注意只放这两个文件,不要再存放其他内容,如果放进其他的内容,有可能出现安装程序中途退出的情况。

注意:抽取文件可以使用WinRAR软件,另外,输入文件夹时文件夹名是小写;在输入menu.lst 文件名时,要用半角英文,标点之类的全是半角;title root kernel initrd 全是小写的英文;如果文件夹或文件名输入出错,在安装时安装程序会提示找不到文件。

编辑menu.lst

当打开menul.lst 时,可能里面已经有内容了,比如有个 timeout 10 ,如果没有则可以自己写上(这是开机等待进入系统的时间,为时10秒)。

root [开机根目录 / 所在的磁盘代号]

kernel [开机档案的所在地完整档名] [root=/dev/硬盘代号]

范例:

设定上面就是这样而已!所以,开机完毕之后,请将您的 kernel 文件名称(完整档名)与开机的根目录所在的磁盘代号记忆一下,那么下次就可以手动设定开机设定项目呢!但如果是 windows 方面的设定时,那就直接使用 chainloader 这个项目即可,有点像这样:

chainloader [硬盘代号] +1

范例:

menu.lst 文件的配置引导说明,通过menu.lst ,可以配置 Linux的启动和引导:也可以引导已经安装好的Linux系统。语法结构有以下的四条,举例如下:总共有两个书写格式,任选其一;

格式一:最简单:

title 行是在在开机时所看到的菜单,显示的就是 fc4install ,它要加在 title 的后面。title是必须保留的,它是grub的语法的标签,可以在title 后面写入想要添加的东西,这是可以自己定义的,比如 title fc4setup也是可以的。

root (hd0,1) 行使用 root开头,然后加一个空格,至于用户把vmlinuz和initrd.img 放在哪个分区了,可以打开 wingrub,单击tools菜单选择partioinlist (分区列表),在打开的对话框中查到。

kernel 命令行以kernel 开头,然后加一个空格,并在其后给定vmlinuz文件存放路径,这个命令行的作用是告诉计算机将使用(hd0,1)分区下的linux目录中的kernel 内核来启动;

initrd 行和 kernel 行类似;主要用于指明安装的文件放在哪个分区和哪个目录中,即在该命令后指定文件的安装目录。

基本的说明已经在上表当中了,这里需要在说明的是关于 default 开机档的计算。如果今天我有四个开机设定档,那么 default 算的是什么呢?就是『排序』啦!假如我底下依序出现的设定档 title 分别是 linux, linux-test, windows, failsafe 的话,那么开机的时候, grub 的选单就会显示:

其中,linux 就是 0 ,而 failsafe 就是 3 ,如果您要调整开机时后的选单顺序,就在 /boot/grub/menu.lst 修改一下他们的顺序即可!

格式二:比较麻烦一点:理解着看吧;

title 这行就是我们在开机时,所看到的菜单 ,显示的就是 FC4install ,要加在 title 的后面,title是必须保留的,是grub的语法的标签 ,我们可以在title 后面写我们想要加的东西,这是自己可以定义的,比如 title fc4setup也是可以的;

root 这行,在本例中是 root (hd0,1),这行就是我们打开 wingrub,点tools =》partioinlist (分区列表) 中查到的;我们通过这个知道我们把解压出来的 vmlinuz和initrd.img 所处的分区和路径;比如我的机器,我查到的是 (hd0,1),对应的Windows FAT 32分区是D,事实上,我的确把四个光盘映象都放在了 (hd0,1),也就是win中所看到的D盘; 并且我同样也把提取出来

vmlinuz 和initrd.img 放在了(hd0,1)中的linux目录中; 不知道自己存放提取出来的内容放在哪个分区了,就用 打开 wingrub,点tools =》partioinlist (分区列表) 中查看;

kernel 这行;注意在 kernel后面有个空格,接着写 vmlinuz所处的位置 ,在哪里呢?在 /dev/hda2,这个/dev/hda2是怎么来的?是由(hd0,1)而来的,如果您的显示的是 (hd0,2),那root=/dev/hda3,明白了吧,就是(hdX,Y)中的Y+1=Z,就是/dev/hdaZ ,再举一例:比如我们把提出来的vmlinuz 和initrd.img 放在了 (hd0,5)的linux 目录中,这时应该写 root=/dev/hda6 ;

有可能有的弟兄说,我放在了 (hd1,6)的分区,这怎么办?这个也不难,我们这里面的所提到的 (hdX,Y),中的X可能是0 、1、2等 ,所以对应的是 hdaZ ,hdbZ,hdcZ ,如果您看到的是(hd1,6) ,所以对应的是/dev/hdb7 。

initrd 这行,原样搬上就好;

完整menul.lst 应该如下:在这之中,引导Linux的,有两种写法,都在里面,哪种都是可以启动引导安装的;

这是第一种写法

这是第二种格式的写法

编辑好后,就可以进入引导安装,此时,如果系统仍然产生错误,例如出现找不到文件之类的提示。就需要查看文件存放路径是否正确,如果能够引导进入安装,则 需要选择ISO映像所存放的FAT32磁盘的分区,然后按Enter键执行安装。

在安装过程中,以下的几个情况是要注意的:

1、在FC4的安装过程,安装分区时要自定义,不要让系统自动分区;要自己指定Linux 安装到哪个分区。我们可以在用windows分区工具,分出两个空白区,一个要大一点,最好是10G 以上,另外一个是内存的两倍(对于小内存的机器来说,大内存的机器分上512M 就行了;在安装时,我们要把大的分区用来装系统,点一下那个分区,出现挂载点,选择/ ,然后格式化成 ext3或者 reiserfs 等文件系统;把小一点的分区格式化成swap ,这是Linux的交换区;

当然如果您有未用过的空白区,不用windows分区工具来分也行,在安装过程中,可以用linux的分区工具来划分,点几下鼠标就行了;这是对RH 和/FC 或者 的安装来说的,Madrake 也一样;

2、对于有些系统版本要把ISO抽取出来都放在一个目录中才能进行,比如Slackware 发行版;

3、看到大家反馈的情况,有的弟兄说中途退出与放ISO的分区的下有中文目录或者中文文件有关;如果找不出问题所在,就把ISO放在一个FAT32的空白分区上。

【安装成功后,只用保留文件名为GRLDR的文件,即可实现用Windows引导程序引导Linux。】

▲▲▲安装Fedora▲▲▲

重新启动电脑,就可以启动菜单,选择Fedora的安装启动选项进行安装。

查看详情

GRUB2特征

Grub 2 是新一代的Grub,它实现了一些Grub中所没有的功能:

1、模块化设计

不同于Grub的单一内核结构,Grub 2 的功能分布在很多的小模块中,并且能在运行时动态装载和卸除。

2、支持多体系结构

Grub 2可支持PC(i386), MAC(powerpc)等不同的体系机构,而且支持最新的EFI架构。

3、国际化的支持

Grub 2 可以支持非英语的语言。

4、内存管理

Grub 2 有真正的内存管理系统。

5、脚本语言

Grub 2 可以支持脚本语言,例如条件,循环,变量,函数等。

查看详情

GRUB2安装和使用

Grub 2的内核是符合multiboot标准的,因此可以在Grub中引导。

1、下载

解压到某个FAT分区的根目录,会生成/boot/grub目录,Grub 2的文件便在该目录下。

2、修改

/boot/grub/grub.cfg

这是Grub 2的配置文件,它的格式不同于menu.lst,以下是一个例子:

set timeout=20

set default=0

menuentry "Chainload First Part" {

set root=(hd0,1)

chainloader +1

}

menuentry "Load Linux at Second Part" {

set root=(hd0,2)

linux /vmlinuz root=/dev/hda2

initrd /initrd

}

如果你熟悉Grub,应该可以看明白里面的内容。要注意的是:

a、timeout, default等参数用变量来储存

d、菜单项由menuentry定义

c、第1个分区是(hd0,1)而不是(hd0,0)

d、当前支持的启动方式是chainload,linux和multiboot

3、在Grub中使用以下的命令进入Grub2

root (hd0,0)

kernel /boot/grub/core.img

boot

(hd0,0)请用存放Grub2的分区的名字来代替

4、进入Grub 2后,在菜单界面下输入 c 便可进入控制界面。

查看详情

GRUB2基本命令

lsmod

列表当前装载的模块

insmod mod_name

装载模块

rmmod mod_name

卸除模块

help [command]

显示帮助

ls [options] [dir]

列表目录。当不带参数时,显示的是所有的硬盘设备,带参数时,显示的是目录里的子目录和文件。

还有很多其它的命令,全部命令的列表在/boot/grub/command.lst里:

boot cat chainloader cmp . configfile export font halt hello help initrd

lsmod linux loopback ls lsmod module multiboot play reboot rescue rmmod

search set source terminal terminfo [ unset vbeinfo vbetest videotest

可以用help来看具体的用法

注意:

a、很大一部分命令都在模块里,如果输入时显示找不到命令,只需要用insmod 装载相应的模块就可以了。

b、你可以定制内核,使所需的命令包在其中。

从代码中编译:

1、用cvs取得源代码

2、当前的Grub2代码中有一个bug,使得启动后不会显示grub.cfg中的菜单,有一个补丁,在:

扩展阅读里

要使用该补丁,请进入grub2的目录,然后:

patch -p1 < grub2-menu.diff

这里假设grub2-menu.diff放在grub2目录下

3、./configure

然后

./make

4、定制内核

./grub-mkimage -d . -v -o core.img fat pc

core.img是内核的名字,fat和pc是加入内核的模块。常用模块有:

fat: 支持 fat 文件系统

ext2: 支持 ext2 文件系统

pc: 支持主分区和扩展分区

help: help命令

ls: ls命令

除了当前分区的文件系统的模块外,其它的都可以用insmod在进入grub2后才转载

5、把core.img, boot.img, diskboot.img, *.mod, fs.lst, command.lst

抄到某一分区的 /boot/grub目录下,然后编写配置文件grub.cfg

查看详情

相关推荐

立即注册
免费服务热线: 400-888-9639