2008-03
06

最近发现gentoo下pidgin经常会不能输入,表现在输入法切换不出来,甚至无法输入英文字母。没办法只能重启pidgin。不过今天突然发现了问题的所在。那就是,从聊天窗口用Alt-Tab键切换到好友列表窗口,再用Alt-Tab切换回来,这时一切键盘输入就都不管用了。解决方法也很简单:再用Alt-Tab切换一次,就行了。另外为避免出现这种情况,建议没事儿时把好友列表窗口关掉。


2008-03
05

前几天的这篇文章fcicq同学挑毛病,建议不要使用内核自带的ntfs, 而是使用ntfs-3g+fuse。查了一下,ntfs-3g可以完美支持ntfs分区的读写操作, 的确要比内核自带的ntfs好得多。

试试看。安装方法不难,直接emerge即可,它会自动安装 sys-fs/fuse:

# emerge ntfs-3g

我用的是gentoo 2007.0,内核版本2.6.23-gentoo-r8,还需要编译内核的FUSE支持:

# cd /usr/src/linux
# make menuconfig
勾选 File systems --->  <M> Filesystem in Userspace support
# make modules_install
# modprobe fuse

之后当然可以再打开 /etc/modules.autoload.d/kernel-2.6,把fuse加进去。

然后就可以mount ntfs分区了:

# mount -t ntfs-3g -o locale=zh_CN.UTF-8,silent /dev/sda6 /mnt/wine

进入分区后试试读写,均没有问题。

后来看了看ntfs-3g的官方主页的FAQ, 发现竟然允许大小写不同的同名文件,还有特殊字符(如\、?等Windows中不允许的字符)。 作者的理由是NTFS支持POSIX风格的文件名,也支持DOS、Windows格式的文件名, 为保持最大的兼容性,ntfs-3g就选择了POSIX——所以就出现上面这种现象了。 尝试者建立 ABC、abc、ab?c、abc\d等文件,均建立成功,重新启动到windows下试图打开这几个文件, 结果出现了问题:ABC正常打开,但一旦保存,ABC就会丢失,只剩下abc(因为同名),估计有可能需要chkdsk了; ab?c、abc\d文件无法保存、改名和删除。只能回到linux下面操作。

看来作者又是一个十足的协议派……为保险起见,还是先ro吧。

最后的/etc/fstab为:

/dev/sda6       /mnt/wine    ntfs-3g    auto,ro,locale=zh_CN.UTF-8,silent    0  0


2008-03
04

今天在配置nvidia的显卡时出现了一个很头疼的问题。

按照官方网站上的文章, 一步步地顺利地安装好了显卡驱动:

# 先配置内核,详情参考官方文档,省略
# USE=gtk emerge nvidia-drivers
# modprobe nvidia
# update-modules
# eselect opengl set nvidia
# 然后修改xorg.conf,略
# startx

结果startx时出现了这样的错误:

Backtrace:
0: X(xf86SigHandler+0x84) [0x80cca34]
1: [0xffffe420]
2: X(main+0x2af) [0x807067f]
3: /lib/libc.so.6(__libc_start_main+0xd8) [0xb7db5838]
4: X(FontFileCompleteXLFD+0xa1) [0x806fb81]

Fatal server error:
Caught signal 11.  Server aborting

查了半天资料未得到结果,后来想起我曾经安装过nVidia官方网站提供的驱动, 会不会是和portage的驱动冲突呢?于是卸载掉官方驱动:

# sh NVIDIA-Linux-x86-169.09-pkg1.run --uninstall

然后重新emerge:

# emerge nvidia-drivers

这样就可以顺利地启动X了。



2008-03
03

首先安装前端 scim:

# emerge scim

常见的日文输入法是服务器/客户端模型的,Canna就不错(可内嵌在SCIM中)。安装方法也很简单:

# emerge canna
# /etc/init.d/canna start
# rc-update add canna default

然后安装scim的Canna支持:

# emerge scim-canna

最后启动scim,从输入法语言中选择日语即可。

注意:当初我认为要装FreeWnn,装上后发现关机时老是死掉,查了半天发现原来是 /etc/init.d/freewnn stop时死掉了。 后来发现不要freewnn也能正常输入日文。



2008-03
02

最近重新安装了一遍gentoo,发现第一次安装时好多调查过的经验都没有记录下来,这次还得重新去找,麻烦…… 记下来供下次安装时使用吧。

按照手册上安装时,按照以下方法设置网卡(/etc/conf.d/net):

config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" )
routes_eth0=( "default via 192.168.0.1" )
dns_servers_eth0=( "DNS1的IP地址" "DNS2的IP地址" )

chroot之后首先上ccache以提高编译速度:

# emerge ccache

然后编辑 /etc/make.conf 加上:

FEATURES="ccache parallel-fetch"
CCACHE_SIZE="2G"

接下来安装必要的软件:

# emerge vim

升级portage:

# emerge portage

