window linux双系统启动问题

window linux双系统启动问题

如果你安装了Windows,然后又安装了Linux,并且把grub安装到mbr,然后在非正常关机(有时重启也会)后无法进入任何一个系统只显示一个"grub>_"提示符。


这是由于你的mbr损坏造成的,mbr错误之后无法进入任何一个系统,只显示一个"grub>_"提示符。

让我们输入root分区。在提示中输入root,但不要按 Enter 键:

grub> root (

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

grub> root (hd0,

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

grub> root (hd0, (tab)

Possible partitions are:
Partition num: 0, Filesystem type is ext2fs, partition type 0x83
Partition num: 1, Filesystem type unknown, partition type 0x82
Partition num: 2, Filesystem type unknown, partition type 0x7
Partition num: 4, Filesystem type is reiserfs, partition type 0x83
Partition num: 5, Filesystem type is reiserfs, partition type 0x83

如您所见,GRUB 的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解 GRUB 新奇的硬盘和分区命名语法,然后就可以继续操作了。

装入内核

grub>

要启动一个操作系统,首先指定引导哪个分区上的系统,例如要引导指第一个硬盘上的第一个分区的操作系统,先键入

grub>root (hd0,0)

接着如果要启动的是Windows系统,键入

grub>chainloader (hd0,0)+1

注意(hd0,0)要随着硬盘和分区的不同而改变数字。 如果要引导Linux或其他系统,应键入

grub>kernel (hd0,0)/boot/vmlinuz root=/dev/hda1

注意hda1参数也要随着硬盘和分区的不同而改变,如从第二个硬盘的第一个分区引导则用hdb1。

最后敲入boot就可以启动系统了。

在任何时候不能确定命令或者命令的参数都可以按Tab获得相关的帮助。用上下键可以获得命令的历史记录。 其实这些命令就是menu.lst的启动描述,您也可以根据那些描述来自己键入启动命令,最后敲入boot就可以引导系统了。

我们这是需要进入Linux,进入之后,使用root登陆,进入之后打开终端

命令如下(蓝色为命令):
[root@localhost ~]# cd /boot/
[root@localhost boot]# grub
Probing devices to guess BIOS drives. This may take a long time.


    GNU GRUB version 0.97 (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> root (hd0,0) 【这里的(hd0,0)是我的Linux分区,你自己的要看Linux下的那个grub.conf文件里面root后面的】
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 23 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 d (hd0) (hd0)1+23 p (hd0,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> quit
quit
[root@localhost boot]#

重新启动后就可以进入图形化的grub了,至此完成mbr修复。

另注:修复之后不要急于重启,现在我们来看看grub.conf(menu.lst)内容是否有问题一般有些小问题就是分区顺序变了,所以要在grub.conf(menu.lst)改成对应的。


$ sudo grub
grub> root (hd0,0)
grub> setup (hd0)
grub> setup (hd1)


http://forum.ubuntu.org.cn/viewtopic.php?f=42&t=274182&start=30

安装体验,补充一下LZ的安装方法,硬件环境Gateway p-79 raid0,硬盘上原有WIN7分区

Ubuntu 10.04对fakeraid安装程序支持不好主要在两个方面:1、无法对raid部分进行格式化(可以识别);2、grub 2 对fakeraid支持存在一定问题

是否使用LiveDVD并不是很重要,因为在可以在执行安装前在LiveCD环境通过网络安装"磁盘实用工具",Ubuntu 10.04对大部分的网卡或者无线网卡支持还是不错的。
在安装完磁盘实用工具后,对磁盘进行分区和格式化,之后执行安装程序。安装时不对分区进行格式化。安装过程中无论怎么对grub进行设置grub安装均会失败,需要结束后手动安装grub。

之后按照LZ的方法,同样也碰到了36楼的问题,在这种情况下,虽然会生成grub.cfg但grub安装并未成功。折腾了一阵后采用安装grub 1的方式解决。
几个关键点如下(以下指令均需root权限):

1、在chroot之后,重装grub取代grub2
# apt-get install --purge grub
# cp /usr/lib/grub/i386/* /boot/grub/

2、将grub安装在MBR上
# fdisk -l /dev/mapper/isw_xxxx // 查看当前RAID磁盘的物理信息,注意这里的isw_xxxx是raid array设备映射,而不是具体的raid逻辑分区
查看类似“255 heads, 63 sectors/track, 19458 cylinders” 这样的信息,用笔记下。这段信息比较重要,否则可能导致后面grub设置时发生问题
接下进入grub shell
# grub --no-curses
grub> device (hd0) /dev/mapper/isw_xxxx // 指定将grub安装到MBR,这里的isw_xxxx同上为设备映射
grub> geometry (hd0) 19458 255 63 // 设置RAID磁盘的物理信息,这里如果数据不对,命令将不会有返回值,否则将正确显示逻辑分区情况。注意参数格式是C H S
grub> find /boot/grub/stage1 // 查找Linux启动分区,记下返回值,应该是类似(hd0,x)这样表示逻辑分区的位置
grub> root (hd0,2) // 设置grub启动分区
grub> setup (hd0) // 将grub安装于MBR上
grub> quit // 退出 grub shell

接下来配置menu.lst:
# update-grub // 生成grub配置文件
用nano编辑/boot/grub/menu.lst
查找
# groot=(hd0,0)
改为
# groot=(hd0,2) // 就是find的执行结果,表示grub的启动分区
之后,对于多系统的用户,还需要增加对其他系统的启动选项
继续查找,“### BEGIN AUTOMAGIC KERNELS LIST”,在此之前加入其他系统的信息,例如:
title Windows 7
rootnoverify (hd0,1) # use the correct partition for Windows!!!
makeactive
chainloader +1
注意,windows 7的启动分区为(hd0,1),如果是XP,应该是(hd0,0)

退出nano后继续更新grub配置文件:
# update-grub

3.接下来对dmraid进行配置,生成新的initramfs,并在系统启动时加载dmraid
# echo dm-raid4-5 >> /etc/initramfs-tools/modules
# update-initramfs -u
# echo dm-raid4-5 >> /etc/modules

之后需要注意的是,在chroot后,由于/的位置变更,导致需要对权限进行重新设置,有耐心的可以分别设置,这里用的是比较偷懒的办法
chmod 775 /
chmod 775 /home/username
chown username /home/username

之后logout重启,grub应可以正常运行了

在执行grub shell命令grub> find /boot/grub/stage1的时候,如果没有返回值,说明该命令不成功。这很可能是由于geometry的参数不正确,需要重复执行前面的操作。如果find命令依然不成功,那么也可能是由于fdisk返回的参数不正确。如果你很清楚/或者/boot安装在哪个分区,那么可以通过直接执行root (hd0,x)这步来指定grub的位置,注意在grub中x是从0开始的计数的。

在某些情况下windows7可能会不正常,这个时候可以用windows7的安装盘执行修复,可能需要修复两次,才能Windows7的BOOTMGR恢复正常。我在安装过程中并没有碰到上述问题。另外,如果出现Ubuntu无法启动的情况,很可能是文件权限设置不对,可以先进recovery mode,使用root权限重新设置权限。

以上方法也适用于linuxmint

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值