在中国推广 Linux、开源,任重而道远

前言:
因为我既非IT从业人员、也不是全面的知道全国的Linux和开源现状,仅是从自己的身边的情况和一些网上的材料写出下面的一席乱谈,谨希望对一些朋友正在做的事能够提供一点思路,作为事实上的旁观者,是清是浊,欢迎大家交流评说。

正文:
前几天,我在2008年第1期的《读者》杂志上面读到一篇文章《直面中国的慈善事业》(文/司金 陈建利),在这里有转载。讲的是中国的慈善事业现状,中国的慈善事业规模还太小,好像说的是算是还没有真正起步。其中还对比了中国和美国的慈善捐款的人群分布比例,中华慈善总会每年的慈善捐款10%来自国内平民;美国的个人捐款比例为85%。也就是说,慈善事业,在中国大多数人中还没有兴起来。我不由自主的由此联想到,要在中国推广 Linux 、开源,任重而道远。

我觉得,Linux 和开源,在某一个角度上就算是一种慈善事业,也可以看作是一种信息基础平台的社会福利。

有的朋友认为中国的开源不兴,是中国的经济落后,程序员都忙于生计,没空来搞开源。不过,我原来读过一篇好像是Sun公司的一位工作人员的博客,他指出,实际上,国外好多搞开源软件是由公司牵头在做的,做开源的程序员也会在他们所在的公司拿工资的,而不是一些想像的全凭个人兴趣的无私奉献(另外,参见这篇文章:Q: Who Really Creates Linux? A: The Enterprise)。

上面好像说明一点,中国的开源不兴,可能是因为在中国做开源,不管是个人还是企业,都没有什么回报,大家就不愿意做了。

而谁能给搞开源的人以回报,我想主要应该是使用开源产品的人吧。

而据我的观察,仅限于在自己周围的情况和在网上听说的情况,使用开源产品的人少,而使用了开源产品而想到回报开源作者的人也不多。以操作系统上的使用为例吧。

如果从现状来看,要让中国的全部PC都用上正版操作系统,可能推广linux是现在唯一的道路。但是,我们许多人好像不大愿意走这“唯一”的道路,我在网上曾看到类似这样的言论:中国人爱用盗版的windows,不用正版的linux,那些预装linux的机器,干脆就什么都别装。

所以,习惯力量和环境使然,中国就没有多少人使用linux,甚至在服务器上,我就曾在网上看到一位国外主机服务商好像很奇怪的说:中国人怎么不喜欢用linux主机啊。

从《读者》上的那篇文章上面,我看到的中国慈善事业的落后,我就想到,基于类似的“善意”的举动,在中国主动回报开源软件的人也不会多吧。我在网上一个搞类似共享软件的朋友,他对在网上做类似事情时挂上接受捐赠按纽的做法时说,在国外,这种模式有用;在中国,没用。由此可以猜测,他的捐赠按纽可能也没有什么效果吧。不过,我也感到心里过意不去,尽管我使用Linux、开源产品有几年了,至今,在经济上我也没有对Linux、开源回报过一分钱。

所以,总的感觉是,在中国,推广linux很有必要;在中国,推广linux的社会、文化基础环境很恶劣。

我感觉,在中国推广linux有赖于整个社会中“感恩”文化的培养,“慈善”文化的培养等。在改革开放、走向市场经济的过渡时期,我想,我们现在的思想和道德观念的一些不良状态也应该是一种过渡时期的表现。中华几千年的文明一直以来都是提倡“文明”、“知恩图报”、仁义道德的。我想,我们的思想多半可能走向良好的状态,而不会这么大一个中国彻底的变成只知吃喝享受、只知物质、不知精神,只引进了西方的拜金主义,没引进与中华文化有相同之处的“感恩”文化等高级动物的元素的可悲的国家的。我们是动物,不过前面有高级二字,如果我们都成了只是“动物”的动物,那么我们这样的动物就只会被别的高级动物所圈养着了。。。

在中国开源走向光明的过程中,在linux、开源在中国不景气的现在,我想对在中国推广linux、开源的朋友提点自己的想法。

我觉得可以在如下几个领域重点推广 Linux和开源:

1、服务器产品。
Linux的强项还是在做服务器上面,据我在网上的耳闻,Linux服务器在国内发展的空间非常之大。关于它的性能,我曾有过粗简的了解,一款采用Linux作为服务器的网吧无盘系统,在同样的硬件条件下,它所带的客户机数量和稳定性比windows主机的服务器要多、要好,以至于在一篇相关的文章上用了这样的词“由于先天的条件”云云,据我的理解,它那里“先天的条件”就是使用了Linux服务器平台;

