存档Linux

Debian 名字的由来

Adam Leventhal 的 Blog 时,在他讲 Debian 的创始人 Ian Murdock 到 Sun 工作的那篇文章中跳到了 Ian 的 Blog 去了。

在他 Blog 的 about 里面他提到 Debian 其实是他妻子的名字和他自己名字的组合,他妻子叫 Debra。令我佩服的是 Ian 在 1993 年创建 Debian,而他在 Purdue 获得科学学士学位是在 1996 年,那个时候 Debian 就叫 Debian?如果是的话他和他妻子在他大学二年级就应该已经认识了。当然佩服的不是他们从大二就开始恋爱,而是他大二就已经开始创建一个 Linux 发行版了,而我大二才开始接触 Linux。(abcx 看到这句话又要狂笑了吧……)

评论(1)

Linus 对 GPL v3 的看法

关心自由软件的人应该都知道 Linus 对 GPL v3 不是非常支持。今天看了 Linus 的这封邮件以后大概明白了他的理由。

Laws (like copyright law) and legal issues, on the other hand, are fundamentally *not* about “personal” things, they are about interactions that are *not* personal. So laws need to be fundamentally different from morals. A law has to take into account that different people have different moral background, and a law has to be _pragmatic_. So trying to mix up a moral argument with a legal one is a fundamental mistake. They have two totally different and separate areas.

The GPLv2 is a *legal* license. It’s not a “moral license” or a “spiritual guide”. Its raison-d’etre is that pragmatic area where different peoples different moral rules meet. In contrast, a persons *choice* to use the GPLv2 is his private choice. Totally different. My choice of the GPLv2 doesn’t say anything about my choice of laws or legal issues.

License 是 legal issue,它会对许多人产生影响,必须考虑实际的问题。而 RMS 在 GPL v3 加入道德上的东西,但道德是很个人的事情,法律跟道德完全是两码事。Linus 在邮件的后面还举了纳粹士兵、甘地、罗宾汉的事例来说明 moral 的未必就是 legal 的,因此在 license 中混入道德上的东西从根本上来说就是一个错误。

还没有看过 GPL v3,有时间要去看看。对这些争论以我的阅历没有资格去做什么评论,能做的只能是关注而已,并做些思考。

评论(2)

x86-64 上为什么没有 linux-gate.so.1

reddit 今天有两个相关的 post。

第一篇讲 Linux 上的 linux-gate.so.1 是怎么回事,其实也就是 sysenter 和新的系统调用方式了,我之前也遇到过。

第二篇的作者看了这篇文章以后发现他的 64bit 的系统上没有 linux-gate.so.1,于是就开始了他的探索,最后发现在 x86-64 上只有 syscall 一种系统调用方式。我自己的机器是 64bit 的,但是装的操作系统是 32bit 的,所以表现和 32bit 的是一样的。

呵呵,看 Blog 长见识了,不是第二篇文章的话还不知道 syscall 呢 :-)

留言

Red Hat 的免费字体 Liberation

这里下载,试用了一下,效果还不错,已经换用这个字体了。

用的时候在 .fonts.conf 里面把 hinting 关掉效果比较好。另外这个字体是 condensed 风格的字体,所以我比较喜欢。它的 monotype 字体在 XFCE 的 terminal 中显示效果比 Dejavu 和 Bitstream 的 monotype 要好。

评论(2)

sysenter, int 0×80 和 Linux 系统调用

这次的作业里面要求修改 Linux 内核代码,统计系统调用执行的次数。看 《Linux Kernel Development》 的第一版(我买的早,所以是第一版),在 entry.S 里面加了几行代码,然后实现个系统调用把统计数据提供给用户空间进程,还是很简单的。

现说点题外话,《Linux Kernel Development》 一年前没有学过 Linux 编程的时候看不懂,现在再看感觉好多了,是本内核入门非常不错的书。

不过发现了点奇怪的现象。(无知,所以才觉得奇怪啊)测试程序里面用 C 库提供的 syscall 来调用自己写的系统调用,无论调用多少次,自己的那个调用的执行次数统计始终为 0。但是如果使用 _syscall 宏来调用自己的系统调用,每次调用统计次数都会增加。(我在 2.6.20 的内核 asm/unistd.h 中没有找到 _syscall 宏,拿了老版本代码里面的宏来用。)看 glibc 的 syscall 代码没有看懂(glibc 真是复杂,看的头大,不过倒是知道了什么是 weak symbol)。拿了 LKD 的第二版再来看,看到里面提到一句 Linux 的系统调用在 x86 上现在有了一种新的出发机制,名字就叫 sysenter。sysenter 进入内核的代码在 sysenter.c 里,我只改了 entry.S 所以如果用户空间进程以 sysenter 进入内核则系统调用的统计数据当然不会有变化。问题应该就是出在这里了。

