从windows迁移到Ubuntu Linux一例

从windows迁移到Ubuntu Linux一例

注: 本文内容比较杂,涉及WGA、tnt2显卡、gnome、xfce、nfs、游戏、wine、font、defoma、socks5、ssh等,这些问题我就不再一一整理了,请各位自行攫取。

起因

一位同事告诉我,他的电脑好像中病毒了,总提示什么“您可能是软件盗版的受害者”,我以为这又是哪个流氓软件的把戏呢,故意说得严重些吓唬用户,然后进一步欺骗什么的。于是到他电脑上一看,提示是这样:

从windows迁移到Ubuntu Linux一例p1

原来我当初的想法是错误的,根本没有流氓软件,这个提示是100%正宗的微软出品,根据提示还可以链接到微软的网站,提示当前windows使用的序列号是非法的:

从windows迁移到Ubuntu Linux一例p2

这时才想起来,这台机器大概半年前重装过,装了一个不知名版本的winxp(当然是盗版),后来提示快到期了需要激活,就找了个算号器算了半天,找了个可用的序列号用上了。查看已安装的程序可以发现,由于windows自动更新一直开着,4月25号通过自动更新安装了一个WGA(微软正版增值计划)工具,第二天,也就是4月26号就开始提示了。

这台电脑是联想的品牌机,购买的时候是带着正版win98操作系统的,不过时间比较久远了,win98在当今的网络环境下,让一个菜鸟使用,存活期实在太短了,所以才重装的xp。现在既然人家已经发现“盗版”的事实了,还是不要用了,结合前一段时间成功为其他2位同时安装Ubuntu Linux的经验,决定把这台机器改装Linux。

老爷机

先来介绍一下这台老爷机,2002年初购买的联想开天4600,P4 1.7的主频,256M SDRAM内存,40G硬盘,Nvidia Riva Tnt2的显卡,按说已经到了退休年龄,但为了节约资金,加上使用岗位的工作也不太多,或者说就是给他们用来上上网,打打游戏的,才一直在用着。

所装Linux为Ubuntu 7.04 Feisty Dawn,新鲜出炉的,呵呵。

基本系统与显卡

个人感觉直接用Ubuntu的Live CD安装太慢了,所以用一张Ubuntu server光盘先安装基本系统,再安装ubuntu-desktop,从局域网内的镜像源下载,过程很顺利。

至于显卡驱动的安装,由于Nvidia Riva Tnt2是相当老的卡了,所以需要安装nvidia-glx-legacy包,但光这样还不行,无法启动glx,只有把xorg.conf中Device段中的Drivernv改成nvidia才行,glxgears也运行正常,不过这样不仅充分体现了老式N卡“黑”的特点,最高还只能上800×600的分辨率,所以只能把Driver设置为默认的nv,不使用glx,但能够用1024×768的分辨率,反正也不玩3D游戏。详细的安装在原来写的[Ubuntu点滴](152)中有介绍。

由于没什么办公需要,所以必备的软件无外乎浏览器、qq、休闲游戏了。浏览器当然是使用Firefox,QQ也用LumaQQ实现了,至于休闲游戏嘛,我推荐的[蓝迪游戏][bluedj]由于游戏太少、玩家太少,同事看不上,所以还得想办法装其他的,不过这是后话了。

基本系统安装完毕之后,去掉不必要的服务,使用Gnome桌面,感觉这台老爷机跑起来还是吃力,系统内存需求大概和机器配置相当,如果能再多128M内存情况就会好很多了。

系统改进与文件共享

鉴于Gnome桌面实在是太慢,所以用轻量级桌面系统Xfce替代了,再用[SWiftfox][]替代原生的firefox,这样感觉系统快了许多,只开一个空的firefox的情况下内存占用在160M左右,加上Xfce本身效率和相应速度就比Gnome要好,现在系统的速度就“相当”可以接受了,夸张一点说比原来windows还要快一些呢。

