ghosTzone
main(_){return _} && echo $? /* Keep It Simple Stupid | 本博客所有文章皆为原创 转载请注明 - ghosTM55 */

2008-2010 Linux's Golden Age 4

2008年12月05日 01:27 in Linux tags:

  在Linux即将成年之际,迎来了最为关键的发展阶段,在桌面应用领域的日趋成熟与强大是其核心动力。越来越多的普通用户开始听说并尝试着安装使用 Linux操作系统。作为新人流动量较大的百度Linux吧的吧主,笔者深刻感受到了在中国要成为一名优秀的技术与开源思想“传教士”的责任之重大与必要性。对于如何正确、有效的指引群众用户学习使用Linux,跨进开源的大门,笔者有一些自己的见解愿与大家分享。

  1. 个人修养与态度

  很难想象一个自以为是,视新手问题如粪土的人能够为挖掘更多潜在的Linux用户作出贡献。笔者看到过许多使用上Linux或者其它“稀奇” 的操作系统后喜欢在Windows用户面前显摆的人,这样做会直接使得普通用户反感Linux以及开源社区。抱着一个平和的心态去学习使用Linux以及各类技术,才能在技术道路的修炼上有所建树,炫耀提供不了攀上技术顶峰的动力。

  由于国内教育体制的问题,大部分人失去了主动学习、提问、解决问题的潜意识与能力。遇到任何芝麻大小的问题,不经大脑思考直接提问的情况常有发生,这时,许多“前辈”都会对这样的问题嗤之以鼻,不牺牲时间予以任何回答。个人的观点是,遇到这样的新手,若有时间应该尽可能地帮助他们学会自己解决问题,也就是接下来要说的如何帮助新人解决问题。

  2. 如何帮助新手解决问题

  “授之予鱼不如授之予渔”,我们的先人很早就知道了这样育人的道理,相比现在许多老师为学生提供“答案在书上的第几页第几段第几句”这样的“ 便利”相比,不知道我们国人的教育是先进了还是落后了。在帮助新人解决问题的时候,笔者见过太多差到极致的方法,其中的大部分都是主观性极强的回答:

  问1:什么发行版本最好?
  答1:ubuntu!最适合新手!
  答2:Fedora,我的最爱!
  答3:gentoo,能让你真正的学到东西!

  问2:Linux下能运行Windows下的程序吗?
  答1:白日做梦!
  答2:滚回Windows下去吧!
  答3:微软这个XX,死也不会支持Linux的!

  相信读者也能辨认出这样的回答的问题所在了,对了,那就是说了等于没说。回答问题与发表个人观点是两码事,本着客观的视角以及严谨的学术态度去回答每一个问题不但可以得到他人的尊重,也能为自己带来思想交流上的火花以及愉悦的心情。

  《提问的智慧》是一篇极好的文档来供新人阅读,在提供新手的“愚蠢”的问题的解决方案之前,建议他们学会提问前事先自己看下文档,看下Eric S. Raymond的这篇经典著作以及如何使用Google是必要的。

  3. 个人对社区的贡献

  光说不做还不够,作为拥有世界第一人口的中国,在开源社区的贡献太少了,浮躁的学习心态以及“自己还没填铇肚子”的想法是罪魁祸首。笔者认为,能够潜心钻研技术,避免任何无聊的口水战是每一位有修养的Hacker必备的态度。对社区的实质性贡献主要能够分为文档的翻译与纂写、自由软件的开发、参与现有操作系统的开发。其中,文档方面的工作就目前而言最为重要,国内缺少稳定的高质量的文档翻译与纂写组织。没有优秀的文档,新手在入门时就会感觉黑灯瞎火,找不到方向。

  4. 如何宣传?

  最后一点也是最重要的一点,就是如果我们要向他人宣传开源的操作系统以及思想,该怎么做才有效?其实,国内并不缺少技术方面优秀的入门文档,问题的关键是在于这些入门文档无法被需要看的新手看到。这一直以来都是一个问题,在20世纪末Linux就已经在国内的技术圈子内流传了开来,过了十年,Linux的安装问题、系统并存问题、软件应用问题依旧是新手讨论的热点。这还是要回到之前所说的三点:面对问题的态度、解决问题的方式与个人贡献。

  最后需要指出的是,虽然Linux如今很火,但我们所关注并不应该只是Linux,而是整个开源界的发展。中国需要投入到开源的怀抱,积极的接受新的优秀的事物。开源对中国的信息化产业及产业链发展将起着健康积极的作用。这三年的黄金发展阶段并不只是属于Linux,更属于整个开源界。

