ubuntu12.04发布了,迫不及待地就格了u盘弄了启动器,安装了之后,杯具了。。启动项没了。。TAT
详情是:
安装好了之后,从usb启动改为硬盘启动,然后就出现一行字:
error: invalid arch independent ELF magic.
囧。。。咋办?
======================================================
先简单说下我的硬盘分区:
分区 内容 格式
sda1 win7那100M系统保留 ntfs
sda2 win7 ntfs
sda3 share disk(放非系统文件) ntfs
sda5 ubuntu的/ ext4
sda6 ubuntu的/home ext4
PS:因为我的内存比较大,所以就没分swap。
我用11.10的时候也是这样分区的,没有/boot分区。
可以用sudo fdisk -lu /dev/sda这个命令查看自己的硬盘分区情况。
======================================================
只能从usb启动,然后进入try ubuntu那个选项,然后从网上找解决方法。
我大概知道是grub2的问题,但是具体是什么原因、要怎么修复还是完全一点头绪都没有。。
经过一番searching之后,大概知道了是因为win7那前面预留的100m的东东是ntfs格式导致的这个问题。
(需要说明的是当首个分区是那个win7 100M NTFS 分区时才发生这种刷不了启动器的情况。网上有人说首 100M 分区是 fat 则不影响;另外,就算首分区是 win7 安装分区(是NTFS)的也不影响,当然,也可能有例外。。。)
起初尝试了各种mount、grub-install之类的命令,都没效。折腾了好久,都快放弃修复方案,打算干脆重新安装,然后把/boot安装在sda1那个100m分区那里算了。这个办法理论上来讲是work的,但是因为我是不折腾会死星人,所以还是选择了这条比较蛋疼的修复之路。。。。
最后柳暗花明的是看到了一篇文章:CreateBootPartitionAfterInstall
他的大概意思是:
1.为/boot创建分区。
2.把现在的/boot(比如我的系统上就是sda5里的boot文件夹)里的东西放到新建的分区里。
3.修改一下相关文件,如/boot/grub/grub.cfg
我就把sda1那100m分区格成ext4格式(注意要先备份里面的东西哦!),然后把/boot的东西复制过去。注意,因为我硬盘里还有win7,所以也把原来那100m分区里的东西复制过去,里面有win7的启动。
具体步骤详见Create Boot Partition After Install的链接。
重启之后,能看见启动菜单了,进入ubuntu,正常。进入win7,error。囧
显示的error是:no such device:E49A20A89A2078E6
invalid signature
明显是没有找到win7的启动点,上网查了下,知道怎么修改grub.cfg。
详见:Ubuntu的启动配置文件grub.cfg(menu.lst)设置指南
修改完重启进入win7选项后,原来的错误没有了,可是又有新的错误了:BOOTMGR is missing 。。。囧
这个比较简单,在之前备份的那个100m ntfs分区的东西里,有个Boot文件夹和bootmgr文件,把他们复制到win7的根目录(即C盘)下就行了。
再次重启,总算一切ok了。。。呼,不容易啊。。。