文档库 最新最全的文档下载
当前位置:文档库 › grub

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真的不好用吗?不是的,通过https://www.wendangku.net/doc/8617076536.html, 社区近四年来的运行,我发现了大多新手弟兄还是不太了解GRUB;当然这也有中文Linux社区的责任,虽然也有GRUB的中文译本,初学Linux的弟兄可能有点看不懂;

我们欣喜的看到https://www.wendangku.net/doc/8617076536.html, 社区的好多弟兄都曾经或正在写GRUB实践文档,也有的弟兄也总结了GRUB的一些基础知识,比如

probing兄弟的《GRUB

学习笔记》;由于每个人的写文档时风格不同,可能同一份文档不同的人来写就有不同的风格;所以今天也抖胆也一篇入门级的教程,由于北南不会写高级教程,所

以还得请高手弟兄指教,先谢过;

3)为什么要选择GRUB;

基于在X86架构的CPU而开发操作系统,系统引导管理器不仅仅有GRUB ,而且也有LILO,但对于多重系统引导管理器,你只能选择其一而用;不能两个同时使用;

目前这两个多重系统引导管理器是大家最常用的,也是主流Linux发行版而采用的;有的弟兄喜欢GRUB,比如我个人,有的弟兄喜欢LILO ,比如etony兄(谁是etony,请参见

https://www.wendangku.net/doc/8617076536.html,

);

主流发行版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,noaut o,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,noaut o,

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,noaut o,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,noaut o,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”;

修复更新grub2系统引导

修复更新grub2系统引导 一.修复 如果重装系统或者引导系统崩溃无法进入系统开机引导项从而无法进入以装系统,以Ubuntu Grub2引导为例,详细写一下如何修复之前的系统引导。 (以下说明均以Ubuntu系统为例,其他系统大同小异) 1.放入系统安装盘或这插入刻录好的系统安装U盘,进入系统安装选项,选择试用选项! 2.选择适用之后,进入Ubuntu图形界面,打开终端。 3.选择Ubuntu安装磁盘,如果不确定具体在哪个磁盘,可以用命令查看一下 [plain] sudo fdisk -l 4.挂载Ubuntu系统安装磁盘(我的是在第8磁盘,故为sda8) [plain] sudo mount /dev/sda8 /mnt 5.开始恢复grub2系统引导 [plain] sudo grub-install --root-directory=/mnt/dev/sda 6.执行命令之后,如果没有报错,则恢复成功,重启即可。 二.更新 恢复之后是之前的系统引导界面,如果新安装的系统没有在界面上显示,那么可以进入Ubuntu系统,进行grub2更新。

打开终端,输入 [plain] sudo update-grub2 成功的话,将会出现更新后找到的磁盘上所有系统引导的记录。(以我自己的为例) [plain] hugo@hugo-HP:~$ sudo update-grub2 [sudo] password for hugo: Generating grub.cfg ... Found linux image: /boot/vmlinuz-3.5.0-26-generic Found initrd image: /boot/initrd.img-3.5.0-26-generic Found linux image: /boot/vmlinuz-3.5.0-25-generic Found initrd image: /boot/initrd.img-3.5.0-25-generic Found linux image: /boot/vmlinuz-3.5.0-17-generic Found initrd image: /boot/initrd.img-3.5.0-17-generic Found memtest86+ image: /boot/memtest86+.bin Found Windows 8 (loader) on /dev/sda1 Found CentOS release 6.4 (Final) on /dev/sda3 Found Mac OS X on /dev/sda9 done 之后重启即可。 update-grub这个是Ubuntu专用的吧,其它发行版不一定有,通用的是:sudo grub-mkconfig -o /boot/grub/grub.cfg

grub命令及使用详解