后记:本文主要针对热心的geek与hacker所著,很少写这样“传教”性质的文章,希望本文没有让你们打哈欠 ;-P

ghosTM55:~> date
Mon Dec 1 16:50:23 CST 2008


安装PostgreSQL的专用RPM镜像 0

2008年11月28日 18:42 in Linux tags:

  笔者近期由于公司项目需要安装了两台虚拟机(CentOS 4.4)来进行PostgreSQL的数据库同步实验(slony-1),CentOS 4.4源内的PostgreSQL版本还停留在7,而笔者需要最新的版本8.3。于是找到了一个非常好的PostgreSQL RPM镜像。

  在这里你可以找到适合centos/fedora/redhat的镜像安装文件,只要简单的下载指定的镜像RPM,安装完成后,在/etc/yum.repos.d/目录下可以看到新增加的pgdg.*.repo文件。

  这时,用户还需要在Distro-Base.repo(笔者是CentOS-Base)文件中插入一行:

exclude=postgresql*

  现在,用户可以通过yum update来查看该镜像是否生效:

[root@ghosTunix yum.repos.d]# yum update
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * pgdg83: yum.pgsqlrpms.org
 * base: 192.168.5.4
 * updates: 192.168.5.4

  大功告成。

ghosTM55:~> date
Fri Nov 28 10:43:46 CST 2008


使用yum只获取rpm包不自动安装 2

2008年11月25日 20:35 in Linux tags:

  yum是一个优秀的软件获取与系统更新的工具,主要应用于redhat系列的发行版本上。但是这样一个优秀的工具却没有原生提供只下载不安装的功能,而这样的功能在pacman与aptitude下都有。今天在CentOS的邮件列表上看到有人在讨论这个问题,了解到了这个问题要解决起来非常方便。

  yum有一个plugin叫做yum-downloadonly,它就可以为用户实现只下载软件包的功能:

# yum install yum-downloadonly

  完成安装后,yum就多了两个命令参数,分别是:

  • --downloadonly
  • --downloaddir=/path/to/dir

  这两个命令参数的含义非常明确,不用多作解释了,这样,用户就可以做到使用yum只下载软件包,不自动安装了。

txi@ghosTunix.org:~> date
Tue Nov 25 12:37:31 CST 2008


多Linux系统引导问题 0

2008年11月22日 01:41 in Linux tags:

  在一台计算机上,可以通过GRUB这个强大的引导程序来引导大部分操作系统,一般来说,都是一个Linux和一个Windows的双系统,而安装了两个或者是多个Linux系统的时候,会存在一个隐蔽的问题。

  前一阵安装了Archlinux,非常优秀的一个Linux发行版本,在配置GRUB的时候,我想到了一个问题,就是,我之前安装了ubuntu,当我ubuntu进行了内核的升级后,那么这里的静态的GRUB条目还是会引导老的内核,甚至无法引导。于是我找到一个能够动态的解决这个问题的方法。

# (0) Arch Linux
title Arch Linux
root   (hd0,3)
kernel /boot/vmlinuz26 root=/dev/sda4 ro
initrd /boot/kernel26.img

# (1) Arch Linux
title Arch Linux Fallback
root   (hd0,3)
kernel /boot/vmlinuz26 root=/dev/sda4 ro
initrd /boot/kernel26-fallback.img

#ubuntu
title ubuntu
configfile (hd0,0)/boot/grub/menu.lst

  这是我GRUB配置文件的片断代码,在ubuntu这里,使用了configfile功能来指向ubuntu自身的GRUB配置文件,这样,就可以通过ubuntu自身的GRUB再去引导GRUB。这样一来,就是动态的了。

  问题解决。

ghostm55@ghosTunix.org:~$ date
Sat Mar 29 09:11:19 CST 2008


建立whatis的database 0

