【原创】还是引导的问题,希望有点用
安装了Linux后,双系统的引导问题的确困扰了许多人;再加上双硬盘更让人搞不明白了,该怎么设置了。针对上面的问题,以使用grub引导为例,说说我的一些认识:
首先,看一下从给计算机加电到Linux完全启动的过程。 (操作系统启动都有类似的过程)
------------------------------------------------------------------------
---------------------------
Power-up| System startup | BIOS / BootMonitor
\ ---------------------------
\ --------------------------
\ | Stage 1 bootloader| Master Boot Record (MBR)
\ --------------------------
\ ----------------------
\ | Stage 2 bootloader | LILO, GRUB, etc.
\ ----------------------
\ ------------------
\ | Kernel | Linux
\ ------------------
_\| --------------
Operation |Init | User-space
--------------
-----------------------------------------------------------------------
一般安装我们将GRUB写入MBR,这里只是GRUB的程序,GRUB引导操作系统还需要一些其他的数据文件和配置文件(menu.lst),这些一般存放在Linux系统下的 /boot/grub/ 目录下。
至于具体放入了哪个分区的 /boot/grub 中,在写入MBR前是指定了的。所以要改变,必须要重写正确的grub到MBR。
这里一般我们会遇到问题是,无法找到grub。原因有可能是:grub所在的分区已经不在了;还有grub所在分区的文件系统(filesystem)没有驱动(格式无法识别);自然无法读取grub引导信息。
解决办法一: DOS下 fdisk /mbr 就把MBR里的GRUB删掉了,这样会从第一块硬盘的第一个分区启动,那里一般是Windows。
方法二:使用LiveCD或者从网络启动(PXE)进入临时的Linux系统,设置好正确的grub信息,重新安装grub (grub-install)。
无论如何,这里只是无法引导硬盘上的系统,并不意味着系统都挂了。
当grub找到了相应的文件系统驱动,但没有找到menu.lst 文件,如果能够进入grub提示符的话,还是照样可以启动现存系统的。方法后边介绍。
接着如果发现了menu.lst 文件,就会出现grub的引导菜单了。再来简单的看一下 menu.lst 的内容
default 0# 默认从第零项启动;
timeout 5 # 等待选择超时5秒
color black/cyan yellow/cyan #设置一些显示颜色,如果高兴你可以把自己的照片做背景
# 第0项
title Debian GNU/Linux, kernel 2.6.24-k7# 菜单里显示的名称
root (hd0, 2)# 这里的root (根目录) 是针对grub而言的
#从下面的路径可以看得出,/boot 目录 应该是在一个单独分区里,第一块硬盘的第3个主分区
kernel /vmlinuz-2.6.24-k7 root=/dev/sdb5 ro# 指定内核的路径,grub就是为了引导内核的,接下来就是开始执行内核了
# root=/dev/sdb5 指定Linux的主分区是第二块硬盘的扩展分区的第一个分区
initrd /initrd.img-2.6.24-k7 # 这里指定了 RAMDISk 镜像的路径,initrd 里可能放了一些内核驱动模块,比如硬盘驱动,不同文件系统驱动,网卡驱动 等到那个
savedefault
# 第1项这里是想网络安装 ubuntu,
# 网络安装很简单,一个内核,一个有安装程序的initrd就可以了 这些都可以从 网上或者ISO里找到
# 不过与上面不同,这里没有指定 root (hd0,5); 的确不用也可以,下面再指定也可以
title Install Ubuntu7.10
kernel (hd0,5)/boot/vmlinuz # 这里就指定了 内核存放的路径 第一块硬盘的第1个扩展分区的/boot/目录里
initrd (hd0,5)/boot/initrd.gz
boot
# 引导windos
title Back To (Windwos OS)
rootnoverify (hd0,0)
makeactive
chainloader +1
表示存储设备一般用hd表示IDE硬盘,sd多是SCSI, SATA或者移动存储;一块硬盘分区只能有4个主分区,
并且最后一个主分区一般做扩展分区使用;扩展分区号都是从 5 开始往后递增。
之后grub还会遇一些问题,但都会有一个错误号,google搜索一些就可以找到是什么意思。
一般有找不到grub,原因: root (hdX,Y) 指定有误; 找不到内核或者initrd,那就是文件的路径有问题;
无法挂载root分区, root=/dev/hdaN 指定错误;等等。
遇到这类问题那就具体情况具体分析。一般方法是在grub选择菜单界面下按 C 键进入grub提示符 (shell),
然后, 从上面 root (hdX, Y) 一行一行开始试着输入上面的参数完成后在输入 boot 看能否引导成功。
怎么试呢? 按 TAB 键( 进入Linux 世界,你会发现你就离不开TAB了) ,Tab有自动补齐。
具体的案例分析:
我的电脑是 IBM T40,加了硬盘托架,双硬盘的。先装XP,再从硬盘安装LINUX。
刚开始,试了两种方法:
方法一:把XP装的主盘上,UBNUTU装的第二硬盘上。GURB装在第一硬盘的MBR上。
当开机启动时,第二硬盘插在电脑上,启动正常。而当开机启动时,把第二硬盘拔下,换上光驱时,GRUB就出错。引导不了系统,XP也进入不了。就是说如果把第二硬盘的LINUX格式化后,XP跟着也完蛋了。而且开机只能带着光驱才能进入GRUB引导。制约太多,不想这样。
GRUB的配置文件都在第二块硬盘上,当然无法引导,这是行不通的。叉P没完蛋的。不知道有多少人就这样重装系统。
方法二:把XP装的主盘上,UBNUTU装的第二硬盘上。GURB装在第二硬盘的MBR上。这样根本不行。就算设置BIOS从第二硬盘启动。GRUB出错,LINUX进不去(总之我的是的,不知道别人的 哈哈)。
这里没有说明是什么错误,能不能进入grub shell。这样一般问题是hda 变成了 hdb 之类的问题, 在grub shell 里试几下一般都能搞定,完了进入Linux重新编辑一下menu.lst就OK了。
想给T43装Suse Linux,买了第二块硬盘托架,安装顺序如下:
1.把第二块硬盘装在USB移动硬盘盒,当USB移动硬盘连接好
2.启动按F1,设置从CD启动
3.将Suse Linux安装盘放入CD,启动后,按提示安装到USB那块盘上
4.一起完成后,重新启动,按F12,从USD 硬盘启动,一切正常,顺利进入Suse Linux系统
5.将CD光驱取掉,将第二块硬盘装入第二块硬盘托架,然后放入光驱的位置
6.重新启动,按F12,从第二块硬盘启动,问题来了:
连grub都找不到,直接就提示:Load system error!
grub所在分区变化了,IDE硬盘装入硬盘盒后,通过USB挂载上来都被Linux认为是 /dev/sdN 了,所以改回 hdN 吧
方法,只能通过另外一个Linux系统了 LiveCD 是个好东西。
描述:
机器为T60 双硬盘,最初安装XP到第一个硬盘,然后买回第二硬盘盒和硬盘,并在第二硬盘装Ubuntu, grub装在第二硬盘。启动可以选择第一硬盘的XP 和第二硬盘的Ubuntu,但如果去掉第二硬盘换上光驱,重新启动电脑,提示找不到grub, 不能启动第一硬盘的XP
问题:
不重装系统的情况下,如何没有第二硬盘,第一硬盘XP正常启动, 插上第二硬盘,XP和Ubuntu都能正常启动。
问题同上上个吧,没这样用过,应该可以实现这种效果。
针对多个硬盘,多系统的引导方法,我的建议是:
所有系统都使用一种多系统引导程序引导,比如grub;
将第一块硬盘(不经常拿出的那块)的第一个分区做为/boot 分区, 100Mbytes 大小足以;
后边随便搞了,只要grub能正常工作,引导系统是很简单的。 好文章,值得收藏 好文章.
收藏了
页:
[1]