2、在计算机知识上有强烈探索欲望和创新精神的人。
计算机专业的学生应该深入的了解Linux,融入世界开源环境,改造Linux,构建用于Linux环境的软件,在实际中运用Linux环境下的相关软件,使其切实的提高生产效率和造福人们。说实话,Linux 、开源世界的东西应有尽有,材料太丰富了,只要您愿意,您可以用它们烹调出最可口的“饭菜”;

3、在教育、慈善、宗教等领域推广Linux和开源。
这些领域都应该算是人类灵魂的工程师聚集的地方,应该在这些领域推广Linux和开源。我想,这些领域的机构或个人在预算有限的情况下,完全可以使用开源产品代替昂贵的Windows平台产品。而且,开源精神与这些领域的价值观也有相合的地方,应该容易得到推广。

也许,当Linux、开源推广开来,也许人们会说:不是我想用盗版的windows平台产品,而是Windows的东西太贵了,我也不知道原来还有Linux和开源这么好的东西。当然,以上这些事情都需要一个前提:大量的Linux各种级别、各个领域的人才。

另外,我以前在电视上曾看到过信息技术的电视讲坐。为了推广Linux,我觉得可以在电视多多举行有关普及Linux、开源的各种电视讲坐,让人们了解除了windows,还有另一个Linux、开源世界。

最后,还是我在一篇日记中想的那样:政府推动 Linux 应用有利于中华民族的复兴,政府在这个事情上所需要作的就是:营造适合Linux、开源推广的思想、文化、社会环境。我想,假设这个环境营造好了,也许中国的好多事情都好了,如前面提到的慈善事业的发展,说不一定,连三农问题也不成其为问题了?还有,我在日记开头提到的文章的最后一段大意是说:某机构作了调查,国内有90%以上的人有回报社会的意愿。。。,可为什么这些人的意愿没有成为实际的行动呢?我想,可能是政府在基础构架方面的东西还有待建设吧?在中国推广Linux、推广开源,是不是也是同样的道理?

因为我既非IT从业人员、也不是全面的知道全国的Linux和开源现状,仅是从自己的身边的情况和一些网上的材料写出上面的一席乱谈,谨希望对一些朋友正在做的事能够提供一点思路,作为事实上的旁观者,是清是浊,欢迎大家交流评说。

在Ubuntu 6.06 下安装305(sn9c110,0c45:612a)摄像头的经历

上周,我试着在我用的Ubuntu 6.06的机器上安装305摄像头。下面记录一些经历,供备忘和朋友参考。

实际上,我没有把这个摄像头安装成功,但是我也知道问题的所在了。

我这个摄像头用lsusb命令显示为:Bus 001 Device 003: ID 0c45:612a Microdia

在windows下安装随带的305驱动,识别为SN9C110摄像头。

1)、根据网上google的结果,尝试安装gspcav1-20070508。最后根据这篇文章:
UbuntuHelp:Spca5xx才编译成功, 网上有点文章介绍的方法往往丢了关键的一个步骤:
ln -s /usr/src/linux-headers-`uname -r` /lib/modules/`uname -r`/build
在我的机器上,即建立一个到/usr/src/linux-headers-2.6.15-23-386 的软链接: /lib/modules/2.6.15-23-386/build
安装完成了,可是在安装的撮像头软件camorama里测试,撮像头还是不能工作。一看源文件里的README文件,原来这款0c45:612a 没有被这个驱动支持。查看了一些资料,想通过修改源码来安装,结果没有成功,这款摄像头在windows下识别为SN9C110,可我在 http://www.sonix.com.tw/sonix/family.do?f=3 下查了一下,没有这款产品的数据了。而在网上链接到这个网站关于sn9c110 的资料好像原来是应该有的。后来,我把摄像头拆开,查看它的芯片型号,芯片上写的是305,还有其它一组字符串,忘了。我想得到相关参数来试着修改源码,结果也没有成功。

2)、尝试升级内核解决这个驱动问题

用文章如何编译一个内核 - Ubuntu方式-xxlinux.com介绍的方法编译的(2.6.24.3)内核不能引导系统,也不知是不是跨度有点大的原因,后来,我没有用文章中介绍的“Ubuntu方式”,而直接用内核源代码里README介绍的通用的内核编译方式编译安装了内核,发现还是不能启动,安装了一个initrd-tools包,用mkinitrd命令做了一个initrd.img-2.6.24.3 文件放在 /boot,修改了/boot/grub/menu.lst新内核才启动成功。结果,新内核里也没有支持这款撮像头的驱动。

3)、安装sn9cxxx的闭源驱动