一.全部命令索引: background 设置图形模式下的背景色。 blocklist 输出文件的块清单标记。 boot 引导已加载的操作系统或扇区链式加载器。bootp 通过BOOTP初试化网络设备。 cat 显示指定文件的内容。 chainloader 加载扇区链式加载器。 clear 清屏幕。 cmp 比较两个文件, 并且报告两者之间的不同的信息。color 改变菜单的颜色。 configfile 将指定文件作为配置文件予以加载。 debug 打开/关闭除错模式。 default 把NUM 项菜单设为缺省值。 device 声明BIOS驱动器对应的实际物理设备。 dhcp 通过DHCP初试化网络设备。 displayapm 显示APM BIOS 的相关信息。 displaymem 显示GRUB 所判断到的当前系统的内存分布,包括所有物理内存区域。 dump 显示诸多文件的内容。 embed 如果设备是个驱动器, 则将Stage 1.5嵌入到主引导扇区之后。 fallback 如果调用当前的菜单项时出现错误,则转移到NUM 项后重试 find 在所有分区上查找文件名, 并显示包含该文件的设备。如果设置了参数--set-root,则在找到第一个匹配后马上停止,并且把该设备设为根。 fontfile 指定中文字体文件,并切换到简体中文显示方式。foreground 设置图形模式下的前景色。 fstest 切换文件系统的试验模式。 geometry 输出驱动器的相关信息。 gfxmenu 使用FILE 中的图形菜单。 halt 关闭系统。 help 显示内部命令的帮助信息。 hiddenmenu 隐藏菜单。 hide 通过在分区类型上置隐藏标志,隐藏指定分区。 ifconfig 指定IP 地址, 子网掩码, 网关和服务器地址。不带参数时,将显示当前的网络配置。 impsprobe 通过一些循环操作,侦测出符合Intel 多处理器规范 1.1/1.4 的CPUs,以便于发挥其更好的效能。 initrd 加载Linux格式的初始化虚拟盘, 并设置必要的参数。 install 安装STAGE1到指定设备上,安装加载STAGE2需要的块列表到STAGE2上。 ioprobe 侦测指定设备的I/O 端口号。 grub命令及使用详解

grub2引导光盘镜像的制作

grub2引导光盘镜像的制作 这个东东很简单,但差不多还是花了一两天时间。关键是引导不起来,最后找出了原因,在制作ISO的时候出错了。制作前最好su得到管理员权限。 一般我们都是有win系统的,那么可以vmware虚拟机安装ubuntu,再用它制作即可,至于导出方法,自己百度 首先用ubuntu1404的版本为例,只是与ubuntu1204的目录有点区别ubuntu1404的grub2已经是2.02的版本的,ubuntu1204还是1.99 1,复制模块文件等 su 输入管理员密码 cp -a /usr/lib/grub/ ./ 制作文件夹到当前目录 mv grub grub2 改名为grub2 grub2/grub.cfg这个是配置文件,可以根据需要更改,最好是改一下

2,制作一个bootcfg的文件 可用vi bootcfg search -f -n --set=root /grub2/grub.cfg configfile /grub2/grub.cfg set color_normal=light-gray/black set pager=1 按ESC :wq 也可用gedit bootcfg,最后记得保存就行了 3,定制启动内核 grub-mkimage -d /usr/lib/grub/i386-pc/ -p /grub2/ -c bootcfg -o core.img -O i386-pc biosdisk iso9660 search configfile part_msdos fat ntfs ext2 -d 指定定制内核时的要用的目录 -p 指定在引导时要用到的目录,包含模块点 -c 指定一些简单配置的文件 -o 输出路径及文件名 -O 指定格式i386-pc biosdisk iso9660指光盘文件系统一定要 4,制作光盘引导文件

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进入选项。

linux grub 引导启动过程详解

