声明:本人刚接触linux,引导出现问题后是自己google摸索着修复的(两个星期以前的事情,过程可能记得不太清楚了)。第一次写帖子,如有错误或逻辑混乱, 还请见谅!!!
由于上学的需要,所以保留了windows,安裝双系統opensuse12.3,出于对centos的好奇,在安装centos过程中,分区表被更改(我以前的分区是sda1,sda2,sda3,sda4,sda5,sda8,sda9,sda7,sda6… 安装后被修改成顺序的sda1~9 也就是sda8,sda9,sda7,sda6被调整成了正常的6,7,8,9的顺序,不过我的以前分区的大小没有变化),开机后出现 error 15 : file not found (好像是这个错误,有些记不清了) , 可是我不想重做系统,就google了一阵,经过3个小时的折腾,修复成功,下面是我的修复过程:
1.首先了解硬盘的两种表示方法sdax (hdx,y) 我参照这是篇文章: blog.csdn.net/freexploit/article/details/961330
2.我用livecd盘(因为对命令行还不熟悉,所以在装系统之前就刻了一张livecd)进入opensuse系统,打开终端,切换到root用户
输入fdisk -l 根据分区的大小确定现在的opensuse在哪个sda中,如图,根据安装时分配给opensuse的大小,我确定出我的opensuse在sda11(/),sda12(/home) ,
!](http://www.dumpt.com/img/files/99xu7532hi1f33j753ua_thumb.png)
!](http://www.dumpt.com/img/viewer.php?file=99xu7532hi1f33j753ua.png)
ls -l /dev/disk/by-id (一会要用到显示的信息)
!](http://www.dumpt.com/img/files/pedw88jtgdfjoec27v28_thumb.png)
!](http://www.dumpt.com/img/viewer.php?file=pedw88jtgdfjoec27v28.png)
打开一个新的终端,刚才的要留着,一会要用到里面的信息。
然后挂载根分区:
cd /mnt
mkdir sda11
mount /dev/sda11 /mnt/sda11
挂载分区后,就要修改文件了。
cd /mnt/sda11/etc
cp ./grub.conf ./grub.conf.bak (备份一下,这是一个好的习惯)
vi ./grub.conf
!](http://www.dumpt.com/img/files/l9ptr59scdih9mijwbk1_thumb.png)
!](http://www.dumpt.com/img/viewer.php?file=l9ptr59scdih9mijwbk1.png)
将第一行的两个(hd0,x)和第二行的(hd0,x)中x位置 的数字改成10 (因为我的opensuse在sda11中,用另一种方法表示就是(hd0,10),不懂的可以去看一下http://blog.csdn.net/freexploit/article/details/961330)
然后保存推出(:wq)
cp ./fstab ./fstab.bak (备份一下,这是一个好的习惯)
vi ./fstab (这个好像是和挂载分区有关)
!](http://www.dumpt.com/img/files/k0b5q2ufutsluqvk9n8r_thumb.png)
!](http://www.dumpt.com/img/viewer.php?file=k0b5q2ufutsluqvk9n8r.png)
分别将前三行swap / /home 前面的一大串修改成 ls -l /dev/disk/by-id 中娴熟的sda10 sda11 sda12前面的一大串。
然后保存推出(:wq)
cd /mnt/sda11/boot/grub
cp ./menu.lst ./menu.lst.bak
vi ./menu.lst (如果你采用opensuse引导其他系统,这里面还会有其他系统的启动信息,如果需要的话,也应该修改!)
!](http://www.dumpt.com/img/files/hv4drs039n1ydfl26g1x_thumb.png)
!](http://www.dumpt.com/img/viewer.php?file=hv4drs039n1ydfl26g1x.png)
将##YaST - generic_mbr
gfxmenu (hd0,10)/boot/message这两行中的(hd0,x)中的x位置的数字改成10
!](http://www.dumpt.com/img/files/3y1adu64aixd82phuzsh_thumb.png)
!](http://www.dumpt.com/img/viewer.php?file=3y1adu64aixd82phuzsh.png)
将
###Don’t change this comment - YaST2 identifier: Original name: linux###
title Desktop – openSUSE 12.3
root (hd0,10)
kernel /boot/vmlinuz-3.7.10-1.1-desktop root=/dev/disk/by-id/ata-WDC_WD5000BEVT-24A0RT0_WD-WX21A9030141-part11 resume=/dev/disk/by-id/ata-WDC_WD5000BEVT-24A0RT0_WD-WX21A9030141-part10 splash=silent quiet showopts
initrd /boot/initrd-3.7.10-1.1-desktop
里面
kernel /boot/vmlinuz-3.7.10-1.1-desktop root=/dev/disk/by-id/ata-WDC_WD5000BEVT-24A0RT0_WD-WX21A9030141-part11 resume=/dev/disk/by-id/ata-WDC_WD5000BEVT-24A0RT0_WD-WX21A9030141-part10 splash=silent quiet showopts
这行中的
ata-WDC_WD5000BEVT-24A0RT0_WD-WX21A9030141-part11 替换成 ls -l /dev/disk/by-id 中 sda11 前面的一大串
保存推出(:wq)
之后取出光盘,重启系统,即可正常进入opensuse12.3系统了。
参考:http://blog.163.com/tian1988320@126/blog/static/16583009920111071510445
blog.csdn.net/freexploit/article/details/961330
blog.csdn.net/rainday0310/article/details/6347377
其他不懂的地方我都是一个一个google出来的。
总结:个人理解,这个过程主要就是将系统里面的配置文件与硬盘的标号对应上,用到了一些基本的终端命令(如cp mount…) ,使用vi修改文件,等知识。。 希望这个帖子会对需要的人有点帮助,由于个人的习惯设置不同,操作上会有一些差别,希望大家能自己摸索,在不断的学习中进步。再强调一下,本人刚接触linux不久,上次修复又是在2个星期以前,可能过程或细节有些忘记或者水平有限,写出一些错误,还请见谅,如果大家发现错误,还请提出,我看到后会修改,方便新人学习。。。谢谢!!
PS:不会插入图片,弄来弄去一直很小,所以直接在下面贴出图片地址。