在网上查了, http://www.linux-projects.org/ 上说他的驱动支持SN9C110,下载了试用版本,结果是Ubuntu 发行版的版本不一致用不了,他上面是用于7.04和7.10的。而我也不是要用这个摄像头,在 linux 安装摄像头只是试验一下而已,也暂时没有升级Ubuntu的打算。所以,我在Ubuntu下安装305(sn9c110,0c45:612a)摄像头就最终以暂停结束。

另外,我看到网上也有一些朋友的这种摄像头在linux没有安装成功。谁知道这种摄像头在linux下的安装方法还请说一下哦。

Ubuntu 6.06 LTS 上挂载fat32分区和ext2分区的一些测试

这篇日记记录在Ubuntu 6.06 LTS 上挂载fat32分区和ext2分区,测试系统umask值和mount fat32分区中的umask、dmask、fmask等参数的用法,并测试在 gnome nautilus 中创建目录、文件和在控制台下创建目录、文件的情况。

一、在Ubuntu 6.06 LTS 挂载Windows XP SP2下的fat32分区:

Ubuntu下是使用的 zh_CN.UTF-8 的locale,使用下面的命令挂载fat32分区:

sudo mount -t vfat -o iocharset=utf8,umask=022,gid=1000,uid=1000 /dev/hda1 /media/xp

这样,可以正确显示windows下中文目录(文件)名,在 Ubuntu 下创建的中文目录(文件)名在windows下也可以正常显示。奇怪的是,就算是登录gnome时选择了zh_CN.GB18030 的locale,挂载这个分区选择iocharset=utf8在nautilus中创建目录和文件才正确(能正常创建并在两个系统中显示中文名;但这时在gnome终端用命令行中不能创建中文名目录和文件),改成iocharset=gb2312 在gnome nautilus中创建目录和文件反而不行(在nautilus中不能创建目录,可以创建文件但中文名在windows下为乱码;但这时在gnome终端的命令行下可以正常创建中文名目录和文件,并且在windows系统下也能正确显示中文名)。而在原来使用的 Redhat linux 9.0 中,因为它使用的是GB18030的locale,这时,iocharset=gb2312才行,见:解决redhat linux9.0下挂载windows分区中的中文文件(夹)名乱码
。另外,两种locale下不设置iocharset参数也不能正常显示中文目录(文件)名。gid和uid是我登录用的帐号的组id和用户id,这样,fat32下面的东西的组和用户都成了我的登录帐号的了。如果,你又指定了 dmask 和 fmask ,那么,前面的umask针对目录和常规文件的屏蔽码就不起作用了。另,据说,dmask和fmask是后来才有的,早期的mount 命令是没有的。

二、挂载的fat32分区和ext2分区在创建文本文件时的权限上是不同的

比如,上面的umask 为022,在控制台下在fat32分区上创建的新目录和新文本文件和原来的旧目录和旧文本文件的权限都是755;而如果系统的umask值是022(/etc/profile中设定的)ext2分区以默认的参数挂载,在/etc/fstab中是:

/dev/hda10 /home ext2 defaults 0 2

,这时,在控制台下创建的目录的权限是755,而新创建的文本文件的权限却是644了,默认没有可执行权限。

三、在控制台下用命令和在如gedit等程序中创建的目录和文件的权限使用了系统umask值,而在图形界面的nautilus中用菜单或鼠标右键创建的目录和文件的权限则基本上不会理会系统umask的值(除了我测试过的在挂载fat32分区时创建目录)。

如,我用umask 020 改变了系统umask 的值,在控制台下在前面的ext2分区中创建的目录和文件是根据新的umask值来确定权限的,而在图形界面的nautilus中用菜单创建的目录或文件的权限却与没有改umask值前一样,即保持目录为:755,文本文件的权限为600。

而且,在用前面命令挂载的fat32分区上,在nautilus中用菜单创建的目录跟命令中使用的umask参数(如:设置 -o umask=021,或 umask=066)一致,而用菜单创建的文件的权限却一直都是600。

我在网上查了一下资料,gnome 的 nautilus 程序忽略系统umask的值好像是它的一个bug,见:idea #200: Umask and Permissions in Nautilusnautilus umask bug permissions problem on networkBug 327249 nautilus ignores umask。不过,这个问题的中文资料竟然没有搜索到。还有,也不知道这个问题现在解决没有?

上面的内容基本上就是一个linux下mount命令相关的,还有就是跟natilus有关,linux下的mount命令非常的强大,也非常的复杂,因为,linux几乎可以识别和挂载世界上所有的文件格式,每一种文件格式就有相关的挂载参数。所以,我觉得,作为一般的 linux用户,掌握一些最基本的参数就行了,到时要用到时,再去man mount,或者上网 google。

附一篇讲解 fstab 文件非常详细的文章:学会理解并编辑fstab