linux grub 引导启动过程详解 2008-01-08 17:18 这几天看了很多文档,算是对linux的启动过程有了比较细致的了解. 网上有很多文章谈到这方面的内容,但总觉得没有一篇完全的解析linux启动的 细节,下面是我小弟在学习的过程中总结出来的一些东东.这个是完整的linux启动过程, 不涉及内核,但是我觉得比较详细哦. (由于本人比较懒,这一段是从网上抄的) 机器加电启动后,BIOS开始检测系统参数,如内存的大小,日期和时间,磁盘 设备以及这些磁盘设备用来引导的顺序,通常情况下,BIOS都是被配置成首先检查 软驱或者光驱(或两者都检查),然后再尝试从硬盘引导。如果在这些可移动的设 备中,没有找到可引导的介质,那么BIOS通常是转向第一块硬盘最初的几个扇区, 寻找用于装载操作系统的指令。装载操作系统的这个程序就是boot loader. linux里面的boot loader通常是lilo或者grub,从Red Hat Linux 7.2起,GRUB( GRand Unified Bootloader)取代LILO成为了默认的启动装载程序。那么启动的时候grub是如何被载入的呢 grub有几个重要的文件,stage1,stage2,有的时候需要stage1.5.这些文件一般都 在/boot/grub文件夹下面.grub被载入通常包括以下几个步骤: 1. 装载基本的引导装载程序(stage1),stage1很小,网上说是512字节,但是在我的系统上用du -b /boot/grub/stage1 显示的是1024个字节,不知道是不是grub版本不同的缘故还是我理解有误.stage1通常位于主引导扇区里面,对于硬盘就是MBR了,stage1的主要功能就是装载第二引导程序(stage2).这主要是归结于在主引导扇区中没有足够的空间用于其他东西了,我用的是grub 0.93,stage2文件的大小是107520 bit. 2. 装载第二引导装载程序(stage2),这第二引导装载程序实际上是引出更高级的功能, 以允许用户装载入一个特定的操作系统。在GRUB中,这步是让用户显示一个菜单或是输入命令。由于stage2很大,所以它一般位于文件系统之中(通常是boot所在的根 分区). 上面还提到了stage1.5这个文件,它的作用是什么呢你到/boot/grub目录下看看, fat_stage_1.5 e2fs_stage_1.5 xfs_stage_1.5等等,很容易猜想stage1.5和文件系统 有关系.有时候基本引导装载程序(stage1)不能识别stage2所在的文件系统分区,那么这 时候就需要stage1.5来连接stage1和stage2了.因此对于不同的文件系统就会有不同的stage1.5.但是对于grub 0.93好像stage1.5并不是很重要,因为我试过了,在没有stage1.5 的情况下, 我把stage1安装在软盘的引导扇区内,然后把stage2放在格式化成ext2或者fat格式的软盘内,启动的时候照常引导,并不需要e2fs_stage_1.5或者fat_stage_1.5. 下面是我的试验: #mkfs.ext2 /dev/fd0 #mount -t ext2 /dev/fd0 /mnt/floppy #cd /mnt/floppy #mkdir boot #cd boot #mkdir grub (以上三步可用mkdir -p boot/grub命令完成) #cd grub #cp /boot/grub/{stage1,stage2,grub.conf} ./ #cd; umount /mnt/floppy

linux开机启动grub解决方法

