Ubuntu启动项恢复--LiveCD启动

说明:ubuntu grub系统引导错误主要出现在系统ubuntu更新错误和安装Windows系统之后。
其表现为没有ubuntu引导项,只有其他系统的引导项。也就是不能启动ubuntu系统。

所有命令均是在root权限下执行的!!!

其实修复ubuntu系统也是很耗时的,风险也是有的,建议爱折腾的让人做一下,如果只为了数据,
可以在其他系统下安装工具读取linux分区,或者用系统盘进入拿出数据。


liveCD启动(安装光盘启动)
在BIOS中设置光盘为首先启动设备。(一般是上电后按del键,屏幕上也有提示)
然后插入启动盘开机就行
在install界面可以直接观点对话框,个人感觉这个要比点击TRY UBUNTU 快。
建议大家进入桌面修复而不是纯命令窗口,这样方便上网查资料,以及查看文件系统。

2 .查找系统安装分区
打开命令终端
sudo -i %%获得最高权限
fdisk -l %%(是小写L,不是1)找到自己的ubuntu安装分区格式为 /dev/sdaX
X为数字,就是硬盘分区号,分区格式为ext3或ext4

3 挂载系统
mkdir /media/mnt %%mnt为用户自定义文件夹名字,/media是系统默认挂载点
mount /dev/sdaX (空格)/media/mtn %%挂载原系统,就是刚才找到的,挂载之后会有一
个硬盘标志出现在桌面上,能够点击进去的


4 设置grub引导目录
grub-install --root-directory=/media/mnt (空格) /dev/sdaX --recheck %%设置grub引导
系统目录注意空格,成功后会有一个提示:No Error Reported


5 设置启动项
grub %%进入grub命令 使用quit可以退出如果没就安装,
cd /media/mnt/home/your-computer-name %%进入你原来系统操作目录,因为大多数
命令的起点在这级目录下,这时你可以按照以前的用法进行拨号上网(如果是命
令行的话)。
apt-get install grub %%安装grub命令
update-grub %%更新grub下menu.lst文件,可以不执行。然后进入grub执行下面代码
root (hd0,X-1) %%hd0指硬盘,X-1为数字,就是你的原系统安装所在分区号减
1,这是由于ubuntu是从0开始计数的。
setup (hd0) %%安装启动目录,至此grub修复完成


6 还原系统的启动项
还原ubuntu
kernel /boot/grub/core.img %%加载核心
kernel /boot/memmorytest86+.bin %%加载启动项,可以按tab键自动填充的,如果找
不到,可以重开终端查看这个目录下的文件,同时加载
一下vmlinux generic的系统项(这个才是真正的系统,
文件名长,自己使用tab找吧)

quit %%退出grub命令

还原Windows
这样弄了之后ubuntu就修复好了,但是你的Windows可能就没了,不过不
用惊慌
cd /media/mnt/boot/grub %%如果你的文件架构不一样,可能命令也不一样,总之就
是进入 /grub 目录
gedit menu.lst %%用文本编辑器打开启动项列表文件,在最后面写下面代码(文件里
也有代码说明的)
代码格式:(记住分行)

title system_name %%自己定义就行,只要能分清
root (hd0,x) %%x为系统启动分区减一后的值
makeactive
chainloader +1 %%代码结束

reboot %%重启

其实只要你够强大,完全可以不用kernel命令加载启动项,直接修改menu.lst文件就行,但是ubuntu的启动项设置参数很多,
容易出错。然而修改启动项数目还是轻而易举的,只需要注释相关的代码就行。也就是说你可以把Windows启动项整没了,不
让别人用你的Windows系统(开个玩笑,这个有点无聊,呵呵)

7 进入系统
重启后会自动引导grub的,注意屏幕上的文字,若有提示 ESC 就按一下(这个不按会默认进入ubuntu系统的,时间只有3秒)。
如果按照上面做了话,就用不着写下面的代码了。
若没有,则会提示进入grub命令的
boot %%启动grub引导 若找不到启动项执行下面的代码会提示先要使用kernel装载启动项目录
kernel /grub/core.img %%加载启动项列表,这里tab键无用,直接敲就行(如果有
问题就用命令kernel /boot/grub/core.img)
boot %%终于成功了又看到了熟悉的界面了选择系统进入

说明:如果直接进入原系统有问题可进入recovery模式恢复,以后也可以升级的
进入Windows是可能会提示找不到文件,不用管它,他自己会全硬盘寻找的。
这样修复后的grub每次都得按 esc ,若不按则默认进入ubuntu,不像以前那样直接列出启动表,自由选择。

最后祝大家好运!!!

---------------------------------------
上面的方法不可以的话,就用Live CD吧~ 用ubuntu9.10的liveCD试用ubuntu启动后,打开终端 假如你的ubuntu的 / 分区是sda9,又假如 /boot分区是 sda6,在终端下输入 $sudo -i $mount /dev/sda7 /mnt $mount /dev/sda6 /mnt/boot (如果没 /boot 单独分区这步跳过) $grub-install --root-directory=/mnt/ /dev/sda 和前面一样,要装入第二硬盘的把sda改为sdb 修复后无法引导windows,可以用下面的方法解决: 进入ubuntu系统,打开终端,重建grub列表 $sudo update-grub 重新写入第一分区mbr $sudo grub-install /dev/sda 如果想修改启动顺序,可以修改/boot/grub目录下的grub.cfg文件 注意此文件不可写的,先执行一下命令 $sudo chmod +w /boot/grub/grub.cfg 然后再执行 $sudo gedit /boot/grub/grub.cfg 修改,类似于grub1的menu.lst修改Grub rescue模式 rescue模式下可使用的命令有:set,ls,insmod,root,prefix(设置启动路径) ls --列出分区 ls (hd0,8)/ --查看(hd0,8)分区根目录 找到grub目录,然后继续 grub rescue>root=(hd0,x) grub rescue>prefix=/boot/grub --(grub的目录) grub rescue>set root=(hd0,x) grub rescue>set prefix=(hd0,x)/boot/grub grub rescue>insmod normal grub>normal --------若出现启动菜单,按c进入命令行模式 grub>linux /boot/vmlinuz root=/dev/sdax grub>initrd /boot/initrd.img grub>boot 完成 进入系统后,更新GRUB或重装GRUB: 更新:sudo update-grub 重装:sudo grub-install /dev/xxx (这儿的xxx是sda或者sdb)

-------------------------------
mount 把安装Linux的boot分区挂载到/mnt目录下
grub-install 安装grub,加上--root-directory参数,指向挂在到的目录,参数为硬盘第一分区所在位置
grub-update更新grub列表


 

你可能感兴趣的:(ubuntu)