Programming Life
相信不能相信的,完成不能完成的。矛盾,就象征进步。
posts - 151,comments - 7,trackbacks - 0
摘要:
这篇东西是本人安装linux的小结,记录了一些vmware虚拟机中安装linux的问题和解
决,涵盖了vmware中网络设置,vmware-tools,通过hgfs通向host和guest数据,磁盘
追加等内容,观点也许不对,但也许对你有些帮助。所以拿出来共享。


安装需要达到的目标:
1.因为本人所在环境网络条件很好,所以希望在安装、更新和学习中,都充分使用网
络。平时在实验室使用无线网络(为内部网络地址),在宿舍使用wired ethernet,直
接使用internet地址。
2.因为本人笔记本只有30G硬盘,而且需要常用windows(如matlab等),但是部分程序
需要跑linux(本人另有一台桌面电脑),所以考虑考虑winxp+vmware(linux)平台
3.linux需要访问的主要数据:
1)学习用:其他服务器上
2)娱乐用:windows上
3)系统更新用:internet上
4.如果笔记本空间不够,可以临时性地把虚拟机文件备份起来(如烧入DVD),等有
空间时在恢复。要求备份和恢复较快,而且不影响虚拟机使用


软件准备:
1.VMWare Station for win(目前最新版4.5.2 build 8848),internet上可下载。
2.Fedora core 3 and update, 学校ftp站有(anonymous可入)
3.多媒体软件(XMM, XMM MP3, Mplayer),internet上可下载
4.KDE 3.4,到www.kde.org站,寻找符合fc3的rpm。最后会选择
合适的ftp或者http。


术语:
host: 本机(winxp prof sp2)
guest: 虚拟机(fedora core 3)
vnet0-vnet8: VMWare软件支持的9个逻辑子网,默认vnet0为host物理网络连接,vnet1
为vpn连接,vnet8为内部连接


网络配置:
VMWare可支持DHCP,NAT,Bridge等多种网络策略,根据需要,网络拓扑为:
guest与host经由vnet8连接,并启用NAT,host经由vnet0连接外部网络。
vnet8子网和NAT设置:192.168.253.0/255.255.255.0
默认网关:192.168.253.2
guest的ip设置:
ip: 192.168.253.5/255.255.255.0
默认网关:<如上默认网关>
DNS: <如host的DNS设置>
host的vnet8连接属性:
ip: 192.168.253.1/255.255.255.0
可打开文件和打印共享
可勾windows登陆
这样,无论host是在无线网路中,还是在有线网络中,guest都可以不经任何改动访问,
外部网络,保持笔记本的便携性。


VMWare安装:
1.在winxp下安装VMWare软件
2.新建virtual machine,选redhat 9或者linux kernel 2.6,硬盘选择4G,固定打下
(prelocated),新增cdrom,和软盘(不知道为什么vmware不支持img文件,所以软盘其
实无法用作对外交换数据的渠道)。内存设为192M(192M是fedora图形界面的最小要求,
我试过更小,但是常常引起内存调页,速度缓慢。相对于host的512M物理内存,和winxp
对内存的狂热,192M不好再大了)
3.在advanced中关闭snapshot功能,以增加速度和保持虚拟机占用磁盘的大小。
注:vmware模拟声卡为sb pci,模拟网卡为AMD PCNET32,虚拟机中可使用host中的加速
指令(如MMX, SSE等)


