Windows用户向Linux过渡
前两天想装个linux系统,于是上网看了一些达人的安装经验和心得,这两天刚好周末,自己在家里实践了一把。下面就把我的实践经验总结一下供大家分享,我想这些经验对刚向linux过渡的Windows用户应该会有不少的帮助的。
NTLOADER是Windows系统的启动引导管理器,Windows安装时,系统会自动安装该引导管理器,好像用户没有办法选择不安装。Grub是目前多数Linux系统所采用的启动引导管理器,系统安装时会提示用户选择安装该引导管理器在MBR(主引导记录)上,或是安装在系统的boot区上,或者是不安装。NTLOADER和Grub除了可以各自引导相应的系统启动外,两者之间还可以互相引导,这就使得了两种不同的系统通过合理地引导而共存于同一机器上,也就是我们所说的安装多个系统。
知道了NELOADER和Grub可以互相引导后,我们就可以合理安装两种引导管理器,以达到符合个人自己的习惯。习惯于Linux的用户通常都会把Grub安装于MBR上,通过Grub->NTLOADER->Windows的方式进入Windows系统(我个人安装的时候发现这样的方式有点小bug,就是在windows里选择重启系统时有时会出现Windows蓝屏错误,不知道是引导管理器的bug还是系统安装的问题)。习惯于windows的用户,还是觉得原来的Windows开机画面用起来称手,在该画面上选择相应的Linux菜单进入Linux系统会感到自然些,也就是NTLOADER->Grub->Linux方式进入Linux系统。这里只要是针对向Linux过渡的Windows用户(我也是Linux新手),所以我着重介绍一下NTLOADER->Grub->Linux方式的经验和心得。
下面就来介绍一下NTLOADER->Grub->Linux方式的安装过程。(我的机器是两个硬盘,我是把Windows装在第一个硬盘,Linux装在第二个硬盘,当然,只有一个硬盘的也没关系,只要记好哪个系统在哪个分区就行了)
一,安装Windows和安装配置Grub For Dos
首先安装Windows(最好分一个Fat32的分区,因为现在的Linux内核都不支持加载NTFS格式的分区,需要下载相关的软件包,而如果有Fat32格式的分区,后面的配置就会方便些),装好以后到网上下载一个Grub For Dos软件包(当然,也可以下载WinGrub,不过个人觉得WinGrub有点小bug,即装了WinGrub后,如果想用Windows安装盘重新安装Windows系统时,会在安装过程中出现某些Dll加载失败的问题,不知道是我的机器的原因还是其他),解压该软件包后,把该文件夹名字改为grub(注意:该文件夹下即存放是grub的相关文件,不要文件夹里套了好几阄募?泻蟛攀俏募???缓笤?indows的根目录下(我的Windows根目是C:\)添加一个boot文件夹,然后把整个grub文件夹复制到该文件夹,即形成如下的文件结构(C:\boot\grub\相关文件):
C:
|--boot
|--grub
|--相关文件
然后把grub文件夹里的menu.lst文件改个名字(如改为menu.lst_back)或删除掉,或者把该文件的内容修改一下(稍后再作说明),然后把grldr文件复制到Windows根目录下(如C:\)并设置为只读属性,最后再来修改一下Windows的boot.ini文件(鼠标右击[我的电脑]->[属性]->[高级]->[启动和故障恢复]的设置->[系统启动]的编辑),在新的一行里添加如下的内容:
C:\grldr="Grub For Dos/Windows"
(这里的C:\是Windows根目录,如果不是C:\的请按实际情况修改)
然后准备好Linux的安装光盘,重启机器。(当然,主板BIOS一定要设成光盘优先启动)
如果没有Linux光盘的用户,即需要硬盘安装Linux的用户,请自己查看一些硬盘安装Linux的文章,这里就不在多做该方面的介绍了。硬盘安装Linux的用户这时会发现刚才下载的Grub For Dos(或WinGrub)软件包也会被用到。
二,安装Linux
在安装Linux的过程中,会出现选择安装到硬盘分区的画面,记住你要安装Linux的那个分区,如果有boot分区的也要记住该分区(比如我的机器是/boot是hdb1,/是hdb2),后面引导时要用得到。硬盘分区选择好以后,会出现[自动安装引导到MBR]画面(当然,不同版本的Linux画面不同,但基本上就是这个意思),该画面会有个[高级配置]的选项,选上该选项后点击下一步,这时进入到启动引导管理高级配置的画面,选择安装引导到根分区的扇区里(不同的Linux显示信息不一样,基本上是这么个意思),后面就一切照常安装了。
安装好Linux后,系统会重新启动,这时会出现Windows的启动画面菜单,选择Grub For Dos/Windows,这时如果上面过程中把menu.lst文件改名或删除掉的,Grub For Dos/Windows会自己搜索硬盘分区,然后找到相应的Linux系统的Grub而引导进入相应的Linux。如果上面过程中没改掉menu.lst或删除该文件的,稍后我们再另作说明。
三,导出Linux引导文件和配置Windows的boot.ini
进入Linux系统后,这时如果有Fat32分区的,就把该分区挂载到Linux,然后把Linux的引导管理导出成文件,把该文件复制到Fat32分区以让Windows系统使用。
例如我的机器(在Linux命令行中,如果是XWindow就打开命令终端):
mkdir /mnt/winfat
mount -t vfat /dev/hda3 /mnt/winfat
cd /mnt/winfat
dd if=/dev/hdb1 bs=512 count=1 of=xxxlinux.lnx
这里/dev/hda3是我的机器的Fat32硬盘分区,/dev/hdb1是我的Linux的/boot分区,也就是上面我说要记的分区之一,xxxlinux.lnx是导出的文件名,名字可以自己定。
如果没有Fat32分区而只有NTFS分区的,那就到相应的网上去下载支持NTFS的软件包(可以自己查找些这方面的相应文章,都有介绍的),安装好后把相应的硬盘挂载进来,然后把导出的文件复制到该分区。其实说白了就是让Windows能找到导出的xxxlinux.lnx文件,如果你有其他途径让Windows找到该文件(如现在有些软件可以让Windows访问ext2,ext3),不挂载Windows的分区到Linux也没关系。
重启机器进入Windows,然后找到刚才的xxxlinux.lnx文件,把它复制到Windows的根目录(如C:\)并设置为只读属性,然后编辑boot.ini文件,在新的一行添加如下的内容:
C:\xxxlinux.lnx="XXX Linux"
保存好以后重启系统,在进入Windows的启动菜单时选择XXX Linux,确认一下是否能进入Linux系统,如果正常,那就一切都顺利完成了。如果不能进入Linux(在网上有看到说NTLOADER不支持跨盘引导,可能是这原因造成的,那就没办法了,不过我自己的机器是没问题的),那就只能放弃这种方式进入Linux,这时就只能借助上面装好的Grub For Dos/Windows了。这时就把上面面添加到boot.ini的C:\xxxlinux.lnx="XXX Linux"内容删除掉,否则会在Windows的启动菜单里出现。
四,Grub和menu.lst的一些说明
下面就来说明一下Grub For Dos/Windows以及menu.lst文件。
上面就提到了,如果不把menu.lst改名或删除,还可修改里面的内容来让Grub For Dos/Windows完成相应的引导工作。
首先把menu.lst做个备份(因为里面都是些写好的sample,有必要时可以参考学习,至于Grub的一些命令,可以自己在网上查找相应的文章,都有介绍的),然后把menu.lst文件里的内容删掉,只留下如下的内容:
# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.
color black/cyan yellow/cyan
timeout 30
default /default
title commandline
savedefault --wait=10
commandline
因为是Linux装好后第一次用Grub For Dos/Windows来引导进入Linux,还不知道具体的Linux内核和版本,所以只需要保留命令行就足够了,当然,也可以在Grub菜单选择是按c键进入命令行模式。
保存好该文件后重启系统,在Windows的启动菜单里选择Grub For Dos/Windows,这时会进入Grub选择菜单,可以等缺省等待时间完后自动进入命令行,或者按c键进入Grub命令行。在出现命令行提示符grub>时,输入如下内容:
kernel (hd1,0)/vm (说明:输到vm时按下Tab键会自动补全文件名的,否则太长记不住而且事先也不知道)
如果是第一次进入Linux的,一般以vm开头的文件只有一个,如果是升级过的Linux,可能会出现多个,这时自己就按照列出的文件名多打几个字母和Tab键或者自己补全。如我的机器是这样的结果:
kernel (hd1,0)/vm 按Tab键后出现
kernel (hd1,0)/vmlinz-2.6.18-1.2798.fc6 接着自己手工输入,则为:
kernel (hd1,0)/vmlinz-2.6.18-1.2798.fc6 ro root=/dev/hdb2
这里需要说明的是(hd1,0)就是我上面提到需要记住的/boot分区,我的机器上该分区为hdb1,转为引导用的分区时为hd1,0,至于这些相互转换,网上也有不少文章介绍,我这里就简单提一下,会算就行了,hda与hd0对应,hdb与hd1对应,依此类推,如果是SATA硬盘或SCSI硬盘,则sda与sd0对应,sdb与sd1对应,依此类推。hda1则对应为hd0,0, hda2对应为hd0,1,hdb1对应为hd1,0,hdb2对应为hd1,1,依此类推。简单的说,以字母标识的分区(也就是Linux分区),是以数字1为起点开始计算的,而以数字标识的分区(也就是引导用分区)是以数字0为起点开始计算的,并且中间有“,”分隔(否则连在一起,如hd10,就不知道是hd1,0还是只有hd10,0了)。
如果没有/boot分区的,按上面说的,记住/分区,然后输入相应的路径,如:
kernel (hd1,0)/boot/vm 按Tab键后出现
kernel (hd1,0)/boot/vmlinz-2.6.18-1.2798.fc6 接着自己手工输入,则为:
kernel (hd1,0)/boot/vmlinz-2.6.18-1.2798.fc6 ro root=/dev/hdb2
说白了,就是让kernel命令能准确的定位到相应的文件。
完成kernel命令后,后出现[Linux-bzImage, setup=0x1e00, size=0x18e473]提示,不同的版本提示内容有所区别,但基本就是这么个意思,否则出错的话会有ERROR XXX提示的。接着输入如下的命令(我的机器的结果):
initrd (hd1,0)/initrd 按Tab键
initrd (hd1,0)/initrd-2.6.18-1.2798.fc6.img
完成initrd命令后会出现[Linux-initrd @ 0x2e1000, 0x10e685 bytes]提示,如果出错会提示ERROR XXX。
如果到这里一切顺利,就输入:
boot
这样系统就开始进入Linux系统了,然后依照上面的[三,导出Linux引导文件和配置Windows的boot.ini]去配置,重启后看看能否通过Windows的启动菜单选择XXX Linux进入Linux系统。如果可以,那么一切就都顺利完成了。如果不行,我们再来配置menu.lst,修改menu.lst为如下的内容:
# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.
color black/cyan yellow/cyan
timeout 30
default /default
title XXX Linux
kernel (hd1,0)/vmlinz-2.6.18-1.2798.fc6 ro root=/dev/hdb2
initrd (hd1,0)/initrd-2.6.18-1.2798.fc6.img
title commandline
savedefault --wait=10
commandline
保存好以后重新启动系统,在Windows的启动菜单中选择Grub For Dos/Windows,然后进入Grub启动菜单,会发现菜单中有XXX Linux选项,选择该选项就可以进入Linux了。
五,小结
个人认为NTLOADER->Grub->Linux的方式还是挺适合刚转型的Windows用户的,只是安装多个Linux系统的时候,如果把Grub For Dos/Windows的menu.lst改名或删除掉,在Windows的启动菜单中选择Grub For Dos/Windows后,自动搜索Grub时不知道会出现什么结果,没试过,估计可能是会出现多个引导列表选择吧。如果不行的话,只能通过Grub For Dos/Windows的命令,一个一个进入Linux系统后,导出各自的引导文件,然后修改Windows的boot.ini。又或者安装多个Linux时,只有某个Linux选择安装Grub,其他的都选择不安装Grub,这样,其他的Linux可通过安装好的Grub引导。这些都只是我的一些推测,没有实际证实,也没那么多时间去证实了,有兴趣的朋友不妨多试试,然后把结果告诉我。
以上是我在安装Linux时总结的一些经验,写出来供大家参考和交流,毕竟还是Linux新手,有什么不对的地方还请大家多指正。