[ 已解决 ] 安装后,重启出现 grub rescue>

原来是双系统,一个 win(在 /dev/sda1)一个 linux(在逻辑分区)。在装 opensuse12 选择分区时,选择手动分区,按原分区进行(/,/home,swap)。确定时,提示没 fat 的 /boot/efi 可能导致引导出错,尝试从 swap 中分些出来,报 /boot 什么不在 gpt 的提示,最后还是没有分 efi
重启后,出现如题错误。按网上使用 insmod /grub/normal.mod 时提示无该文件。使用 live cd 进去,grub-install /dev/sda 没效果。应该如何修复呢?
使用手机中,有些不便

wiki 上有修复 GRUB2
zh.opensuse.org/%E4%BF%AE%E5%A4%8DGRUB2

进入救援模式

准备好一张 openSUSE 对应的 DVD 光盘,或者 live USB,最好选择与当前系统相同的版本。开机启动 openSUSE DVD 或者 Live USB,,进入救援模式。等待各种输出结束,看到"login" 后,输入用户名"root",直接回车即可进入救援模式,不需要输入密码。

挂载原系统的各分区

首先查看各分区的情况,使用命令:

fdisk -l
列出分区情况。然后将各个分区挂载。例如,假设 sda6 为 /boot 分区,sda7 为 swap 分区,sda8 为 / 分区,sda9 为 /home 分区,我们就可以这样挂载:

mount /dev/sda8 /mnt
mount /dev/sda6 /mnt/boot
mount /dev/sda9 /mnt/home
注意,swap 分区不需要挂载。要先挂在根分区,然后把其他的分区相应的挂在到根分区下。接着,

mount --bind /dev /mnt/dev
再然后

chroot /mnt
mount /proc
mount /sys
这样,所需的挂载就结束了。

重装 GRUB2

首先生成 /boot/grub2/grub.cfg:

grub2-mkconfig -o /boot/grub2/grub.cfg
然后将 GRUB2 安装到 sda:

grub2-install /dev/sda
这里,使用的命令是 grub2-install 而不是 grub-install,其他的发行版比如 Ubuntu 会有所不同,不过明显 openSUSE 这样给出的命令就很明显地指明是 GRUB2 而不是 GRUB。

退出,重启

这样就已经安装完毕了,接着退出

exit
重启

reboot
进入原来的 openSUSE 系统即可。

是我说错了,之前试过在 arch 里 chroot 使用 grub2-mk*/install 结果重启没任何改变
现在狠心把盘全格了安装,只更改了 /home 大小,结果重启出现一些文字(现在没相机捕捉),然后出现 boot menu, app menu 的界面和 bios 里的 boot 项一样,选择硬盘,又出现前面未捕捉的文字,最后又回到相同界面,窘
重新安装几次,仍出现上段文字现象,无语了,我都格了盘,你到底要咋样?
更要命的是,本来说服朋友装这的,看见我这样,他又犹豫了,怎么破

我总结出来(楼主只说了他认为重要的东西,但有些东西如果你没说那么我们可以认为你忽略了或者不懂):

你之前在把 openSUSE 全部装到 Windows 下划分出来的逻辑分区 上。而没有把 openSUSE 的 /boot 放到主分区上。

后来你格掉全硬盘后,装 openSUSE 时又没在最后的那个概览页面编辑引导菜单添加 写入 MBR 。

是这样吗?

zh.opensuse.org/SDB: 分区

先学习下基本概念,什么是主分区,什么是扩展分区,什么是逻辑分区吧。

单奔是最简单的安装方法,是你们非要保留一个 Windows,先难后易把自己的体验变得很糟糕,这不能怪别人,谁让你非和学习曲线拧着来呢。

Sent from my Galaxy Note 2 using Tapatalk 4 Beta

确实是不知道 /boot 要放主分区里,那要怎样才能放到主分区呢,看见的只有分区,没看见怎么分为主分区(昨天熬夜将 win 又给装上了,有些软件让我现在摆脱不了它)

是这样的,我的错(rtfw)

人类逻辑想啊,逻辑分区是 Windows 搞的标准(你在 Linux 下听说过吗?),Linux 认识归认识,那是内核支持的。你现在把内核都扔到逻辑分区里面去,你怎么能指望 GRUB 那几 KB 的东西认识一个 Windows 标准呢?