2008年11月22日 01:39 in Linux tags:

  今天在archlinux下试用了apropos,可是死活没有效果,我一开始以为是软件包没有装全,后来一想apropos是根据数据库搜索的,可能是数据库没有建立。于是就man了一下,再找到了whatis,在whatis的man中,提到了如果要使用whatis与apropos,应该事先建立数据库:

  • /usr/sbin/makewhatis

  问题解决。

ghostm55@ghosTunix:~$ date
2008年 04月 18日 星期五 19:13:55 CST


在Linux下查看系统位数 0

2008年11月22日 01:37 in Linux tags:
  • txi@ghosTunix:~$ getconf LONG_BIT 32

问题更新:
这里查看的是操作系统位数,而非计算机本身的位数
我在邮件列表里和别人讨论了一会儿后,发现好像没有什么现成的方法能够查看机器的位数,于是经过王聪大哥的指导写了个并不全面的脚本:

#!/bin/bash
if [ `uname -m | sed -e 's/i.86/32/'` -eq 32 ]
then
        echo 32
else
        echo 64
fi
exit 0

txi@ghosTunix:~$ date
2008年 05月 09日 星期五 17:19:16 CST


在Linux下查看CPU的信息 0

2008年11月22日 01:30 in Linux tags:

  今天发现笔记本电脑特别烫,不知道为什么。然后想查看一下CPU温度,以前是从来不关心这个,问了许多朋友,竟然都不知道。而且也没有GOOGLE到有效的方法。先说说如何查看CPU的详细信息。

txi@ghosTunix:~$ cat /proc/cpuinfo
processor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 15
model name    : Intel(R) Core(TM)2 Duo CPU     T7250 @ 2.00GHz
stepping    : 13
cpu MHz        : 800.000
cache size    : 2048 KB
physical id    : 0
siblings    : 2
core id        : 0
cpu cores    : 2
fdiv_bug    : no
hlt_bug        : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 10
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr 
sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm ida
bogomips    : 3994.00
clflush size    : 64

processor    : 1
vendor_id    : GenuineIntel
cpu family    : 6
model        : 15
model name    : Intel(R) Core(TM)2 Duo CPU     T7250 @ 2.00GHz
stepping    : 13
cpu MHz        : 800.000
cache size    : 2048 KB
physical id    : 0
siblings    : 2
core id        : 1
cpu cores    : 2
fdiv_bug    : no
hlt_bug        : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 10
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx
 fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr 
 lahf_lm ida
bogomips    : 3990.07
clflush size    : 64

  可以看到,/proc/cpuinfo文件记录了CPU的详细信息,但是,却没有我要的温度信息。Vincent告诉了我查看CPU温度的方法:

  • txi@ghosTunix:~$ cat /proc/acpi/thermal_zone/TZS0/temperature
    temperature: 34 C
  • txi@ghosTunix:~$ cat /proc/acpi/thermal_zone/TZS1/temperature
    temperature: 37 C

  在查询CPU信息的同时,我了解到了一个非常优秀的查看BIOS信息的工具dmidecode:

root@ghosTunix:/home/txi# dmidecode
# dmidecode 2.9
SMBIOS 2.4 present.
35 structures occupying 1281 bytes.
Table at 0x7F6DF000.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
    Vendor: Phoenix
    Version: F.24
    Release Date: 12/21/2007
    Address: 0xE6600
    Runtime Size: 104960 bytes
    ROM Size: 1024 kB
    Characteristics:
        ISA is supported
        PCI is supported
        PC Card (PCMCIA) is supported
        PNP is supported
        BIOS is upgradeable
        BIOS shadowing is allowed
        ESCD support is available
        Boot from CD is supported
        ACPI is supported
        USB legacy is supported
        AGP is supported
        BIOS boot specification is supported
        Targeted content distribution is supported
    BIOS Revision: 15.36
    Firmware Revision: 128.72

Handle 0x0001, DMI type 1, 27 bytes
System Information
    Manufacturer: Hewlett-Packard
    Product Name: Presario V3700 Notebook PC
    Version: F.24   
    Serial Number: 2CE8014G0S
    UUID: CC1768C0-C27A-11DC-81E8-98E7FA4BA256
    Wake-up Type: Power Switch
    SKU Number: KG568PA#AB2
    Family: 103C_5335KV

