Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Sunday, June 17, 2007

[近期译文] GIT 简要教程

git 简要教程 (适用于 1.5.1 或更新版本)

原文链接: http://www.kernel.org/pub/software/scm/git/docs/tutorial.html


这个教程将介绍如何将一个新的项目导入到 git 之中,如何修改项目并如何将这些变更与其他开发者分享。

如果你更感兴趣如何用 git 取出一个项目,比如,测试软件的最新版本,你可能更应该看看 The Git User's Manual 的前两章。

首先,记住你可以用 man 来获取 git 的文档,比如 "git diff" 的文档可以用如下命令察看:

$ man git-diff

在做任何改动之前,最好把自己的名字和 email 地址介绍给大家,最简单的方法就是:

$ git config --global user.name "Your Name Comes Here"
$ git config --global user.email you@yourdomain.example.com

导入一个新项目

假设你有一个名为 project.tar.gz 的 tarball 作为项目的初始内容。你可以如下操作来把它至于 git 版本控制之下。

$ tar xzf project.tar.gz
$ cd project
$ git init

Git 将会如下回复:

Initialized empty Git repository in .git/

现在,你已经初始化了工作目录——你可能已经注意到了名为 ".git" 的一个新目录了。下一步就是使用 git-add(1) 命令告诉 git 当前目录的所有文件全是项目的一个快照:

$ git add .

这个快照目前存放在一个临时区域之中,在 git 中称为 "index"。使用 git-commit 命令,你可以把 index 的所有内容永久性地存放到软件仓库之中:

$ git commit

这条命令会向你提示输入版本变更信息。这样,你的项目的第一个版本就已经存入 git 之中了。

进行修改

修改一些文件之后,你可以将

更新这些内容到 index 之中:

$ git add file1 file2 file3

现在,你已经准备就绪,可以提交了。现在你可以使用 git-diff(1) 命令的 --cache 参数

来查看都有哪些内容将会被提交:

$ git diff --cached

(如果不使用 --cached 参数,git-diff(1) 会显示所有还没添加进 index 的已经做出的改动。) 你也可以使用 git-status (1) 来获得一些当前状况的概要信息:

$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: file1
# modified: file2
# modified: file3
#

如果你需要进行更多改动,现在就可以进行,然后可以添加到 index 之中。最后,使用如下命令提交改动:

$ git commit

这将再次要求你输入关于这次改动内容的描述性信息,之后记录下

的项目新版本。此外,如果想省掉提交之前的 git add 命令,你可以直接用

$ git commit -a

这样会自动检测所有修改过的文件 (不包括新文件) ,并一气呵成地将它们添到 index 之中,并提交。

关于提交的描述信息: 虽然这个信息不是必须的,但提交信息描述最好以一行不超过50个字符的概要性信息来开头,在一个空行之后再进行更多的描述。比如那些将 commit 转化为 email 的工具就会把这个第一行作为邮件标题,其余的提交内容则放在邮件内部。

Git 跟踪内容而不是文件

很多版本控制系统提供了一个 "add" 命令用来记录一个新文件。而 git 的 "add" 命令更加简单也更加强大: git-add 既用于新文件也用于新近改动的文件,在所有这些情况下,它在 index 中对所有的文件与状态进行一次快照,这样就可以在下一次 commit 命令中进行提交。

查看项目历史

在任何时候,你都可以如下查看所有你进行过的改动

$ git log

你可能还想看到每一步改进中的所有完整的 diff ,这可以使用如下命令

$ git log -p

浏览改动的概要对于获得每一步修改的情况常常是比较有用的,可以使用如下命令

$ git log --stat --summary

管理分支

一个 git 仓库可以包含多个开发分支。使用如下命令可以建立一个称为 "experimental" 的新分支

$ git branch experimental

如果你运行命令

$ git branch

你将可以得到类似下面的已有分支的列表

  experimental
* master

"experimental" 就是你刚刚建立的那个分支,而 "master" 分支则是建立仓库的时候自动创建的缺省分支,里面的星号表示你当前所在的分支;输入命令

