用WinGrub 引导Linux
发布时间:-12-18 10:10:33来源:红联作者:cha
转载
一、开篇叙述我第一次安装Linux和接下来的经历(遭遇)
开篇:按照北南兄弟的《FC4菜鸟图文版安装教程》我顺利地以本地SATA硬盘方式安装了FC4. 当时按照建议我把FC4的Linux版本GRUB程序装在了MBR(Main Boot Record主引导记录)里面。
先简单介绍一下我的遭遇:
我的机器没有安装软驱,SATA(也就是俗称串口)接口的硬盘1块,当时配机子的时候考虑到两块硬盘在价格方面比一块相当容量的硬盘要贵出一些,并且我当时也没有太长远的打算到底多大空间分给Windows多少分给Linux,所以我选择了一些Linux入门书上介绍的比较便宜的配置,就是一块硬盘安装以上的两种操作系统。像一般的那样我首先安装了windowsXP(因为windows目前好象没有义务识别linux,后装windows可能带来很多麻烦),由于我买的redhat linux9安装光盘作为引导的内核(不知能不能这样形容)不能识别SATA接口硬盘,当时的提示是:
An error has occurred - no valid devices were found on which to create new file systems.Please check your hardware for the cause of this problem.No hard drives have been found.You probably need to manually choosedevice drivers for the installation to succeed.Would you like to select drivers now?(如果你也觉得眼熟,那么我们遇到过类似的情况,如果看不懂,麻烦您查字典也好google也好自行解决)
解决的办法之一就是我从网上下载了一个FC4的安装镜像(安装盘应该有4张)如果你进的是“ftp://...Fedora/1(或2,3)/...”的话那么恳请您点“向上”按扭然后找形如Fedora/../4/..这个路径下面的文件,那几个路径下应该是FC 1,2,3的镜像。之后我按照“菜鸟教程”里说的那样用wingrub引导安装,之后把linux GRUB装载到MBR里面,然后启动的时候当然是linuxGRUB来调度工作了,之后我学着重编内核(加载了网卡驱动程序)然后下载安装了OpenQ插件,再后来安装完显卡驱动程序配置好后重启,问题出现了...怪我太贪心,分辨率的设置有点偏高了...之后的情况就是Linux可以照常运行,而显示器不做任何反应,从开始用户初始化配置开始显示器就显示没有输入信号.....对我来说这是噩梦的开始,我当时没有任何解决这类问题的办法(也没有刻一张rescue盘),然后就直接格式化开始重新安装一切了.....(End of 遭遇介绍)
后面我发现发言权掌握在LinuxGRUB手里对我来说比较麻烦,所以想找到一个让win GRUB支配启动的办法,再次安装FC4进行分区配置和引导程序选择加载时,我不再选择把GRUB放在MBR里,而是专门分了一个/boot区出来把MBR放进去,寄希望于引导程序自动握手然后开始工作(很天真不是吗?)当时我还选择了Force LBA32选项,然后继续,安装所有的包,提示安装成功,提示重启。然后果然Linux没有被辨认出。这时怎么办??
二、想让WinGrub来支配引导的分析和做法
这时再重装一遍然后加载GRUB吗?且慢,当时提示我已经安装成功了也,我也实在不想再来一遍了..这时要回溯到北南兄弟提供的另一篇文章了:《编译内核操作流程》引用其中这一段:
1、复制bzImage等相关文件,并创建initrd文件;
[root@localhost linux-2.6.12.3]# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.12.3
[root@localhost linux-2.6.12.3]# cp System.map /boot/System.map-2.6.12.3
[root@localhost linux-2.6.12.3]# cd /boot
[root@localhost linux-2.6.12.3]# /sbin/mkinitrd initrd-2.6.12.3.img 2.6.12.3
我们把 编译出来的bzImage,拷入到/boot目录,拷贝成 vmlinuz-2.6.12.3;
并且用 mkinitrd 来创建imitrd-xxx.img 文件,其中xxx为内核的版本号,是通过 查看 /lib/modules来版本来对应的,我们是编译出
来的是 2.6.12.3,所以就运行上面的命令创建,创建的出来的是initrd-2.6.12.3.img ;不创建这个文件,有时是启动不起来的,比如提示VFS错误等;
看到了吗?我第一次编译内核的时候也就是照着这个路子来的,最重要的是vmlinuz-a.b.c和initrd-a.b.c还有System.map都在/boot路径下面。在这里做一下内核的简要介绍:linux内核用vmlinuz-a.b.c之类的名称存放在/boot目录中,所有的内核版本号采用major.minor.patch编号格式。还有一个重要的基本概念:linux的所有所谓分区啦,文件夹一类的东西都用分区来表示,其实并不难理解,我觉得就好象是第一人称视角游戏和第三人称视角游戏有些相似的地方:Windows是分得很明显地这个是整个系统的哪部分,linux的说法则是我的哪部分下面有什么什么部分组成。同时就有了mount(挂载)的介入了.即使是/boot这样看起来就很吓人的名号,在linux里的表示方法也不过就是根分区(/)下的一部分罢了。
2、wingrub的 menu.lst的写法;
其实在Windows下编辑menu.lst(引导菜单)时已经很明显了,我能够加上
title Fedora Core4 Installation
root (hd0,6)
kernel (hd0,6)/linux/vmlinuz
initrd (hd0,6)/linux/initrd.img (我的设置是这样的Fat32格式引导安装的分区)
这样一段,难道就不可以在menu.list文件里添加诸如:
title Fedora Core (2.6.11-1.1369_FC4)
root (hd0,7)
kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.11-1.1369_FC4.img
加注:因为我单独分了root分区所以写成这样,如果没有单独的root分区的话应该是下面这样
title Fedora Core (2.6.11-1.1369_FC4)_te1
root (hd0,7)
kernel /root/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ rhgb quiet
initrd /root/initrd-2.6.11-1.1369_FC4.img
这样一段来引导linux系统吗?当然,没有人给我说不可以。结果是这办法可行 =) 因为我就是这么做的。之后重编译内核后要加载内核什么的办法类似,我就不再多说什么了。
注意:建议搞明白以后再下手,windows下设备的标号(hd0,7)与linux的/dev/sda6有可能指的是一个设备,这就像英语中first floor的意思:[英]二楼;[美]底楼,一楼. 道理类似。请一定耐心。
三、关于WinGRUB的总结叙述
总结,这里可以看到,我只用到了WinGRUB来引导双操作系统,其实linux的/boot分区上装载的GRUB没有被用到,要加载内核的话只需在windows下面对WinGrub的menu.lst设置做点修改就可以了,linux 出了问题可以毫不犹豫地予以重装(当然这是最坏的办法),windows出了问题也大概不必担心(我还没有实验)对我这样的新手来说,我个人认为这不失为一种好办法。这一定程度上带来一些方便,仅仅是对我来说.
四、关于本文;
首先说明我也是新手,如果出现严重的错误敬请前辈们指教,还请高手费心给予指点,词不达意之处敬请见谅,强烈欢迎表达能力够强的前辈帮忙加以修改.错误之处请一定指出,在此谢过。