装了windows和linux双系统,突然开机后没有出现启动菜单,而是出现了 [ 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>; 在这种情况下怎么进入windows和linux系统呢? 进入windows,进行如下操作: grub>root (hd0,0) //第1块硬盘的第一个分区C grub>chainloader (hd0,0)+1 //加入链 grub>boot //即可进入windows系统 进入linux,进行如下操作: grub>root (hd0,6)//这里的6表示的是我机器上linux系统/boot所在的分区号,具体数值取决于自己实际情况 grub>kernel /boot/vmlinuz-2.6.27.5-117.fc10.i686 ro root=LABEL=/ //vmlinuz-2.6.27.5-117.fc10.i686是可执行的Linux内核,位于/boot目录下,内核版本不一样,这个文件也不一 样,所以具体文件名取决于自己实际情况 grub>initrd /boot/initrd-2.6.27.5-117.fc10.i686.img //initrd-2.6.27.5-117.fc10.i686.img是初始化linux的镜像,位于/boot目录下,内核版本不一样,这个文件也 不一样,所以具体文件名取决于自己实际情况 grbu>boot //即可进入linux系统 以上方法虽然可以进入系统,但是每次开机都要输入这些命令。解决方法就是重新将grub写入mbr,使得开机后启动菜单能够出现。

grub2最新全面学习资料

Grub 2 使用简介 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 可以支持脚本语言,例如条件,循环,变量,函数等。 当然,Grub 2正处在开发阶段,因此以上的某些功能可能现阶段还不是很完善。安装和使用 Grub 2的内核是符合multiboot标准的,因此可以在Grub中引导。 1、下载 https://www.wendangku.net/doc/8617076536.html,/grub2.zip 解压到某个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,应该可以看明白里面的内容。要注意的是:

GRUB2启动代码详解

GRUB2的介绍 目前Grub1已经停止开发了,不再增加新的功能,所有的开发都转移到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 可以支持脚本语言,例如条件,循环,变量,函数等。 当然,Grub 2正处在开发阶段,因此以上的某些功能可能现阶段还不是很完善。 如果你熟悉Grub2,应该可以看明白里面的内容。要注意的是: a、timeout, default等参数用变量来储存 b、菜单项由menuentry定义 c、第1个分区是(hd0,1)而不是(hd0,0) 理论的东西说多了大家估计也晕,举个简单的例子:在grub1中,要改变启动背景的时候只能选择支持640X480分辨率并且格式也只能是.xpm的图片,分辨率稍微大点的图就显示不出来了,但grub2不存在这个问题,它有更绚丽的菜单界面,grub2默认.png .tga .jpeg等很多种格式的图片都支持,而且支持的图片分辨率也更大。

GRUB2启动代码分析 # # DO NOT EDIT THIS FILE # # It is automatically generated by /usr/sbin/grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then #如果“$prefix/grubenv”目录不为空 load_env #从grubenv文件中加载环境变量 fi set default="0" #启动第1项# if [ ${prev_saved_entry} ]; then #如果prev_saved_entry的值不为空 set saved_entry=${prev_saved_entry} #将saved_entry的值设置成变量prev_saved_entry的值。 save_env saved_entry #将变量saved_entry保存到grubenv文件中。 set prev_saved_entry= #将prev_saved_entry的值设置为空 save_env prev_saved_entry #将prev_saved_entry保存到grubenv文件中 set boot_once=true #将boot_once的值设置为真(貌似是为了标志已经设置过启动的相关环境变量了)fi function savedefault {

-Linux操作系统基础教学大纲

Linux操作系统基础 Foundation of Linux Operation System 适用范围:2013本科人才培养方案 课程编号: 学分:2 学时:32(其中:讲课学时:20 实验学时:12) 先修课程:计算机文化概论 适用专业:网络工程 建议教材:《Linux实用教程》陈博等人民邮电出版社2008年10月 开课单位:软件学院 一、课程的性质与任务 课程性质:本课程是网络工程专业网络安全与攻防方向的一门专业方向任选课,Linux及应用是计算机科学专业的一门专业课程。 课程任务:本课程的目的和任务是使学生全面地了解和掌握Linux系统的基本概念、原理及应用技术、以及适应社会对Linux操作与管理人员的需求。通过本门课程的学习,能够为以后从事软件编程、分布式处理及系统服务部署等不同应用领域的研究打下深厚的理论基础。 二、课程的基本内容及要求 (一)认识Linux系统 1. 课程教学内容: (1)Linux系统简介 (2)Linux系统的特点和组成 (3)Linux版本介绍 (4)Fedora Core系统概述 2. 课程重点、难点 重点:了解Linux操作系统的发展历程,改系统的特点和组成。 难点:Linux操作系统与Window操作系统的异同。 3. 课程教学要求: (1)了解计算机计算机操作系统的发展过程; (2)理解Linux操作系统与UNIX系统的区别,理解GUN计划的内容; (3)掌握Linux各个系统的版本及其优劣等。

(二)Fedora 系统的安装和删除 1. 课程教学内容: (1)准备安装Linux操作系统 (2)分区的概念和分区的类型。 (3)硬盘的类型。 (4)安装Linux的步骤及安装后的初始化工作。 (5)删除MBR中GRUB引导程序。 (6)删除Linux分区。 2. 课程重点、难点 重点:如何对硬盘分区,如何命名分区,分区的格式化等。 难点:如何理解分区的编号及文件系统的建立等。 3. 课程教学要求: (1)本章的学习目的是使学生能够自己安装一个操作系统,合理分区,并了解Linux下分区的概念。了解如何建立交换分区。 (2)理解分区文件的命名描述; (3)掌握安装Linux的步骤及安装后的初始化工作,掌握如何删除MBR中的GRUB分区程序。 (三)Linux图形化界面 1. 课程教学内容: (1)登录、注销和关闭系统 (2)GNOME基本使用 (3)系统设置 (4)Fedora系统的应用软件使用 2. 课程重点、难点: 重点:掌握如何正常登录、注销和关闭系统的几个命令。 难点:了解在如何在GNOME图形界面中如何复制、黏贴、删除文件等。 3. 课程教学要求: (1)了解GNOME的初步使用,系统的各种基本设置; (2)理解硬盘分析器、系统日志等内容。 (3)掌握在GNOME的操作使用。 (四)Linux字符界面操作 1. 课程教学内容:

uboot启动代码详解

·1 引言 在专用的嵌入式板子运行GNU/Linux 系统已经变得越来越流行。一个嵌入式Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序。固化在固件(firmware)中的boot 代码,也就是Boot Loader,它的启动通常分为两个阶段。 2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 3. 文件系统。包括根文件系统和建立于Flash 内存设备之上文件系统,root fs。 4. 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI 有:MicroWindows 和MiniGUI 等。 引导加载程序是系统加电后运行的第一段软件代码。回忆一下PC 的体系结构我们可以知道,PC 机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR 中的OS Boot Loader(比如,LILO 和GRUB 等)一起组成。BIOS 在完成硬件检测和资源分配后,将硬盘MBR 中的Boot Loader 读到系统的RAM 中,然后将控制权交给OS Boot Loader。Boot Loader 的主要运行任务就是将内核映象从硬盘上读到RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。 而在嵌入式系统中,通常并没有像BIOS 那样的固件程序(注,有的嵌入式CPU 也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由Boot Loader 来完成。比如在一个基于ARM7TDMI core 的嵌入式系统中,系统在上电或复位时通常都从地址 0x00000000 处开始执行,而在这个地址处安排的通常就是系统的Boot Loader 程序。·2 bootloader简介 简单地说,Boot Loader (引导加载程序)就是在操作系统内核运行之前运行的一段小程序,它的作用就是加载操作系统, 实现硬件的初始化,建立内存空间的映射图,为操作系统内核准备好硬件环境并引导内核的启动。如上图所示的那样在设备的启动过程中bootloader位于最底层,首先被运行来引导操作系统运行,很容易可以看出bootloader是底层程序所以它的实现严重地依赖于硬件,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,一些功能强大、支持硬件环境较多的BootLoader也被广大的使用者和爱好者所支持,从而形成了一些被广泛认可的、较为通用的的bootloader实现。 2.1 Boot Loader 所支持的CPU 和嵌入式板 每种不同的CPU 体系结构都有不同的Boot Loader。有些Boot Loader 也支持多种体系结构的CPU,比如U-Boot 就同时支持ARM 体系结构和MIPS 体系结构。除了依赖于CPU 的体系结构外,Boot Loader 实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU 而构建的,要想让运行在一块板子上的Boot Loader 程序也能运行在另一块板子上,通常也都需要修改Boot Loader 的源程序。 2.2 Boot Loader 的安装媒介(Installation Medium)

电脑开机显示grub,

在使用Linux的过程中,大多初学者都遇到过系统启动到“grub>”提示符后就停止不前的问题,功夫不深的爱好者可能会束手无策,转而选择重装系统,其实这只是系统出现了一点小问题,既系统的GRUB配置文件出现了故障,此时可以采用以下两种方案来解决问题: 1)存在GRUB配置文件备份 如果存在GRUB配置文件备份,则可以比较简单的进行恢复,可以按如下方法进行: 使用光盘引导机器,进入到“linux rescue”模式,即系统维护模式;在提示符”sh#”下执行cp命令,将备份文件拷贝到/boot/grub.conf即可 Sh#cp /backup/grub.conf.bak /mnt/sysimage/boot/grub/grub.conf 假设备份文件为/backup/grub.conf.bak,因为大多数Linux光盘修复模式中会将硬盘系统的”/”分区chroot到 “/mnt/sysimage”处,所以拷贝的目标为“/mnt/sysimage/boot/grub/grub.conf”,而非“/boot/grub/grub.conf”。 完成后重新启动即可。内核文件、镜像文件、/boot目录等文件损坏或丢失,也可以使用此种方法修复。 2)如果没有GRUB配置文件备份 如果没有备份文件时可以使用grub的交换功能,可以在”grub>”命令行下进行以下操作以手动启动系统: 查找/boot/grub/grub.conf分区所在的目录: grub> find /boot/grub/grub.conf (hd0,0) 需要注意的是,上述命令将得到的是grub.conf配置文件所在的系统的分区,(hd0,0)即表示它在分区hda1 查看grub.conf文件错误使用如下的命令: grub> cat (hd0,0)/boot/grub/grub.conf 需要注意的是,可以查看配置文件到底什么地方出现了错误,以便进入后修改。 指定/boot分区使用命令:root (hd0,0) 从此步骤开始,即为本文前面提到的GRUB配置文件的主要引导步骤,只是一般都是系统读取GRUB配置文件,出现问题时我们可以使用手动启动。 指定内核加载的命令:kernel /boot/vmlinuz ro root=LABEL=/ 指定镜像文件所在的位置可用如下命令:initrd /boot/initrd-2.6.24-1.3194.fc7 从/boot分区启动可以使用如下命令:boot (hd0,0) 此时系统即可正常启动,实际上以上步骤就是执行了GRUB引导期间加载grub.conf文件的步骤,当系统正常启动后将GRUB配置文件修改正确后即可。

关于Grub2启动菜单的注释问题(个人经验)

关于Grub2启动菜单的注释问题(个人经验) 特别说明:此文只是我个人经验,尚不知道是否会引起其他问题。故,你若要使用此文之做法,请务必慎重考虑。建议先在虚拟机测试。 用命令sudo gedit /boot/grub/grub.cfg即可打开grub.cfg文件,如下: 其中,#号表示注释该段。我这是在虚拟机下的ubuntu,grub.cfg文件跟你的可能不尽相同。 # # DO NOT EDIT THIS FILE # # It is automatically generated by /usr/sbin/grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then load_env fi set default="0" if [ ${prev_saved_entry} ]; then set saved_entry=${prev_saved_entry} save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true

function savedefault { if [ -z ${boot_once} ]; then saved_entry=${chosen} save_env saved_entry fi } function recordfail { set recordfail=1 if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi } insmod ext2 set root='(hd1,2)' search --no-floppy --fs-uuid --set 44765bf4-8d6f-4d5a-8341-0d6d2f14e241 if loadfont /usr/share/grub/unicode.pf2 ; then set gfxmode=640x400 insmod gfxterm insmod vbe if terminal_output gfxterm ; then true ; else # For backward compatibility with versions of terminal.mod that don't

重装Win7后恢复grub引导

重装Win7后恢复grub引导 一、在Win7中建立Ubuntu的引导 1.在win7下安装easyBCD 2.1,新建ubuntu启动项,具体如下: 打开软件,如图 选择Add New Entry项,再选择Linux/BSD标签,Type项选为GRUB2,Name可以自己定义什么都可以。然后点Add Entry。 2.在Edit Boot Menu里,调节启动项显示的时间,不要还来不及选就跳过去。

3.Ubuntu启动项添加完毕,再重启时win7启动项会先出现。 二、在grub rescue中恢复grub引导(此步可跳过,视具 体情况而定) 1.先使用ls命令,找到Ubuntu的安装在哪个分区: grub rescue>ls 会罗列所有的磁盘分区信息,比方说:(hd0,1),(hd0,5),(hd0,3),(hd0,2) 2.然后依次调用如下命令: X表示各个分区号码 grub rescue>ls (hd0,X)/boot/grub 如果都找不到的话,需要查一下是否因为Linux版本差异,造成grub的路径不对,例如直接ls(hd0,X)/grub等等。

3.假设找到(hd0,7)时,显示了文件夹中的文件,则表示Linux安装在 这个分区。 4.调用如下命令: grub rescue>set root=(hd0,7) grub rescue>set prefix=(hd0,7)/boot/grub grub rescue>insmod /boot/grub/normal.mod 5.然后调用如下命令,就可以显示出丢失的grub菜单了。 grub rescue>normal 不过不要高兴,如果这时重启,问题依旧存在,我们需要进入Linux中,对grub 进行修复。 三、在Linux中修复grub 6.进入Linux之后,在命令行执行: sudo update-grub sudo grub-install /dev/sda (sda是你的硬盘号码,千万不要指定分区号码,例如sda1,sda5等都不对)7.重启测试是否已经恢复了grub的启动菜单?恭喜你恢复成功!

云主机添加Grub2引导WinPE ISO(Windows系统)-V1

云主机添加Grub2引导WinPE ISO (Windows系统) 导读 云主机安装的系统是Windows 2008 R2,BIOS+MBR,想利用Grub2引导发位于磁盘上Windows PE ISO 或其他系统,可以采用在Windows 系统中安装grub2实现。 安装配置步骤 第一步、Grub2下载,文件准备 到Grub2官网ftp://https://www.wendangku.net/doc/8617076536.html,/gnu/grub/ 下载文件 grub-2.02-for-windows.zip,将其解压至任意路径下,比如D:\。这样Grub2的主程序目录将位于D:\grub-2.02-for-windows 第二步,Grub2安装 以管理员身份运行CMD,输入命令wmic diskdrive list brief,记录下安装目标磁盘DeviceID,本教程将安装至\\.\PHYSICALDRIVE0 ============================================== ==================================== Microsoft Windows [Version 10.0.10586]

(c) 2015 Microsoft Corporation. All rights reserved. C:\Windows\system32>wmic diskdrive list brief Caption DeviceID Model Partitions Size WDC WD5000AAKX-001CA0 \\.\PHYSICALDRIVE0 WDC WD5000AAKX-001CA0 3 500105249280 C:\Windows\system32> ===================================================== ============================= 将当前路径切换至Grub2主程序所在路径,输入cd /d d:\grub-2.02-for-windows ===================================================== ============================= C:\Windows\system32>cd /d d:\grub-2.02-for-windows d:\grub-2.02-for-windows> ===================================================== ============================= 查看grub-install.exe的帮助文件,可以输入grub-install.exe --help或grub-install.exe -?,显示如下内容: ===================================================== ============================= Usage: grub-install [OPTION...] [OPTION] [INSTALL_DEVICE] Install GRUB on your drive.

最全的Android源码目录结构详解

最全的Android源码目录结构详解 Android 2.1 |-- Makefile |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编译规则及generic等基础开发包配置) |-- cts (Android兼容性测试套件标准) |-- dalvik (dalvik JAVA虚拟机) |-- development (应用程序开发相关) |-- external (android使用的一些开源的模组) |-- frameworks (核心框架——java及C++语言) |-- hardware (部分厂家开源的硬解适配层HAL代码) |-- out (编译完成后的代码输出与此目录) |-- packages (应用程序包) |-- prebuilt (x86和arm架构下预编译的一些资源) |-- sdk (sdk及模拟器) |-- system (底层文件系统库、应用及组件——C语言) `-- vendor (厂商定制代码) bionic 目录 |-- libc (C库) | |-- arch-arm (ARM架构,包含系统调用汇编实现) | |-- arch-x86 (x86架构,包含系统调用汇编实现) | |-- bionic (由C实现的功能,架构无关) | |-- docs (文档) | |-- include (头文件) | |-- inet (?inet相关,具体作用不明) | |-- kernel (Linux内核中的一些头文件) | |-- netbsd (?nesbsd系统相关,具体作用不明) | |-- private (?一些私有的头文件) | |-- stdio (stdio实现) | |-- stdlib (stdlib实现) | |-- string (string函数实现) | |-- tools (几个工具) | |-- tzcode (时区相关代码) | |-- unistd (unistd实现) | `-- zoneinfo (时区信息) |-- libdl (libdl实现,dl是动态链接,提供访问动态链接库的功能)|-- libm (libm数学库的实现,) | |-- alpha (apaha架构) | |-- amd64 (amd64架构) | |-- arm (arm架构) | |-- bsdsrc (?bsd的源码)

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而

