Fedora 16 使用LiveCD修复grub2引导

自从我的电脑装了Fedora 16变成双系统以后,竟然又对openSUSE感兴趣了,结果兴冲冲的想装个三系统玩玩,但是其实我对Linux方面根本不太懂啊,结果在安装的时候把openSUSE的grub引导直接安装到了MBR上面,把原来Fedora 16的grub2引导给覆盖了,结果电脑识别不了Fedora 16,而且openSUSE又识别不了我的无线网卡,整个就杯具了,还好学长及时出马,终于把这个问题解决了,呵呵^_^

现在的孩子都喜欢装系统,Windows 7+Fedora,如果先装win7再装Fedora,是蛮简单的,如果先装Fedora,然后WIN 7,本文方法也是适用。

如果LiveCD不知为何物,请google

如果知LiveCD不知如何制作,请google

如果做好LiveCD不知如何用其引导,请google

 【为了照顾一些刚想玩fedora的奋斗青年,省去你的google时间吧】

step1:http://fedoraproject.org/  下载600多M的livecd镜像文件,首页是32位,你可以点更多下载64位

step2:https://fedorahosted.org/liveusb-creator/ 下载liveusb的制作软件,官方的。

step3:准备一个U盘,(里面有数据也没关系,制作的时候不像pe,会把你格式化,他保留原有数据),

用那个软件选择刚才你下载好的ISO,然后选择你的U盘盘符,persistent storage 选择个100M(这个相当于

Livecd里的/home挂载点,除了这个之外的其他挂载点是不用写入的U盘的),点击creat就可以完成制作了。

step4:调整你的bios启动顺序或者现在笔记本都支持quick boot,选择U盘启动就可以了。

启动后会出现start fedora 16 ,按回车就可以进入了

【有些U盘用官方的windows版本liveusb creator制作之后会启动不了,换个U盘尝试。或者到

http://unetbootin.sourceforge.net/下载这个软件尝试】

【进入之后默认是英文,如果你英文不好请单击屏幕右上角的live用户名,选择system settings,然后

选择region and  language(单击即可),在出来的对话框选中 chinese。再去右上角单击用户名,log out,

注销之后会问你是否更改home下面的文件夹名字,我建议不要该成中文,因为这样你在shell里面比较麻烦】

用LiveCD启动之后,首先应该明确的是你的fedora装在哪个分区,现在的硬盘都应该是sata的吧,那么就对应

/dev/sdax,x是个数字,1~4表示主分区,5开始是逻辑分区。如果你在可伶的用着IDE硬盘,那么就对应/dev/hdax

打开你的磁盘实用工具,或者叫Disk unity,找到fedora安装所在分区,我的在sda10,所以下面就拿这个说明了。。

1
2
<font face="Courier New">su</font>
<font face="Courier New">mount</font> -t ext4 -o rw /dev/sda10   <font face="Courier New">/media</font>

把fedora的安装分区挂载到当前的LiveCD文件系统下,当然如果你比较偷懒的话,比如我:),直接在文件管理器里面双击
一下那个分区,然后就会在/media/_FEDORA_*** 下挂载了

原来安装在硬盘上的fedora只是把文件目录挂上来了,一点硬件资源也木有,啥事也干不了,只能用来copy/paste一下数据,
现在把当前系统的资源给他

1
2
3
4
5
<font face="Courier New">su</font>
<font face="Courier New">mount</font> -t proc none /media/proc
<font face="Courier New">mount</font> -o bind /dev <font face="Courier New">/media/dev</font>
<font face="Courier New">mount</font> -o bind /sys <font face="Courier New">/media/sys</font>
<font face="Courier New">mount</font> -t devpts devpts /media/dev/pts

特别看清楚上面的指令,千万别把 /dev 写成了/dev/,如果这样就会出现
/dev is not a block device了

挂完后用chroot命令切换到原来的fedora中去

 

1
2
3
<font face="Courier New">su</font>
chroot /media
grub2-install <font face="Courier New">/dev/sda</font>

当然上述指令是讲grub2安装到硬盘MBR上恢复引导,如果你想装在当前分区中让其他软件来引导就应该是
grub2-install /dev/sda10

OK,做下扫尾工作

 

1
2
3
4
5
6
7
<font face="Courier New">exit</font>
<font face="Courier New">umount</font> <font face="Courier New">/media/proc</font>
<font face="Courier New">umount</font> <font face="Courier New">/media/dev/pts</font>
<font face="Courier New">umount</font> <font face="Courier New">/media/sys</font>
<font face="Courier New">umount</font> <font face="Courier New">/media/dev</font>
<font face="Courier New">umount</font> <font face="Courier New">/media</font>
<font face="Courier New">reboot</font>

当然,上述修复的grub是原来的grub,opensuse没了,其实grub2很强大,能自动识别n多系统,只需重新生成配置
文件即可。

1
2
3
<font face="Courier New">su</font>
grub2-mkconfig  -o  /boot/grub2/grub.cfg
<font face="Courier New">reboot</font>

congratulations

今天在帮别人修复的时候,又遇到一些问题,写下来分享

首先:这台电脑的分区并不是我上面写的简单的一个 / 分区,用的LVM和一个boot分区(sda8),那么在挂载的时候就要分别挂载了。在LVM里有一个 root的逻辑卷组和一个swap卷组,位于/dev/mapper/vg_fedora_root,和/dev/mapper/vg_fedora_swap(这个的取名是自己定义的,如果采用系统自己默认的分区安装,不是手动的话,名字不同)

 

1
2
3
<font face="Courier New">su</font>
<font face="Courier New">mount</font> -o rw  /dev/mapper/vg_fedora_root   <font face="Courier New">/media</font>
<font face="Courier New">mount</font> -o rw /dev/sda8  <font face="Courier New">/media/boot</font>

然后挂载上述写的资源。

其次:在执行grub2-install 的时候,遇到错误

1
2
3
4
[root@Fedora sunhao]# grub2-install /dev/sda
/sbin/grub2-setup: warn: Your embedding area is unusually small.  core.img won't fit in <font face="Courier New">it..</font>
/sbin/grub2-setup: warn: Embedding is not possible.  GRUB can only be installed in <font face="Courier New">this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..</font>
/sbin/grub2-setup: error: will not proceed with blocklists.

网上查的是mbr和sda1之间的那块embedding area太小了,应该是默认的63,如果是32的话会出现这个问题,但是我执行fdisk  -lu,显示这电脑已经是63了,不明原因。
google了一把,没找到解决方案还是安装不上去,后来我在wiki上面,看到了这个用法,强制安装。

1
grub2-install  --force  /dev/sda

竟然可以装上去,并且成功启动~

相关推荐