用 LiveCD 启动之后,首先应该明确的是你的 Fedora 装在哪个分区,现在的硬盘都应该是 SATA 的吧,那么就对应 /dev/sda#,#是个数字,1~4表示主分区,5开始是逻辑分区。如果你在可伶的用着 IDE 硬盘,那么就对应/dev/hda#。
打开你的磁盘实用工具,或者叫 Disk unity,找到 Fedora 安装所在分区,我的在 sda10,所以下面就拿这个说明了。
su
mount-t ext4 -o rw/dev/sda10/media
把 Fedora 的安装分区挂载到当前的 LiveCD 文件系统下,当然如果你比较偷懒的话,比如我:),直接在文件管理器里面双击一下那个分区,然后就会在/media/_FEDORA_*** 下挂载了。
原来安装在硬盘上的 Fedora只是把文件目录挂上来了,一点硬件资源也木有,啥事也干不了,只能用来 copy/paste 一下数据,现在把当前系统的资源给他:
su
mount-t proc none/media/proc
mount-o bind/dev/media/dev
mount-o bind/sys/media/sys
mount-t devpts devpts/media/dev/pts
特别看清楚上面的指令,千万别把 /dev 写成了 /dev/,如果这样就会出现:/dev is not a block device 了。
挂完后用 chroot 命令切换到原来的 Fedora 中去:
su
chroot/media
grub2-install/dev/sda
当然上述指令是讲 grub2 安装到硬盘 MBR 上恢复引导,如果你想装在当前分区中让其他软件来引导就应该是:
grub2-install /dev/sda10
OK,做下扫尾工作:
exit
umount/media/proc
umount/media/dev/pts
umount/media/sys
umount/media/dev
umount/media
reboot
当然,上述修复的 grub 是原来的 grub,其实grub2很强大,能自动识别 N 多系统,只需重新生成配置
文件即可:
su
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
Congratulations!
今天在帮别人修复的时候,又遇到一些问题,写下来分享:
首先,这台电脑的分区并不是我上面写的简单的一个 / 分区,用的 LVM 和一个 boot 分区 sda8,那么在挂载的时候就要分别挂载了。在 LVM 里有一个 root 的逻辑卷组和一个 swap 卷组,位于 /dev/mapper/vg_fedora_root,和 /dev/mapper/vg_fedora_swap(这个的取名是自己定义的,如果采用系统自己默认的分区安装,不是手动的话,名字不同)
su
mount-o rw /dev/mapper/vg_fedora_root/media
mount-o rw/dev/sda8/media/boot
然后挂载上述写的资源。
其次,在执行grub2-install 的时候,遇到错误:
[root@localhost]# grub2-install /dev/sda
/sbin/grub2-setup: warn: Your embedding area is unusually small. core.img won't fitinit..
/sbin/grub2-setup: warn: Embedding is not possible. GRUB can only be installedinthis setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
/sbin/grub2-setup: error: will not proceed with blocklists.
网上查的是 MBR 和 sda1 之间的那块 embedding area 太小了,应该是默认的 63,如果是 32 的话会出现这个问题,但是我执行 fdisk -lu,显示这电脑已经是 63 了,不明原因。
google了一把,没找到解决方案还是安装不上去,后来我在wiki上面,看到了这个用法,强制安装。
grub2-install--force /dev/sda
竟然可以装上去,并且成功启动~