如何运用grub来引导Linux系统?

详细的引导步诹

grub> 提示符下也可以找到启动文件进行引导的
比如你只有一硬盘且有两个分区/dev/hda1和hda2,挂载点分别是/boot和/,由于vmlinuz经常放在/boot下所以直接在grub后输入
kernel (hd0,0)/vmlinuz
即此时屏幕上应显示为 grub>kernel (hd0,0)/vmlinuz
然后再按TAB,这样它会把vmlinuz开头的文件列出来,甚至补全(通常不是vmlinuz而是像vmlinuz-2.6.19-el.smp这样长的,所以要用好TAB)

如果只输入 (hd0,0)/ 就TAB它就把当前分区根目录的文件全显示 出来

如果只输入 (hd0, 就TAB。。。它会提示你有哪些分区可以用。。。

扯远了,反正用类似的方法,写出一整行
kernel (hd0,0)/vmlinuz-xxxxxxx 回车
它会提示这是什么文件,表示加载成功
同样写出 initrd(hd0,0)/initrd-xxxxxx回车
然后 再打 boot 回车,正常情况下会进得了系统
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-19
进入ubuntu的请看这里。本帖是根据论坛里相应的帖子整理的。很可能有漏掉不少帖子,请使用论坛的搜索功能。

下面将给出很多种方法来解决这个问题:

1.用livecd(推荐)
2,用安装cd
3,使用grub4dos
4,使用grub软盘

上面的每一种方法都涉及到grub,通常,并不需要你对grub有多少了解,只要认真地读下面的帖子,参照这些帖子去做,就能解决问题,但是,如果你想不仅知其然,还要知其所以然,那你可以看一下grub入门

1,使用livecd(推荐)
使用任何你喜欢的linux livecd

取得root权限并在终端下运行grub
代码:

sudo -s -H
grub

然后,使用如下指令:
oneleaf 写道:

代码:

grub>root (hdX,Y)
grub>setup (hd0)

root 是 /boot 分区的地址,如果不知道可以在 root (hd0, 时按Tab键来补全。

如果按TAB键后你还拿不定主意,那么下面一段也许对你有帮助:
一般/boot就装在你的ubuntu系统所在的分区(如果你不知道ubuntu装在哪儿,可以用cfdisk命令查看)要小心的是hda1相当於(hd0,n-1),例如
yonsan 写道:

如果linux安装根分区为hda5 则执行的是root (hd0,4) 而不是 root (hd0,5)

最后,用
代码:
grub>quit

退出grub,重启系统。

下面是一个例子,(在这个例子中一些步骤并不是必需的——可能这些步骤是否必需取决於你的livecd 能否自动挂载你的本地硬盘的分区)
yonsan 写道:

假定ubuntu系统安装在hda5, 文件系统为ext3格式

使用 livecd 启动成功后运行终端:
代码:

sudo -s -H
mkdir -p /mnt/hda5
mount -t ext3 /dev/hda5 /mnt/hda5
mount -t proc none /mnt/hda5/proc
chroot /mnt/hda5 /bin/bash
source /etc/profile
grub

2) 在grub命令行模式下输入:
代码:

root (hd0,4)
setup (hd0)

2,使用ubuntu安装cd恢复
firehare 写道:

1. 启动系统到 Ubuntu 安装CD
2. 沿着屏幕上的命令直到 (千万不要超过这一步)
[!!] Fdisk disks
3. 按 'Ctrl + Alt + F2'
4. 按 'Enter' 进入终端
5.

~ # mkdir /ubuntu
~ # fdisk -l /dev/discs/disc0/disc
~ # mount <你的Ubuntu根设备所在位置> /ubuntu/
~ # chroot /ubuntu/
sh-2.05b#
6. 假设 /dev/hda1 是 /boot 分区的地址
7. sh-2.05b# grub

grub> root (hd0,0)
grub> setup (hd0)
grub> quit

或者,你可以按照新手指南的做法

1. 用 Ubuntu 安装 CD 开机
2. 在 "boot:" 提示号出现时, 键入 "rescue" 当作开机参数

boot: rescue

3. 顺着屏幕上的指示跟着作
4,例如 假设 /boot 磁碟分区位在 /dev/hda
代码:
#grub-install /dev/hda

3.1使用grub4dos重新安装grub
下载
oneleaf 写道:

将 grldr 复制到 C:\,编辑C:\BOOT.INI,加入一行:

C:\GRLDR="GRUB"

再手工输入启动命令
例如:
root (hd0,0)
kernel /vmlinuz-2.6.10-5-686 root=/dev/hdb5 ro quiet splash
initrd /initrd.img-2.6.10-5-686
savedefault
boot

进入后,重新安装grub就好了。

重新安装grub:
例如 假设 /boot 磁碟分区位在 /dev/hda
代码:
# grub-install /dev/hda

3.2用grub4dos代替grub来引导系统
yonsan 写道:

(凭记忆写的,如有不完善请指正)

如果你的系统现在正在使用grub引导方式,请在操作之前查看一下/boot/grub/menu.lst的内容,建议将/boot/grub/menu.lst拷贝一份以备用(将它拷到fat32分区中存放就可以)!

进入window环境下

1) 下载grub020p.zip并解压到C盘根目录下,打开C盘查看一下是否有以下文件