编译内核时别忘了打开framebuffer(高分辨率命令行用),还有Device Drivers->Sound->Advanced Linux Sound Architecture(声音驱动,参考 这里)。 当然也别忘了在 PCI Devices中选择你声卡的型号。

如果你使用SATA硬盘,注意设置grub.conf时别弄错了硬盘编号

如何mount Windows XP的硬盘分区:首先保证内核中编译了ntfs支持,然后参考下面的结果来写mount参数:

/dev/sda6 on /mnt/wine type ntfs (ro,noexec,nosuid,nodev,nls=utf8,umask=0)
/dev/sda5 on /mnt/wind type vfat (ro,noexec,nosuid,nodev,codepage=936,iocharset=utf8,umask=0)

重新起动后安装xorg,修改make.conf:

USE="alsa bash-completion bzip2 gtk jpeg opengl ruby xscreensaver X -gnome -ipv6 -kde -qt3 -qt4"
INPUT_DEVICES="keyboard mouse"
VIDEO_CARDS="nvidia"

然后运行:

# emerge xorg-x11

装好后运行 xorgconfig 配置图形界面:

# xorgconfig

接下来是xfce4。修改/etc/make.conf:

LINGUAS="zh_CN ja"        # for xfdesktop

然后:

# emerge xfce4

还有中文输入法:

# emerge scim scim-pinyin

安装好后退回普通用户,编辑.xinitrc设置启动xfce4:

exec scim &
exec startxfce4

最后别忘了将语言设置为中文:

$ vi .bashrc
export LANG=zh_CN.UTF-8

启动之后应该能看到小老鼠的桌面,按Ctrl+Space应该能出输入法了。

装firefox:

# emerge mozilla-firefox
# emerge netscape-flash

装完后自己上网找插件去。

另外,Firefox默认安装之后,在快速滚动滚轮时页面会沿着历史记录前进/后退,十分不爽。 在about:config将mousewheel.horizscroll.withnokey.action改成0即可解决该问题。

即时通讯,使用pidgin,基于gtk,支持GTalk和MSN:

# emerge pidgin

默认的字体比较难看,从微软那里借用一些过来吧。

# emerge mkfontdir mkfontscale
# mkdir /mnt/winc
# mount -t vfat /dev/sda1 /mnt/winc
# cd /mnt/winc/windows/Fonts
# mkdir /usr/share/fonts/TTF
# cp sim* msgothic.ttc msmincho.ttc msyh* meiryo* verdana* tahoma* /usr/share/fonts/TTF
# cd /usr/share/fonts/TTF
# mkfontdir
# mkfontscale

然后重启xfce4后即可设置字体。

另外,在编译xfwm4时加上USE=xcomposite,即可打开窗口混色开关,这样就可以在窗口管理器中设置窗口的透明度了。 另外 http://www.xfce-look.org/ 这个网站不错,可以下载到许多xfce4用的主题。

时钟有可能会不正确,可以修改 /etc/conf.d/clock,将 CLOCK="UTC" 改成 CLOCK="local"。

板载AC97声卡的配置,参考官方文档即可。

安装mplayer:

USE="aac cddb dvd encode gif mmxext mp2 mp3 png \
    quicktime rar real samba srt vorbis \
    win32codecs x264 xv xvid" emerge  mplayer
   

安装Open Office:

# LINGUAS="zh_CN" emerge openoffice-bin


2008-01
15

exaile是一个基于GTK+的媒体播放器, 类似于KDE下的Amarok。在gentoo下可以很方便地安装:

# emerge exaile

但试图播放mp3时,会报告这样的错误:

You do not have the appropriate Gstreamer plugin installed to play this file:

google之后才知道,播放mp3需要安装gstreamer的插件 gst-plugins-mad。 你可以用下面的命令查看已经装了哪些插件:

# emerge -s gst-plugins

安装完 exaile 之后,gst-plugins-base、gst-plugins-bad、gst-plugins-good三项 应该是已安装好的。执行下面的命令:

# emerge gst-plugins-mad

装好后重新启动exaile,这样就可以播放mp3了。



2008-01
14

gentoo xeffects项目主要是研究如何在gentoo下使用compiz和compiz fusion,xgl的ebuild文件就来自xeffects layout。 但是最近(2008/1/6前后),xeffects项目的开发者声明他们决定中止该项目的开发。(文章末尾引用了他们的官方声明。)

官方网站gentoo-xeffects.org的域名也已经停止使用,在gentoo下通过 layman -a xeffects 会说找不到域名。 不过好在xeffects作者公开了他们的开发成果,你可以通过git下载。

# emerge dev-util/git
$ git clone git://git.overlays.gentoo.org/dev/jmbsvicetto.git

最后附上开发者的官方声明。