$ git checkout experimental

就可以切换到 experimental 分支。现在修改一个文件,并提交改变,然后重新回到 master 分支:

(edit file)
$ git commit -a
$ git checkout master

你会发现,刚才的变更已经不可见了,这是因为这个改变是发生于 experimental 分支的,而你现在已经回到 master 分支了。

(edit file)
$ git commit -a

这里,两个分支已经产生不同了,每个分支上都发生了不同的改动。要把 experimental 中的改变也合并到 master 之中,运行命令

$ git merge experimental

如果两者的改变并不冲突,那么就算是完成了。而如果这里有冲突,有问题的文件左边会显示出标记,以表明这个文件发生了冲突;

$ git diff

上述命令将会列出具体的冲突。一旦你编辑文件解决了冲突,

$ git commit -a

这个命令将把合并的结果提交。最终,

$ gitk

会显示出漂亮的图标以展示历史变革。



这里你可以使用如下命令删除 experimental 分支。

$ git branch -d experimental

这个命令会确定 experimental 中的所有改动已经在当前分支当中了。


如果你在 crazy-idea 分支中进行开发,然后又后悔了,你可以用如下命令删除分支
$ git branch -D crazy-idea

分支操作十分简单而且代价低廉,所以适合于尝试一些东西。

使用 git 进行协作

假设 Alice 在 /home/alice/project 中的 git 仓库启动了一个新项目,而在本机中也拥有 home 目录的 Bob 想要贡献一些代码。


他可以以如下工作开始:

$ git clone /home/alice/project myrepo

这会新建一个名为 "myrepo" 的目录,里面包含了 Alice 的仓库的一份克隆。这份克隆与原始项目完全一致,可以处理自己的一份原始项目历史。


之后,Bob 进行了一些变更并提交了这些变动:

(edit files)
$ git commit -a
(repeat as necessary)

当他完成的时候,他告诉 Alice 将 /home/bob/myrepo 之中的变动导入到原始仓库之中。她使用如下命令来完成这一工作:

$ cd /home/alice/project
$ git pull /home/bob/myrepo master

这回合并 Bob 的 "master" 分支到 Alice 的当前分支。如果 Alice 也已经修改了某些内容,她需要手工修复冲突。(注意,"master" 参数实际上并不是必要的,因为这是缺省分支。) "pull" 命令包括两个操作: 从远端分支中取出改动,然后合并到当前分支之中。


当你只在一个很小的小组里工作的时候,通常不会频繁地访问同一个仓库。通过定义仓库的快捷方式,可以让访问远程仓库更方便一些:

$ git remote add bob /home/bob/myrepo

这样,你可以如下用 "git fetch" 命令仅取出改动,而不把它们合并到当前分支之中:

$ git fetch bob

和长格式不同,当 Alice 使用 git remote 设置的快捷方式从 Bob 的仓库中获取内容的时候,取出的内容存储在一个 remote tracking 分支之中,在本例中是 bob/master。所以,如下操作

$ git log -p master..bob/master

将会列出从 Bob 从 Alice 的主分支中分支出去以后的所有改动。

$ git merge bob/master

这个合并也可以通过从自己的 remote tracking 分支中 pull 来做到,如

$ git pull . remotes/bob/master

注意,git pull 总是合并进当前的分支,不论命令行给出的是什么。


之后,Bob 可以如下使用 Alice 的最近改动更新自己的仓库

$ git pull

这里,他不需要给出 Alice 的仓库的位置;当 Bob 克隆了 Alice 的仓库的时候,git 在仓库设置中保存了她的仓库的位置,即 pull 所使用的位置:

$ git config --get remote.origin.url
/home/bob/myrepo

(git-clone 创建的完整配置信息可以用 "git config -l" 获得,git-config(1) 的 man page 解释了所有选项的含义。)


Git 也在 "origin/master" 分支保存了一份 Alice 的主分支的原始拷贝:

$ git branch -r
origin/master

如果其后 Bob 决定转到另一台主机上工作,他还可以通过 ssh 来克隆原始仓库:

$ git clone alice.org:/home/alice/project myrepo

此外,git 本身也有远程协议,并且可以使用 rsync 或 http,详细情况可以查看 git-pull(1) 的 man page。


Git 也可以使用类似 CVS 的工作方式,使用一个中心仓库,所有用户将改动推送到仓库之中,相关内容可以查阅 git-push(1) 的手册页或 git for CVS users

浏览历史

Git 的历史是通过一系列相互关联的 commit 构成的。我们已经通过 git log 命令看到了这些提交的列表。注意,每个 git log 条目的第一行是那次提交的名称:

$ git log
commit c82a22c39cbc32576f64f5c6b3f24b99ea8149c7
Author: Junio C Hamano <junkio@cox.net>
Date: Tue May 16 17:18:22 2006 -0700

merge-base: Clarify the comments on post processing.

把这个名称用于 git show 命令,可以得到提交的详情。

$ git show c82a22c39cbc32576f64f5c6b3f24b99ea8149c7

不过还有其他办法来指代这次提交。你可以只使用名称的开始部分,只要它足够长,保证在所有提交中是惟一的就行了:

$ git show c82a22c39c   # the first few characters of the name are
# usually enough
$ git show HEAD # the tip of the current branch
$ git show experimental # the tip of the "experimental" branch

每一次提交通常都有一次提交作为 "parent" ,它是项目的前一个状态:

$ git show HEAD^  # to see the parent of HEAD
$ git show HEAD^^ # to see the grandparent of HEAD
$ git show HEAD~4 # to see the great-great grandparent of HEAD

Note that merge commits may have more than one parent:

要注意,合并提交可能会有多个 "parent":

$ git show HEAD^1 # show the first parent of HEAD (same as HEAD^)
$ git show HEAD^2 # show the second parent of HEAD

你还可以给你的提交一个名字; 命令

$ git-tag v2.5 1b2e1d63ff

让你可以使用 "v2.5" 来指代 1b2e1d63ff。如果你想把这个名字与他人共享 (比如标记一个发布版本),你应该建立一个 "tag" 对象,可能还需要签署它; 详情请查看 git-tag(1) 的 man page。


任何 git 命令都可以使用上述任何一种名字。比如:

$ git diff v2.5 HEAD     # compare the current HEAD to v2.5
$ git branch stable v2.5 # start a new branch named "stable" based
# at v2.5
$ git reset --hard HEAD^ # reset your current branch and working
# directory to its state at HEAD^

小心使用上述最后一个命令: 这将丢失工作目录中的所有改动,他还会清除本分支内随后的所有提交。如果这个分支是包含这些提交的惟一分支,它们将永远地丢失了。此外,不要对一个公众可见的、有其他开发者从中 pull 内容的分支使用 "git reset" 命令,这将导致一些不必要的合并来清除其他开发者的历史信息。如果你需要取消已经推送的改动,可以使用 git-revert(1) 命令。


git grep 可以在项目的所有版本历史中寻找字符串,而如下命令

$ git grep "hello" v2.5

会在版本 v2.5 中寻找所有 "hello" 的踪迹。


如果你不提供 commit 名称,git grep 会在你当前的目录中搜索所有由 git 管理的文件。于是,如下命令

$ git grep "hello"

是搜索 git 跟踪的所有文件的便捷的方式。


很多 git 命令可以处理一组提交,可以通过多种方式来指定版本。这里是一些 git log 的例子:

$ git log v2.5..v2.6            # commits between v2.5 and v2.6
$ git log v2.5.. # commits since v2.5
$ git log --since="2 weeks ago" # commits from the last 2 weeks
$ git log v2.5.. Makefile # commits since v2.5 which modify
# Makefile

你给出的范围的起始值不一定比终止值更老,比如,"stable-release" 分支可能会在 "master" 分支之后相当长一段时间才会引入同一个提交内容,这样

$ git log stable..experimental

将会列出 expermental 分支之中已经有的,而 stable 分支却还没有的提交,而命令

$ git log experimental..stable

将会列出 stable 中已有、但 experimental 却没有的提交。