Fedora core 3的FTP安装
1.从ftp站下载boot.iso(5M)作为启动光盘,配入guest机cdrom映像
2.启动guest,按F2进入bios setup,设置为光盘优先启动,保存bios
3.再次启动guest,可以看到fedora启动画面,选择简体中文为语言,地区配上海
(注:可能多选英文会比较好,安装后可能方便地切换为英文,不用手工设置)
4.在安装媒介中选择ftp,填入原来设计好的ip地址,掩码,默认网关和DNS
5.在ftp站设置中,填入站点ip地址(不要有/在最后),填入路径(一般是/pub/fedora/...)
回车。
6.在分区设置中,分了三个部分(这不见得好,只是本人设置而已):
/dev/hda 100M /boot ext3
/dev/hdb 3600M / ext3
SWAP 300M swap
7.软件安装选项中,选择定制安装。因为guest硬盘只有3.6G,需要懂得节省,不要安装
过多软件(完全安装有6.7G)。本人对kde比较欣赏,所以全部gnone软件全部不选。
注意选择"系统设置"部分(就是很多system-config-*命令的,对应过去的redhat-config-*
命令)。
8.fedora安装中会提示输入管理员帐号(非root权限!),推荐输入(我可惜没有输入)。
过去有的用户帐号不会被提示。root帐号输入会提示。
9.等待软件下载和安装完成(当时我睡觉去了,所以不知道多久)。


Fedora core 3更新:
1.安装完成后重启动,在bios中设置硬盘优先启动,启动后看到图形登陆界面。选择默认
会话方式,用root登陆。先不急于设定系统和做vmware install
2.验证网络可工作(当然可以了,本来就是ftp安装的嘛。)ping www.ibm.com看到显示。
3.敲入yum update更新
4.敲入up2date更新。(我当时是进入kde,发现提示2百多可更新,但是这个提示的小程序
我不知道启动命令)up2date将连接到redhat.com进行更新,等待。。。
注:因我准备更新kde到更新的3.4,所以这里的更新列表凡是名字是kde开始的我全部
不选)
5.测试可重新连接ftp站追加软件。敲入
system-config-package --tree=<ftp站ip><ftp路径>
选择一个小软件,进行安装测试。然后用rpm -e <软件名>删除。
6.下载刚刚release的3.4版本。敲入命令firefox启动浏览器,到原来选好的kde3.4软件站
下载。(注:kdetoys, kdeedu, kdebind可以不下载,因为查询到此时系统没有,说明不
需要,而系统没有的kdeaccesibility是要下的,因为3.4宣称新增了文字到语音的tts引擎,
这是要看看的啦)
7.安装kde(如下办法可能不好,有更好的办法得请告诉我)。需要用到rpm的--Uvh(更新),
-f(强制),--nodeps(忽略检查关联)等选择。-q(查询),-a(全部),-i(信息),-l(文件列
表),-p(外部rpm文件指定)等选择项也可能要用到。
为了破除循环关联,更新时往往一次给软件包本身和其devel包(rpm命令可以一次提供多个
rpm文件)
qtdesigner->qt,qt-devel->kdebase,kdebase-devel->kdexxx1,kdexxx1-devel->
kdexxx2,kdexxx2-devel->...->kdesdk,kdesdk-devel
8.添加用户。
adduser myname
passwd myname
8.全部搞定。重启guest,会话中选择kde,用myname登陆,就可以看到kde3.4画面。如果
声卡检测没有问题,可以试试看tts


