kevins天空

-----------------------------------------
天下風雲出我輩,一入江湖歲月催。皇圖霸業談笑中,不勝人生一場醉。
提劍跨騎揮鬼雨,白骨如山鳥驚飛。塵事如潮人如水,隻笑江湖幾人回。
posts - 5, comments - 41, trackbacks - 0, articles - 0
  首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

转:一个LINUX分区同时支持双启动和VMWARE虚拟机

Posted on 2006-04-29 12:54 kevins 阅读(...) 评论(...) 编辑 收藏

转贴:http://blog.csdn.net/alai04/archive/2006/04/22/672843.aspx

本人的硬盘中原本安装了Windows Xp和LINUX双启动,划分了两个硬盘分区给LINUX,一个用于root,一个用于swap。这样,在机器启动时,可以选择进入Windows或是LINUX。
后来,我又在Windows系统中安装了VMware虚拟机软件,想在VMware中也安装一套LINUX。按照通常的方法,这需要在Windows系统中划出一块磁盘空间(约5GB)才可以。可是本人对于磁盘空间非常吝啬,因此希望VMware中的LINUX可以直接使用已有的LINUX分区,而不要再分配空间。这样,同一个LINUX分区,既可以在机器启动时选择直接进入LINUX,也可以在Windows中运行VMware再启动进入,节省了不少磁盘空间。而且,现在的LINUX都需要经常从网上更新版本,如果分为两个不同的分区,就需要分别更新两次,非常不方便。而使用同一个LINUX分区,则只需要更新一次即可。这种安装方式,虽然有两种不同的使用方法,但其实用的是同一套LINUX。
下面,我介绍一下安装的方法。本人只是VMware的初级玩家,总共才使用了不到半个月,有不对的地方,请各位大虾多指教。
第一步:在独立分区上安装LINUX
以我的机器为例,安装的是Fedora Core 5,分给LINUX两个分区,一个ext3分区用于root,一个swap分区。安装时注意,在选择安装启动工具GRUB时,不要把GRUB装在MBR,而是装在ext3分区上。其它则可以随意。这样装完后,重启时还是只能进入Windows,并不能选择LINUX,因为MBR上的启动程序还是Windows的。我的办法是:用LINUX安装盘再启动一次,进入Rescue方式,按提示即可进入LINUX,挂上ext3分区,同时再挂一个Windows的FAT32分区(缺省安装下,LINUX不能访问NTFS分区,所以需要用一个FAT32分区来进行数据交换)。然后用dd把ext3分区的0扇区拷贝到FAT32分区的一个文件中,假设ext3分区为hda3,FAT32分区挂在/mnt/share下,则命令为:
dd if=/dev/hda3 of=/mnt/share/bootfc5.img bs=512 count=1
这个启动文件准备好后,重启机器到Windows,将刚才准备好的bootfc5.img文件再拷贝到系统盘C:\。然后用编辑器修改系统盘C:\下的boot.ini文件,在文件尾加一行:
C:\bootfc5.img="Fedora Core 5"
这样在机器启动进,就可以选择进入Windows或是FC5了。这种方法对Windows 2000/XP都可以,但是对Windows 98/Me就不一定行了。
 
第二步:在VMware中安装LINUX
Windows中安装VMware的过程我就不重复了,没有什么特别。现在VMware装好了,就要开始在VMware中安装LINUX了。安装过程也没有特别,我把主要几个要注意的地方贴出来。
 
 
 
 
 
没有贴出图来的那几步,缺省的配置已经可用,无须特别修改。然后对新建的虚拟机进行设置,其中最主要的一点是要增加一个软驱,并把前面第一步准备好的bootfc5.img文件设为软盘镜像文件用于启动。其实也很简单,还是贴图来看吧:
 
 
 
至此,这个新建的虚拟机已经可以启动,并且直接使用原用的ext3分区和swap分区,它几乎不占Windows分区多少空间(你如果到My Virtual Machines目录下找找看,它只占100多K而已,但如果你启动过这个虚拟机后,所占空间会增加几百M,与分配给它的内存一样大)。
 
第三步:解决启动后的问题
现在,这个LINUX虚拟机虽然可以启动,但是还存在问题:它进不去XWindow了,只能在字符界面上操作,而原来用裸机直接启动的方式是可以进入XWindow的。原因是:用裸机直接启动的LINUX看到的是真实的显示卡,所以XWindow的配置也是按真实的显示卡来配的;而在VMware中启动的LINUX,看到的是VMware虚拟出来的显示卡(称为vmware显示卡),所以XWindow启动时无法驱动。
这个简单,再新配置一次XWindow就可以了。然后就是安装VMware Tools,这个有点麻烦,不过网上有很多文章可查,我也不多说了(在虚拟机之家www.xuniji.com的论坛上,我有一个贴子(http://www.xuniji.com/forum_view.asp?forum_id=1&view_id=3025)较为详细地说明了我在安装VMware Tools时遇到的麻烦和解决的方法,请参考)。接着还有设置共享文件夹,以便于与Windows交换文件。
现在,可以在VMware下顺畅地运行FC5了。不过,如果你重新启动机器(注意,不是重启虚拟机,是重启主机),想用裸机直接启动到LINUX中,对不起,你会发现又进不去XWindow了。原因还是和前面一样,现在的XWindow配置是按vmware显示卡配的,在真实显示卡下不能用。当然,重新配置一下XWindow又可以用了。
但是,这样每次在切换启动方式后重新配置一次XWindow,也太麻烦了。为了解决这个问题,让两种启动方式都可以顺利进入XWindow,我花了一点时间来弄。
简单地说,其实就是为XWindow准备两个配置文件,然后在启动时执行一个脚本,判断当前是裸机启动的,还是在虚拟机中启动的,根据判断结果指定XWindow采用相应的配置文件。
我们知道,XWindow的配置文件在目录/etc/X11下,文件名为xorg.conf。我们把虚拟机环境下的xorg.conf拷贝一份xorg.conf.vmware,再把裸机环境下的xorg.conf拷贝一份xorg.conf.raw,这样就准备好了两个配置文件。
接着,我们准备来写脚本。最难的是如何判断当前环境是裸机的还是虚拟机的呢?办法可能有很多种,我想到的是对/dev/fd0的查看。在裸机环境下,/dev/fd0中应该无法读出数据,而在虚拟机环境下,则可以从/dev/fd0中读出GRUB启动文件。具体的程序可以用C写,也可以用shell写,我就不现丑了。最终的脚本大致如下:
#!/bin/bash
declare XORGCONF_DIR=/etc/X11
cp -f $XORGCONF_DIR/xorg.conf.raw $XORGCONF_DIR/xorg.conf
if [ /dev/fd0中可以读出GRUB ] ; then
 cp -f $XORGCONF_DIR/xorg.conf.vmware $XORGCONF_DIR/xorg.conf
fi
最后,把这个脚本放在/etc/rc.d/rc/rc5.d下,起一个以S99打头的名字就好了。
 
按以上三步来进行安装和设置,就能得到一个既可以从裸机启动,又可以从虚拟机启动的LINUX分区。VMware对于我来说,还是一个新鲜事物,本人只是VMware的新手,有讲的不对的地方,请多指教。