2008年2月27日星期三

什么是Httptunnel

什么是Httptunnel

                                      

  那么什么是通道呢?这里所谓的通道,是指一种绕过防火墙端口屏蔽的通讯方式。防火墙两端的数据包封装在防火墙所允许通过的数据包类型或是端口上,然后 穿过防火墙与对端通讯,当封装的数据包到达目的地时,再将数据包还原,并将还原后的数据包交送到相应的服务上。举例如下:

  A主机系统在防火墙之后,受防火墙保护,防火墙配置的访问控制原则是只允许80端口的数据进出,B主机系统在防火墙之外,是开放的。现在假设需要从A 系统Telnet到B系统上去,怎么办?使用正常的telnet肯定是不可能了,但我们知道可用的只有80端口,那么这个时候使用 Httptunnel通道,就是一个好的办法,思路如下:

  在A机器上起一个tunnel的client端,让它侦听本机的一个不被使用的任意指定端口,如1234,同时将来自1234端口上的数据指引到远端 (B机)的80端口上(注意,是80端口,防火墙允许通过),然后在B机上起一个server,同样挂接在80端口上,同时指引80端口的来自 client的转发到本机的telnet服务端口23,这样就ok了。现在在A机上telnet本机端口1234,根据刚才的设置数据包会被转发到目标端 口为80的B机,因为防火墙允许通过80端口的数据,因此数据包畅通的穿过防火墙,到达B机。此时B机在80端口侦听的进程收到来自A的数据包,会将数据 包还原,再交还给telnet进程。当数据包需要由B到A返回时,将由80端口再回送,同样可以顺利的通过防火墙。

  实际上tunnel概念已经产生很久了,而且很有可能读者使用过类似的技术,比如下面的网址http://www.http- tunnel.com。它是一个专业提供tunnel服务的公司,通过他们的在线tunnel server,局域网内的用户可以使用被防火墙所屏蔽的 ICQ,E-MAIL,pcanywhere,AIM,MSN,Yahoo,Morpheus,Napster等等诸多软件。我们看到,这里有ICQ, Napster等软件,相信我们的读者很多都使用过走proxy的ICQ,OICQ等等,其实他们的原理是差不多的。


  那么什么是通道呢?这里所谓的通道,是指一种绕过防火墙端口屏蔽的通讯方式。防火墙两端的数据包封装在防火墙所允许通过的数据包类型或是端口上,然后 穿过防火墙与对端通讯,当封装的数据包到达目的地时,再将数据包还原,并将还原后的数据包交送到相应的服务上。举例如下:

  A主机系统在防火墙之后,受防火墙保护,防火墙配置的访问控制原则是只允许80端口的数据进出,B主机系统在防火墙之外,是开放的。现在假设需要从A 系统Telnet到B系统上去,怎么办?使用正常的telnet肯定是不可能了,但我们知道可用的只有80端口,那么这个时候使用 Httptunnel通道,就是一个好的办法,思路如下:

  在A机器上起一个tunnel的client端,让它侦听本机的一个不被使用的任意指定端口,如1234,同时将来自1234端口上的数据指引到远端 (B机)的80端口上(注意,是80端口,防火墙允许通过),然后在B机上起一个server,同样挂接在80端口上,同时指引80端口的来自 client的转发到本机的telnet服务端口23,这样就ok了。现在在A机上telnet本机端口1234,根据刚才的设置数据包会被转发到目标端 口为80的B机,因为防火墙允许通过80端口的数据,因此数据包畅通的穿过防火墙,到达B机。此时B机在80端口侦听的进程收到来自A的数据包,会将数据 包还原,再交还给telnet进程。当数据包需要由B到A返回时,将由80端口再回送,同样可以顺利的通过防火墙。

  实际上tunnel概念已经产生很久了,而且很有可能读者使用过类似的技术,比如下面的网址http://www.http- tunnel.com。它是一个专业提供tunnel服务的公司,通过他们的在线tunnel server,局域网内的用户可以使用被防火墙所屏蔽的 ICQ,E-MAIL,pcanywhere,AIM,MSN,Yahoo,Morpheus,Napster等等诸多软件。我们看到,这里有ICQ, Napster等软件,相信我们的读者很多都使用过走proxy的ICQ,OICQ等等,其实他们的原理是差不多的。

  什么是Httptunnel

  作为一个实际的例子,我们下面来介绍一个在"非公开领域"使用的的通道软件,httptunnel。在httptunnel主页上有这么一段话:
httptunnel creates a bidirectional virtual data connection tunnelled in HTTP requests. The HTTP requests can be sent via an HTTP proxy if so desired.
This can be useful for users behind restrictive firewalls. If WWW access is allowed through a HTTP proxy, it's possible to use httptunnel and, say, telnet or PPP to connect to a computer outside the firewall.

  从这段说明中我们可以看出来它就是我们今天说要介绍的tunnel技术的一个证明,我们下面大致介绍一下它的使用。

  httptunnel目前比较稳定的版本是3.0.5, 支持各种常见的unix系统,包括window平台。可以从相关站点(请参阅参考资料)下载,它的安装是比较简单的,照INSTALL文件做就可以了,这里不介绍。

  整个软件安装完毕后,我们会得到两个关键文件,htc和hts,其中htc是客户端(c),而hts是server(s)端,我们来看看具体怎么使用的。

假设有A(域名client.yiming.com)机,B(域名server.yiming.com) 机,两机均为solaris环境,A机在防火墙保护中,B机在防火墙以外,防火墙的管理员控制了访问规则,仅ALLOW80和53端口的进出数据包。而我 们的任务是要利用Httptunnel从A机telnet到B机上,穿过防火墙的限制。操作如下:

首先我们在A上启动client端,命令很简单:

client.yiming.com#htc -F 1234 server.yiming.com:80,

系统回到提示符下,此刻我们用netstat -an 可以看到系统内多出了1234端口的侦听
*.1234 *.* *.* *.* *.* *.* 0 0 0 0 LISTEN

然后我们在B机上启动server端,命令如下:
server.yiming.com#hts -F localhost:23 80

系统回到提示符下,此刻我们用netstat看 *.80 *.* *.* *.* *.* 0 0 0 0 LISTEN
80端口处于侦听状态,需要注意的是,如果系统本身跑的有web服务(80端口本身处于侦听),并不会影响Httptunnel的工作。

  Ok,server以及client端都启动了,我们可以开始我们的"通道"试验了,在client.yiming.com上执行一下如下命令看看:

Client.yiming.com#telnet localhost 1234
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
SunOS 5.7
This is yiming's private box! Any question,contact me with yiming@security.zz.ha.cn
login:

  看到B机的登录提示符了,输入账号密码看看是否工作正常?

  OK! 工作正常,和正常的telnet没有什么差别。

  仔细观察整个过程,会发现在最开始的地方显示的是Trying 0.0.0.0...,Connected to 0.而不是Trying server.yiming.com...,Connect to server.yiming.com,这就很直观的可以看出来client端是转发1234数据包到本机80端口的。(然后再转发到远端)而不是直 接连接远端的B机。

  上面是比较直观的测试,为了进一步验证server和client之间不是通过23端口通讯,我们抓取数据包来看看。我们在server起个抓包工具tcpdump瞧瞧。

server.yiming.com#tcpdump host client.yiming.com
tcpdump: listening on hme0
14:42:54.213699 client.yiming.com.51767 > server.yiming.com.80: S 1237977857:1237977857(0) win 8760  (DF)
14:42:54.213767server.yiming.com.80 > client.yiming.com.51767: S 1607785698:1607785698(0) ack 1237977858 win 8760  (DF)
14:42:54.216186 client.yiming.com.51768 > server.yiming.com.80: . ack 1 win 8760 (DF)
14:42:54.218661 client.yiming.com.51768 > server.yiming.com.80: P 1:44(43) ack 1 win 8760 (DF)
14:42:54.218728 client.yiming.com.51768 > server.yiming.com.80: P 44:48(4) ack 1 win 8760 (DF)
  篇幅所限,上面只是截取了结果中的一点点数据包,但已经可以说明问题了,我们看到server和client之间顺利的完成了三次握手,然后开始push数据,而且通讯确实走的是80端口。有点意思噢。

  看是看出来了,但太不直白,到底在搞什么呀,我们再稍微改动一下tcpdump的运行方式,进一步在来看看telnet的数据是否被封装在80端口的数据包内传输?