"git log" 命令有一个弱点:必须将所有提交在一个列表中呈现出来。当项目历史中有多个不同开发分支并最终合并到一起时,"git log" 中呈现出来的顺序可能没什么意义。


大部分有大量开发者的项目 (比如 linux kernel 或 git 本身) 都经常合并分支,gitk 可以更好地将这些合并变化展示出来。比如,

$ gitk --since="2 weeks ago" drivers/

这个命令允许你浏览过去两个星期中在 "drivers" 目录之中的任意提交。(注意: 你可以按住 ctrl 键然后用 "-" 和 "+" 来调整 gitk 的字体大小。)


最后,大部分命令可以带有文件名,这可以用于指定某次提交中的某个文件,从而指定某个文件的某个版本:

$ git diff v2.5:Makefile HEAD:Makefile.in

你还可以用 "git show" 命令去查看任意文件的任意版本:

$ git show v2.5:Makefile

下一步学习

这个教程应该足够你的项目进行基本的项目发布版本管理。不过,要完全深入地理解 git 的强大功能可能还需要理解两个简单的概念:

  • 对象数据库是个相当阳春的系统,用于存储你的项目的历史,包括文件、目录以及各次提交。
  • 索引文件是目录树的状态的缓存,用于建立提交、取出工作目录并保存一次合并中包含的不同的目录树。

本教程的第二部分 解释了对象数据库、索引文件以及一些其他你在使用 git 中所需要了解的零七八碎的概念。


如果你不想在这条路上继续下去,还有一些细枝末节的东西可能十分有趣:

  • git-format-patch(1), git-am(1): 用于将一系列 git 提交转化成 email 发送的补丁或反之,对于 linux 内核这样的高度依赖于邮件发送的补丁的项目来说十分有用。

  • git-bisect(1): 当你的项目发生倒退的时候,一个跟踪发现错误的方法就是通过历史发现那个罪魁祸首的提交。Git bisect 可以帮助你进行二分查找发现那个提交。它能在一个有很多分支合并的具有复杂非线性历史的项目中十分灵巧地进行接近最优的搜索。
  • Everyday GIT with 20 Commands Or So

  • git for CVS users.


原文最后更新于: 11-Jun-2007 01:21:27 UTC

Saturday, May 05, 2007

忙里偷闲解决了一个笔记本温度传感器的问题

自从内核从 2.6.16 升级到 2.6.18 之后, 笔记本的温度传感器工作不很正常,无法检测到 I2C 总线上的传感器,确切地说是 SMBus 总线控制器无法正常工作 [1]

后经过检查,认定是 ACPI DSDT 中 SMBL 字段导致的问题 [2],PCI 总线分配的 SMBus IO 空间为 0xe800 - 0xe81f 共 32 字节,而 ACPI BIOS DSDT 表中却有
Name (SMBS, 0xE800)
Name (SMBL, 0x10)
的字段,即,SMBus IO 空间长度 16 字节,使用 Intel ASL 编译器 (IASL) [3] 修改 DSDT 中 SMBL 为 0x20 并使用此定制 DSDT 后,问题被解决。[2]

此 问题刚刚初现的原因是 [4] 中补丁进入 Linux 内核之前,驱动申请该该 IO 区域长度是固定为 16 字节的,无论 PCI 总线给予多大空间,这样尽管 DSDT 和 PCI 总线不一致,但没有暴露出冲突,不过,自从新的内核采用了更灵活的地址空间确定方式后,此问题被暴露出来 [5]。这对于一般 的 ACPI BIOS 来说,不是一个常见问题,所以没有其他人报告过。

我已经将自己修改过的对应华硕 M2Ne 笔记本(M2400Ne, Intel Dophin Pentium M CPU, 855GM/ICH4) 0204 版本 BIOS 的 DSDT 上传至 Linux ACPI 网站 [6]

