分类
Linux

通过LiveCD修复GRUB2

昨天重新安装了Ubuntu,但是grub2出现问题,导致错误Error 15,压根进不了grub command line,没有办法,只好修复Grub2,无奈网上的内容多是修复Grub的,很少关于通过liveCD修复grub2的,在搜索google之后,发现了该文,特地翻译出来,给有需要的朋友们使用。

首先,需要Ubuntu LiveCD,并且从LIVECD引导系统。

打开一个终端窗口,输入下面的命令

$ sudo fdisk -l

查看你的硬盘设备的map,记住Ubuntu在哪个设备上安装,比如我的Ubuntu安装于/dev/sdb1,而/dev/sda是Windows,下面的所有命令都是以这个例子为准的。之后,挂载/dev/sdb1设备.

$ sudo mount /dev/sdb1 /mnt

假如你的/boot分区使用了单独的分区,则还需要挂载这个分区,比如/dev/sdb2。一定要仔细查看过fdisk的输出内容,千万别搞错了。

$ sudo mount /dev/sdb2 /mnt/boot

现在让我们来挂载其他的设备,

$ sudo mount –bind /dev/mnt/dev

现在chroot到你的系统。chroot进去的系统,可以执行很多命令,包括安装,删除软件,修改各种文件。它提供了与特殊的根文件系统交互的shell。

$ sudo chroot /mnt

应该是以root的权限chroot到你的根文件系统,之后就以root的权限执行命令,不需要sudo了。

现在应该编辑/etc/default/grub文件,使其适合你的系统。我只是打开看了一下,并没有做任何修改。

# vi /etc/default/grub

当完成编辑之后,需要运行update-grub命令创建配置文件.

# update-grub

将grub2安装到MBR,接下来需要运行 grub-install /dev/sdb

# grub-install /dev/sdb

如果发现了任何错误信息,尝试一下 grub-install –recheck /dev/sdb

# grub-install –recheck /dev/sdb

按Ctrl+D退出Chroot环境,退回至LIVECD的终端窗口,接下来卸载所有刚才挂载的卷。

$ sudo umount /mnt/dev
$ sudo umount /mnt

然后重启系统,grub2应该就恢复正常了。

分类
Linux

Grub不能引导Windows[双硬盘]

我的系统两块硬盘,Primary Slave是一块IDE的硬盘,安装了Ubuntu 8.04,还有
一块SATA硬盘,安装了WINXP。前两天重新安装后,发现Ubuntu的grub竟然不能引导我的WINDOWS XP,这让我很纳闷,搜索了,但是没有找到答案。后来在社区有位兄弟给了我solution。

fdisk -l的显示如下:

$ sudo fdisk -l 
Disk /dev/sda: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xf0b1ebb0  
Device Boot Start End Blocks Id System  
/dev/sda1 * 1 243 1951866 82 Linux swap / Solaris 
/dev/sda2 244 14593 115266375 5 Extended /dev/sda5 244 14593 115266343+ 83 Linux 

Disk /dev/sdb: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x1ba41ba3  
Device Boot Start End Blocks Id System  
/dev/sdb1 * 1 3824 30716248+ 7 HPFS/NTFS 
/dev/sdb2 3825 30401 213479752+ f W95 Ext'd (LBA) 
/dev/sdb5 3825 14278 83971723+ 7 HPFS/NTFS 
/dev/sdb6 14279 30401 129507966 7 HPFS/NTFS *

menu.lst文件的Ubuntu和windows部分的代码如下:

title Ubuntu 8.04.1, kernel 2.6.24-21-generic  
root (hd0,4)  
kernel /boot/vmlinuz-2.6.24-21-generic root=UUID=7fab4bcf-a237-42b0-b51f-254d42fea748 ro splash noapic locale=zh_CN vga=792 quiet  
initrd /boot/initrd.img-2.6.24-21-generic quiet 

title Microsoft Windows XP Professional  
rootnoverity (hd1,0)  
savedefault makeactive  
chainloader +1  
boot*  

解决办法如下(共两种办法):

第一法:

> map (hd1) (hd0) 
> rootnoverify (hd1,0) 
> makeactive 
> chainloader +1 >*

第二法:

> find --set-root /yykXP.ck_ 
> chainloader /ntldr 
abcxp.ck_ 把这个放在你的XP区的根下.(XP的那里就放在那个根下).  

嘿嘿,这下两个系统都能进去了。当然,还能使用WINDOWS XP的BOOT.INI来加载Ubuntu。方法如下:

$sudo dd if=/dev/sda1 of=/media/winc/ubuntu bs=512 count=1 

该命令是将sda1的盘头的512字节读出来,保存为ubuntu文件至C盘根下。

接着修改windows的boot.ini文件,在文件最后加入c:\ubuntu="Ubuntu"就可以了,整个文件如下:

*[boot loader]
timeout=5  
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect  
c:\ubuntu="Ubuntu 8.04"  

方法多种多样,我就是觉得Grub比较好。另外,Ubuntu 8.10就要发布了,很期待。

分类
随笔

百思不得其解

这几天给一个成都的朋友帮忙,告诉他如何安装Ubuntu,因为他是双硬盘的主机,他不想破坏SATA硬盘的数据,于是希望能用IDE整块盘跑Ubuntu。

起先很正常,他安装好后,没有什么问题,就是XP无法引导,后来他重新安装了,结果问题出现了,无法引导IDE硬盘的GRUB,每次都是无系统,请插入光盘。当时,我从网络上搜了一下,绝大多数朋友认为是GRUB没有写到MBR,所以引导失败,于是将下面的解决办法告诉他:

使用LIVECD引导系统进入桌面,打开终端,

#sudo grub
grub>find /boot/grub/stage1
//之后返回一个数值如  (hd0,6)
(hd0,6)
grub>root(hd0,6)
grub>setup(hd0)
grub>quit

他使用了这个办法但是不奏效,还发现了一个问题,在windows下面使用PQMAGIC看IDE的分区,除了SWAP分区的可用空间是正常的以外,其他分区可用空间为0。于是我又搜索答案,发现某人说是零磁道的55AH如果有问题,也会引起硬盘无法引导的错误。于是使用DISKMAN工具修复,但是依旧是好的。

于是我建议他拿上硬盘到他朋友那去看看。两个小时后,他告诉我,硬盘是好的,在他朋友那一切正常。很奇怪的一个问题,我百思不得其解,找不到解决办法。我就告诉他,让他把他朋友的数据线带上,别改硬盘的跳线,再回家试。

终于,硬盘正常了。后来他仔细检查了一下IDE数据线,是40针的,而他用的新线是80针的。终于发现问题所在了!