于是就开始 Google 了,找到一些文章,ibm developer works 的介绍ChinaUnix 的一篇文章。马上来 fix 它。

想起去年暑假 IBM 的工程师凌棕说的一句话了,工程师只要找到问题,接下来就好解决了,难就难在怎样找到问题。再一次体会到了,不过这次运气还行,找到问题过程还算顺利。

评论(2)

Fedora, SELinux, apache, vsftpd 和 ReiserFS

这篇文章不知道起什么名字比较好,列了一堆名词,也许会很容易被 Google 到了……

在 Fedora Core 下配置服务器时遇到的问题。apache 的问题是自己指定的 Directory 总是 403 forbidden 错误,而 vsftpd 指定的 anon_root 目录以后匿名访问总是说没有权限进入那个目录。原因在于 Fedora Core 开启了 SELinux,安全策略不允许应用程序去访问那些目录和文件,所以出现了这样的错误。

关于 SELinux 的介绍这里有几个:Fedora Core FAQ 上的介绍,有人翻译的介绍ibm developworks的,教你自己搭建一个 SELinux 系统。

按我现在的理解,问题产生的原因是 httpd 进程运行在它自己的 domain 中(类似于 chroot,把一个进程被限制在一个目录下,不能跳出到那个目录的父目录),它只能访问属于这个 domain 的文件。而文件属于那个文件由文件系统上特别的 label 决定。

问题的解决的办法是针对特定的目录和文件使用 chcon 来给文件贴个标签(这样说应该还算合适吧,正式的说法应该是 security context)。先用 ls -Z 看能正常访问的位置的文件和目录的标签,比如 /var/www 是 system_u:object_r:httpd_sys_content_t,然后使用

chcon -R -h -t httpd_sys_content_t

来贴标签。-R 是递归,-h 不跟随符号链接。这样 apache 应该就可以访问这个文件和目录了。vsftpd 的解决办法也是类似的。

但是我在 ReiserFS 上做这个操作的时候总是出错,说不支持这样的操作,ext3 上没有问题。上网搜了一下,这篇 2006.01 的文章里面说 ReiserFS 上用不了 SELinux ,服务器内核配置中 ReiserFS 的 POSIX_ACL 和 FS_SECURITY 是配上的,但是还是出了问题。不知道是不是现在还不能用 SELinux。

(现在对 SELinux 还是一知半解,等以后多了解一点东西以后再回头来修改。)

评论(2)

Arch 已经用 Java 6 了

今天更新时发现有冲突要删除 jdk,看了一下更新软件才注意到 jre 要升级到 6,冲突就是由 Java 引起的。虽然我还不打算升级 Java,但是没有办法,不更新的话冲突没有办法解决。于是就直接升级 jdk 和 jre 了。呵呵,Arch 动作还真是快,Java 6 发布一个月的时间(没有记错的话)就开始用了,而且你还最好要用最新的。

留言

开始试用 SciLab 和 Octave

这个学期有 DSP,老师会让用 Matlab 做作业,但是懒得去弄 Student version 的来了,所以找 Matlab 的替代软件,发现还不少。除了 SciLabOctave 意外还有 FreeMat,不过那个 Arch 上提供的包里面的没法运行,所以就懒得弄了。

SciLab 的 Linux 版现在是用 tk 做的 GUI,感觉不太爽,5 里面用 Java 的话但愿用 swt 来做界面,swing 的话也还是不太爽,不过是明年 10 月的事情了。Octave 没有图形界面,但对 Matlab 的兼容性比较好,它的主页上说是 “most compatible with Matlab”,又要比较一下了。

圣诞夜对我来说还是没有什么特别的啊……回去看 DSP 去。

留言

Linux 下转音乐格式的工具 audio-convert

使用其他工具来转音乐文件格式的工具,用图形界面来输入需要使用的参数,很方便,不用自己再去搞明白那些命令行参数了。安装对应格式的编码器以后可以支持多种格式互相转换,,包括 APE。(用 Monkey Audio Codec non-win32 port 为编码器 )

留言

SRGP 在 Linux 下的编译和 sample 的运行

计算机图形学导论中的 SRGP 图形包的 Mac 和 Linux 版本可以在这里找到,是 Brown University 的 CS 的。

编译时需要注意的是如果发现 ld 抱怨说库不兼容时先把 lib/libsrgp.a 删除,这个库文件是软件包里面原来就有的,把 make 生成的 src/srgp/objects/libsrgp.a 移动到 lib 下在 make 就应该没用问题了。有一点要注意的是默认提供的 Makefile 里面为了与其他编译器兼容使用了 -fpcc-struct-return 这个选项,如果你的二进制文件要与 libsrgp.a 进行链接的话也需要使用这个选项。

另外 SRGP 程序在 X Window 下运行的话需要把 Color Depth 设置为 8 (改 xorg.conf 就可以了)。这一点参考了这篇文章

留言

« Previous entries