修复Ubuntu引导菜单的方法

发布时间:2020-12-14编辑:脚本学堂
本文介绍修改ubuntu引导菜单的方法,希望对大家有所帮助。

本文介绍修改ubuntu引导菜单的方法,希望对大家有所帮助。

自从Ubuntu能以Wubi.exe直接双击安装后,就从没独立分区安装过,开发上还是双系统较为方便些,所以,关于Ubuntu启动菜单的修复问题还是会经常遇到,对使用Wubi安装的Ubuntu而言,修复启动菜单非常简单,但如果你的Ubuntu是独立linuxfenqu/ target=_blank class=infotextkey>linux分区形式安装的,要想修复好引导,还是有点麻烦,而且还要小心,别把挂载点搞错了。
本文测试环境:Windows 7 + Ubuntu 12.04 LTS

一、Wubi安装的Ubuntu

方法1:Ubuntu引导Windows

采用Wubi.exe安装的Ubuntu默认是使用虚拟磁盘方式安装的,Ubuntu本身作为Windows的一个文件夹存在,要想修复此类引导,方法非常简单。
这里假设你的Ubuntu是跟天缘一样安装到了D:Ubuntu下,修复步骤如下:
把D:Ubuntu改名为D:Ubuntu_old
运行wubi.exe,会弹出Ubuntu安装界面,设置跟以前相同,也安装到D盘,注意:如果你也是安装的ubuntu-12.04-desktop-amd64这个版本,最好先把网线给拔了,不要让它下载那个烦人的amd64文件。
当提示重启机子时,选择稍后启动,这时把最新的D:Ubuntu改名为D:Ubuntu_tmp,把D:Ubuntu_old改名为D:Ubuntu
重启机子会直接进入Ubuntu系统,这时直接点击关闭重启,原来的Windows/Ubuntu双启菜单已经修复,此时再次进入Windows,D:Ubuntu_tmp就可以删除了。

方法2:Vista/win7引导Ubuntu

对Vista/windows7用户,假定Ubuntu安装路径为D:Ubuntu,以管理员权限执行cmd.exe,依次执行下面语句:
bcdedit /create /d "Ubuntu" /application bootsector
此时会自动生成一个{ID},把这个ID拷贝并替换下文的{ID}
bcdedit /set {ID} device partition=D:
bcdedit /set {ID} path ubuntuwinbootwubildr.mbr
bcdedit /displayorder {ID} /addlast
重启机子即可,上述方法1和方法2效果刚好相反,一个是Ubuntu菜单引导Windows,一个是Windows菜单引导Ubuntu。

二、独立分区下的Ubuntu引导

如果Ubuntu是使用独立分区安装的(光盘安装),或使用独立的grub引导的,上文方法不再适用,因为Windows“有意”不去认Linux分区。
首先需要注意,修复此类引导,首先需要确保当前系统和数据安全(包括Windows和Ubuntu),不可因为分区盘符输入错误导致数据丢失或误删除!

方法1:使用Ubuntu LiveCD

Ubuntu LiveCD是非常好的维护光盘,只可惜版本升级太快了,大家都舍不得天天跟着去刻盘,如果有,可用此系统光盘启动,然后在Terminal终端中查找Ubuntu安装根分区,并修复启动,步骤如下(依次执行):
 

复制代码 代码如下:
sudo -i
fdisk -l(该命令会显示当前磁盘列表,找到Ubuntu根分区,假设为sda2)
mkdir /mnt/temp
mount /dev/sda2 /mnt/temp (该命令装载根分区)
mount /dev/sda3 /mnt/temp/boot (如果有 /boot独立分区,假设为sda3,如果无/boot独立分区则跳过本步骤)
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt/temp$i; done (挂载系统目录)
chroot /mnt/temp (Chroot进入原系统)

重装GRUB到MBR:
 

复制代码 代码如下:
grub-install /dev/sda
update-grub
exit

方法2:使用传统Grub menu.lst

即使没有Ubuntu光盘,我们一样可以达到方法1类似的效果,但是需要通过Windows或WinPE等方式安装一个Grub引导程序,比如Grub4dos。然后再启动进入Grub菜单后使用命令行形式修改menu.lst(备注:自Ubuntu9开始采用Grub2引导,启动菜单放在/boot/grub/grub.cfg,早期则用/boot/grub/menu.lst和/boot/grub/stage1)。
如果想使用Grub1引导Grub2,示例如下(该方法未验证):

/boot非单独分区
 

复制代码 代码如下:
title Ubuntu
root (hd0,x)
kernel /boot/grub/core.img
boot

/boot单独分区
 

复制代码 代码如下:
title ubuntu
root (hd0,x)
kernel /grub/core.img
boot