lex (nesl247) and I decided we no longer were interested in keep running the gentoo-xeffects server and agreed to not renew its subscription after the end of December. Thus, the gentoo-xeffects overlay is no longer available. I've put all the ebuilds in the xeffects overlay under my git dev overlay on http://git.overlays.gentoo.org/gitweb/ where I plan to keep them for at least the next 15 days. If you want to get any of the ebuilds, you can use the gitweb interface to get it or you can clone the overlay with git clone git://git.overlays.gentoo.org/dev/jmbsvicetto.git. I have a local copy of all files that were available under http://distfiles.gentoo-xeffects.org so if someone is interested, drop me a note here, on IRC or through any of my contacts.

So, what's next? I didn't wanted to keep the server running because I wasn't available to keep the financial commitment, but I'm still interested in compiz, compiz-fusion and related packages. As such, I'm starting a new overlay with Ingmar Vanhassel (ingmar/ingmarv) and Wulf C. Krueger (philantrop) that will be named desktop-effects and will also be available from http://git.overlays.gentoo.org/. As indicated by its new name, this overlay will have a different scope and will start with a subset of the xeffects ebuilds. Expect more details to follow in the US forum and or in the #gentoo-xeffects irc channel.

I want to thank everyone that worked on the coffee_buzz / gentoo-xeffects overlay for their hard work. In particular, I want to thank coffee_buzz, nesl247 and roderick. Without you and your work, the rest of us wouldn't had / be having so much fun with compiz / compiz-quinnstorm / beryl / compcomm / compiz-fusion and friends.



2008-01
13

昨天在fcicq的推荐下安装了gentoo。安装过程没什么好说的,按照gentoo手册一步步来, 都挺顺利,但在最后安装grub时出了点问题。

我的机器有两块硬盘,一块是SATA的(/dev/sda), 一块是IDE的(/dev/hdb),gentoo的/boot装在了 /dev/sda8,/装在了/dev/sda10上。 grub使用hd0、hd1等方式来指定硬盘,但同时有SATA和IDE的情况下就很难分辨谁是hd0谁是hd1了。 所以我先启动grub然后通过它的命令行补齐功能,查明hdb -> hd0, sda -> hd1, 于是就按照这个设置写好了grub.conf,并加上了splashimage。

但是重新起动后grub说找不到分区,并且屏幕变花,几乎什么都看不见。 在菜单里按e然后c进入命令行,想通过命令行补齐来启动系统,但由于看不见显示而失败了。

没办法再次使用gentoo安装盘启动系统。猜测可能是由于splashimage找不到导致花屏, 于是编辑grub.conf去掉了splash,重启,这次能看到错误信息了。进入grub的命令行尝试补齐, 发现sda居然是hd0

这下情况明朗了,通过命令行指定好正确的root和kernel,启动系统后修改grub.conf,重启,成功。

为什么安装时和启动时的硬盘编号不一致?后来看到手册上说,硬盘编号一般是先IDE再SCSI(SATA), 但当BIOS设置从SCSI启动时,SCSI设备会变成hd0。原来如此,安装时由于是从光盘启动, 所以IDE优先于SATA成了hd0;但重启系统后由于从SATA启动,所以SATA就变成了hd0。

最后建议在配置grub.conf时,不要一开始就加上splashimage,应当等全部调试通过之后再添加,避免出现花屏问题影响调试。



2008-01
11

最近看了一些Linux命令行的文章,在系统信息查看方面学到不少命令。 想起以前写过的一篇其实Linux这样用更简单, 发现这些系统信息查看命令也可以总结出一篇小小的东西来了。

另外这里还有非常多的命令, 可以作为参考。

系统

# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量

资源

# free -m                # 查看内存使用量和交换区使用量
# df -h                  # 查看各分区使用情况
# du -sh <目录名>        # 查看指定目录的大小
# grep MemTotal /proc/meminfo   # 查看内存总量
# grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间、用户数、负载
# cat /proc/loadavg      # 查看系统负载

磁盘和分区

# mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况

网络

# ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息

进程

# ps -ef                 # 查看所有进程
# top                    # 实时显示进程状态

用户

# w                      # 查看活动用户
# id <用户名>            # 查看指定用户信息
# last                   # 查看用户登录日志
# cut -d: -f1 /etc/passwd   # 查看系统所有用户
# cut -d: -f1 /etc/group    # 查看系统所有组
# crontab -l             # 查看当前用户的计划任务

服务

# chkconfig --list       # 列出所有系统服务
# chkconfig --list | grep on    # 列出所有启动的系统服务

程序

# rpm -qa                # 查看所有安装的软件包


2008-01
09

感谢fcicq,他的new 30 days系列为我们带来了不少好文章。

今天想分析的是这篇Bash Pitfalls, 介绍了一些bash编程中的经典错误。fcicq说可能不适合初学者,而我认为, 正是bash编程的初学者才应该好好阅读一下这篇文章。

下面就逐个分析一下这篇文章中提到的错误。不是完全的翻译,有些没用的话就略过了, 有些地方则加了些注释。

阅读全文 »