[1] http://lists.lm-sensors.org/pipermail/i2c/2007-May/001118.html
[2] http://lists.lm-sensors.org/pipermail/i2c/2007-May/001129.html
[3] http://www.intel.com/technology/IAPC/acpi/downloads.htm
[4] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=6dcc19dfbc84b2ea5428711b7a47146b5b1788bb
[5] http://lists.lm-sensors.org/pipermail/i2c/2007-May/001134.html
[6] http://acpi.sourceforge.net/dsdt/view.php?id=787

Friday, March 16, 2007

写了一个LDAP教程

很简单地介绍了 LDAP 的概念,和数据库、NIS 的对比,在 PAM, Apache 里面的应用等等。

在这里可以下载到打印版:
http://gnawux.googlepages.com/ldap.handout.pdf

用 beamer 写的。

Monday, March 05, 2007

Mutt 中根据编码不同,自动用不同命令显示附件内容

很多邮件是 HTML 的,不过这些 HTML 只包含 HTML 语法,并不包含字符集提示等等内容,所以,如果这些 HTML 直接交给 w3m 或 lynx 处理,能否正确显示是要看运气的,我们不可能假设别人发来的邮件是相同编码的,更要命的是,很多情况下,根据内容无法区分 gb 编码和 latin-1 编码,乃至 utf-8 编码。

好在 mutt 会把 MIME 参数传送给 mailcap 的处理语句,这样,比如
Content-Type: text/html; charset=gb2312
这个 charset 也会作为变量 %{charset} 传送给命令行,所以,我们在 ~/.mailcap 里面设置
text/html; w3m -I %{charset} -T text/html ; nametemplate=%s.html; copiousoutput;
就可以把任意 text/html 内容转换成 utf-8,然后用 w3m 显示。

参考文献: 《Mutt 用户手册》第五章。

Saturday, December 23, 2006

转一则新闻

未经证实,但严重支持。
出处: http://www.ben.com.cn/bjxw/fzxx/200612/t20061223_141476.htm



一科长使用盗版软件被撤职

此为本市首例

京报网 www.bjd.com.cn 日期:2006-12-23 00:00 网络编辑: 谢永利 字体显示: [我要评论]

作者:
  京报网讯(记者方芳)记者昨天从市使用正版软件工作领导小组办公室获悉,平谷区某单位一科长因在办公电脑里装载盗版软件被撤职,这是本市首个使用盗版软件被撤职的公务员。
  平谷区是全市最早完成政府部门使用正版软件工作的区县之一。全部装上正版国产软件后,为巩固成果,平谷信息办等相关职能部门加大了管理监控力度,专门成立了一个监督小组。
  平谷区某单位一位科长就撞到了监督小组的手上。这位科长为了能够玩游戏,数次卸载国产软件,换上盗版软件。监督小组查到后,第一次给予警告,之后又连续查到三四次,其单位给予这位科长撤职处分。
  市使用正版软件工作领导小组办公室有关负责人表示,对类似情况给予严肃处理反映了政府部门打击盗版的决心和力度,随着今年全市三级党政机关使用正版软件工作的全部结束,今后还将开发一些技术手段加强对党政机关办公系统的监督管理。

看到一个好玩的软件包

recordmydesktop

有空的时候试试,呵呵,貌似是录屏幕操作的视频/音频的。

Thursday, December 21, 2006

简单说说DNS配置

这里,适用于Debian的apt安装的bind9

上一级域名服务器的设置,如果需要通过其他服务器的辅助来提供对自己不管辖的域名提供解析,那么:
修改 /etc/named.conf.options 写下这么点东东:
forwarders {
211.68.71.4;
}
里面写上上级的域名服务器,有多个也可以写多个。

解析自己管辖地域的域名,修改 /etc/named.conf.local , 在里面加入自己解析的区域
zone "your.domain" {
type master;
file "db.yourname";
};
如果你的主机都是 xx.your.domain , 那就把你的域名写在这里。

还可以加域名的反向解析
zone "168.192.in-addr.arpa" {
type master;
file "db.reverse";
};
反向解析的意思就是,如果你管理的IP网段是 A.B.C.D , 那反向解析的域名就是 D.C.B.A.in-addr.arpa , 这里,区域是后面的部分,也就是网段的部分。