vmware-tools安装和问题修正(最麻烦部分)
1.确认guest已启动,在vmware的VM菜单中选择install vmware-tools。根据vmware-tools帮助
说明,其安装分为3步:1)解光盘映像,2)在文本界面中安装软件。3)在图形界面中
启动vmware-toolbox。其中第二步最重要,会安装hgfs(以便跟guest virtual machine中的
shared folders对接,打通guest和host的文件交换通道,不必设置samba,在复杂网络中,samba
通信协议会引起很多安装问题,另外还会安装vmware的xserver(其实fedora中已经自带)。
2.首先,解光盘映像。光盘映像从哪里来?其实就是刚才点install vmware-tools中,
就制作了光盘映像。这时要确认光盘是哪个设备,默认是/dev/cdrom。但是因为fedora使用了
udev和在guest机等特殊性,光盘设备不一定是/dev/cdrom,我guest机中是/dev/hdc。(是
哪个设备,可以cat /etc/fstab看自动mount设备,帮助分析。)敲入
cd
mount /dev/hdc (默认mount到/media/cdrom中,这在/etc/fstab指定,一般系统已经指定好)
tar zxpvf /media/cdrom/vmware-tools-distrib.tar.gz
umount /dev/hdc
这之后,就发现在自己的HOME目录下,多了叫vmware-tools-distrib的目录。可执行文件
vmware-install.pl就在这个目录下。执行这个命令需要超级管理员权限和文本界面。
3.准备文本界面和进入超级管理员权限。
很多文章都介绍修改/etc/inittab中的id:5:initdefault:中的5为3,可重启动进入文本界面,
但是无疑重启动过于麻烦,可以用ssh登陆的方式(默认安装中,sshd是运行的),获得文本界
面,而且不用在host中安装ssh软件(当然如果安装了,就更好)。
在kde中,进入系统设置-〉安全设置中,设置防火墙策略为ssh可信任(在ssh的框中打勾),
如果没有kde界面,可以运行system-config-securitylevel。这样就解除了防火墙对ssh的副作用。
在终端界面中,敲入
ssh root@192.168.253.5
192.168.253.5是guest(对于终端是本机)的地址(见上ip地址指定)。另为了防止某些编码在
ssh文本界面中,出现多余字符(特别是对host机软件是如此)导致vmware-install提问时yes/no
造成干扰,最好设置为英文
export LANG=en.utf8
export LANGUAGE=en.utf8
cd /home/myname/vmware-tools-distrib
./vmware-install.pl
提问问题是,回车选择默认选项即可。敲入
exit
退出ssh。可选择重启动或者运行
/etc/init.d/vmware-tools start
测试vmware-tools是否正常。如果正常,除看到OK/确定外,还可以在ls /mnt发现多了一个叫hgfs
的目录。
hgfs是vmware为guest机营造的特殊的文件系统,在linux guest中,通过/mnt/hgfs访问shared folders,
在windows guest通过\\.host\访问shared folders,完全不需要任何mount或者samba/nfs实现文件
在guest/host互访,是一种很优秀的设计和技术。
相关module为vmhgfs.o,放置在/lib/modules/`uname -r`/misc中。
但是可能出现bug,以下逐一排除。
4.修改编码方式。如果不修改编码方式,重启动后,可能无法正确显示中文文件名。查询vmware的
knowledge base,得知这是由于hgfs是UTF-8编码,所以如果guest选择了其他编码,将导致无法正确
显示除英文外的其他字符。目前suse和mandrake都已经采用了utf8统一编码,fedora从fc1开始也支
持,但是在安装时选择语言为语言为“简体中文”会导致编码为zh_CN.GB18030编码,所以fedora对utf8
显示乱码。
解决办法:用root修改/etc/sysconfig/i18n(这个文件定义系统的locale设置)LANG等设置为
LANG="zh_CN.utf8"
LANGUAGE="zh_CN.utf8:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
其他设置若有则保留不变。
(注:可能有人看到网上建议设为LANG=en_US.utf8,的确有很多好处,如console中没有多余字符常常干
扰等,但是根据vmware knowledege base网站的帖子,这样的设置搞不定hgfs中的汉字文件名。我没有试
过。)
更多的有关编码信息,可见 http://www.freebsdchina.org/forum/viewtopic.php?

t=8420&sid=bbf6c12f09acd7278afc1d30defbfb3d 这篇文章。
似乎unicode howto都没有这份文章说得这么好。从文章中可知(如果信息正确+我理解正确的话),
utf8是将所有国家的字符统一编码在一起的大趋向,至于gb2312,gbk,gb18030会回到gb13000的路子
来。winxp是底层utf8(我用e文window却可以支持中文繁简体相当好,也暗示了此点),但是受国标18030
限制,表示层用了18030。诸多linux distros也相继将底层编码变成utf8,通过表转换技术体现不同的
表示层编码。而freeBSD似乎还没有这方面的动静。
从这一点上看,或许hgfs根本无所谓编码(其源代码中我也找不到locale和utf字样),它只是将系统底
层的表示(byte alignment在字符串中无此问题,即便有,也会被vmware在host的库搞定)机械地抄过
来而已——vmware knowledge base上说的也许还不是很确切。当然这些都是猜测,我没有时间分析源代码
啦。hgfs正常工作就可以了。
修改了i18n文件后,如果重启动linux,应该可以看到/mnt/hgfs中汉字显示正常了,同时系统其他汉字
显示(如kde等)保持正常显示不变。看来fedora在编码转换方面的工作还是不错。
5.我的机器在hgfs(shared folder)和guest之间抄文件不正常,一个10K的文件会抄到300M还不停,听歌
什么的也不行。这个问题似乎不是普遍发生,我的同学在redhat AS3就不会)。经查询vmware forum,
发现需要修改源代码,重新编译。
注:我目前的vmware station版本为4.5.2 build 8848,此版本后的vmware-tools源代码不一定是如此。
源代码放在vmware-tools-distrib/lib/modules/source/vmhgfs.tar中,先解开
cd
tar -xpvf vmware-tools-distrib/lib/modules/source/vmhgfs.tar
这时会创建一个vmhgfs目录,问题就发生在这个目录的drive.c中。
cd vmhgfs
vi drive.c
寻找如下字符串(共出现2次):
/* XXX should this be "*offset += ..." ?? */
它的下一行是:
file->f_pos += actualCount;
把它修改为
*offset += actualCount;
注意drive.c中,该字符串共出现2次,一次在read的function中,另一次在write的function中,分别从
host读和向host写两种操作。存盘(注意用w!命令突破文件的写保护)退出。
重新编译
make clean
make
完成后,会在上一层目录(即HOME目录)发现,vmhgfs.o,替换原来的有bug版本。
cd
su root
cp vmhgfs.o /lib/module/`uname -r`/misc/
exit
为什么不上传一个省得大家都重新编译?这是vmware-tools的要求啦。vmhgfs.o跟linux内核版本严重
相关。我在up2date更新了fedora core 3到2.6.10后,都只好重新编译vmware-tools。
再次提醒,这个问题似乎不是普遍存在,一定要确认你的hgfs有这个copy文件不停的毛病,才作这个改动。
6. 有关两个内核时vmware-tools daemon不正常工作问题。问题表现是:原来fedora是2.6.9 kernel,安装
了vmware-tools后,在系统启动时表现正常,但是安装了2.6.10的补丁之后,系统启动就会运行两次(后一
次是受service daemon指定启动的),第一次正常,但是既然vmhgfs.o调入了内存,第二次再start,就
会在vmhgfs.o部分失败,既然有失败,vmware-tools就认定安装失败,在系统再次启动时(或者手动启动
/etc/init.d/vmware-tools restart时),提示重新安装vmwaret-tools。然而,重新安装后,又经如上两
次启动,又得到重新安装的提示。如此循环不已。
此问题的发生原因未明。
我采用如下两种解决策略
1)临时调试时,可以删除一个标志文件,该文件(0字节)的存在,另vmware-tools以为安装不正常。
su root
rm /etc/vmware-tools/not_configured
exit
2) 干脆移走或者删除较早的内核。如果不保留,建议移去
su root
cd /lib/modules
mv <较早的内核名> <较早的内核名>.old
exit
对于移去,不仅要删掉<较早的内核>这个目录,在/boot的某些文件也许要删去。
7. hgfs的问题全部解决了。但是X Windows出现了问题——无法正常启动X,总是提示无法找到鼠标。这个问
题是由于udev的存在和vmware-tools的XFree86 server配置和fedora的xorg不尽兼容造成的。
解决办法是:
1)鼠标问题:修改XF86Config
su root
vi /etc/XF86Config
寻找鼠标的定义,一般找/dev/mouse字符串即可。将/dev/mouse修改为/dev/input/mice
如果你的鼠标支持滚动, 另外在下来的一行加上滚动的定义
ZAxisMapping 4 5
没有这一行,无论怎么在setup程序中改鼠标,都没有用。
2)这样,X已经能启动了,但是由于一开始是XFree86的,是咖啡色的网格,然后才变成蓝色的xorg定义,
让人很不爽,希望能抹掉XFree86,而且,vmware-tools默认安装的server是for XFree86 3.3.6的,版本
太低。
我还没有找到确切办法,但是重新安装xorg-x11可以解决这个问题(包括第一个问题,即不需要编辑
XF86Config),下载xorg-x11,注意是打过patch的版本,在ftp站的update目录中有。
rpm -Uvh --replacepkgs <xorg-x11更新版>
到这里,vmware-tools在fedora core 3遇到的问题都解决了。过程似乎有些麻烦,所以小结一下:
1)mount光盘映像和解文件包
2)进入ssh安装文件包
3)修改i18n中编码为utf8
4)如果在shared folder中copy文件不停,需要修改源代码和重新编译,替换原module
5)重新安装xorg-x11解决X和鼠标的问题。