在办公室的局域网上,共享是难免要用到的了,对于菜鸟用户来说,使用linux共享最好的方式就是在fstab里直接mount服务器上的共享文件夹,这样日常使用更方便。以前和windows机器共享文件我都是用Samba,不过这次是Linux和Linux机器之间的共享,我鼓捣了一会儿Samba的配置,很容易就通了但中文总是不行,不管是iocharset=utf8还是iocharset=cp936或者codepage=cp936都不行,于是转变方式,使用NFS。

没想到NFS配置如此简单,因为懒得和linux内核扯上关系,服务器上使用的是nfs-user-server,配置文件为/etc/exports,由于没用权限控制,所以一句配置就够了:

/home/fwolf/links/public    *(rw,sync)

把public这个目录共享给全部用户(*),设定可读写权限(rw),sync不知道啥意思,网上抄过来的配置,文档中也没有。客户端安装上nfs-client之后,在fstab里面加上一行:

fwolf:/home/fwolf/links/public      /media/fwolf    NFS defaults    0   0

这样就实现了NFS共享文件夹的自动挂载。再把挂载点的链接拖到文件管理器Thunar的左侧Tree栏中,同事用起来就没问题了,不过我这里倒是遗留下来一个小问题。

我的这个~/links/public目录在Samba和NFS下都共享这呢,同时这个目录中还有一个链接文件(比如叫csi),指向我电脑上另外一个位置,问题来了,windows机器通过samba访问时,可以访问链接文件csi里面的内容,在他们看来,csi就是一个普通的目录;而这台Linux通过NFS访问时,客户端Linux看到的csi仍然是一个链接文件,当然链接文件对于客户端Linux来说是指向客户端电脑中的某个文件的,它当然不存在了。所以NFS共享的情况下,无法通过链接文件来“灵活”添加共享文件了。

Wine与休闲网游

同事玩的休闲网游指的是QQ游戏、中游、边锋、联众等多人在线棋牌游戏,抱着不大的希望,我用wine(Ubuntu中自带的,并非EasyWine等修改版)一个一个的安装、运行,虽然安装都很顺利的完成了,但能运行的之后联众:

  • QQ游戏,按照网上说的先安装ie6再运行,仍然是在弹出登录对话框之后报错,错误还无法关闭。
  • 中游,iGame.exe运行之后死活不出来。
  • 边锋,说聊天控件无法运行,让我重新安装,难道不聊天就不能玩游戏么?

还是最老牌的联众游戏勉强可用,把新、旧中国象棋装上试了一下,效果满好的,就是在大厅选游戏选房间的时候,鼠标点房间名无效,需要用键盘移动光标过去,再敲回车进入。偶尔还会自动下载一些扩展名为gls的东西安装,不过基本都不妨碍使用。