地址数据库的写法:
$TTL 604800
这个是更新时限,然后后面是一些这个域名数据库文件的更新时间的,设置
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
再往后就是域名更新会报告给谁
IN NS ns
ns IN A 127.0.0.1
IN是指internet地址,NS 是域名服务器,A 记录是主机名对应的ip地址,对于其他主机的解析

your.domain区域数据库里面
www IN A 192.168.10.8
是指 www.your.domain 对应的IP

168.192.in-addr.arpa 区域数据库里面
8.10 IN PTR www.your.domain.
是指 192.168.10.8 对应 www.your.domain

域名的最后有个点表示后面不需要加其他后缀了,否则还要把区域加上,如果要写全名,上面的A记录还可以写成
www.your.domain. IN A 192.168.10.8

MX记录,也就是邮件域名解析,这是邮件传递用的,比如 wangxu@a.b.c 中 a.b.c 对应的邮件传送主机一般和其他服务直接访问的主机不是同一台,而需要特殊的域名解析,比如:
your.domain. MX 10 mail.your.domain.
这里 10 是优先级,数字越小,优先级就越高,后面的 mail.your.domain. 就是邮件传送服务器,这里放的是域名,还要为他准备一个A记录,来找到主机
mail.your.domain. A 192.168.10.2

好了,就这么简单 :)

Sunday, December 17, 2006

为啥要用Linux的一个原因

Linux更健康: 相比于 Windows, Linux 用户用键盘操作更多一些,呵呵,双手均衡操作,对肩关节比较好——当然,不论你用什么,都最好别在计算机前面一坐一整天 :)

Friday, December 15, 2006

good, 一次测试成功!

前面那个 exim4 multiple smarthosts 的,哈哈

测试包括
  • 发送到内部邮件地址 (个人)
  • 发送到外部邮件地址
  • 发送到内部邮件地址 (邮件列表)
  • 同时发送到内部、外部邮件地址
呵呵,全面成功 :)

Thursday, December 14, 2006

尝试将邮件发送到多个smarthost

还没有完全测试,目前的情况来看,还算是成功,明天到实验室试试。

两个smarthost:
  • 实验室内部邮件通过内部的邮件服务器发送
  • 其余非本机邮件通过gmail邮箱发送
嗯,为了这个目的,分析了半天 exim4 的配置文件和手册……邮件服务器没一个简单的……exim 也这么复杂……

简要说一下,其实看明白了配置文件的分块也就差不多知道怎么下手了:配置文件里,一开始是配置、ACL 以及鉴权认证和其他一些设置的内容,至于邮件传送,主要是route和transport两个部分,两者是相对应的。感觉上,route是对进来的邮件进行处理,如果是本地的,就就地分拣、投递,反之,则利用 transport 送到其他主机去,而 smarthost 只是远程发送的一种方式,需要 route 部分看清哪些邮件要送到哪里,然后再在 transport 部分送到相应的主机去,对于 smarthost 这种方式,往往还要对邮件进行发件人的替换。

这个是对 route 部分新添加的(原有的就是 gmail smarthost 的设置),放在 gmail 部分的前面了:


smarthost_cg:
debug_print = "R: smarthost_cg for $local_part@$domain"
driver = manualroute
domains = ! +local_domains : +cg_domains
transport = remote_smtp_smarthost_cg
route_list = * cg.com.cn byname
host_find_failed = defer
same_domain_copy_routing = yes
no_more


关键处被加红了,呵呵。然后在 transport 部分如法炮制

remote_smtp_smarthost_cg:
debug_print = "T: remote_smtp_smarthost_cg for $local_part@$domain"
driver = smtp
hosts_try_auth = ${if exists {CONFDIR/passwd.client}\
{${extract{1}{:}{cg.com.cn}}}\
{}\
}
tls_tempfail_tryclear = false
headers_rewrite = *@+local_domains wangxu@cg.com.cn frs : *@wangxu-doc.cn wangxu@cg.com.cn frs
return_path = ${if match_domain{$sender_address_domain}{+local_domains}{wangxu@cg.com.cn}{${if match_domain{$sender_address_domain}{wangxu-doc.cn}{wangxu@cg.com.cn}fail}}}