安装媒体播放程序
fedora因为过分严格避免版权问题,并没有内置实用的视频解码器,甚至连MP3解码器都不带,所以媒体播放
器的安装在fedora的桌面应用中是严重问题。
http://www.linuxquestions.org/网上调查看到的评选结果是mplayer和xine(video)和XMM(audio)
得票最高,所以就把已经安装好了的Helix player(大约fedora主打这个播放器吧?)
顺便说一下,从www.real.com下载的RealPlayerGold10似乎因为glibstd++.so.5的问题,在fedora core 3中
无法使用。幸好Mplayer中有rm编码器(不过我不确认可否支持vb版的rm)。
1.Mplayer
Mplayer的安装地址(这个优秀软件因为版权问题面临网站关闭,下载要快些)
http://www.mplayerhq.hu/
这个站的download部分,会有一个连接连到http://luna.cs.ccsu.edu/dominik/mplayer/,这里提供了RPM版
的mplayer。不用自己对着.tar.gz编译啦。
不过mplayer为保证速度,还是要编译的,于是下载.src.rpm的mplayer,编译指令随机器不同而不同,第二个
网站中有介绍。我用的编译命令是:
rpmbuild --rebuild --with arts --target i686 mplayer-1.0pre6-1.src.rpm
应该还可以有更好的指令的(我还没有仔细研究那份介绍,汗)
编译后在/usr/src/redhat/i686/RPMS/形成多个文件。其中gui部分rpm需要跟skin的rpm一起下载。
skin的rpm,以及codec的rpm,都可以在这个站下载。我发现其实站中第一个codec(all in one essential
codec)就够了(也足以看realplay),其他codec不需要下载。
2.Xinehq
我初步安装了,但是发现即便听歌,都很慢,不解。不过mplayer已经有了,就没有深究下去。
3.realplay
版本10因为glicstdc++.so.5问题无法使用,更老的版本还没有试。
4.XMM,用
system-config-package --tree=ftp://ftp.... (注意看看update中有无,如有就是update中的路径)
重新连接回ftp站,选择XMM并安装。
去网上搜索和下载一个mp3编码器plugin装上。或者去http://www.xmms.org/下载一个xmms完整版。
这些都完成后,感觉即便在vmware中,看视频和听mp3都比较流畅。(注:我的笔记本是1.3G centrino的。)