C:\boot (文件夹)
C:\ChangeLog.txt
C:\compile
C:\COPYING
C:\grldr
C:\grub4lin
C:\grub-0.95-patch1-startups
C:\grub-0.95-patch2-findroot
C:\grub-0.95-patch3-ntfs
C:\grub-0.95-patch4-emulation
C:\grub-0.95-patch5-splash
C:\grub-0.95-patch6-scdrom
C:\grub-0.95-patch7-bioscdrom
C:\grub.exe
C:\grub.pif
C:\README.txt
C:\robin.xpm.gz
C:\scratchpad.txt

2) 修改C:\boot\grub\menu.lst ,用你刚才从linux系统中拷贝的menu.lst覆盖C:\boot\grub\menu.lst

3) 进入grub命令行方式 (出现grub引导菜单时按c键)
> root (hd0,0)
> setup (hd0)

4) 重启计算机

使用DOS引导盘,找到grub文件.
修改grub.conf文件。其中
“default=n”(n是个数字)是grub引导菜单默认被选中的项,n从0开始,0表示第一项,1表示第二项,依此类推。
“timeout=x”(x是一个数)是超时时间,单位是妙。也就是引导菜单显示后,如果x秒内用户不进行选择,那么grub将启动默认项。
“splashimage =xxxxxx”,这是引导菜单的背景图,先不理他。
其它常用项我用下面的例子来说明:
title Red Hat 8.0
root (hd1,6)
kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hdb7
initrd /boot/initrd-2.4.18-14.img
其中"Red Hat 8.0"是在启动菜单列表里显示的名字
root (hdx,y)用来指定你的boot分区位置,如果你没有分boot分区(本例就没分boot分区),那就指向根分区就行了,hdx是linux所在硬盘,hd0是第一块硬盘,hd1是第二块,依此类推。y是分区位置,从0开始,也就是等于分区号减一,比如你要指向的分区是hdx7,那么y就是6,如果是hdx1,那y就是0。注意root后面要有一个空格。
kernel /boot/vmlinuz-2.4.18-14,其中"/boot/vmlinuz-2.4.18-14"是你要用的内核路径,如果你编译了心内核,把它改成你的新内核的路径就行了。
ro就不用管,写上不会有错。
root=/dev/hdxx指定根分区,本例是hdb7,所以root=/dev/hdb7
initrd xxxxxxxxxxxxx这行不要也行,目前我还不清楚它是做什么用的。
上面是linux的,下面是windows的
title windows 98
rootnoverify (hd0,0)
chainloader +1
title xxxxxxx不用解释了,上面有解释。
rootnoverify (hdx,y)用来指定windows所在分区,x,y跟上面一样,注意rootnoverify后有空格。
chainloader +1照抄就行,注意空格。
另外,站长团上有产品团购,便宜有保证
第2个回答  2011-04-12
进入ubuntu的请看这里。本帖是根据论坛里相应的帖子整理的。很可能有漏掉不少帖子,请使用论坛的搜索功能。

下面将给出很多种方法来解决这个问题:

1.用livecd(推荐)
2,用安装cd
3,使用grub4dos
4,使用grub软盘

上面的每一种方法都涉及到grub,通常,并不需要你对grub有多少了解,只要认真地读下面的帖子,参照这些帖子去做,就能解决问题,但是,如果你想不仅知其然,还要知其所以然,那你可以看一下grub入门

1,使用livecd(推荐)
使用任何你喜欢的linux livecd

取得root权限并在终端下运行grub
代码:

sudo -s -H
grub

然后,使用如下指令:
oneleaf 写道:

代码:

grub>root (hdX,Y)
grub>setup (hd0)

root 是 /boot 分区的地址,如果不知道可以在 root (hd0, 时按Tab键来补全。

如果按TAB键后你还拿不定主意,那么下面一段也许对你有帮助:
一般/boot就装在你的ubuntu系统所在的分区(如果你不知道ubuntu装在哪儿,可以用cfdisk命令查看)要小心的是hda1相当於(hd0,n-1),例如
yonsan 写道:

如果linux安装根分区为hda5 则执行的是root (hd0,4) 而不是 root (hd0,5)

最后,用
代码:
grub>quit

退出grub,重启系统。

下面是一个例子,(在这个例子中一些步骤并不是必需的——可能这些步骤是否必需取决於你的livecd 能否自动挂载你的本地硬盘的分区)
yonsan 写道:

假定ubuntu系统安装在hda5, 文件系统为ext3格式

使用 livecd 启动成功后运行终端:
代码:

sudo -s -H
mkdir -p /mnt/hda5
mount -t ext3 /dev/hda5 /mnt/hda5
mount -t proc none /mnt/hda5/proc
chroot /mnt/hda5 /bin/bash
source /etc/profile
grub

2) 在grub命令行模式下输入:
代码:

