
我们都知道在 *** 作系统启动过程中有 一个很重要的引导程序——MBR。MBR是由三段组成的其中最重要的两段:是由446个字节组成的boot locader(引导加载器),和64个字节的分区表。在MBR的446字节也就是boot locader这段程序对于引导 *** 作系统很重要。Linux中有两种boot locader可选,一种是LILO,一种就是GRUB。LILO现在已不用了。现在主要是使用GRUB来引导。现在我们来介绍一下GRUB。
GRUB是两段式的引导,第一阶段称为stage1,是存放在MBR中,主要来引导第二阶段stage2 这段主要放在/boot/grub/中的执行程序,主要是grub.conf这个文件。下面就介绍两种GRUB的安装
第一种是:当grub.conf这个文件不存在了,我们可以手动编辑。当系统重新启动时会出现一个grub的提示界面;而我们并不知道系统是在哪个磁盘中,这时我们可以用一命令来试着来找一下,grub>find (hd0,0)/ 用Tab键来查看是否有一个内核版本,如果有则是在这个磁盘中,反之则查找下一个。找到后可在grub>后输入:root (hd0,0)第二步是在grub>后输入kernel 后面跟上内核的版本,例如:kernel /vimlinuz-2.6.18-64.el5 ro root=/dev/vol0... quit。第三步是initrd,例如:grub>initrd /initrd 后面与内核版本相对应。最后是grub>boot 也就是重新启动。启动后在/boot/grub建立一个grub.conf 这样我们的grub就安装成功了。
第二种方式:当grub被破坏掉了。例如我们执行命令#dd if=/dev/zero of=/dev/sda bs=220 count=1 执行后MBR中的boot locader 就被删掉了。那我们怎样来重装grub呢?这里有两个方法。第一种就是:找一个系统光盘,从光盘启动紧急救援模式来修复grub。第二种方式就是安装grub到一个磁盘上。其过程是:
第一步是:在一个磁盘上重新化分一个分区,大约有100M左右,
第二步是:把这个分区格式化,#mount ext3 /dev/sdb1
第三步是:创建一目录。#mkdir /mnt/boot 并把上面的分区挂载到这个目录上#mount /dev/sdb1 /mnt/boot
第四步是:创建目录#mkdir /mnt/boot/grub
第五步是:进入到原 *** 作系统i386-redhat目录中,并复制目录下所有文件。 #cd /usr/share/grub/i386-redhat
#cp ./* /mnt/boot/grub
第六步是:回原目录并卸载光盘#cd #umount /dev/sdb1
第七步是:执行grub命令#grub 会出现一个grub界面。逐步输入。
grub>root (hd1,0)
grub>setup (hd1)
grub>quit
经过这七步后我们的grub就成功的安装在了一个新的磁盘上,我们可以新建一个虚拟机并用这个磁盘,启动后就可以看到grub来引导的界面。
上面是两种方式来安装grub,如果再有内核就是一个小的Linux *** 作系统了。
有可能是分区表遭修改了,它与MBR在硬盘的第一个扇区.如果想安装SUSE可以参考下下面这篇帖:如何不修改MBR,使用boot.ini引导WINDOWS与YLMF(比较全了)
现在安装YLMF 2.0 很容易,将wubi_ZH_cn.exe从YLMF安装包中提取出来与安装包方在同一个文件夹,双击wubi_ZH_cn.exe,按照提示就可以在WINDOWS环境下安装YLMF了。
安装完YLMF后,开机,这时会出现4个菜单,第一个是正常启动YLMF,最后一个选项是安装程序自动检测出来的你正在使用的 *** 作系统。我的是windows XP .之所以会出现这个菜单是因为GRUB这个程序。GRUB是多 *** 作系统引导程序,它功能强大,相信学习LINUX的人一定会接触到,我个人认为是必须掌握的。YLMF系统中集成了GRUB(LINUX 版本),在安装过程中它会自动的修改硬盘的MBR(主引导记录),使引导记录指向GRUB程序,GRUB根据配置表grub.cfg的记录列出 *** 作系统清单(开机时所见)。grub程序及grub.cfg所在位置为LINUX分区的/boot/grub.注意,你在WINDOWS环境下是看不到该分区的,除非用第三方软件。
问题是如何不修改MBR,使用boot.ini(windows 根目下隐藏的配置文件,用于引导windows系统)来同时引导windowXP与YLMF呢?
这样做有两个好处:
1,相信大多数人都在安装YLMF前已对C盘( *** 作系统盘)用GHOST作过备份,现在安装了YLMF后这个备份会失效:你将C盘镜相还原后你会发现开机后会出现一个提示符'grub>',这时使用任何命令是无效的。对不起,你只有用其它途径恢复MBR后再还原镜相才行了,我就有这样惨痛的经历。这是因为GHOST备份不会备份MBR,当然还原时也就不会还原WINDOWS的MBR。如何在无 *** 作系统时恢复MBR,这里不做讨论。
2. 通过在boot.ini里面增加选项可以使用一键还原或矮人工具箱等工具集,可以方便系统还原。当然,我使用的是启动型U盘,方便自已,也可以帮别人。
下面我具体如何在安装YLMF后达到上述要求的(心血啊):
一:进入Ylmf后。然后将/boot/grub/grub.cfg 拷贝到任何一个window分区。这里的grub.cfg与下面将提到的menu.lst同样的GRUB的配置文件,便由于GRUB版本不同,它们也不兼容,同menu.lst是grub4dos版本的配置文件.
二:退出YLMF进入WINDOWS XP,下载两个重要的软件:grub4dos 0.44版,另一个是DGen3220107_x86.两款软件都是解压后就可以运行了,你自已了解下它们的用法,很牛的,
三:复制grub4dos 文件中的grub.exe,menu.lst,grldr三个文件考入C盘根目录.编缉boot.ini,在最后一行增加C:\grldr=YLMF 2.0,注意boot.ini
是隐藏的,同时是只读的,要在它属性中只读去掉才能修改保存.
四:用记事板查看grub.cnf,(记事本也可,但它不会换行),查找到两行
linux /vmlinuz-2.6.31-20-generic root=UUID=4d45c5e4-ea3b-4f0c-8581-4c7e3aa5f2d6 ro quiet splash
initrd /initrd.img-2.6.31-20-generic
记在另一个新建记事本中,同将'linux'修改为'kernel',UUID是驱动器的惟一标识,在YLMF这个case下,它是一个数字都不能改的.而
且只能使用UUID才能确定YLMF的根目录/的位置.
五:编缉menu.lst,清空后加入下面代码,以我的为例:
default=0
timeout=10
title Ylmf 2.0
root (hd0,7)
kernel /vmlinuz-2.6.31-20-generic ro root=UUID=4d45c5e4-ea3b-4f0c-8581-4c7e3aa5f2d6 splash quiet
initrd /initrd.img-2.6.31-20-generic
title windows xp
rootnoverify (hd0,0)
chainloader +1
在这里说下你还须修改的两个地方,
1:(hdx,y),如果你使用的是单硬盘,x为0,如果你使用双硬盘且YLMF在第二个盘上,x为1.
y为你为/boot所划的分区号,如果它是每五个分区,则y=5+2=7.(LINUX分区在WINDOWS下不可见,记住第几个分区为妙.当然也可用PQMAGIC查看分区情况)
2:将kernel 与initrd两行换为你在新建记事本中保存的两行.如果为对/boot未单独划区,kernel /与initrd /后需加上boot/
,(hdx,y)即为根目录/所在分区.
注意:对于不同同鞋安装YLMF位置以及YLMF识别DEV设备情况不同,(hdx,y)可能会不是上面所述.
六,使用DiskGenius.exe修改MBR:硬盘->重建硬盘主引导记录(MBR),点确定.
大功告成.你可以重启了,可以确定你能从WINDOWS启动了.如果YLMF启动不了,主要是因为(hdx,y)的原因,你自已再修改下,或者留言给我也可.
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)