如果你这张硬盘是未分区的,那么让 openSUSE 来分区的话,那划分的就全是「主分区(Primary Partition)」( MBR 格式分区表下面,主分区不能超过四个,超过 4 个,openSUSE 安装程序就会提示你转 MBR 格式分区表为 GPT 格式分区表,就是 Mac OS X 用的那个,这就是你什么 efi 什么 gpt 的错误的来源 )和「扩展分区(Extended Partitions)」 (扩展分区不是 Windows 搞出来的标准,它的意思是「为了完整性的一个补集」,类似于「其它」,然后里面还能划分区。所以分区的时候是先划一个把所有扩展分区里面的分区都囊括进去的大区叫扩展分区,然后再在里面划小区。但是这个「其它」和主分区不一样的地方在于, 它本身和它其中的所有小区均不可用于引导 。 或者你可以理解为 MBR 不识数,磁盘编号超过 4 不认识 ; 它还就只吃一种粮,扩展分区不吃 )。

但如果你用 Windows 分的区,你就要把你的「扩展分区(Extended Partitions)」缩小,可能涉及到要先缩小位于扩展分区中的「逻辑分区(Logic Partition)」。然后才有剩下的未分区空间给你划分一个主分区来建立 /boot。 注意,你把逻辑分区删了,空出来的空间不是「未分区空间」,它仍是扩展分区的一部分,你得把扩展分区缩小,剩出的才是「未分区空间」 。

大概像这样

[MBR] 主分区一 ] 主分区二 ] 主分区三 ] 主分区四 ] {扩展分区 逻辑分区一 ] 未划分的扩展分区空间 ]} 未分区空间 ]

于是你现在划分出一个 /boot

[GRUB2] [Windows] [swap] [boot] 主分区四 ] {扩展分区 逻辑分区一 ] 未划分的扩展分区空间 ]} 未分区空间 ]

然后在扩展分区(注意不是逻辑分区!)上划分出根分区(/)和 home 分区(/home)

[GRUB2] [Windows] [swap] [boot] 主分区四 ] {扩展分区 [openSUSE /] [openSUSE /home] 逻辑分区一 Windows D] 未划分的扩展分区空间 ]} 未分区空间 ]

现在 openSUSE 的问题解决了,但你的 Arch 装不了了。因为你缺一个主分区来放 Arch 的 swap(当然 Arch 不用 swap 也可以装只不过性能会下降很多)。

所以我们一直建议先装 Linux,用 GRUB(2) 管理 Windows 不是没有逻辑的,因为 GRUB 能够引导位于扩展分区上的 Windows,比如这样:


里面 Extended 上面的都是主分区,Extended 本身和它下面的分区都是扩展分区和它里面的小区(Linux 在扩展分区里面建的小区也叫扩展分区,而不叫逻辑分区),剩下的是 Systemd 在内存里弄出来的缓存区。

PS:我的人生中没有测试的过的就是「 Windows 建立的扩展分区和 Linux 建立的扩展分区究竟一不一样 」。我都是先装 Linux,也没那个闲情去测试。如果不一样的话,你把 / 根分区或 /home 放到扩展分区上时会提示你 LVM 什么的(对 LVM 没研究,超大硬盘的服务器才用)。要是那样的话你还要在 Linux 重建一个扩展分区,变成这样:

[GRUB2] [Windows] [swap] [boot] 主分区四 ] {Windows 建的扩展分区 逻辑分区一 Windows D] 未划分的扩展分区空间 ]} {Linux 建的扩展分区 [openSUSE /] [openSUSE /home] 未划分的扩展分区空间 ]} 未分区空间 ]

PS1:

于是你现在自己查数,这里面涉及到了多少种概念。我们的安装程序的目的就是为了「我不懂的东西伤不着我」,然后你们非无知者无畏或者不懂装懂的往枪口上撞,那又能怪谁来。

重新安装了 win7, 安装时先删除了所有分区,然后分一个区安装 win7,这时会提示会再分一个几 M 的分区,确定后安装 win7。
然后安装 openSUSE,在分区时,选择在剩下的空间内,分成 /,/home,swap,也会提示有关引导的问题,我直接忽视掉。然后在

(最开始我选的是 grub2,然后无 win7 引导项,进入 openSUSE 改为 grub2-efi 后,出现 win7 引导)
重启,即成功了。