在windows下使用grub for dos安装linux

一、在Windows下使用Grub for DOS安装Linux 1.安装前的准备:要从硬盘安装Fedora8,这里你要保证存放Feora8镜像文件的盘为FAT32格式,因为无论Linux还是DOS,都不能识别NTFS。另外你还要为Linux 系统空出一部分空间出来,空间大小最好在10G以上。 2.下载Grub for DOS工具(https://www.wendangku.net/doc/8617076536.html,/Linux/2007-10/8641.htm),这是在开机时引导进入Linux安装过程用的。将下载好的Grub for DOS里面的文件(包括了menu.lst,grldr,grub.exe)解压缩到C盘根目录下。而不是将解压后的文件夹拷到C盘根目录下。 3.下载Fedora8的ISO镜像文件。https://www.wendangku.net/doc/8617076536.html,/en/get-fedora 4.修改boot.ini。 在C盘根目录打开文件boot.ini,在该文件的最后一行,添加C:\grldr=”Start Grub”,保存,退出。boot.ini是系统文件,打开它需要一点技巧,这里给大家两种办法: 1)开始--设置--控制面板--系统--高级--启动和故障恢复--设置--编辑(或者右键单击-我的电脑--属性--系统--高级--启动和故障恢复--设置--编辑),这时会迸出一个打开的记事本,里面是原先的boot.ini 内容,将其修改即可。 2)如果你有一点DOS基础的话,可以运行中输入cmd打开命令行编辑器,然后键入命令: cd\/*到C盘根目录*/ edit boot.ini/*编辑boot.ini文件*/ 将其修改,然后按Alt,打开“文件“选项,保存退出即可。 (这时重启系统你就会发现启动时多了个系统选项选择单,一个是Microsoft Windows XP,另一个是Grub,这里不需要重启。 .现在假设Fedora8安装包已经下载到你的计算机,用虚拟光驱或RAR打开你下载的镜像安装文件,将:“isolinux”目录中的vmlinuz和initrd.img两个文件拷到C盘(你当前系统的安装盘)里,具体是NTFS还是FAT32,无所谓。 6.C盘找到menu.lst文件,用记事本打开,在末尾添加以下三行(仅红色部分):title Install-Fedora8/*这是个菜单标识,显示Install-Fedora7*/ kernel(hd0,0)/vmlinuz/*文件vmlinuz所在地址为(hd0,0)*/

相关文档
相关文档 最新文档