server.yiming.com#tcpdump -X host client.yiming.com
14:43:05.246911 server.yiming.com.80 > client.yiming.com.51768: . 2997:4457(1460) ack 89 win 8760 (DF)
0x0000   4500 05dc 3b23 4000 ff06 e2c2 yyyy yyyy        E...;#@......f.D
0x0010   xxxx xxxx 0050 de42 5fd5 ac4f 39ac 016f        .f.#.P.B_..O9..o
0x0020   5010 2238 98e4 0000 746f 7461 6c20 3636        P."8....total.66
0x0030   370d 0a64 7277 7872 2d78 722d 7820 2032        7..drwxr-xr-x..2
0x0040   3920 726f 6f74 2020 2020 2072 6f6f 7420        9.root.....root.

  呵呵,这次清楚多了,上面应该是一次ls命令的输出结果,可以清楚的看到telnet的结果!果然telnet的数据是在80端口的数据包内!

  Httptunnel带来的安全问题

  写到这里,我们可以想象一下,如果管理员完全信赖防火墙,那么在一个有这样隐患的的局域网中,会发生什么样的后果?

  我们可以看到,多年以来,对防火墙的依赖也一直列在SANS的Top10安全问题中。

  既然如此,就很自然的会产生一个问题是:这种httptunnel行为能被发现吗?

  首先我们想到的是使用入侵检测系统,在目前的网络安全设计中,防火墙加入侵检测系统是一种比较流行的安全联动配置,既然httptunnel绕过了防火墙,那么IDS系统呢?我们来测测看看。

  在下面的测试中,我们将使用IDS系统是Snort,版本1.8.2。这可是大名鼎鼎的开放源代码的IDS系统,在它的说明中,被描述为一个轻量级 的,可跨平台工作的入侵检测系统,在2001年12月英国的独立测试实验室NSS的评测中,击败了包括商用IDS系统的所有对手,这些商用软件可是包括 ISS,CISCO SECURE IDS,CA ETRUST,CYBERSAFE CENTRAX,NFR。有兴趣的读者还可以看这篇名为Open source mounts IDS challenge 的报道。

  好,对Snort的大致介绍完毕,我们来看看结果吧,Snort对整个试验过程抓获的数据包产成了告警,如下:

[**] WEB-MISC whisker splice attack [**]
12/02-14:42:54.389175 client.yiming.com:51767-> server.yiming.com:80
TCP TTL:251 TOS:0x0 ID:3327 IpLen:20 DgmLen:42 DF
***AP*** Seq: 0x49CA0BA7  Ack: 0x5FD4DCE3  Win: 0x2238  TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
[**] WEB-MISC whisker splice attack [**]
12/02-14:43:03.195006 client.yiming.com:51767 -> server.yiming.com:80
TCP TTL:251 TOS:0x0 ID:3439 IpLen:20 DgmLen:41 DF
***AP*** Seq: 0x49CA0C20  Ack: 0x5FD4DCE3  Win: 0x2238  TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
[**] WEB-MISC whisker splice attack [**]
12/02-14:43:04.630268 client.yiming.com:51768-> server.yiming.com:80
TCP TTL:251 TOS:0x0 ID:3496 IpLen:20 DgmLen:41 DF
***AP*** Seq: 0x49CA0C4E  Ack: 0x5FD4DCE3  Win: 0x2238  TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

  我们看到snort对抓获的数据包产生了WEB-MISC whisker splice attack的告警,然而这种攻击并没有发生,同时snort对tunnel数据包没有察觉。这样snort就同时出现了IDS系统的两个问题, false positive,false negative。

  这也很正常,因为这也是基于签名的IDS系统的通病,目前决大数IDS系统包括著名的商用软件ISS,NFR等都是基于签名的,也就是说系统维护着一 套特定攻击数据包的数据模式签名。系统工作时,检查经过的数据包的内容,和自己数据库内数据模式签名对比,如果和某种攻击模式签名相同,那么就判断发生了 某种攻击。

  由此我们可以看出很明显的存在若干问题:如对签名的依赖不可避免的导致两个结果,false negative ,false positive。也就是说会产生漏报和误报,这一点很容易理解,当新出现一种攻击模式时,由于IDS系统内没有相应的数据签名,那么就不可能捕获相应的 攻击数据包,false negative由此发生。同时,过于依赖签名模式也很容易误报,就象我们上面的例子。同时,对数据签名的依赖会在一定程度上降低系统性能-经过的数据包 都需要和IDS系统的签名对照。

  此外,基于签名的IDS系统本身有可能由于依据签名这一特性而被攻击,一个例子是stick ,这个程序的作者利用IDS系统进行签名匹配工作原理,发送大量带有攻击特征的数据包给IDS系统,使IDS系统本身处理能力超过极限,从而导致IDS系 统无法响应。按照作者Coretez Giovanni的说法,运行2秒钟stick就能使著名的商用IDS系统ISS real secure崩溃。由上我们看到,对IDS系统的完全依赖同样是有风险的。
  一些解决思路

  看来依靠手头的IDS是无法察觉这种行为了,那么有其它办法吗?我们仔细分析一下事件过程中截获的httptunnel数据包再说吧。

  仔细观察截获的httptunnel数据包,可以发现紧跟着三次握手完成后的第一个数据包包含着一个POST动作,是由htc(client端)发送到hts(server端)的。如下:

14:55:39.128908 client.yiming.com.51767 > server.yiming.com.80: S 3521931836:3521931836(0) win 8760  (DF)
0x0000   4500 002c d3cc 4000 fb06 53c9 xxxx xxxx        E..,..@...S..f.#
0x0010   yyyy yyyy ca37 0050 d1ec 6a3c 0000 0000        .f.D.7.P..j<....
0x0020   6002 2238 1708 0000 0204 05b4 0000   *.*       `."8..........
14:55:39.128945 server.yiming.com.80 > client.yiming.com.51767: S 2946004964:2946004964(0) ack 3521931837 win 8760  (DF)
0x0000   4500 002c cb85 4000 ff06 5810 yyyy yyyy        E..,..@...X..f.D
0x0010   xxxx xxxx 0050 ca37 af98 77e4 d1ec 6a3d        .f.#.P.7..w...j=
0x0020   6012 2238 ef79 0000 0204 05b4   *.*   *.*      `."8.y......
14:55:39.131002 client.yiming.com.51767 > server.yiming.com.80: . ack 1 win 8760 (DF)
0x0000   4500 0028 d3cd 4000 fb06 53cc xxxx xxxx        E..(..@...S..f.#
0x0010   yyyy yyyy ca37 0050 d1ec 6a3d af98 77e5        .f.D.7.P..j=..w.
0x0020   5010 2238 0737 0000 0000 0000 0000   *.*       P."8.7........
14:55:39.132841 server.yiming.com.80 > client.yiming.com.51767: . ack 44 win 8760 (DF)
0x0000   4500 0028 cb86 4000 ff06 5813 yyyy yyyy        E..(..@...X..f.D
0x0010   xxxx xxxx 0050 ca37 af98 77e5 d1ec 6a68        .f.#.P.7..w...jh
0x0020   5010 2238 070c 0000   *.*       *.*   *.*      P."8....
14:55:39.132860 client.yiming.com.51767 > server.yiming.com.80: P 1:44(43) ack 1 win 8760 (DF)
0x0000   4500 0053 d3ce 4000 fb06 53a0 xxxx xxxx        E..S..@...S..f.#
0x0010   yyyy yyyy ca37 0050 d1ec 6a3d af98 77e5        .f.D.7.P..j=..w.
0x0020   5018 2238 d23a 0000 504f 5354 202f 696e        P."8.:..POST./in
0x0030   6465 782e 6874 6d6c 3f63 7261 703d 3130        dex.html?crap=10
0x0040   3037 3838 3034 3836 2048 5454 502f 312e        07880486.HTTP/1.
0x0050   310d 0a   *.*       *.*       *.*       *.*    1..
   *.*       *.*       *.*   *.*     1..

  看起来是发送client端的数据包到server端的,那么server有什么反应呢?我们往下看,在上面这个过程完成后,htc和hts又发生了一次握手(注意,又一次握手),如下:

14:55:39.134301 client.yiming.com.51768 > server.yiming.com.80: S 2851199448:2851199448(0) win 8760  (DF)
0x0000   4500 002c d3df 4000 fb06 53b6 xxxx xxxx        E..,..@...S..f.#
0x0010   yyyy yyyy ca38 0050 a9f1 d9d8 0000 0000        .f.D.8.P........
0x0020   6002 2238 cf65 0000 0204 05b4 0000   *.*       `."8.e........
14:55:39.134389 server.yiming.com.80 >
client.yiming.com.51768: S 2946060449:2946060449(0) ack 2851199449 win 8760  (DF)
0x0000   4500 002c cb8f 4000 ff06 5806 yyyy yyyy        E..,..@...X..f.D
0x0010   xxxx xxxx 0050 ca38 af99 50a1 a9f1 d9d9        .f.#.P.8..P.....
0x0020   6012 2238 cf19 0000 0204 05b4   *.*   *.*      `."8........
14:55:39.136527 client.yiming.com.51768 > server.yiming.com.80: . ack 1 win 8760 (DF)
0x0000   4500 0028 d3e0 4000 fb06 53b9 xxxx xxxx        E..(..@...S..f.#
0x0010   yyyy yyyy ca38 0050 a9f1 d9d9 af99 50a2        .f.D.8.P......P.
0x0020   5010 2238 e6d6 0000 0000 0000 0000   *.*       P."8..........
14:55:39.137333 client.yiming.com.51768 > server.yiming.com.80: P 1:43(42) ack 1 win 8760 (DF)
0x0000   4500 0052 d3e1 4000 fb06 538e xxxx xxxx        ..R..@...S..f.#
0x0010   yyyy yyyy ca38 0050 a9f1 d9d9 af99 50a2        .f.D.8.P......P.
0x0020   5018 2238 25ce 0000 4745 5420 2f69 6e64        P."8%...GET./ind
0x0030   6578 2e68 746d 6c3f 6372 6170 3d31 3030        ex.html?crap=100
0x0040   3738 3830 3438 3620 4854 5450 2f31 2e31        7880486.HTTP/1.1
0x0050   0d0a   *.*       *.*       *.*       *.*       ..
14:55:39.137379 server.yiming.com.80 > client.yiming.com.51768: . ack 43 win 8718 (DF)
0x0000   4500 0028 cb90 4000 ff06 5809 yyyy yyyy        E..(..@...X..f.D
0x0010   xxxx xxxx 0050 ca38 af99 50a2 a9f1 da03        .f.#.P.8..P.....
0x0020   5010 220e e6d6 0000   *.*       *.*   *.*      P.".....
14:55:39.139733 client.yiming.com.51768 > server.yiming.com.80: P 43:89(46) ack 1 win 8760 (DF)
0x0000   4500 0056 d3e2 4000 fb06 5389 xxxx xxxx        E..V..@...S..f.#
0x0010   yyyy yyyy ca38 0050 a9f1 da03 af99 50a2        .f.D.8.P......P.
0x0020   5018 2238 e156 0000 486f 7374 3a20 3230        P."8.V..Host:.20
0x0030   322e 3130 322e 3232 372e 3638 3a38 300d        2.102.227.68:80.
0x0040   0a43 6f6e 6e65 6374 696f 6e3a 2063 6c6f        .Connection:.clo
0x0050   7365 0d0a 0d0a   *.*       *.*       *.*       se....
14:55:39.151300 server.yiming.com.80 > client.yiming.com.51768: P 1:170(169) ack 89 win 8760 (DF)
0x0000   4500 00d1 cb91 4000 ff06 575f yyyy yyyy        E.....@...W_.f.D
0x0010   xxxx xxxx 0050 ca38 af99 50a2 a9f1 da31        .f.#.P.8..P....1
0x0020   5018 2238 e721 0000 4854 5450 2f31 2e31        P."8.!..HTTP/1.1
0x0030   2032 3030 204f 4b0d 0a43 6f6e 7465 6e74        .200.OK..Content
0x0040   2d4c 656e 6774 683a 2031 3032 3430 300d        -Length:.102400.
0x0050   0a43 6f6e 6e65 6374 696f 6e3a 2063 6c6f        .Connection:.clo
0x0060   7365 0d0a 5072 6167 6d61 3a20 6e6f 2d63        se..Pragma:.no-c
0x0070   6163 6865 0d0a 4361 6368 652d 436f 6e74        ache..Cache-Cont
0x0080   726f 6c3a 206e 6f2d 6361 6368 652c 206e        rol:.no-cache,.n
0x0090   6f2d 7374 6f72 652c 206d 7573 742d 7265        o-store,.must-re
0x00a0   7661 6c69 6461 7465 0d0a 4578 7069 7265        validate..Expire
0x00b0   733a 2030 0d0a 436f 6e74 656e 742d 5479        s:.0..Content-Ty
0x00c0   7065 3a20 7465 7874 2f68 746d 6c0d 0a0d        pe:.text/html...
  从数据包中可以看到,本次通讯中hts(server)端向htc(client)端发送了一个GET的标识包,估计是去"取"刚才client端发 来的数据包,而且是一次新的握手!为了验证,我们分别在client,server端,执行netstat -an,结果证明了我们的观察是正确的,如下:

client.yiming.com.51767        server.yiming.com.80     8760      0  8760      0 ESTABLISHED
client.yiming.com.51768        server.yiming.com.80     8760      0  8760      0 ESTABLISHED

在server端,执行netstat -an,结果如下:

server.yiming.com.80    client.yiming.com.51767  8760      0  8760      0 ESTABLISHED
server.yiming.com.80    client.yiming.com.51768  8760      0  8760      0 ESTABLISHED

  果然,防火墙两边的系统都起了两个socket,和一般程序不同,这是个比较特殊的现象。

  GET动作完成后,server端又向client端发送了一个数据包,内容是

HTTP/1.1 200 OK Content-Length: 102400
Connection: close
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate
Expires: 0
Content-Type: text/html

  这里应该是定义数据包传输最大值等参数的。

  作者察觉,经由了这三次htc和hts之间的作用后,httptunnel才真正的建立起来,后面的工作才能正常开展,而且很有意思的是,自此以后所有后续的数据包一律没有80端口经常走的GET,PUT,POST之类的内容!!这里看来可以想点办法。

  上面说过,正常走80端口的数据包应该是web行为,那么就数据包中就应该少不了get等正常的动作内容,如果在80端口经过的数据总是没有这些东东,那么就肯定有问题了,

  那么这种问题就有了一种解决方案,就是手工检查通过80端口通过的数据包,如果数据包是明文传送,那么就很容易发现这种行为。但这种行为也只能在理论 上可行。在实际上的操作是不可能的,有没有比较成熟的这种产品呢?按照这个思路检索网上的数据,果然发现有种入侵检测e-Gap系统可以确实察觉及屏蔽 httptunnel等通道软件的存在,它工作在tcp/ip的应用层,在应用层一级检测数据包的确切性,比如,检测80端口的数据包,如果看起来数据包 中总是没有有效的数据(URL,get,put等参数),那么e-Gap系统就会报警,并中断连接行为。

  需要注意的是,这种侦测方法仅对明文传送的有效,如果数据被加密,那么也就无计可施了。那么再进一步,如果加密了呢?目前作者掌握的情况来看, StealthWatch硬件产品可能是一种比较好的选择,它完全摈弃了基于签名的工作模式,而是采用一种正在申请专利的基于flow-base构架策 略,按照几家评测实验室的结果来看,可以有效的察觉已经公开和未公开的各种攻击,Dos,蠕虫,病毒等,甚至包括加密的通讯!但是,它的价钱也远远的超出 了普通的商用IDS系统,一套齐备的设施需4万美元!具体效果作者目前没有条件测试。

  总结

  在我们的试验中,httptunnel同时逃过了防火墙的屏蔽以及入侵检测系统的追踪,这是值得思考的。我们可以看到,网络安全仅仅依靠某种或某几种手段是不可靠的,尤其是对安全性要求很高的应用系统,同时对安全系统的盲目依赖往往会造成巨大的安全隐患。



--
6G免费网络U盘: http://www.orbitfiles.com/signup/rleon

如何增加loop设备

如何增加loop设备


过程如下:

1. 在/etc/modutils/目录下编写local(或在其中插入)"options loop max_loop=64"
2.运行update-modules,将这行写入/etc/modules.conf
3.(下两步,如果你用devfs的话,可以不用)修改/sbin/MAKEDEV,将其中的
        loop)
                for part in 0 1 2 3 4 5 6 7
                do
                        makedev loop$part b 7 $part $disk
                done
                ;;

改为:
        loop)
                for part in `seq 0 63`
                do
                        makedev loop$part b 7 $part $disk
                done
                ;;

4.在/dev/下运行MAKEDEV loop
5.rmmod loop,modprobe loop

--
6G免费网络U盘: http://www.orbitfiles.com/signup/rleon

2008年2月18日星期一

基于Fluxbox的轻量型桌面环境的配置

基于 Fluxbox的轻量型桌面环境的配置




如今"扣肉"横行,还有多少人在用着上 个世纪的老爷机?即使是扣肉一族,也许同样要求在既有的硬件配置下追求系统性能的最大化;或者是一个DIY的极端狂热分子;如果是这样,Gnome和 KDE这样的桌面环境肯定不是首选,你需要自己动手打造最实用的桌面环境了。(至于什么是桌面环境,什么是窗口管理器,它们之间的区别是什么,参看王垠的 文章《理解 Xwindow》

Fluxbox是众多窗口管理器之一,相对于 fvwm,Fluxbox的可定制性较低,但它不像fvwm那样所有的配置都需要自己写,因而比较容易上手。另外通过简单的设置,Fluxbox可以拥有 非常漂亮的外观主题,所以对于新手以及时间有限的人来说,这是个很好的选择。

一、最小化安装GNU\Linux系统

最小化安装的目的是避免安装系统默认的桌面环境,现在二三百种Linux的发行版中,大部分默认的桌面环境是KDE或Gnome。一个桌面环境包含 了很多组件,也许这些组件你并不需要,比如Gnome下的文本编辑器GEdit,它的功能肯定比不上Vim,所以没有必要把硬盘空间浪费到这上面。
至于最小化安装系统的方法,网上有很多文章,我这里不再多说,同时我自己也没有这么做过,因为我暂时还没有抛弃Gnome的理由。
最小化安装之后最基本的x-window-system-core、gdm等东西的安装参看那些文章。

二、编译安装最新版的Fluxbox

首先说一下我的系统环境:Ubuntu 6.10 Edgy Eft,以下所有配置均基于这个环境,KDE环境下是不是有差别我没有试验。
到Fluxbox主页下载最新的源码包,解压,在终端中cd进解压目录,输入以下命令:

    ./configure
make
sudo make install

安装完之后,设置GDM,即可以在GDM界面选择从Fluxbox还是Gnome等别的环境启动:

对于没有安装任何桌面环境的用户可以在自己主目录下创建.xsession 文件,填入下列内容:

    exec startfluxbox

或者创建.xinitrc 文件,填入如下内容:

    exec startfluxbox

对于需要在多个环境下切换的用户可以这样做:

    cd /usr/share/xsessions

然后:

    sudo vim fluxbox.desktop

填入以下内容:

    [Desktop Entry]
Encoding=UTF-8
Name=fluxbox
Name[zh_CN]=fluxbox
Name[zh_TW]=fluxbox
Comment=This session logs you into fluxbox
Comment[zh_CN]=此会话使您登录到 fluxbox
Comment[zh_TW]=選取這個作業階段後會進入 fluxbox 環境
Exec=fluxbox
TryExec=fluxbox
Icon=
Type=Application

保存后退出。

三、进入Fluxbox并编辑配置文件

在GDM的会话中选择从Fluxbox启动,输入用户名和密码进入Fluxbox的环境。

    cd ~/.fluxbox
ls

如果没有以下哪个文件,就建一个。
和Linux下大部分程序一样,Fluxbox的所有选项都保存在几个配置文件里面,最重要的是"init","apps","menu"和"keys" 这四个文件。
init文件是主设置文件,但是这里我们不作配置,其实主要的配置都在另外三个文件里面,init文件只是用来索引的。

3.1 配置apps文件

apps文件主要用来管理随系统启动的程序。我的apps文件内容如下:

    [startup] {gnome-settings-daemon}
[startup] {tilda}
[startup] {xbindkeys}
[startup] {basket -h}
[startup] {conky}
[startup] {fbsetbg -f /home/lans/.wp.jpg}
[startup] {xscreensaver -no-splash}
[startup] {klipper}
[app] (kwrite)
[Dimensions]    {817 614}
[end]

它的书写格式应该一眼就看出来了,也就是"[startup] {xscreensaver -no-splash}"的形式,方括号加startup即告诉系统在启动的时候加载后面大括号中的程序或命令。

由于窗口管理器只是用来管理窗口行为的工具,所以这里为了配置一个功能较为齐全的桌面环境,下面介绍一下随系统启动的这几个程序的作用,这些程序不 必都安装,你可以选择自己需要的安装,也可以加入别的工具,这就是Linux的好处之一───给用户最大的自由选择的权力。

gnome-settings-daemon:Gnome环境的参数设置后台,虽说用的不是Gnome环境,但是日常使用的程序不是Q4(KDE) 的就是GTK(Gnome)的,在使用GTK程序的时候如果没有启动这个服务,界面将会很难看,如果你的系统资源很紧张,或者不在意界面的话可以不设置这 一项。

tilda:一个基于GTK的终端机,特点是可以设置为无边框和菜单,支持透明和热键呼出,可以无缝嵌入桌面,用起来很方便且美观,可设置成启动时 隐藏,再在这里设置成开机启动,这样再用到终端机的时候只需按下热键就可调出。

xbindkeys:一个为Xwindow设计的热键定义工具,功能较为强大,一次设置之后可以在任何桌面环境下使用,对于经常在多个桌面环境切换 的用户来说很方便,我在另一篇文章《GUN/Linux下跨桌面环境 的热键工具xbindkeys》里面有较为详细的介绍。

basket:KDE下的笔记管理程序,功能非常强大,我主要用来作记事本。

conky:一个将系统当前信息呈现在桌面上的工具,便于实时监控系统。它在安装之后如果你建立了它的配置文件并作了配置的话有时候会出现总是闪个 不停的现象,解决办法见我另一篇文章《Conky闪烁问题的解决办 法》

fbsetbg:Fluxbox自带的桌面背景设置工具,你只需要把后面的"/home/lans/.wp.jpg"替换成自己的壁纸所在的路径即 可,支持PNG和JPG格式的图片。-f参数表示将图片放大到全屏,该程序详细的参数和功能可以使用"man fbsetbg"查看,这是Linux下学习的一个很重要的手段。

xscreensaver:一个Xwindow的屏幕保护程序,这里加载它主要是用它来锁屏,Linux下如果没有锁屏工具,尤其在公共场合,后果 非常严重。另外我发现如果启用xscreensaver的屏幕保护功能的话会出现Xwindow崩溃的情况,具体什么原因还不得而知,所幸我不需要屏保, 所以直接禁用了它的屏保功能。参数–no-splash是让它在启动的时候不显示闪屏。

klipper:KDE下的剪贴板工具,经常进行文字处理的人比较常用。

3.2 配置keys文件

keys文件主要是管理Fluxbox热键定义,Fluxbox热键功能非常强大,不但可以定义键盘快捷键,还可以定义鼠标快捷键、键盘和鼠标搭配 快捷键,完全可以用键盘操控计算机,这是在Windows下不可想象的。它的具体参数参看Fluxbox文档,网上有中英文版本。

我在每个桌面环境下面只定义和该环境息息相关的一些功能的热键,比如窗口的打开和关闭,最小化和最大化等,而常用程序的打开等热键交给 xbindkeys管理。以下是我的keys文件:

    #下面列出的只是我最常用的功能及按键,如果在设置的时候不知道哪个按键的名字,可以使用以下方法:
#查看某一键的名字:在终端中打开xev,然后按该键,显示一段文字,其中有这么一段:
#(keysym 0xffb5, KP_5),这是在按小键盘上的5之后的提示,其中KP_5即是键名。
#自定义快捷键
#特殊键名:
#Windows徽标键:Mod4;左右Control键:Control;左Alt键:Mod1。
Mod1 Left :PrevWorkspace
Mod1 Right :NextWorkspace
Mod1 q :Close
Mod1 z :Minimize
Mod1 x :MaximizeWindow
Mod4 d :ShowDesktop
Mod4 grave :RootMenu
Mod4 s :ShadeWindow
Control KP_1 :SendToWorkspace 1
Control KP_2 :SendToWorkspace 2
Control KP_3 :SendToWorkspace 3
Control KP_4 :SendToWorkspace 4
Mod1 KP_1 :Workspace 1
Mod1 KP_2 :Workspace 2
Mod1 KP_3 :Workspace 3
Mod1 KP_4 :Workspace 4
Control Mod4 Mod1 k :KillWindow
Control Mod4 Mod1 q :Quit
Control Mod4 Mod1 r :Reconfigure
Control Mod4 Mod1 s :Restart
#系统自带的快捷键
OnDesktop Mouse1 :HideMenus
OnDesktop Mouse2 :WorkspaceMenu
OnDesktop Mouse3 :RootMenu
OnDesktop Mouse4 :NextWorkspace
OnDesktop Mouse5 :PrevWorkspace
Mod1 Tab :NextWindow
Mod1 Shift Tab :PrevWindow

上面热键的格式一目了然,不多说了,冒号后面不要有空格,直接跟该热键所对应的功能,这些功能具体都是什么意思,相信只要有一点英语基础就能看懂, 如果不懂或者想定义更多的功能,参看Fluxbox文档。

3.3 配置menu文件

这是管理菜单的文件,Fluxbox在默认的状态下任务栏中不带有类似Gnome和KDE中那样的菜单按钮,在桌面上点右键会弹出这样的一个菜单, 但是我感觉用处不大,常用程序设置热键就行了,或者直接在"打开"对话框中输入名字,在菜单中选择效率太低。

在安装Fluxbox的时候应该已经生成一个菜单文件了,如果没有,可以使用以下命令来创建:

    fluxbox-generate_menu

以后新安装了程序也可以再次使用以加入该程序到菜单,但是自动生成的菜单会有两个问题:一,有些程序似乎没有被检测到,很多安装过的程序没有出现在 菜单上。二,顺序不合理,自动生成的菜单中各个程序的排列和归类不尽如人意。

这时候就需要自己设置了,由于我很少用菜单,另外各人使用的程序不同,所以这里就不贴出我的menu文件内容了。

menu中定义的格式如下:(摘自LinuxTOY上TOY的文章《Fluxbox 配置点滴》)
菜单是可以分级的,第一级菜单以 [begin] 和 [end] 配对,而第二级菜单则以 [submenu] 和 [end] 配对,如果在第二级菜单中包含同样的 [submenu] 和 [end],那么就属于第三级菜单,其他则依次类推。现在我们继续拆解,() 中的内容为菜单项目的名称,而 {} 的内容则为需要执行的命令,可以加上命令参数和选项,也可以带上路径,不过也有仅供显示用的情况。[exec] 表示执行一个命令。有时候,我们还可以看到菜单项目的前面包含图标,只要在执行的命令后面加上 <~/.icons/*.xpm> 即可。

四、桌面环境下各种程序的安装配置

每个人的习惯不同,用的程序也不一样,下面只是简要的介绍一下桌面环境里常用的一些种类的工具,以求尽快配置好一个较为完整的桌面环境,从而尽快可 以用来工作学习而不致等到用的时候才发现还没有配置。至于每个种类哪个程序最好,不是本文谈论的范围,事实上我一直认为没有最好的程序,只有最适合自己的 程序。

4.1 grun

类似于Gnome下的运行对话框,grun是一个具有相同功能的独立程序,我在各个桌面环境中都用它,因为它具有记忆的功能,你用得最多的程序的名 字都会优先显示,可以自动搜索匹配的程序,从而使你不必敲入程序的全名就可以启动该程序,别的桌面环境也都有运行对话框,但是没有比这个用起来顺手的。 Fluxbox自带的也有一个运行对话框,但是我还是用这个。安装后,在xbindkeys或系统中设置热键,以后使用热键即可调出grun。

4.2 ksnapshot

KDE下的桌面截图工具,使用"ksnapshot"命令截取全屏,使用"ksnapshot -c"命令截取当前窗口,更多选项可以使用"ksnapshot –help"查看。在xbindkeys或者系统中定义热键。

4.3 kfind

KDE下的图形界面搜索工具。功能比Gnome下的强大。

4.4 krusader && nautilus && rox-filer

前者是基于KDE的文件管理工具,非常像Windows下的Total Commander,在Windows下TC是最强大的文件管理工具了,krusader的功能自然也不差。另外我觉得这么强大的工具在Linux下的重 要性比在Windows下要弱一些,因为Linux的体系架构比Windows优秀很多,换句话说即使不用这种东西,在Linux下面工作效率也是非常之 高的,而在Windows下面没有TC这个东西的话我真难想象那个难受劲儿。

nautilus是Gnome默认的文件管理工具,用惯了,所以现在也经常用,不在Gnome环境下的时候注意启动时加"–no-desktop" 的参数,如果不加,它会自动接管桌面,并放置Gnome下定义的壁纸。

rox是一个轻量型的文件管理工具,它也可以接管桌面从而定义桌面壁纸(这个功能不是默认的),如果对这个感兴趣,可以查看网上相关文章。

上面三个给我的感觉是:krusader强大,nautilus顺手,rox速度快。

4.5 Htop && gnome-system-monitor

前者是命令行界面的系统进程管理器,可以方便地查看当前系统的进程信息和系统资源占用情况;可以设置热键指向"gnome-terminal -e htop",来调用;后者就不用说了,Gnome默认的系统监视器,类似于Windows下进程管理器的东西。

4.6 amixer && alsamixer

如果你使用的不是KDE、Gnome这样的桌面环境,可能会发现居然没有一个图形化的音量调节工具,这两个都是命令行界面的音量调节工具,前者完全 基于命令行,后者是伪图形界面;我选用前者,用热键绑定的形式来控制音量:每按一下热键增加3%的音量:"amixer sset Master 1+ unmute",减少:"amixer sset Master 1- unmute",静音:"amixer sset Master mute"。

4.7 打开光驱

直接绑定热键到"eject"命令。

4.8 锁屏

在xscreensaver打开的状态下使用命令"xscreensaver-command –lock",最好用热键绑定。

4.9 清空回收站

这些窗口管理器下大多也没有清空回收站的工具,我通过绑定热键到命令"rm -r ~/.Trash/*"来达到目的。

4.10 主题的安装

Fluxbox支持主题,而且很多主题都非常漂亮,可以到http://tenr.de下载,然后解压到主目录下的".fluxbox"目录下的 "styles"目录中,程序启动Fluxbox,在系统菜单的"fluxbox menu"下的"user styles"里面选择。

五、可以开始工作了

好了,至此一个非常节省资源的桌面环境就构建完成了。另外一些像网络浏览器、多媒体播放程序等这里就不再介绍了,安装自己喜欢就行了。上面说到的方 法、工具如果谁觉得有比我的更好的方案,比如还有我不知道的音量调整工具、回收站管理等,可以发邮件到我的邮箱(lenin.lee#gmail.com 将#换成@)交流,如果提问题的话最好先在网上搜一下,或者到论坛上发贴问,我平时比较忙,可能回答得非常慢。

DIY自己的Ubuntu操作系统

DIY 自己的操作系统

2007年05月01日 星期二 , 2,335 次点击 , 
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5 out of 5)
Loading ... Loading ...

这个世界上没有最好的东西,最适合自己的就是最好的。
                                                       ──── 黔之驴

经常在论坛上见一些讨论两个东西谁好谁坏的帖子,也就是传说中的月经贴。一山更比一山高,如果非要事事都论个高低,那可真钻了牛角尖了。

然而善事先利器,这种问题又是无法避免的,比如你说这个东西好,如果真有另一个比这个更好呢?那不嗝屁了吗?还是本朝太祖武皇帝说得好──"自己动 手,丰衣足食"。

我不需要针对新手的喂奶级别的循循善诱,不需要武装到牙齿但影响效率的桌面环境(不是不要GUI),不需要臃肿的体系架构和搭配销售式的霸王安装模 式,甚至不需要对我来说无用的Kontact、Evolution和Gedit,只要一个安全稳定的系统、快速的桌面环境和屈指可数的几个适用的工具,这 就足够了。所以我不用Windows,甚至对于Linux,Gnome和KDE也不是我的首选,作为一个Geek,我DIY。

不得不感谢这个时代,全国人民都在DIY,费老了劲儿娶回家一媳妇儿说不定都是DIY的,不是有句话这么说吗,每一个成功男人的背后都有一个DIY 的女人。作为一个一颗红心、两手准备的时代青年,你不会DIY?传出去怎么办?以后在文艺界还怎么混?你对得起谁?你连你的名字都对不起,因为它也是 DIY的。你就不害羞吗?我就羞,所以我羞并DIY着。

前两天Ubuntu7.04发布,这次我没有像以前那样用LiveCD,而是下了AlternateCD,为的就是DIY一个自己的操作系统。

先作一个不太科学的科普:一个操作系统大致可以分成五个层次,由下往上依次是:core(内核)、shell(外壳)、X-window(图形系统 国际工业标准)、Window Manager(窗口管理器)和Desktop Environment(桌面环境)。通常所说的Linux其实是指内核,Linux并不是一个操作系统,内核负责接受Shell传递的命令并对硬件直接 操作;shell是基于命令行的人机交互界面,负责接受用户的命令并解释为内核指令以传递给内核和向标准输出设备反馈运行结果;X-window是图形呈 现标准,负责提供一个图形系统界面绘制的标准,其实就是图形系统的内核;Window Manager负责控制窗口的绘制和具体行为,到此为止,一个完整的图形界面的操作系统就已经建立了;至于桌面环境,可以把它看作窗口管理器的扩展集,它 包括一个窗口管理器、各种组件、函数库和附属应用程序,目的是为用户提供一个统一、易用的桌面体验。

一、安装基本系统(core+shell+基本组件)

使用AlternateCD引导启动,然后选择"安装命令行系统"进行最小化安装,这个模式只会安装最基本的系统和必要的工具,安装完成后是一个像DOS (大部分人一听说Linux就想起来DOS,我这么比方估计地球人都会长长地"哦"一声然后作恍然大悟状,唉,哪位天使大姐救救中国的计算机教育啊)一样 的命令行系统,没有图形系统。

具体安装过程就不说了,我不想当奶妈。

二、网络配置和安装基本图形系统(桌面)(window manager + 应用程序)

启动系统,使用安装时设定的用户名和密码登录。

1、我用ADSL上网,所以这里先设置ADSL:

sudo pppoeconf

原来在6.10下,这个设置工具被换成了图形界面的,设置之后上不了网,现在不知道为什么,又换回命令行界面的了。
完了使用

pon dsl-provider

上线,使用

poff

下线。

2、然后修改源:

sudo vim /etc/apt/sources.list

系统安装之后默认的是亚洲官方的源,速度奇慢,这里我修改为科大和CN99的源(安装系统前先准备好)。
然后更新源:

sudo apt-get update
sudo apt-get dist-upgrade

3、下面安装基本图形系统:

sudo apt-get install x-window-system-core gdm build-essential

x-window-system-core是x-window的核心组件;gdm是Gnome的登录界面,同类的有KDE的登录界面kdm和另一个 轻量级的xdm;build-essential是编译程序源码所必须的组件。

4、至此x-window层面的东西就安装好了,下面安装窗口管理器:

sudo apt-get install fluxbox

我用的是fluxbox,而且不是上面这样从源上装的,我是自己编译的,编译fluxbox时需要两个组件:

sudo apt-get install xorg-dev xserver-xorg-dev

具体见我另一篇文章《基于Fluxbox的轻量型桌面环境的配 置》
同类的还有fvwm(特点是可定制性非常高,缺点是工作量大,不适合新手)、icewm(fluxbox外另一个很好的选择,类Windows界面)等。

5、然后安装显卡驱动:
我的显卡是NVida的,从官网上下载回来执行安装,具体方法网上有,这里不说了。
NVida显卡驱动安装的时候要对内核作改动,这里需要一个组件:

sudo apt-get linux-headers-`uname -r`

注意上面的单引号是Esc键下那个,不是Enter键左边那个。
以后在图形界面下如果要修改屏幕刷新率或者分辨率可以在终端或运行对话框中输入

nvidia-settings

6、安装终端和运行对话框:

sudo apt-get install tilda grun

这两个分别是我喜欢的终端和运行对话框,其它可选的很多,不作赘述。
我的tilda是编译安装的,需要以下组件:

sudo apt-get install libvte-dev libconfuse-dev libgtk2.0-dev

7、安装文件管理器:

sudo apt-get install rox-filer

轻量但功能强大的东西,同类的有Gnome下的nautilus和KDE的konqueror。

8、安装热键工具:

sudo apt-get install xbindkeys xbindkeys-config

后者是xbindkeys的GTK图形前端设置工具,我没有用过,不知道怎么样。
我的是编译安装的,需要下面这个组件:

sudo apt-get install guile-1.8-dev

三、安装进一步优化桌面体验的工具

1、sudo apt-get install gnome-session

可以安装gnome-core,但是我发现仍然有一些我不需要的组件,所以直接装了这个,比gnome-core更简洁,目的是为了在 fluxbox启动的时候加载gnome-settings-daemon,从而使GTk界面的程序的外观不那么丑。

2、sudo apt-get install gtk2-engines*

gtk的外观主题引擎,加载了gnome-settings-daemon才会使之生效。

3、sudo apt-get install gnome-system-monitor htop

前者是Gnome的进程管理器(不仅限于此),后者是命令行界面的进程管理器。

4、sudo apt-get install gnome-volume-manager

自动加载USB设备的工具,运行后在插入U盘和光盘时会自动弹出nautilus,用处不大。

5、sudo apt-get install nautilus nautilus-open-terminal nautilus-script-audio-convert

Gnome的文件管理器,用惯了,装上。后两个是nautilus的功能增强脚本,前者可以在当前位置打开一个终端,后者用于转换音频文件格式。

6、sudo apt-get install gnome-terminal gnome-alsamixer

前者是Gnome的终端,用惯了,就装上;后者是一个gtk的图形界面音量调整工具。Ubuntu7.04似乎有个Bug,安装之后默认情况下音量 是静音的,打开音量调整工具,将静音的复选框中的箭头去掉即可。

7、sudo apt-get install synaptic

Gnome的新立得软件包管理器,就是图形界面的源管理器,有时候会用到。

8、sudo apt-get install language-pack-gnome-zh language-pack-kde-zh language-pack-zh openoffice.org-l10n-zh-cn mozilla-firefox-locale-zh-cn

系统的简体中文语言包。

9、sudo apt-get install file-roller

各种压缩包的图形前端。

10、sudo apt-get install xcompmgr

窗口特效工具,用于为窗口添加阴影、淡入淡出效果,我只用其阴影效果,淡入淡出效果对于低频的CPU来说太占资源。
安装之后要修改xorg.conf文件:

sudo vim /etc/X11/xorg.conf

在最下面添加下列内容:

Section "Extensions"
        Option  "Composite" "Enable"
EndSection
对于nvida显卡,将下面的两段加入到section device中:
Option          "RenderAccel"           "true"
Option          "AllowGLXWithComposite" "true"

启动xcompmgr时需加参数,使用

xcompmgr -cC

添加阴影

xcompmgr -fF

产生淡入淡出特效

xcompmgr -cCfF

同时使用两个特效,具体参数使用

man xcompmgr

查看。xcompmgr据说可以使cairo-clock边框透明,但我至今没有弄明白怎么用。

11、sudo apt-get install xscreensaver

屏保工具,带有锁屏功能,用法见我另一篇文章《基于 Fluxbox的轻量型桌面环境的配置》

12、sudo apt-get install alien sun-java6-jdk

前者是将rpm包转换为deb包的工具,后者是java开发环境,附带有java运行环境。

13、sudo apt-get install feh fbpager

feh:一个图片查看工具,Fluxbox中使用fbsetbg设定壁纸之后fbsetbg会自动寻找一个可以设置壁纸的程序,feh就是其中的一 个。
fbpager:Fluxbox的虚拟桌面扩展工具。

四、高阶应用程序

1、Office工具:

sudo apt-get install stardict stardict-langdao-ce-gb stardict-langdao-ec-gb stardict-oxford-gb stardict-xiandaihanyucidian stardict-hanyuchengyucidian openoffice.org wxmaxima maxima evince xpdf xpdf-chinese-simplified xpdf-chinese-traditional acroread gnumeric abiword  vim-full vim-gui-common vim-runtime vim-python kchmviewer openoffice.org-gtk eclipse tomboy bluefish basket gimp wine kfind klipper ksnapshot cairo-clock conky

—-stardict:星际译王,下面是其几部词典。
—-openoffice不用介绍了。
—-maxima是数值计算程序,wxmaxima是其图形前端。
—-scilab是科学计算程序,类似于Matlab,不过体积要小得多,源上的包不知道是在哪儿编译的,奇丑,所以自己编译安装。
编译时需要Fortran编译器:

sudo apt-get install g77

然后

./configure
make all
sudo make install

—-evince是PDF文档查看工具,xpdf xpdf-chinese-simplified xpdf-chinese-traditional三个组件用于解决部分中文PDF文档出现乱码的问题。
—-acroread是Adobe官方的PDF阅读器,兼容性勿庸置疑。
—-gnumeric是Gnome的电子表格程序,类似于Windows的Excel。
—-abiword是轻量型的文字排版工具,类似Word。
—-vim-full vim-gui-common vim-runtime vim-python是Vim的完整组件,系统默认安装的功能非常少。
—-kchmviewer是CHM文档的查看工具。
—-openoffice.org-gtk是这样一个组件,当你在像Fluxbox这样的窗口管理器下或者KDE这种非Gnome的环境中使用 Openoffice时,openoffice的界面会显得非常难看,装了这个组件可以使Ooo和Gnome主题保持一致。
—-eclipse:时下非常流行的编程工具,我的是从官网上下载的。
—-tomboy:桌面便笺工具。
—-bluefish:网页编写工具。
—-basket:笔记本程序,我用源码编译安装,需要以下几个包:
sudo apt-get install kdebase-dev libgpgme11-dev
—-gimp:类似于Photoshop的东西,现在PS没有Linux版本,不过据说可以用Crossover安装PS。
—-wine:安装Windows程序必备。
—-kfind:KDE的查找工具。
—-klipper:KDE的剪贴板程序。
—-ksnapshot:KDE的屏幕截图程序。
—-cairo-clock:支持主题的桌面时钟。
—-conky:在桌面显示当前系统状态,非常强大,7.04之下没有出现以前那种闪烁的情况,如果安装后出现这种情况,参看我的文章《conky闪烁问题的解决办法》
—-Emacs23:源上的是Emacs21,马上22也该出来了,我使用的是cvs源码后编译的Emacs23,这个版本解决了很多问题,包括21中对 Unicode支持不好的问题,具体方法见我的文章《Emacs23 的编译安装》

2、网络工具:

sudo apt-get install amule filezilla firefox thunderbird axel firestarter

这些是网络工具,amule是Linux下的电骡。
—-filezilla是FTP工具。
—-thunderbird是和Firefox同出一源的电子邮件工具,不过我用它来阅读新闻组和RSS新闻,它是Linux下对中文新闻组支持最好的工 具。
—-axel是基于命令行的下载工具,据说可以同时启动多地址多线程来加速下载,我安装了却没有用过,不知道怎么样。
—-firestarter:防火墙图形前端,感觉没什么用。

另外有一些网络工具,源上没有或者源上的版本较老或不好用的:
—-Opera:最好的网络浏览器,我一直用它,可到其官方网站下载。
—-Pidgin:原来叫Gaim,源上的似乎不能使用插件Guification,所以我下载源码然后编译安装。编译时需要几个包:

sudo apt-get install libxml2-dev libxml-perl libdbus-glib-1-dev tk8.4-dev tcl8.4-dev libgtk2.0-dev

编译安装之后会遇到一个问题,就是收到消息的时候没有提示声音,解决方法有几种,我这样做:
打开"工具"菜单中"首选项",在"声音"标签中的"声音方式"一栏中选择"命令",在"声音命令"中填写"artsplay %s"。
—-Eva:Linux下最好的QQ客户端,到http://www.myswear.net/forum/forumdisplay.php?fid=3下 载最新的eva源码,然后编译,已经可以支持验证码了。编译时需要以下几个包:

sudo apt-get install libqt3-mt-dev kdebase-dev libqt3-headers

安装上面的kdebase-dev的时候会牵连着安装一些不需要的KDE桌面组件,这让人非常难以容忍,不过要编译KDE下的程序就要安装它,唯一 能做的就是先记下都是自动安装了什么,编译完成后再卸载它们。
—-rp-pppoe:一个ADSL拨号工具,在Ubuntu6.10将pppoeconf工具升级到有图形前端的之后,pppoeconf的设置就总是 无效,当时就换用了这个工具,现在也不想再用pppoeconf了。
—-sancho和mldonkey:mldonkey是多协议(主要是电骡的协议)的P2P工具,特点是可以同时从多个地方下载,理论上说比较快, sancho是其图形前端。
—-Internet Explorer 6 :上网络银行必用的东西,使用ies4linux安装,具体方法见我另一篇文章《生命中不能承受之失》
—-devilproxy:一个代理搜索和验证工具,很好用。
—-MultiGet:一个图形界面的多线程下载工具。
—-Skype:不用说了吧,源上的据说有问题,到其官方下载算了。

3、电子邮件工具:

sudo apt-get install mutt sendmail fetchmail msmtp

电子邮件收发环境,详见我另两篇文章《GNU/Linux下 Gmail的mutt+msmtp+getmail解决方案》《回 到fetchmail》

4、多媒体工具:

sudo apt-get install mplayer amarok k3b mozilla-mplayer vlc vlc-plugin-esd mozilla-plugin-vlc mpd mpc

—mplayer就不用说了,Linux最强大的多媒体播放器,由于知识产权的原因,7.04的源中没有再提供其解码器w32codecs的下载, 可以到其官网上下载all-20061022.tar.bz2和windows-all-20061022.zip两个包,解压后前者mv到 /usr/lib/codecs,后者mv到/usr/lib/win32目录中即可,这两个目录如果没有就建立它。
—-amarok:迄今为止linux下最强大的音乐库管理和播放程序。
—-k3b:基于KDE的很好用的光盘刻录程序。
—-mozilla-mplayer:firefox的mplayer插件,使FF支持播放网页中的内嵌媒体。
—-vlc:跨平台的播放器,唯一的遗憾是不能播放Real格式的媒体,我主要用它来弥补Mplayer不支持DVD菜单的缺失。
—-mpd是一个很另类的音乐播放器,其实它是一个音乐播放服务器,允许任何可以连接到本机的计算机(包括本机)在获得授权的前提下收听本机中指定目录中 的音乐,它只是一个后台服务,没有图形前端。
mpc是命令行下的mpd控制程序。还有一个Gtk图形前端叫Gmpc,源上没有,要到mpd官网下载源码后编译安装,编译时需要两个包:

sudo apt-get install libglade2-dev libcurl3-dev

—-audacious:源上的比较老,用新的要到官网下载源码,编译时需要如下几个包:

sudo apt-get install audacious-plugins-dev gtk-doc-tools liblame-dev libmad0-dev

另外需要一个mcs的包,源中似乎没有,要到audacious的官网下载。
—-FlashPlayer:Macromedia官方发布的Flash独立播放器的Linux版本,到其官方去下载。

5、服务器:

sudo apt-get install apache2 libapache2-mod-security libapache2-mod-php5 php5 mysql-server php5-mysql php5-gd

分别安装apache、mysql、php,我用来搭建本地Wordpress环境,具体见我的文章《Ubuntu本地搭建Apache+MySQL+PHP+ Wordpress环境》

6、休闲游戏

sudo apt-get install foobillard supertux lbreakout2 trigger pingus gnugo quarry

—-foobillard:台球。
—-supertux:类似超级玛丽的东西。
—-lbreakout2:传说中的乒乓球游戏,很久以前流行的那种液晶屏幕、满是黑色方块的、以俄罗斯方块为主的掌机上就有,很古老的东西。
—-trigger:类似于极品飞车的3D飚车游戏,当然比起极品飞车要轻量得多,但3D效果也不错。
—-pingus:传说中比较耐玩儿的智力游戏,但我没玩儿过。
—-gnugo和quarry:前者好像是个引擎吧,后者是图形前端,运行时只运行后者就够了,是围棋游戏,具体设置有些麻烦,可到 LinuxToy.org上找相关文章。
—-vdrift:另一款飚车游戏,跨平台的,源中没有,可到官方网站下载,将近二百兆大小,效果自然要比trigger要好,看官方截图,大有直追极品 飞车的架势。

五、一些技巧

1、使系统允许root用户登录
Ubuntu中默认不允许root用户登录,因为这实在没什么必要,在Gnome下可以使用用户和组设置工具设置允许root用户登录,但是在本文这种轻 量环境中没有该工具,因此使用命令设置:

sudo passwd root

以后要锁住该用户,使用

sudo passwd -l root

如果需要再次解锁,使用

sudo passwd -u root

2、去掉终端中的PC喇叭响铃
在终端上方向箭头移动到头或者到底的时候,主机喇叭就会响,很难听,使用如下方法禁用它:

sudo vim /etc/inputrc

将代码:

set bell-style none

前面的"#"去掉。

3、Gnome的设置中心
虽说不用Gnome,但是我还是偏Gnome的,比如登录界面用的是GDM,大部分程序都是GTK的,这就经常涉及Gnome环境的设置问题。
Ubuntu7.04提供了一个程序,它包括了指向所有Gnome环境变量修改工具的链接,如果安装了上面的所有程序的话应该已经安装了,如果没有,使用

sudo apt-get install gnome-control-center

安装。

六、收工

好了,全世界唯一的操作系统已经完成了,只此一家,别无分店。感觉很长很麻烦吗,其实只是一条命令而已:

sudo apt-get install x-window-system-core gdm build-essential xorg-dev xserver-xorg-dev linux-headers-`uname -r`  grun libvte-dev libconfuse-dev libgtk2.0-dev rox-filer guile-1.8-dev gnome-session gtk2-engines* gnome-system-monitor htop gnome-volume-manager nautilus nautilus-open-terminal nautilus-script-audio-convert gnome-terminal gnome-alsamixer synaptic language-pack-gnome-zh language-pack-kde-zh language-pack-zh openoffice.org-l10n-zh-cn mozilla-firefox-locale-zh-cn file-roller xcompmgr xscreensaver alien sun-java6-jdk feh fbpager stardict stardict-langdao-ce-gb stardict-langdao-ec-gb stardict-oxford-gb stardict-xiandaihanyucidian stardict-hanyuchengyucidian openoffice.org wxmaxima maxima scilab evince xpdf xpdf-chinese-simplified xpdf-chinese-traditional acroread gnumeric abiword  vim-full vim-gui-common vim-runtime vim-python kchmviewer openoffice.org-gtk tomboy bluefish gimp wine cairo-clock conky amule filezilla firefox axel firestarter libxml2-dev libxml-perl libdbus-glib-1-dev tk8.4-dev tcl8.4-dev mutt sendmail fetchmail msmtp mplayer amarok k3b mozilla-mplayer vlc vlc-plugin-esd mozilla-plugin-vlc mpd mpc libglade2-dev libcurl3-dev audacious-plugins-dev gtk-doc-tools liblame-dev libmad0-dev apache2 libapache2-mod-security libapache2-mod-php5 php5 mysql-server php5-mysql php5-gd foobillard supertux lbreakout2 trigger pingus gnugo quarry libgpgme11-dev libqt3-mt-dev libqt3-headers

这就把上面提到的大部分要装的东西装上了,另外安装KDE的一些程序的时候会强迫安装KDE桌面,所以这里将KDE程序单独提出来安装:

sudo apt-get source kfind klipper ksnapshot amarok

下载这些程序的源码而不是二进制安装包,然后

sudo apt-get install kdebase-dev

将连带着要下载安装的东西记下来,在编译安装上面的程序之后再卸载掉它们。

Popularity: 49% [?]

一个小技巧,可以免费地打开Yahoo邮箱的POP3服务

一个小技巧,可以免费地打开Yahoo邮箱的POP3服务。

  具体操作步骤如下:

  1. 首先在IE地址栏中输入 http://cn.mail.yahoo.com/ 登录到自己的Yahoo网上邮箱

  2. 然后将下列地址拷贝到IE地址栏中打开 http://rd.yahoo.com/mail_us/options/?http://edit.my.yahoo.com/config/set_popfwd?src=ym&.done=http://us.f93.mail.yahoo.co m/ym/Options?YY=22797

  3. 在弹出的如图2所示页面中确认选择好图中箭头所标识的那项功能(大致意思就是说我想申请Yahoo的网上直投服务以获得免费的POP收信服务),然后再点 击页面下方的"完成"按钮
    4. 在随即弹出的下一个页面中再次点击"提交"按钮即可成功激活您的Yahoo邮箱POP3服务,此时一份POP配置指导页面也会马上出现在您的面前。

2008年2月15日星期五

Google文件服务的E-Mail上传

有过多个Google帐号,当然就有多个Google文件帐号,发现在用E-Mail方式上传的时候,有时成功,有时不行。刚刚做了个测试,总结如下:

1、用E-Mail上传的时候,如果在收件人和抄送人中还有其它的Mail地址,则会自动与那个E-Mail地址共享。如果其中有E-Mail帐号是Google文件帐号的话,在那个帐号中也可以看到它。
2、如果在收件人和抄送人地址中有多个Google文件的上传Mail地址的话(即想同时上传到多个Google文件),则会失败(估计是不知道哪个做为作者,哪个是共享)。

例:
若有3个Mail地址A、B和C,其中A1和B1是对应的Google文件的上传用E-Mail地址,而C不对应Google文件帐号,则
1、发邮件到A1和B及C的话(收件人或抄送人中,暗送中的不算),在A的Google文件中,可以看到文件,同时与B和C共享,即B中可以看到文件,作者为A
2、同时发送到A1和B1的话,则会失败

附:原始数据

1、测试从GMail邮件只发送到本GoogleDoc帐号
        --收到--作者是本人-
1、测试从GMail邮件只发送到本GoogleDoc帐号、暗送Mail
        --收到--作者是本人-无共享
1、测试从GMail邮件只发送到本GoogleDoc帐号、暗送其它GoogleDoc
        --收到--作者是本人-无共享
2、测试从GMail邮件只发送到其它GoogleDoc帐号
        --收到--作者是本人---
3、测试从GMail邮件只发送到其它、抄送本GoogleDoc帐号和其它Mail
       --收到--作者是本人--与其它帐号共享-
3、测试从GMail邮件只发送到本GoogleDoc帐号各Mail、抄送Mail
      --收到--作者是本人--与其它帐号共享-
3、测试从GMail邮件只发送到其它和本GoogleDoc帐号
       -------
3、测试从GMail邮件只发送到其它多个GoogleDoc帐号
       -------
4、测试从GMail邮件只发送到本GoogleDoc帐号和抄送到其它GoogleDoc帐号
       -------
4、测试从GMail邮件只发送到本GoogleDoc帐号和抄送到其它多个GoogleDoc帐号
       -------
5、测试从GMail邮件只发送到本GoogleDoc帐号和其它非GoogleDoc帐号
       --收到--作者是本人--与其它Mail帐号共享-
6、测试从GMail邮件只发送到其它非GoogleDoc帐号和抄送本GoogleDoc帐号
       --收到--作者是本人--与其它Mail帐号共享-
7、测试从GMail邮件只发送到其它非GoogleDoc帐号和抄送其它GoogleDoc帐号
       --收到--作者是本人--与其它Mail帐号共享-
7、测试从GMail邮件只发送到其它非GoogleDoc帐号和抄送其它多个GoogleDoc帐号
       -------
8、测试从GMail邮件只发送到其它非GoogleDoc帐号、抄送其它GoogleDoc帐号、暗送本GoogleDoc帐号
      --抄送的收到,暗送的没有--作者是本人--与其它Mail帐号共享-
9、测试从GMail邮件只发送到其它非GoogleDoc帐号、抄送其它非GoogleDoc帐号、暗送本GoogleDoc帐号
       -------
类似的测试对非GMail邮件也测试
1、测试从邮件只发送到GoogleDoc帐号
3、测试从邮件只发送到多个GoogleDoc帐号
4、测试从邮件只发送到GoogleDoc帐号和抄送到其它Mail
      --收到--作者是本人--与其它Mail帐号共享-
4、测试从邮件只发送到本GoogleDoc帐号和抄送到其它多个GoogleDoc帐号
5、测试从邮件只发送到本GoogleDoc帐号和其它非Google帐号
6、测试从邮件只发送到其它非GoogleDoc帐号和抄送本GoogleDoc帐号
7、测试从邮件只发送到其它非GoogleDoc帐号和抄送其它GoogleDoc帐号
7、测试从邮件只发送到其它非GoogleDoc帐号和抄送其它多个GoogleDoc帐号

--
6G免费网络U盘: http://www.orbitfiles.com/signup/rleon

建站的时候显示你自己的图标

就像在看Google的时候,可以看到的图标,而baidu则是个脚印,Yahoo是个红色的Y。
你只做个ico图标,命名为favicon.ico,把它传到你的页面下面。 并在相应的页面里加上代码 。
在页面<heah></heah>之间加,
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
OK了。

在线生成favicon.ico
地址:http://www.chami.com/html-kit/services/favicon/

--
6G免费网络U盘: http://www.orbitfiles.com/signup/rleon