在使用wine进行游戏安装、测试的时候,刚开始特别的慢,并且wine一开始运行xorg就把cpu占到100%,几乎什么都没法用,后来在[EasyWine linux 游戏社区](http://www.easywine.org/bbs/viewthread.php?tid=563&page=2)找到了答案,问题解决之后,wine的速度还是非常快的,套用网友的一句话,简直比直接在windows下运行还快呢。

wine特别慢,xorg吃cpu的原因主要是系统缺少gbk字体,运行一下xfontsel,如果xorg把cpu占到100%,过一会儿才弹出对话框的话,就更加肯定是这个问题了。首先要准备中文字体文件,比如我的/big2/fonts/xpfonts/simsun.ttf,然后在/etc/defoma/hints中添加一个名为ttf-sim-simsun.hints的文件,内容如下:

category truetype
begin /big2/fonts/xpfonts/simsun.ttf
    Family = Sim-Sun
    FontName = SimSun-Medium
    Encoding = Unicode
    Location = Chinese-China English
    Charset = ISO10646-1 GB2312 BIG5 ISO8859-1 GBK
    UniCharset = GB2312 BIG5 ISO8859-1 GBK
    GeneralFamily = SimSun
    Weight = Medium
    Width = Fixed
    Shape = Upright
    Alias = Sim-SunGB SimSunGB
    Foundry = Sim
    Priority = 20
    X-Family = SimSun
    X-ElementAlias=foundry=default:family=simsun:resx=72:resy=72
    TTCap = halfwidth-bw=0.5 italic-angle=0.167 no-roblique no-oblique no-ritalic
end

然后在defoma中注册Simsun宋体字体的hints文件:

cd /etc/defoma/hints
defoma-font reregister-all ttf-sim-simsun.hints

最后修改/etc/X11/xorg.conf,确保Files段有如下内容:

FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"

这样,wine能够找到正确的字体之后,速度就飞快了。

Socks5代理

联众游戏虽然能玩了,但是联众不同的游戏使用不同的端口,而同事所用机器,受防火墙的限制,无法直接连接这些端口,如果使用联众自带的proxy功能,能登录上,但游戏功能也随之受限,所以考虑使用socks5代理。

局域网内的服务器不受防火墙端口访问限制,但如何让它提供socks5代理服务呢?我在网上搜索了一下,发现Ubuntu下居然没有显而易见的socks5代理服务软件,只有socks4的,就我的理解,socks5和socks4还是区别很大的,所以继续寻找,终于[SOCKS Forwarding With OpenSSH](http://priyadi.net/archives/2005/03/18/socks-tunnel-with-openssh/)这篇文章提醒了我,可以使用ssh的隧道功能提供socks5代理服务。

ssh的隧道代理功能非常有趣,如果你用ssh -D 1080 user@host登录远程主机之后,不仅可以正常的操作shell,同时还在本机的1080端口建立了socks4/socks5服务。本机的1080端口相当于隧道的入口,用户请求从这里进来,在ssh登录的主机出去,然后用户请求返回的结果再从ssh登录的主机经由ssh隧道返回。其实国内也有人介绍过这种功能了,比如可以使用dreamhost的ssh功能为自己提供代理服务,只是加上socks就想不起来了。

方法了解之后,操作就简单了。首先要配置到服务器的[ssh自动登录](279)(我可不想每次都手工输入密码),然后把登录命令写成一个脚本,ln到/etc/rc2.d/目录下,起名叫S99ssh_socks,这样每次开机就会自动ssh登录到服务器,同时在本机的1080端口创建socks服务了。别忘记把ssh的超时关闭去掉,编辑~/.ssh/config,加上:

ServerAliveInterval 300

每隔300秒向服务器发送活动信息,免得被踢。注意这种方式提供的代理服务只能够供本机使用(监听127.0.0.1地址),同时udp协议无法使用这种代理。

如果用Tor来提供socks服务也是可以的,我在没找到ssh隧道方法的时候也是这样凑数的,不过大家都知道,tor的速度嘛,呵呵,玩游戏总掉线是要扣分滴。

小结

这次迁移基本上已经完成了,用到的软件不多,主要时间花费在系统调优和用wine测试各个游戏上面,没有什么高深的技术,但是把现有的工具融合在一起,为那些对windows过于依赖的人们提供一个新的选择,还是有意义的,至少,不会再有人让你整天给他杀毒了吧?呵呵。

Update @ 2007-08-30

如果ssh转发失败,服务器上出现类似

channel 2: open failed: administratively prohibited: open failed

的错误信息时,有三个可能的原因,一是服务器上的sshd_ config文件中的AllowTcpForwarding yes没有打开;再一个就是ssh -D创建的socks服务器,你错当做http代理服务器用了(Tips: 在firefox的proxy设置中,只填SOCKS Host,其他Proxy地址置空,就不会弄错啦);第三,如果使用privoxy转发,把forward-socks4a换成forward-socks4试试(去掉了一个“a”)。

5 thoughts on “从windows迁移到Ubuntu Linux一例”

  1. 你在自找麻烦……所做的不过是让你的同事成天问你“这个东西有什么替代品”这种问题

    老衲指你一条明路,f455f9a787b620aca7ac89ab47574919

    搜索 md5 值是这个的 .iso

    然后找工行版 cdkey 安装,不需要额外做任何的改动,可过所有 WGA

Leave a Reply

Your email address will not be published. Required fields are marked *