root (hd0,4)
setup (hd0)

2,使用ubuntu安装cd恢复
firehare 写道:

1. 启动系统到 Ubuntu 安装CD
2. 沿着屏幕上的命令直到 (千万不要超过这一步)
[!!] Fdisk disks
3. 按 'Ctrl + Alt + F2'
4. 按 'Enter' 进入终端
5.

~ # mkdir /ubuntu
~ # fdisk -l /dev/discs/disc0/disc
~ # mount <你的Ubuntu根设备所在位置> /ubuntu/
~ # chroot /ubuntu/
sh-2.05b#
6. 假设 /dev/hda1 是 /boot 分区的地址
7. sh-2.05b# grub

grub> root (hd0,0)
grub> setup (hd0)
grub> quit

或者,你可以按照新手指南的做法

1. 用 Ubuntu 安装 CD 开机
2. 在 "boot:" 提示号出现时, 键入 "rescue" 当作开机参数

boot: rescue

3. 顺着屏幕上的指示跟着作
4,例如 假设 /boot 磁碟分区位在 /dev/hda
代码:
#grub-install /dev/hda

3.1使用grub4dos重新安装grub
下载
oneleaf 写道:

将 grldr 复制到 C:\,编辑C:\BOOT.INI,加入一行:

C:\GRLDR="GRUB"

再手工输入启动命令
例如:
root (hd0,0)
kernel /vmlinuz-2.6.10-5-686 root=/dev/hdb5 ro quiet splash
initrd /initrd.img-2.6.10-5-686
savedefault
boot

进入后,重新安装grub就好了。

重新安装grub:
例如 假设 /boot 磁碟分区位在 /dev/hda
代码:
# grub-install /dev/hda

3.2用grub4dos代替grub来引导系统
yonsan 写道:

(凭记忆写的,如有不完善请指正)

如果你的系统现在正在使用grub引导方式,请在操作之前查看一下/boot/grub/menu.lst的内容,建议将/boot/grub/menu.lst拷贝一份以备用(将它拷到fat32分区中存放就可以)!

进入window环境下

1) 下载grub020p.zip并解压到C盘根目录下,打开C盘查看一下是否有以下文件

C:\boot (文件夹)
C:\ChangeLog.txt
C:\compile
C:\COPYING
C:\grldr
C:\grub4lin
C:\grub-0.95-patch1-startups
C:\grub-0.95-patch2-findroot
C:\grub-0.95-patch3-ntfs
C:\grub-0.95-patch4-emulation
C:\grub-0.95-patch5-splash
C:\grub-0.95-patch6-scdrom
C:\grub-0.95-patch7-bioscdrom
C:\grub.exe
C:\grub.pif
C:\README.txt
C:\robin.xpm.gz
C:\scratchpad.txt

2) 修改C:\boot\grub\menu.lst ,用你刚才从linux系统中拷贝的menu.lst覆盖C:\boot\grub\menu.lst

3) 进入grub命令行方式 (出现grub引导菜单时按c键)
> root (hd0,0)
> setup (hd0)

4) 重启计算机

使用DOS引导盘,找到grub文件.
修改grub.conf文件。其中
“default=n”(n是个数字)是grub引导菜单默认被选中的项,n从0开始,0表示第一项,1表示第二项,依此类推。
“timeout=x”(x是一个数)是超时时间,单位是妙。也就是引导菜单显示后,如果x秒内用户不进行选择,那么grub将启动默认项。
“splashimage =xxxxxx”,这是引导菜单的背景图,先不理他。
其它常用项我用下面的例子来说明:
title Red Hat 8.0
root (hd1,6)
kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hdb7
initrd /boot/initrd-2.4.18-14.img
其中"Red Hat 8.0"是在启动菜单列表里显示的名字
root (hdx,y)用来指定你的boot分区位置,如果你没有分boot分区(本例就没分boot分区),那就指向根分区就行了,hdx是linux所在硬盘,hd0是第一块硬盘,hd1是第二块,依此类推。y是分区位置,从0开始,也就是等于分区号减一,比如你要指向的分区是hdx7,那么y就是6,如果是hdx1,那y就是0。注意root后面要有一个空格。
kernel /boot/vmlinuz-2.4.18-14,其中"/boot/vmlinuz-2.4.18-14"是你要用的内核路径,如果你编译了心内核,把它改成你的新内核的路径就行了。
ro就不用管,写上不会有错。
root=/dev/hdxx指定根分区,本例是hdb7,所以root=/dev/hdb7
initrd xxxxxxxxxxxxx这行不要也行,目前我还不清楚它是做什么用的。
上面是linux的,下面是windows的
title windows 98
rootnoverify (hd0,0)
chainloader +1
title xxxxxxx不用解释了,上面有解释。
rootnoverify (hdx,y)用来指定windows所在分区,x,y跟上面一样,注意rootnoverify后有空格。
chainloader +1照抄就行,注意空格。