headers rewrite 和 return path 部分是根据 /var/lib/exim4/ 中的 exim4 运行时配置文件改写的,呵呵,另外,前面需要定义一个 cg_domains 列表,也就是内部邮件的域名,呵呵。

passwd.client 文件中分别写出两个 smarthost 的用户名和密码,这个就不多说了,提一下,gmail 的应该写 gmail-smtp.l.google.com , 虽然有点跑题,但也算是有点用吧,呵呵。

嗯,上述内容测试还不完整,待完整后补充、发布到主页吧,呵呵,目前发送到 gmail 是正常的,发送到内部邮件系统的会去尝试内部邮件系统,不过,无奈,当前我没有接在局域网上,日志中显示是连接超时,貌似正常,呵呵,待明天一试。

Sunday, December 10, 2006

记一下NV驱动支持beryl的参数设置

对于使用NVidia官方驱动的情况,需要在 xorg.conf 中显卡的 Device Section 使用参数

Option "AddARGBGLXVisuals" "On"

否则,会出现没有标题栏和窗口边框的问题。来源: google+beryl 官方论坛

给个参考链接,来自 beryl 官方 wiki (昨天搞的时候还 Google 不到这个):
http://wiki.beryl-project.org/index.php?title=Troubles/nVidia

Saturday, December 09, 2006

整合显卡和独立显卡3D性能差距好明显阿

Sigh! 低端显卡GeForce4 MX 440跑Beryl的Bench Mark居然超过200,是我的855GM整合显卡的5倍以上……后者比前者要新不少……不知道这里面有多少是开源驱动和NV的驱动之间的差距。

Friday, December 01, 2006

又干了一次系统搬家的事

呵呵,这次是为笔记本换硬盘,用了一个USB硬盘盒辅助,使用 tar 和管道,把硬盘数据做了一次搬家,挪到了新硬盘上,然后用新硬盘工作,当然,还安装了一次 grub, 已经另文描述了,呵呵。

感觉:
  1. /usr/share/doc下的东东真多......
  2. beagle真浪费硬盘,实际用途有限,以后不用了......
  3. prolific pl2506芯片的硬盘盒不错,兼容性和稳定性很好

关于用 Live CD 安装 grub 的一点心得

今天换装新硬盘的时候,因为新硬盘没有 grub, 只好动用带有 damn small linux 的U盘来启动系统。不过,即使从U盘系统 chroot 到硬盘系统里,也很难运行 grub/grub-install来给硬盘安装 grub,找不到 /dev下面的很多东东。

所以,我尝试使用 mount -o bind 把 Live CD 系统里的 /dev, /proc 挂到硬盘系统的相应位置,然后再 chroot 来安装 grub, 经尝试是成功的。 :)

Tuesday, October 24, 2006

升级了我的Firefox扩展

刚刚升级了我的Firefox扩展 --- Wanfang URL ReWriter,让它支持的Firefox版本达到当前开发中的最新的3.0a1,当然,我是测试过的 :)

呵呵,有兴趣去我的主页上看看吧:
http://gnawux.googlepages.com/wanfang

或者去它的Firefox官方扩展页面:
https://addons.mozilla.org/firefox/3413

扩展的用途是把Google Scholar搜索到的万方数据库或scholar.ilib.cn的url跳转到教育网能直接访问的URL。

Wednesday, October 18, 2006

Linux下利用蓝芽通过手机上网

呵呵,我的主页的有关蓝芽和Linux的页面已经建立很久了,唯独缺少利用手机GPRS上网这块内容,只是因为我的手机是神州行的,呵呵。

10月份,终于申请了一个手机上网业务,于是,也就顺理成章地可以测试蓝芽GPRS上网了,实际上并不是很难,利用pppd,实际只要几条AT Command就可以完成了。更详细的内容到我的主页上看吧 :)

http://gnawux.googlepages.com/bluetooth

在最后边的那个部分就是关于手机拨号的。