Handle 0x0002, DMI type 2, 8 bytes
Base Board Information
    Manufacturer: Wistron
    Product Name: 30CD
    Version: 80.48
    Serial Number:          

Handle 0x0003, DMI type 3, 17 bytes
Chassis Information
    Manufacturer: Hewlett-Packard
    Type: Notebook
    Lock: Not Present
    Version: N/A
    Serial Number:          
    Asset Tag:                    
    Boot-up State: Safe
    Power Supply State: Safe
    Thermal State: Safe
    Security Status: None
    OEM Information: 0x00000105

Handle 0x0004, DMI type 4, 35 bytes
Processor Information
    Socket Designation: U2E1
    Type: Central Processor
    Family: Other
    Manufacturer: Intel
    ID: FD 06 00 00 FF FB EB BF
    Version: Intel(R) Core(TM)2 Duo CPU     T7250
    Voltage: 3.3 V
    External Clock: 667 MHz
    Max Speed: 2000 MHz
    Current Speed: 2000 MHz
    Status: Populated, Enabled
    Upgrade: ZIF Socket
    L1 Cache Handle: 0x0005
    L2 Cache Handle: 0x0006
    L3 Cache Handle: Not Provided
    Serial Number: Not Specified
    Asset Tag: Not Specified
    Part Number: Not Specified
...
...
...

Handle 0x001C, DMI type 30, 6 bytes
Out-of-band Remote Access
    Manufacturer Name: Intel
    Inbound Connection: Enabled
    Outbound Connection: Disabled

Handle 0x001D, DMI type 32, 20 bytes
System Boot Information
    Status:   Handle 0x001E, DMI type 129, 10 bytes OEM-specific Type          Header and Data:         81 0A 1E 00 01 01 02 01 01 02          Strings:         Intel_ASF         Intel_ASF_001  Handle 0x001F, DMI type 136, 6 bytes OEM-specific Type          Header and Data:         88 06 1F 00 5A 5A  Handle 0x0020, DMI type 150, 14 bytes OEM-specific Type          Header and Data:         96 0E 20 00 01 01 00 00 00 00 00 00 00 00          Strings:         ABSOLUTE(PHOENIX) CLM  Handle 0x0021, DMI type 200, 7 bytes OEM-specific Type          Header and Data:         C8 07 21 00 01 02 03          Strings:         17C0                              0001  Handle 0x0022, DMI type 127, 4 bytes End Of Table 

txi@ghosTunix:~$ date
2008年 05月 23日 星期五 22:53:47 CST


禁用Konqueror中的"Ctrl"快捷键 0

2008年11月22日 01:24 in Linux tags:

  Konqueror中按下Ctrl键后就会出现网页页面中所有链接的快捷字母键,对于懒得用鼠标的人或者是Geek来说这的确是个非常棒的特性,但是每次切换中文输入法时都要看到这些东西一闪而过让我很不爽,于是摸索GOOGLE了一阵后,找到了解决方法:

  • txi@ghosTunix:~$ cat >> `find .kde/ -name konquerorrc` << EOF > [Access Keys] > Enabled=false > EOF

  前面差点少打了一个大于号...惊险...囧

txi@ghosTunix:~$ date
2008年 06月 01日 星期日 09:08:15 CST


添加/取消文件系统开机自检 0

2008年11月22日 01:20 in Linux tags:

  我并不需要文件系统自检这一功能,而ArchLinux默认开启了,要取消自动检测,只需修改/etc/fstab文件即可。

txi@ghosTunix.org:~> date
2008年 07月 03日 星期四 23:56:36 CST


ArchLinux早期配置中的一个错误 0

2008年11月22日 01:05 in Linux tags:

  根据ArchLinux官方的The Beginners Guide里介绍的方法,需要将gdm列入rc.conf的DAEMON里,而我设置了/etc/inittab里的启动级别为5,所以该文件会再尝试着去spawn一个x,由于一直在使用X,所以没有发现vc下会报INIT的错误。

  今天偶尔发现后立即进行了解决,将rc.conf中DAEMON里的gdm删除,再将inittab文件中的x:5:respawn:/usr/sbin /xdm -nodaemon注释掉,将x:5:respawn:/usr/sbin/gdm -nodaemon反注释,问题解决。

txi@ghosTunix.org:~> date
Sun Aug 10 15:21:07 CST 2008