连接实验室的服务器
ssh -p <端口> <用户名>@<主机>
一切正常,NAT对ssh消息的发送和返回没有影响。
可惜印象中常连接(或称无连接)的网络协议,除了x协议可以在有连接的ssh基础上中建立无连接的tunnel之
外,没有什么可以打通防火墙(我的笔记本跟实验室服务器之间有硬件防火墙,其策略不是我可以修改的),
nfs和samba更是防火的重点目标,否则,设置这个fedora可以无连接地访问服务器上的数据就好了。

追加虚拟硬盘
最后想起,我的虚拟硬盘才4G,烧DVD还有几百兆的余量,而且此刻fedora已经占用了近3G容量。硬盘紧张,
可以选择建立新的虚拟硬盘,单独为swap区(我的swap区目前是300M)和/或为/home而设,这样,在光盘烧录
时,可以选择不烧swap那个虚拟盘,也可以把/home的虚拟盘设定为动态增大(don't allocate all the space),

在烧录和硬盘占用上都显现出灵活性。
1.创建虚拟硬盘(选择ide的原因,仅是因为原来的4G硬盘已经是ide的,不想linux管这么多类型的硬盘)
swap.vmdk,0.29G,选中allcoate all disk space,type=ide(1:0),选中independent
home.vmdk,1G,不选allocate all disk space,type=ide(0:1)
2.启动guest,用root登录,用fdisk分别设置好/dev/hdc(就是swap.vmdk)和/dev/hdb(就是home.vmdk)。查看
host中虚拟硬盘文件大小,发现home.vmdk仍然只有256k(虽然linux中报告1G)
3.替换swap
mkswap /dev/hdc #格式化
swapon /dev/hdc #启用
这是用free看,发现swap区大小已经增大到600多,说明启用成功
swapoff /dev/hda3 #关闭原来的swap
然后修改/etc/fstab文件,将原来swap那行,改为
/dev/hdc swap swap defaults 0 0
4.替换/home
mkfs -t ext3 /dev/hdb1 #格式化,格式化好后,home.vmdk仍然只有256k
tar -zcpvf /home.tar.gz /home #备份home,p参数指定保留文件属性
我在man cp中似乎没有发现如何copy隐藏文件,所以采用tar
mv /home /home.old #先不删除
mkdir /home
修改/etc/fstab,加上本句:
/dev/hdb1 /home ext3 defaults 1 3
重启guest,用root登录,确认swap可用和/home为空
cd /
tar -zxpvf home.tar.gz
退出并用myname重新登录(注意用su检查不够完整,还是重新登录好)
随便打开和新建文件,以确认属性和文件存在。
这时,发现host中的home.vmdk的文件size已经显著增大
5.删去原有的swap并增大原有虚拟分区(/dev/hda2,mount为/)的大小
这可以通过parted命令完成。但是parted为了数据安全,要求所操作的分区所在设备不能正在被使用(分区
不能被挂载,并且交换空间不能被启用)。而需要修改的/dev/hda2是/,所以需要在fedora的救援模式中使
用。
关闭guest系统
去软件ftp站下载FC3-i386-rescuecd.iso(76M大小),并在vmware中配置为guest系统的光盘映像
启动guest,按F2进bios,设置为cdrom优先启动
重启动guest,进入救援画面,启动网络接口提问时答否,自动寻找mount分区时选择“跳过”
parted /dev/hda
print
显示
1 0.031 101.975 primary ext3 boot
2 101.975 3780.922 primary ext3
3 3780.923 4094.692 primary linux-swap
:rm 3
:resize 2 101,975 4094,692
Error: Filesystem has incompatible feature enabled.

Sorry.此问题尚未解决,本来parted网页说支持ext3的resizing的。
另外,我发现vmware-toolsbox对我附加的/dev/hdb1进行shrink,因为
另两个虚拟硬盘都是预先分配所有空间的。这也就是说,/dev/hdb在使用上的弹性想法并不能实现。

所以最后的办法是:卸掉/dev/hdb,把/dev/hda3改为ext3,直接mount到/home,虽然只有300M,但是小心些
用也够了。今后如果需要增大/home,可以再行其他扩充,parted中的cp命令,对扩充时的数据复制提供了很好
的支持。

注:在研究shrinkable的时候还发现vmware DiskMount工具。在vmware网站可以下载,但是vmware不会提供
技术支持。这个工具可以运行于win2k,winxp,win2003上,将*.vmdk文件直接在host机上mount成一个盘符,但
是,这也暗示着.vmdk虚拟盘必须是windows认可的file system,这对我的问题没有帮助。仅姑记于此。

末注:有关vmware-tools给xorg-x11带来影响的解决方案,在“中国vmware论坛”中有文章“为FC3安装vmware
tools问题的完美解决方案”,网址是:http://www.vmware.cn/bbs/dispbbs.asp?BoardID=5&ID=1764,不过,
修改*.pl文件感觉挺烦的,反正我重装xorg-x11也能解决,就不验证了。呵呵。
posted on 2007-09-13 23:13 Prog 阅读(536) 评论(0)  编辑 收藏 引用 网摘 所属分类: Linux

只有注册用户登录后才能发表评论。
网站导航: