2005年10月28日
项目介绍
目前主要的FTPserver有三个vsftpd和ProFTPd,wu-ftpd
其中vsftpd 安全性高,性能也比较好一些。 (没有做过详细调整,不正确也有可能,随时更正)
主要使用它的站点:
* ftp.redhat.com
* ftp.suse.com
* ftp.debian.org
* ftp.openbsd.org
* ftp.freebsd.org
* ftp.gnu.org
* ftp.gnome.org
* ftp.kde.org
* ftp.kernel.org
* rpmfind.net
* ftp.linux.org.uk
* ftp.gimp.org
* ftp-stud.fht-esslingen.de
* gd.tuwien.ac.at
* ftp.sunet.se
* ftp.ximian.com
* ftp.engardelinux.org
* ftp.sunsite.org.uk
* ftp.isc.org
有上面这些著名的站点使用它,那么我也可以放心大胆了。
主要配置
基本缟
实现让本地用户可以使用FTP,每个用户只能看到他自己的目录
这个只需要配置vsftpd.conf文件,配置文件的英文说明足够了。
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
vsftpd.chroot_list里写上可以chroot的用户名。
不在LIST的用户被限制在自己的HOME目录中。
高手缟
使用虚拟用户,这些用户在系统上都以一个用户名存在,可以设置不同的HOME DIR,
1)创建guest用户
groupadd virtual
useradd -d /home/ftpsite -m virtual
可以check一下/etc/passwd文件,确保virtual用户的shell是/bin/false,这样做是禁止通过ssh或telnet以及本地login
2)生成虚拟用户
apt-get install libdb3-util
注意这里一定要用db3_load生成hash文件,不是系统默认的db4.2_load
cat login.txt
usera
123
userb
456
db3_load -T -t hash -f login.txt /etc/vsftpd.login.db
chmod 600 /vsftpd.login.db,只能ROOT读取。
zless /usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/README.gz
其中有如下内容:
NOTE: Many systems have multiple versions of "db" installed, so you may
need to use e.g. db3_load for correct operation. This is known to affect
some Debian systems. The core issue is that pam_userdb expects its login
database to be a specific db version (often db3, whereas db4 may be installed
on your system)
3)生成/etc/pam.d/vsftpd.vu文件,内容如下:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd.login
account required /lib/security/pam_userdb.so db=/etc/vsftpd.login
注意后面没有db的后缀。
4)修改vsftpd.conf文件,内容如下:
listen=YES
#listen_port=10021 //你可以在这里指定监听的端口,也可以用默认的
connect_from_port_20=YES
ftpd_banner=Welcome to virtual FTP service.
anonymous_enable=NO //不许匿名登录
local_enable=YES //允许本地用户登录
write_enable=NO
anon_upload_enable=NO //这里先把虚拟用户的权限设置成最低的
anon_mkdir_write_enable=NO //然后针对不同用户设置相应的权限
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES //允许虚拟用户登录
guest_username=virtual
pasv_min_port=30000
pasv_max_port=30999
pam_service_name=vsftpd.vu //这里的pam根据步骤3,设成相应的
user_config_dir=/etc/vsftpd_user_conf //指定用户配置文件的目录
xferlog_enable=YES //设置日志文件
xferlog_file=/var/log/vsftpd.log
5)用户权限配置
注意最好用chmod 600把所有的文件设成只有root读写方式。
anon_world_readable_only=NO //打开浏览权限
write_enable=YES //打开写权限
anon_upload_enable=YES //上传权限
anon_mkdir_write_enable=YES //建立目录权限
anon_other_write_enable=YES //更改和删除权限
local_root=/tmp 用于更改root。
上面的这些可以组合起来使用。
上传、下载、删除需要的设置:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/usr/www/kjcroot/yangliudi
只能上传不能删除的配置为:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO
local_root=/usr/www/kjcroot/yangliudi
只能下载的:
anon_world_readable_only=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_root=/usr/www/kjcroot/yangliudi
6)/etc/init.d/vsftpd start
其他
- 测试工具 lftp,本地的一个ftp客户。
- 看log /var/log/vsftpd.log
link
http://vsftpd.beasts.org/
http://www.linuxsir.org/bbs/showthread.php?t=121405&page=2&pp=15&highlight=vsftpd
http://www.linuxsir.org/bbs/showthread.php?t=198754&highlight=vsftpd
2005年10月3日
openQ (一个给gaim客户端写的QQ的协议支持的模块),原来需要使用特定的gaim的版本,且那个时候大都是版本很低的gaim。
现在这种情况已经成为历史了。刚刚在debian下试一一下openq_0.3.1-2_i386.deb,可以正常的和好友聊天。
现在的我的gaim已经,MSN+Google Talk + Yahoo MSG+ QQ + IRC同时启动了。
不过最大的问题是,除了MSN和IRC以外,基本上都不怎么用了。那个QQ,已经2年多没有登录了。
Gaim太方便了,即使你不用Linux,也可以试试wine32的gaim。
cheer
背景:
昨天在gnome的一个panel上加了几个disk Mounter的按钮,每个都有一个设置的界面,需要设mount的位置,
当Mouse点击时,disk mounter会调用mount程序,具体mount什么设置由/etc/fstab来决定,
/dev/hde1 /media/ms0 vfat user,sync,noauto,uni_xlate 0 0
/dev/hdg1 /media/cf0 vfat user,sync,noauto,uni_xlate 0 0
当MS插入系统时,系统发现他是一个BLOCK设备,于是就在/hde开始找第一个安全空闲的盘符,
同样CF插入的情况也类似,
这里有一个问题,当CF先插入时,系统会把/dev/hde1分配给它。此时对应的关系就发生了混乱。
为了解决这个问题可以使用linux2.6kernel的UDEV规则。
udev规则简介
关于这个规则,有一篇很经典的英文说明 http://www.reactivated.net/writing_udev_rules.html
udev是一种Linux2.6内核采用的/dev 目录的管理系统,它通过从sysfs获得的信息,可以提供对特定设备的固定的设备名。
sysfs是linux 2.6内核的一种新型文件系统,它提供了当前设备的基本信息。
udev的一个重要目的就是提供固定的设备名,像我们刚才碰到的情况,如果ms插入系统,系统能使用固定的设备名
(例如/dev/ms)
CF卡插入系统,使用/dev/cf,就可以很方便的解决我们需要到的困难。
/etc/udev/rules.d/
下面的文件根据字母的顺序来解析,一般udev当找到满足它条件的说明项后就会终于解析过程,
因为为了使用我们的配置优先于系统的默认值,选择文件名时一
定要注意,例如,我们选择 /etc/udev/rule.d/10-local.rules
BUS="usb", SYSFS{serial}="HXOLL0012202323480", NAME="lp_epson", SYMLINK="printers/epson_stylus"
上面是一个USB打印机的印子。当一台USB打印机序列号是HXOLL0012202323480,就会创建一个device名 /dev/lpepson,
同时创建一个symbol link
/dev/printers/epson_styles
注意:在任何规则修改后,为了让它生效:需要执行udevstart
规则书写格式
最方便的查找方法是 man udev 或在线文档 http://www.die.net/doc/linux/man/man8/udev.8.html
常用的有
* BUS - 匹配总路类型,比如PCI USB等
* KERNEL - 匹配Kernel设备名,比如hda hdb.
* DRIVER - 匹配Kernel的驱动程序名
* SUBSYSTEM - 匹配子系统名.
* ID - 匹配总路系统的ID (e.g. PCI bus ID).
* PLACE - 匹配物理位置 (对USB很有用).
* SYSFS{filename} - 匹配从sysfs得到的信息,比如label, vendor, USB serial number,
SCSI UUID or file system label.
* PROGRAM - 调用外部程序.
* RESULT - 匹配最后一次调用外部程序所得到的返回字符串
* NAME - 需要创建的设备或
* SYMLINK -需要创建的符号链接名
* OWNER, GROUP, MODE 设置设备的所有者,组,及模式
匹配符号:
%n 内核设备号 例如 sda3 的3
%k 内核设备名
%M 设备的major号
%m 设备的minor号
%b bus id
%c
%s{filename} sysfs属性的内容
%% 引用%时使用
* 可以匹配任意个字符
? 可以匹配一个字符
[ ] 从中选一个字符
sample:
# if /sbin/scsi_id returns "OEM 0815" device will be called disk1
BUS="scsi", PROGRAM="/sbin/scsi_id", RESULT="OEM 0815", NAME="disk1"
# USB printer to be called lp_color
BUS="usb", SYSFS{serial}="W09090207101241330", NAME="lp_color"
# SCSI disk with a specific vendor and model number will be called boot
BUS="scsi", SYSFS{vendor}="IBM", SYSFS{model}="ST336", NAME="boot%n"
# sound card with PCI bus id 00:0b.0 to be called dsp
BUS="pci", ID="00:0b.0", NAME="dsp"
# USB mouse at third port of the second hub to be called mouse1
BUS="usb", PLACE="2.3", NAME="mouse1"
# ttyUSB1 should always be called pda with two additional symlinks
KERNEL="ttyUSB1", NAME="pda", SYMLINK="palmtop handheld"
# multiple USB webcams with symlinks to be called webcam0, webcam1, ...
BUS="usb", SYSFS{model}="XV3", NAME="video%n", SYMLINK="webcam%n"
查看sysfs的信息
这里使用udevinfo的指令, man udevinfo 在线文档http://www.die.net/doc/linux/man/man8/udevinfo.8.html
基本用法
-a SYSFS{filename} attributes along the device chain.
-p sysfs_path Specify the sysfs path of the device to query.
-q query_type Query the database for specified value of a created device node or network interface.
valid type: name, symlink, mode ,owner , group , path or all.
-n name Specify the name of the node, the symlink or the network interface for the device to queue
sample:
udevinfo -a -p /sys/path/to/hardware/info
udevinfo -a -p /sys/block/sda
udevinfo -q path -n /dev/sda
联起来用: # udevinfo -a -p $(udevinfo -q path -n /dev/sda)
测试方法
# udevtest /sys/class/sound/dsp/
version 056
looking at '/class/sound/dsp/'
opened class_dev->name='dsp'
configured rule in '/etc/udev/rules.d/50-udev.rules[132]' applied, added symlink '%k'
configured rule in '/etc/udev/rules.d/50-udev.rules[132]' applied, 'dsp' becomes 'sound/%k'
creating device node '/dev/sound/dsp', major = '14', minor = '3', mode = '0660', uid = '0', gid = '18'
实际的例子
010_local.rules
#Clie th55
#sync
BUS="usb", SYSFS{product}="Palm Handheld", KERNEL="ttyUSB*", SYMLINK="pilot%n"
#export
Bus="usb", SYSFS{product}="Sony PEG Mass Storage", KERNEL="sd*",SYMLINK="cliems"
#usb HDD
BUS="usb", SYSFS{product}="USB TO IDE", KERNEL="sd*", SYMLINK="usbhdd%n"
#cf1 used for 5in1 card reader
BUS="ide", ID="2.0", KERNEL="hd*", SYMLINK="ms"]
link
http://www.neuro-tech.net/Luke/bookmarks/udev
http://www.reactivated.net/writing_udev_rules.html
2005年10月2日
Mount
使用gnome很方便的的就是使用各种panel,比如,电池状态,音量调节,天气预报,系统负载,无线网络的信号强度等。
有一个是叫disk mounter的,是专门用于mount disk的,配合上/etc/fstab,可以实现鼠标单击mount 和 umount disk。
下图是disk mounter的配置界面。

做两张小图片,一个表示mounted的状态,一个表示umounted的状态, 填上mount的路径就可以了。
试着点一下:出错了。

原来还需要在/etc/fstab里面加入说明。
在/etc/fstab里加入
/dev/hde1 /media/ms0 vfat user,sync,noauto,uni_xlate 0 0
/dev/hde1 是dev文件名
/media/ms0, 为mount的位置,
vfat是文件系统的格式 也可以使用auto让系统自动探测。
接着是mount的选项.
noauto 不自动mount
user 可以在用户模式下mount。
uni_xlate 为指令使用unicode,这样可以显示中文和日文的文件名。
sync 就是使用快速的同步方式,就是说移动设备可能会随时拨出,禁止linux使用delay write的操作。
接下来是DUMP执行的指示
Linux下只有ext2和ext3支持dump,ms一般是vfat格式的,因此使用0
最后是fsck执行的顺序的指示
fsck是在系统障碍发生时,为了保证文件系统的完整性而执行的检查程序,设成0,表示不检查这个区,然后按顺序大小,从小到大依次检查
到这里可以通过鼠标mount 和umount disk了。
Umount
点刚才生成的图标有一个Eject的选项,想当然的就用它Umount但是发现图标的颜色还是Mounted的,怎么回事,
在命令行里打了一下,原来是device is busy 的错误信息,
这时你需要检查是不是还有打开它的程序,(文件浏览器,shell等等)
都检查过了,shell和文件浏览器都没有问题时,这时就需要怀疑是linux的一些系统的daemon了
这里介绍一条命令,可以查看是哪些程序打开了文件 : lsof
lsof | grep /media/ms0
debianlinux:/etc# lsof | grep /media/ms0
famd 3923 mikelish 210r DIR 33,1 16384 607 /media/ms0/dcim/101msdcf
famd 3923 mikelish 232r DIR 33,1 16384 720 /media/ms0/.Trash-mikelish
famd是是监视文件系统变化的daemon。最方便的解决方法是重启那个进程。
/etc/init.d/fam restart
也可以使用kill
比如写一下以下的解本
kill -9 `lsof -t /dev/hde1`
umount /dev/hde1
背景
一次和几个同事出去玩,在回来的飞机上想用笔记本把大家的照片收集过来,
发现在root方式下打MOUNT,拷贝等都遇到了许多问题。
最突出的是两个问题。
- 有些卡插入时cardmgr会死掉,CPU占用会变成100%
- 有些卡在完成拷贝后,umount时,总是会报device is busy
所以花了两天基本上解决了这些问题,现在就把这些经验贡献给大家。
内部总共分三篇。
- PCMCIA的配置---pcmcia型的读卡器
- disk Mount的简单的方法---介绍一种方便的mount方法。
- udev 与Hotplug 使用udev规则 ---使特定的设备使用固定的设备名。
PCMCIA的配置
我的环境 debian sarge pcmcia-cs 3.2.5-10
读卡器基本上都是ide-cs设备,也就是说都是ide转pcmcia的硬件。我实际上使用了两个读卡器,
我原来手上有一个很老的读卡器Sony Memory Stick/PC Card Adaptor MSAC-PC2。只支持memory stick
这块卡比较旧,就是那块飞机上让我心痛的东西,现在就来分析一下它那么出问题的原因。
在分析原因以前先介绍一下pcmcia主要的调试方法.
cardctl 最重要的一个pcmcia的调试,控制工具。 可以查看card的识别信息,状态信息,配置信息,
cardinfo 图形化界面的cardctl
dump_cis, dump PCMCIA的配置信息
cardmgr, pcmcia的监视daemon
正常工作时的使用上面的工具得到的信息如下:
cardctl config
Socket 0:
Vcc 3.3V Vpp1 0.0V Vpp2 0.0V
interface type is "memory and I/O"
irq 3 [exclusive] [level]
function 0:
config base 0x0200
option 0x41 status 0x00 pin 0x00 copy 0x00
io 0x0100-0x010f [auto]
cardctl status
Socket 0:
3.3V 16-bit PC Card
function 0: [ready], [bat dead], [bat low]
cardctl ident
product info: "SONY", "MEMORYSTICK(128M)", "1.0"
manfid: 0x00f1, 0x0000
function: 4 (fixed disk)
/etc/pcmcia/config是pcmcia的配置文件,可能把卡加入到配置文件中
card "SONY MSAC-PC2"
manfid 0x00f1, 0x0000
bind "ide-cs"
这样,当卡插入时,就会自动识别,并用装载ide-cs的驱动程序。
不过这块遇到最多的是cardmgr 死掉,系统CPU中用100%的情况,原因是,当这块卡不能正确识别时,他会使用
card "Anonymous Memory"
anonymous
bind "memory_cs"
由于kernel 2.6使用MTD支持memory_cs,memory_cs不会装载成功,此后CPU就会100%状态。
kill掉cardmgr后系统恢复正常。(使用kill -9)
也可以通过修改上面的bind,防止100%CPU。(如改成 bind "ide-cs")
已经不想被这个破卡折磨了,昨天买了一块新的
buffalo 的 MCR-5A, 支持MMC, SD ,MS, MS PRO (使用转接头的话,还支持ms duo, mini SD)
这块卡比较新,没有那么多麻烦。
Socket 0:
product info: " ", "Memory Card Adapter"
manfid: 0x0045, 0x0401
function: 4 (fixed disk)
Socket 1:
no product info available
debianlinux:/etc/udev/rules.d# cardctl config
Socket 0:
Vcc 3.3V Vpp1 0.0V Vpp2 0.0V
interface type is "memory and I/O"
irq 5 [exclusive] [level]
function 0:
config base 0x0200
option 0x41 status 0x00 pin 0x00 copy 0x00
io 0x0100-0x010f [auto]
Socket 1:
not configured
debianlinux:/etc/udev/rules.d# cardctl status
Socket 0:
3.3V 16-bit PC Card
function 0: [ready], [bat dead], [bat low]
Socket 1:
no card
下面的东西加入config文件
card "bufflo 5in1 card adapter MCR-5A"
manfid 0x0045, 0x0401
bind "ide-cs"
技巧:
1. 上网查看你的卡是不是被支持 http://pcmcia-cs.sourceforge.net/ftp/SUPPORTED.CARDS
2. 如果只是没有写在默认的config文件的话,需要自己把配置信息加入到config,基本上通过cardctl来取得各种信息。
3. 如果完全不支持的话,google吧,或者自己写一个驱动吧,(大家会感谢你的)
4. cardmgr的参数里加入-v 可以在 /var/log/kern.log里看到一些更详细的log信息,有利用于你查出问题,加入的方法可以是kill掉系统
默认的那个,然后手动启动cardmgr (详见:man cardmgr)
5. 如果卡没有被认识的话,可以用cardctl eject , cardctl insert试试。
6. ide-cs的卡,在没有插入存储卡时,是不会被系统识别的
7. 不要用太老的卡,很麻烦。
2005年9月28日
PODCAST已经越来越流行了,国内的如 http://podcast.bokee.com/ 这一段时间李傲在清华的演讲很快就在podcast上有得下了。
因此在linux上安装一个podcast软件的需求越来越大。
在网上查了一下,得到下面的一个LINK,上面归纳了现在各种平台的Podcast软件
link: http://www.podcastingnews.com/topics/Podcast_Software.html
Linux/Unix Podcast Software
- amaroK - music app and podcast client
- amaroK使用了sql的数据库管理音乐信息,做得很COOL,因为使用了数据库它可以统计各种用户的使用习惯等,觉得有新一代音乐播放器的特点。
- 不过还不知道它怎么加Feed
- 它是一个KDE的程序,所以你需要有KDE的运行库支持
- BPConf - a podcase downloader for KDE on Linux
- 界面很简单,代码也很少。还没有debian的包,安装比较麻烦,不推荐。
- gPodder - Podcast reciever/catcher written in Python, using GTK
- 界面做得很清新,不过只有一个页面,估计功能不会很多。没有debian的包,安装比较麻烦
- iPodder - Lets users select and download shows and music and
to play whenever they want on their iPods, portable digital media
players, or computers automatically.
- 这个软件的Window版我在公司一直在用,觉得还可以,现在它已经进行debian的Testing目录,所以安装它很简单。
- 这个软件的源代码目录已经出现在BitTorrent目录,界面上也有了上传速度,估计windows版已经支持了BT方式下载。
- 一个已经知道的BUG:
$ ipodder
[<class 'ipodder.players.XMMSPlayer'>, <class 'ipodder.players.NoPlayer'>]
Traceback (most recent call last):
File "/usr/share/ipodder/iPodderGui.py", line 148, in ?
class MySplashScreen(wx.SplashScreen):
AttributeError: 'module' object has no attribute 'SplashScreen'
- 这个是它和libwxgtk2.4-python冲突,你需要remove掉libwxgtk2.4-python
Version 2.1-2 conflicts against libwxgtk2.4-python because of this error message.
- Liferea - news aggregator for online news feeds, features podcast support.
- 我一直用它作Linux下的RSS news阅读器,它可以加入带有Mp3的Feed,MP3文件做为附件(enclosure)来处理,可以下载到指定的目录,
- 不过它好像不支持自动下载,下载使用的Wget后台方式,让人无法知道当前下载的状况,因此作为Podcast Client还是显得不足。
- PenguinTV - RSS feed reader designed to work with podcasts and video blogs.
- PodGrid - personal internet radio news receiver, podcast receiver.
- Podracer - podcast aggregator/downloader. It supports
BitTorrent, http and even ftp distribution of podcasts and runs best as
a cron job to automatically retrieve podcasts throughout the day.
- StreamTuned - plays and records audio and video streams using mplayer as backend, acts as a podcast client.
这个需要和mythtv一起工作,在linuxPVR的项目中,我使用过,不过由于mythtv工作在全屏方式,所有多少有点使用不方便。(如果你专门用一台电脑做LINUX PVR除外)
- Yamipod - freeware application to efficiently manage your iPod under Mac OS X, Windows and Linux.
Java-Based Podcast Software
- FeedPod - a Text-To-Speech RSS/ATOM Newsfeed reader.
- jPodder - one of the first programs to be created for podcasting.
没有测试过,JAVA给人以速度慢的感觉, 不到万不得以,我是不用它的。
结论:最后我选择ipodder作为podcast的client软件,同时也安装了amaroK,此外还把PODCAST的Feed加入到Liferea。
Link:
http://www.podcastingnews.com/topics/Podcast_Software.html
http://amarok.kde.org/
http://www.leonscape.co.uk/linux/bpconf/
http://www.perli.net/projekte/gpodder/
http://ipodder.sourceforge.net/index.php
2005年9月21日
FUD展示给我看他使用plucker在PDA上看slashdot上的新闻,感觉不错,就研究了一下。
plucker是一个不错的离线的浏览器,他的使用没有什么好说的,去http://www.plkr.org/下一个装上去就行了。
plucker自己也电脑上用的客户转换工具,其实就是由于离线浏览器和格式转换两个部分组成。
离线浏览器通过解析一个URL中的链接,把这个PAGE相连的见面都下下来,这样用户在即使在离线的时候,
占击时就可以看到其相连的页面。
离线浏览器在使用的时候需要用户设置一个开始页面。
在开始页面上链接,称为第一级链接,第一级链接上的链接称为第二级链接。以些类推。
一般的离线浏览器都可以让用户根据需要设置深度。
信息是交织的,见面上的链接会非常之多,单纯的靠设置深度的方法,显得很笨拙
单纯的设置深处,太深,会下一堆无用的东西,
设置太少,比如1,就和下载一个PAGE相同,从而失去了使用离线浏览器的意义。
为了解决这个问题,一些离线浏览器内置了对链接的过滤工具,下面要介绍的sunrise就带了这个功能。
关于sunrise的基本使用可以参考 http://laurens.typepad.com/sunrise/tour/
这里以slashdot为例子,讲一下filter和脚本两个功能的使用。
在sunrise里增加一下文档, 名子比如slashdot,
URL的地方使用http://slashdot.org/index.pl?light=1
这个是slashdot的light方式,适合屏幕不大的手持设备使用。
分析了一下他的文章的链接Read More
基本上都是
http://science.slashdot.org/article.pl?sid=05/09/21/0450257&tid=160&tid=99的风格,
于是用正则表达式匹配的话
在filter page可以增加filter的选项
URL pattern: http://[a-z]*.slashdot\.org/article\.pl\?.*
march type
先regular expression方式(wildcards通配符,不用说了)
filter type: include only the links march this pattern
这样就建立了一个对文章链接的filter
还有一个问题就是过滤下来的URL由于后面没有light=1的参数,又回到了普通的显示方式,
要想使用light方式,必须手去的在URL后面增加&light=1,
这个可以通过下面的脚本完成;
脚本是javascript的,参考scipt目录下的例子。
实际的脚本: 实际上也是用正则表达式
var sURL=/article\.pl\?sid=/
document.onanchorlink = function(link) {
if (link.uri.match(sURL) != null) {
link.uri += "&light=1";
}
};
以上给出的是slashdot的一个例子 ,希望对你下载其他网站有帮助。
正则表达式的确真是一把瑞士军刀。
mikelish
2005年9月8日
1.背景 无论自己家里还是公司都有多台电脑,经常是一台上网查资料,一台在LINUX的SHELL下执行程序。有时,从网上找来一个URL或者一小段代码,要拷贝到另一台机器时,经常需要先写到文件,拷贝文件,打开文件这样的过程,觉得很不方便,于是就想要是有一个软件可以把一套键盘鼠标共享给多台电脑用就好了。
2. 基本要求是: 1 与平台无关: window,Linux,Mac最后都要支持(high)
2 可以支持与本地键盘鼠标相同的功能(high)
3 可以拷贝文本(high)
4 可以拷贝图像 (middle)
5 可以直接拷贝文件(low)
6 通讯提供加密支持(middle)
在google上找了一下,找到了synergy
3. synergy简介它的主页是 http://synergy2.sourceforge.net/
通过网络传输键盘和鼠标的信息。
用户可以把多个显示器按自己的想像排成一个更大的虚拟的显示器,比如 显示器 X在显示器Y左边,这样当鼠标移动到显示器X的左边框时,键盘和鼠标就会自己的切换到Y显示器上。
它基本满足了1,2,3,4, 要求6,可以通过SSH的port forward 来实现。
4. 安装windows 下载安装文件,都是GUI的界面,很简单。
debian apt-get synergy (现在这个包还在unstable里面)
fedore 直接下RPM包。
OSX, 直接下安装文件。
5. 配置分server和client。
server电脑上的键盘和鼠标可以虚拟成连着它的client的键盘和鼠标。Client的刚不行,因此,把使用最频繁的键盘鼠标所属的那台电脑设成SERVER。
SERVER的配置
windows下都是GUI,没有什么好说的,在选成server模式,加入你有的screen名(默认需要使用机器名,其他名字要设别名)
完了后,点START,就行了。
LINUX:写一个配置文件
section: screens
desktop:
linux:
end
section: links
desktop:
right = linux
linux:
left = desktop
end
然后 synergys -f --config 配置文件
-f 的是要求程序在前台运行,这样可以看到调试信息,设置正确完成后不需要。
CLIENT的配置
Window
GUI上选上client模式,填上Server名或Server的IP地址
Linux
synergyc -f server名或server的IP地址
6. 通过SSH加密传输这个可以阅读主页 的说明,主要是通过ssh的port forward来完成,这个需要在安装SSH的软件,以openSSH 常用。
Server端正常的启动
Client:
ssh -L 24800:localhost:24800 ServerIP地址
synergyc -f localhost
7 自动启动
windows没有什么好说的,Linux需要写X的启动文件
你可以放在你自己的xsession的启动文件里。
2005年8月29日
Port scan简介port Scan的方法介绍 port Scan就是一种通过检测对方服务器的开放端口,侦测对方服务器服务的方法。一般可分为主动式和被动式两种。 主动式就是通过向对方服务器的特定端口发送数据包,根据应答来判断。以nmap 为代表
被动式,不主动发出数据包,而是在网络上长时侦听,分析网上的transaction,来分析,严格的来被动式不应该被称作是端口扫描。以nwatch为代表
优缺点比较
主动式的优点
主动式只要在对方没有把通信阻断的情况下,可以在较短的时间内获得结果
主动式的缺点
1 现在带有阻断功能的防火墙越来越多,有些防火墙当检测到端口扫描时,会将端口关闭一定的时间,还有的机器使用了很多filter功能,只对特定的IP地址提供服务,这种情况下,主动式的正确性大打折扣。
2 主动式只是在一瞬间对端口进行扫描,只有当服务器那个时候使用的服务才有可能被侦测到。
3 端口扫描是一种广义上的攻击行为,对于末经许可的机器,一般不能施行。
被动式的优点
被动式只是侦听网络,不会成为网络攻击,它长期运行,可以侦测到一个长时间间内,服务器的变化。
被动式的缺点
由于它不会主动发出请求包,即使端口开着,如果没有发生实际的通信,被动式也无法侦测到服务
3。nmap的安装
debian apt-get install nmap
fedora core yum install nmap
others 下载源代码,编译
4。nmap的使用方法
下面是Nmap支持的四种最基本的扫描方式:
* TCP connect()端口扫描(-sT参数)。
* TCP同步(SYN)端口扫描(-sS参数)。
* UDP端口扫描(-sU参数)。
* Ping扫描(-sP参数)
如果要勾画一个网络的整体情况,Ping扫描和TCP SYN扫描最为实用。
* Ping扫描通过发送ICMP(Internet Control Message Protocol,Internet控制消息协议)回应请求数据包和TCP应答(Acknowledge,简写ACK)数据包,确定主机的状态,非常适合于检测指定网段内正在运行的主机数量。
* TCP SYN扫描一下子不太好理解,但如果将它与TCP connect()扫描比较,就很容易看出这种扫描方式的特点。在TCP connect()扫描中,扫描器利用操作系统本身的系统调用打开一个完整的TCP连接——也就是说,扫描器打开了两个主机之间的完整握手过程(SYN, SYN-ACK,和ACK)。一次完整执行的握手过程表明远程主机端口是打开的。
* TCP SYN扫描创建的是半打开的连接,它与TCP connect()扫描的不同之处在于,TCP SYN扫描发送的是复位(RST)标记而不是结束ACK标记(即,SYN,SYN-ACK,或RST):如果远程主机正在监听且端口是打开的,远程主机用 SYN-ACK应答,Nmap发送一个RST;如果远程主机的端口是关闭的,它的应答将是RST,此时Nmap转入下一个端口。
-sS 使用SYN+ACK的方法,使用TCP SYN,
-sT 使用TCP的方法, 3次握手全做
-sU 使用UDP的方法
-sP ICMP ECHO Request 送信,有反应的端口进行调查
-sF FIN SCAN
-sX
-sN 全部FLAG OFF的无效的TCP包送信,根据错误代码判断端口情况
-P0 无视ICMP ECHO request的结果,SCAN
-p scan port range 指定SCAN的目端口的范围
1-100, 或者使用25,100的方式
-O 侦测OS的种类
-oN 文件名 通常格式文件输出
-oX 文件名 通过DTD,使用XML格式输出结果
-oG 文件名,grep容易的格式输出
-sV 服务的程序名和版本SCAN
实例:
nmap -v target.com
这样对target.com上所有的保留TCP端口做了一次扫描,-v表示用详细模式。
nmap -sS -O target.com/24
这将开始一次SYN的半开扫描,针对的目标是target.example.com所在的C类子网,它还试图确定在其上运
行的是什么系统。这需要root权限,因为用到了半开扫描以及系统侦测。
结果实例:
debianlinux:/etc/init.d# nmap 192.168.1.1
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2005-08-30 00:01 JST
Interesting ports on 192.168.1.1
(The 1658 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
1720/tcp filtered H.323/Q.931
3128/tcp open squid-http
5。nwatch的安装 nwatch 需要的包
Perl 5.005_03以上
Net::Pcap
Ndiff 0.05 bata2 以上
libpcap
debian: apt-get install nwatch
6.nwatch的使用方法
-d 网络设备名,默认为eth0
-h host/network[:port][t,u]
t,u 可以指定TCP或UDP 默认为TCP
-o 输出文件名
-fi 时间(秒) 把数据写盘时间,默认为300秒
-si 数据Break时间(秒),默认为86400(一天)
LINK
nmap
http://www.insecure.org/nmap/
qemu的一个很重要的用处,就是用于在仿真机内调试一些东西。
在自己的LINUX系统下直接调试,有时会导致系统的安全,就是没有安全问题,装了一些乱七八糟的东西,将来要删除都不是很方便
qemu可以很方便的使用网络 (使用 -user-net就可以使用网络)但是,但是HOST不能很方便的访问到qemu下的系统,这个使用你调试使用apache服务的一些网络的东东时就很不方便。
vdeqemu就是一个针对这个问题的工具。
1, HOST的KERNEL的配置
2.6
* tun: "Network device support" -> "Universal TUN/TAP device driver support"
* IP masquerade: "Networking options" -> "IP: Netfilter Configuration"
上面两个模块要enable,或者把它内含在kernel里面
2. Host 的网络的配置
echo 1 > /proc/sys/net/ipv4/ip_forward
/usr/local/bin/vde_switch -tap tap0 -daemon
ifconfig tap0 192.168.254.254
下面根据你有的网络interface选择
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
3。qemu仿真机内guest系统的网络配置,只要选一个192.168.254.0/24下在的一个IP就可以了。注意由于一般的LINUX没有必要使用DHCP,所以你可能需要把你的guest的网络配成静态IP地址。
4,由于HOST和GUEST都连在一个虚拟的HUB上。互相访问的也就不成问题了。
LINK
vde project
http://sourceforge.net/projects/vde/
Using VDE with Qemu HOWTO
http://blog.bravecobra.com/index.php/linux?p=41&more=1&page=2
User-mode Networking
http://lists.gnu.org/archive/html/qemu-devel/2004-10/txtjIKxDZwm3A.txt
2005年7月26日
qemu是一个比较好的仿真器,可以仿真多种平台,不过他相对于vmware等商业软件,最大的问题是速度不是很快,
qemu带有一个加速模块kqemu,不过kqemu不是使用GPL协议的,Fabrice Bellard在LICENCE写到,你可以免费的使用它,但不能随意发布到你自己的CD里。
1. 环境:
debian sarge.
x31
2. 编译qemu
使用的是最新的版本,qemu-0.7.1(这里没有使用sarge里面的包,如果你已经安装过sarge里面的包,可以dpkg -r 掉)
可以 http://fabrice.bellard.free.fr/qemu/ 下载
1. 下载qemu-0.7.1 的 source code.
解压到/tmp/qemu-0.7.1
cd /tmp
tar xzvf qemu-0.7.1.tar.gz
2. 下载kqemu-0.7.1的source code.
解压到/tmp/qemu-0.7.1
cd qemu-0.7.1
tar xzvf ../kqemu-0.7.1.tar.gz
3 ./configure
这个时候可能会报少SDL 或cocoa的错误,
也就是要给出虚拟的
Simple DirectMedia Layer
实际上是需要libsdl1.2-dev的包,debian下可以用apt-get 得到。
4. make, make install 会安装到/usr/local/bin下面。
5 (debian)BOOT时引导 /etc/modules里面加上kqemu
6 需要建立/dev/kqemu的设备文件。
用 less /proc/devices 确定kqemu的device major 号
mknod -m 0666 /dev/kqemu c 250 0 (250是major号)
7 测试kqemu是不是工作。
这时用的是sarge.img
测试一下就是用 qemu -hda sarge.img -boot c -user-net
如果kqemu工作的话,你可以用lsmod看到,kqemu的 user by >0
8。 性能测试:
实验对象 sarge.img,它是使用sarge debian-31r0a-i386-netinst.iso 光盘安装的系统,只装了基本系统。
比较时间是,启动到LOGIN提示符的时间
1. 使用kqemu
qemu -hda sarge.img -boot c -user-net
33秒
2. 不使用kqemu
qemu -no-kqemu -hda sarge.img -boot c -user-net
55秒。
可见安装了kqemu以后的速度要快得多。
总体觉得安装kqemu以后,性能上可以和vmware相比。
此外qemu还可以仿真arm,ppc等平台。
2005年7月13日
装了一个LINUX下的中英,英中词典。
主页 http://stardict.sourceforge.net/index.php
他上面带有一个语音库,其实就是一堆WAV文件。所以可以有发音功能。
方法
1 下载 主页 上有RPM包
debian:
debianlinux:/usr/share/stardict/dic# apt-cache search stardict
libsdcv-dev - Stardict Console Version - development files
libsdcv3 - StarDict Console Version - shared libraries
sdcv - StarDict Console Version
stardict - International dictionary for GNOME 2
stardict-common - International dictionary for GNOME 2 - data files
stardict-tools - The dictionary conversion tools of stardict
你可以根据需要选择安装。
2 下载字典。
http://stardict.sourceforge.net/Dictionaries.php
上面有中英,德语,还有很多专业字典,可以根据需要安装,下下来后,放到/usr/share/stardict/dict中就可以了。
3 使用没有什么好讲的,会有金山的都会有了。
其它关于它的文章:http://www.pconline.com.cn/pcedu/soft/gj/others/0409/457511.html
星际译王:来自Linux的免费词霸 http://www.pconline.com.cn/pcedu/soft/gj/others/0409/457511.html
今天开始想用一个东西管理自己的个人的计划等各种信息。
看了一下KOrganizer,感觉还是有点像Outlook,适合安排每一天的生活,但对一个事件的纵向联系上处理得不好。
于是就想到了在笔记本上装一个WIKI之类的东西,由于是HTML,可以任意相互关联,这个特点比较符合现实生活中,东西之间的关联就是网状的。
装什么好呢,试了一个叫didiwiki的东东,DEB的包只有23K。语法和一般的WIKI没有什么区别,
使用的方法就是打开firefox http://localhost:8000/
不过DIDIWIKI不支持数据库,这种我用它来保存数据将来备份,导出有点担心,过几天换一个使用 比如支持
PostgreSQL 的。
(PNT推荐)
2005年7月12日
上周把自己的笔记本换了个硬盘, 40G(4200转)-->80G (5400转)
文件系统使用的是reiserfs, 因为它无论性能和稳定性都要比许多linux发行版默认的ext3要好很多。
分区时忘了分一个fat32的分区(休眠时候DUMP内存用的)
所以必须重新对硬盘分区。
谈到LINUX下的分区,最常用的是FDISK(比MS的FDISK要强大多了),不过它不支持修改分区。
所以只好最后使用了parted.
debian 下可以用简单的 apt-get install parted
由于用的是reiserfs,还需要下。
ii libreiserfs0.3 0.3.0.4-4 ReiserFS filesystem access and manipulation
装完后,用 HELP看一下,就应该知道怎样用了。
下面的是我的硬盘:)
Using /dev/hda
(parted) p
Disk geometry for /dev/hda: 0.000-76319.085 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.031 19077.187 primary reiserfs
2 19077.188 38154.375 primary reiserfs
4 38154.375 75336.064 extended
5 38154.406 71531.608 logical reiserfs
6 71531.640 74339.846 logical reiserfs
7 74339.877 75336.064 logical fat32
3 75336.064 76316.594 primary linux-swap
关于PARTED 的详细信息可以看它的文档。
下面的地方有文档
http://www.gnu.org/software/parted/parted.html#documentation
2005年6月29日
引子:从网上下来一个后缀是JLNP的文件,一时不知如何是好,
上GOOGLE上看了一下,发现是一个JAVA WEB START的文件,于是开始牟LINUX的JAVA进行更新
1 安装J2SE 5。0
如果你是一个刚刚开始用JAVA程序的人,一定会对JAVA网站上下载的名字给搞得一头雾水。
首先是J2SE
Java 2 Platform, Standard Edition (J2SE) provides a complete environment for applications development on desktops and servers and for deployment in embedded environments
J2SE(TM) Runtime Environment 5.0 Update 4 简称JRE,是JAVA的运行库,
J2SE(TM) Development Kit 5.0 Update 4 简称JDK ,包括开发的一些工具包。
JDK 5.0 Update 4 with NetBeans IDE 4.1 Bundle 就是再加一个NetBeans的集成环境。
J2SE的结构可以购见下面的一张图
http://java.sun.com/j2se/overview.html
一般如果你只需要是执行网上的一些JAVA的程序,只需要下JRE就可以了。
如果你下JDK的话,JDK的安装目录下面会有一个JRE的目录,那个目录和你单独下JRE是一样的。NetBeans一般和JDK安装在不同的目录。 由于三个文件的大小差很多,所以你应该根据自己的需要而下载
我是一了一个最大的包。
到SUN的网站发现J2SE已经有了5。0版, http://java.sun.com/j2se/1.5.0/ chmod 755 jdk-1_5_0_04-nb-4_1-linux.bin ./jdk-1_5_0_04-nb-4_1-linux.bin
由于安装过程都是图形界面,不会有什么问题。
我是把他装到了/usr/local下面,所以你需要在root下安装,
JDK5。0里面默认已经带有了所以不需要安装,
如果你用的是其他的版本,可以从下面的地方下载。
在下面的网上有说明
http://java.sun.com/products/javawebstart/download.jsp
从下面的链接上下载
javaws-1_0_1_02-linux-int.zip unzip -x javaws-1_0_1_02-linux-int.zip
执行里里面的./install.sh
把javaws装到你的J2SE的目录下,
然后就可以安装后缀是JLNP的软件了。
对于debian用户
apt-get install java-package 可以安装J2RE
需要在/etc/apt/source.list文件里加入 contrib的目录。
2 配置环境文件
JAVA_HOME="/usr/local/jdk1.5.0_04/jre"
export JAVA_HOME
PATH=/usr/local/jdk1.5.0_04/jre/bin:$PATH
export PATH
3 配置中文
这个问题在LINUX SIR有讨论
http://www.linuxsir.org/bbs/showthread.php?t=149927
总结下来三步
1) COPY 中文字体到JRE
必须先把字体文件(这里用宋体Simsun.ttf)拷贝到JRE的字体目录JavaHome/lib/fonts下,然后编辑字体目录下的文件fonts.dir,把第一行的数字加1,然后在最后加一行,写上:
simsun.ttf -SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
simsun.ttf可以在一般的WINDOWS机器上的字体目录找到,有的系统下后缀是ttc
你根据文件名做相应的修改。
注意:确认一下你拷过来文件的权限,要给所有人R的权力。
2) 确定你的OS,选择所需要的fontconfig.properties
如果你是用的DEBIAN,那就从fontconfig.properties.scr开始修改(改完后存成fontconfig.properties)
,把其他无关的fontconfig文件都删除掉。
测试,运行默认的ControlPanel
一般建议你的系统默认使用en_US.UTF-8 ,这是应该显示的是英文的界面。
使用LANG=zh_CN ControlPanel,如里看到中文的控制界面,那就祝贺你了。

4 附件
使用Java Web Start 下载和安装都自己完成,还是很方便的。
我在实际过程中,试了一个BLOG的软件
blogbridge
2005年6月25日
查看下面的网站,有具体信息。
http://www.livejournal.com/users/gravityboy/14794.htmlinformation from Linux IRC (thanks
pnt etc)
这几天看了一下网上主流的LINUX下的RSS READER。
http://email.about.com/od/rssreaderslinux/
上面就有几个比较常用的软件,
我现在使用的主要有3个,
1。 mozilla thunderbird ,这个和邮件在一起使用还是比较方便的,
但不足的是,对于mblogger,他是在邮件中用网面的形式显示的,速度比较慢。
2。 liferea
是一个LINUX比较轻量运行速度很快的RSS READER,不过功能比较简单。
3。 blogbrige
用JAVA写的,界面很舒服,但是对中文GB2312的支持不好,中文的BLOG在里面看都是乱码。
点下面看snapshot
2005年6月22日
这几天发现
小张飞刀的BLOG的标题上多了一张图片,很有意思
于是就研究了一下。
CSS文件可以从网页的SOURCE中找他的CSS文件中找到链接
一般比较有意思都是个人定制的。
抓下来看了一下。
#top {
background-image: url(http://dotnet.mblogger.cn/images/dotnet.mblogger.cn/qiuji/45/o_qiuji_top.jpg);
background-repeat: repeat;
padding-top: 15px;
background-color : #088;
color : #000;
border-bottom : 1px solid #FFF;
height : 70px;vertical-align : middle;
}
只要改background-image 后面的URL就可以了。
到哪里找一张图呢,最近感觉GOOGLE的地图挺好玩的,于是就抓了下来,用GIMP
改了一下。
尺寸都是1005 x 80
一共处理了两张,可以在
OTHERS里面找到
香港夜景GOOGLE MAPGOOGLE MAP 1大家看效果还可以吧。
2005/06/23 更新
修改了一下GOOGLE MAP,让图的左右正好匹配,这样,就是循环显示也不至于很难看。
http://email.about.com/od/rssreaderslinux/
http://www.laptopcare.net/weblog/index.php?m=20050411
http://www.blogbridge.com/download.php
http://oldblog.blogchina.com
http://oldblog.blogchina.com/article_63548.623509.html
http://technorati.com/tag/RSS
http://emmet.blogbus.com/s4792/
www.itconversations.com
今天晚上,我本想在我的LINUX上装一个podcast的工具,ipodder
http://www.ipodder.org
由于他没有DEBIAN的色,安装起来很麻烦,就在GOOGLE上找没人装的经验,我发现大家在ipodder 1.0版时,大家都用alien来转成debian的包。然后用dpkg来安装。
http://kitenet.net/programs/alien/
使用他来装RPM的包到DEBIAN,我还不知道有什么副作用。
如果你知道了,不妨告诉我。
ipodder 还没有搞定,明天接着来。LINUX下,就是每一件事都不容易。
2005年6月21日
Tuxcards 一个不错的LINUX 临时的记事本,
打开速度比较gedit快, 样子也比较好看,
保存是用的XML的格式。
同一个文件可以分多个ENTRY来表示和编辑。
特点适合更新BLOG用,在网页上写难保不出现server出错,白折腾的事。

2005年6月17日
由于经常使用SKYPE聊天打电话,一直觉得被拴在电脑前面不是很自由,终于在一个周末,一激动买了一个蓝牙耳机。经过几天的努力在Linux/Debian上用了起来,现在就把这个配置过程和大家分享。
第一 了解蓝牙
蓝牙是爱立信的提出的一个近距离的无线通讯协议,由于没有INTEL的支持,它的发展一直都不是很快,在蓝牙不多的应用中,用得最多就是无线的HEADSET。其他应用还有MOUSE,CAMERA. 蓝牙耳机主要有两种PROFILE,一般用的都是Headset profile它是单声道的音频,质量只能用于做打电话。新的Advance Audio Distribution Profile 支持立体声,用来听音乐没有问题(发烧友除外)
bluetooth 的LINUX的STACK主要有两个 Affix 和 BlueZ,我使用的是后一种.
参考1 http://www.tuxmobil.org/bluetooth_linux.html
第二 环境
thinkpad X31
debian sarge,
linux kernel 2.6.11
USB Bluetooth 1.1 adaptor (不记得是哪个公司的东东了)
plantronic M3000 BT Headset
第三 kernel setting
我喜欢用比较新的KERNEL,因为低版本的经常需要打很多PATCH,很不方便。不过如果你很经常的自做debian的包,还是用sarge带的kernel。
in Kernel 2.6
Device Driver ->Networking Support ->(M) Bluetooth Sub system Support

我用的是USB的adaptor所以我没有选PC卡,如果你是用的PC卡,应该把它们选上。
第四 下载DEBIAN的BLUETOOTH的包
你可以用apt-cache search bluetooth看一下SARGE下的和蓝牙有关的包。
我安装了
ii bluez-cups 2.15-1 Bluetooth printer driver for CUPS
ii bluez-hcidump 1.17-1 Analyses Bluetooth HCI packets
ii bluez-pcmcia-s 2.15-1 PCMCIA support files for BlueZ 2.0 Bluetooth
ii bluez-pin 0.25-1 Bluetooth PIN helper with D-BUS support
ii bluez-utils 2.15-1 Bluetooth tools and daemons
ii libbluetooth1 2.15-2 Library to use the BlueZ Linux Bluetooth sta
ii libbluetooth1- 2.15-2 Development files for using the BlueZ Linux
第五 下载KDE或者GNOME下的蓝牙的图形化管理工具
GNOME
http://usefulinc.com/software/gnome-bluetooth/
APT的地址: deb http://debian.usefulinc.com/gnome ./
如果你有蓝牙的电话,你还可以在上面的网站上找到phone manager
http://usefulinc.com/software/phonemgr/
我没有支持蓝牙的手机,所以没有测试它
KDE
http://kde-bluetooth.sourceforge.net/
DEB 包 http://fred.hexbox.de/debian/
deb http://fred.hexbox.de/debian ./
第六 蓝牙的配置文件
蓝牙的配置文件位于/etc/bluetooth目录下面。
hcid.conf
# HCId options
options {
# Automatically initialize new devices
autoinit yes;
# Security Manager mode
# none - Security manager disabled
# auto - Use local PIN for incoming connections
# user - Always ask user for a PIN
#
security user;
这里最好改成user 一般的耳机在连接时都需要输入PIN,虽然第二次,选auto有时,经常会出现连不上死在那里的情况。
# Pairing mode
# none - Pairing disabled
# multi - Allow pairing with already paired devices
# once - Pair once and deny successive attempts
pairing multi;
# PIN helper
#pin_helper /usr/bin/bluez-pin;
pin_helper /usr/lib/kdebluetooth/kbluepin;
我用的是kde的蓝牙的framework,
pin helper,的作用是在蓝牙设备需要输入密码时,弹出对话框让你让打密码。
# D-Bus PIN helper
#dbus_pin_helper;
}
# Default settings for HCI devices
device {
# Local device name
# %d - device id
# %h - host name
name "%h-%d";
# Local device class
class 0xff0100
oxff0100的意思是接受任何种类的蓝牙设备的连接,
0x200404 是指只接受audio/video device类的设备连接。
这个主要用于你有多台蓝牙设备时,想控制他们的互相连接时使用.
例如你有两台电脑,一个手机都带有蓝牙,而你只想让电话连到一台脑上,就可以使用这种方法来设置。
# Default packet type
#pkt_type DH1,DM1,HV1;
# Inquiry and Page scan
iscan enable; pscan enable;
# Default link mode
# none - no specific policy
# accept - always accept incoming connections
# master - become master on incoming connections,
# deny role switch on outgoing connections
lm accept;
# Default link policy
# none - no specific policy
# rswitch - allow role switch
# hold - allow hold mode
# sniff - allow sniff mode
# park - allow park mode
lp rswitch,hold,sniff,park;
# Authentication and Encryption (Security Mode 3)
auth enable;
#encrypt enable;
感觉还是打开验证的比较好,选AUTO,BT会记住以前的PAIR, 在连接蓝牙设备时,如果以前PAIR过了,就会直接用以前记住的PIN去连接,这个看上去不错,但我用下了经常会有连不上的情况。
}
第六 安装蓝牙耳机的音频程序
前提:你的linux应该使用的是ALSA的音频系统。
http://cgi.sfu.ca/~jdbates/debian/pool/bluetooth-alsa/
deb包 deb http://cgi.sfu.ca/~jdbates/debian/ . .
bluetooth-alsa_200503090-1_i386.deb 2005年5月19日
这个包会装安装btsco的应用程序。
现在我们还需要一个驱动程序。snd-bt-sco
1.到bluetooth-alsa项目的主页去下载源程序 或从CVS中下最新的代码。
http://bluetooth-alsa.sourceforge.net/
从CVS中可以得到最新的程序
cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/bluetooth-alsa login
cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/bluetooth-alsa co btsco
编译前需要的包
automake-1.7
libbluetooth-dev (aka libbluetooth-devel or bluetooth-devel)
libasound2-dev (aka alsa-devel)
2.Compile:
./bootstrap
./configure
make
make install
make maintainer-clean
3. snd-bt-bco需要一个snd_hwdep_new的内核模块。 你可以通过在编辑内核时选上 emu10k1强行编译上面的内核模块。
device drivers --> sound -->Advance Linux sound Architecture-->PCI devices
-->(M)Em10k1
make
make modules_install
4.编译snd-bt-sco
到btsco/kernel目录下面
cd kernel
make
make install
depmod -e
make clean
默认的状态下会安装在/lib/modules/2.6.X/extra/目录下面。
第七 使用蓝牙耳机
1。modprobe snd_bt_sco
2。hciconfig hci0 voice 0x0060
3。btsco bdaddress
这里需要填的是蓝牙的MAC地址
这可以通过让你的蓝牙耳机处在查询状态。然后用hcitool scans就可以找到你的耳机,同时看到它的MAC地址。
#hcitool scan
Scanning ..
第七 使用蓝牙耳机
1. 连接
hci scan
00:03:89:4C:3A:2E M3000 by Plantronics
btsco 00:03:89:4C:3A:2E

连接建立后,蓝牙耳机会被的音频设备会被映射到/dev/dsp1
2 使用aplay 和arecord 测试蓝耳机
你需要安装alsaplayer.
aplay -D plughw:Headset sound.wav 可以向蓝牙耳机播放音乐,
一般需要按一下蓝牙耳机的接听键。
录音 一般用
arecord -d 10 -f cd -t wav -D plughw:Headset record.wav
alsaplayer的具体用法 man 一下吧。
arecord -d 10 -f cd -t wav -D plughw:Headset record.wav

3 在SKYPE下使用蓝牙耳机
只需把SKYPE的hand/handset变成/dev/dsp1就可以使用蓝牙的耳机了。
4 XMMS
LINUX下一个像 winamp的音乐播放器. 你也可以找到他的配置页,让他通过/dev/dsp1来播放音乐.
5 立体声
最新一些耳机支持Advance Audio Distribution Profile
播放的质量和一般的MP3差不多,由于我的耳机不支持这个PROFILE,所以没有测试。
6 音质
前前后后花了大约三个晚上6个小时,但是最后的音质还是让我觉得有点失望。M3000录音时有点噪音,根本无法和有线的HEADSET相比,不过上网查了一下,M3000好像是问题很多,哎,当初就因为它的包装上写着有降噪的话筒,看来这个周末要处理掉它。
mikelish
2005 年5月27日
2005年6月14日
http://www.zdnetasia.com/news/software/0,39044164,39236513,00.htm
1. 使用GCC4,程序运行速度大大加快
2. 带一个Xen 仿真机
3. 支持POWERPC 平台 (1999年以后的G3都可以运行)
4. 所带的包都很新.
Fedora Core 4 uses version 2.10 of Gnome or version 3.4 of the KDE graphical desktop software. It includes the Evince software for reading Portable Document Format (PDF) documents, and OpenOffice.org 2.0. It also includes the Global File System (GFS) software for distributing files across a group of computers.
2005年6月9日
这个PAGE里记录针对 ReactOS 的测试.
前一段时间使用WINE在Debian下装了COOLSTREAM后看电视觉得很不错,于是对WINE有了兴趣. 现在在读他的几个文档,从文档中知道了ReactOS, 是开源的和WINDOWS想兼容的OS.(现在只和NT4.0)
我是在qemu仿真机下下试的.
1. 下载http://www.reactos.com/en/content/view/full/62
Preloaded with Qemu
2. 解开ZIP包,支持里面的boot.sh 就要以启动了.
3.下载 Applications (1的地方)
4.由于 ReactOS 默认的好像没有网络功能,你可以做一个ISO把你需要用测试的文件Mount给qemu
制作ISO的方法 mkisofs -o target.iso
就是把一个文件夹下的东西都做成一个ISO.
mount的方法: qemu -boot c -m 54 -enable-audio -cdrom target.iso -L . c.img
5 其他注意点:
第一次启动ReactOS 时可能会出现MOUSE混乱的情况,你KILL掉qemu,然后再开一次就好了(ReactOS 启动完成前,不要把MOUSE的焦点移到qemu内.)
6.感受,出现的是NT4的东东,觉得有点过时,不过对于想了解古老的windows的底层实现方法的人可能还有一些意义.
由于我是使用五笔的输入法的,SCIM下面的五笔输入法总觉得有些很重要的词 组都没有 所以就想是不是可以试着自己做通过码表做输入法。
制作方法:
1.下载最新的SCIM的包。
http://www.scim-im.org/ 里可以下包.
如果你使用DEBIAN 可以使用 apt-get source scim scim-tables-zh
可能有些一包的名字会变,这时可以通过apt-cache search 查一下。
2. 主要需要下 scim-tables
但 scim-tables编译时可能需要下scim包。
所以建议你先编译一下scim
然后
tar xvfz scim-tables-0.5.1.tar.gz
cd scim-tables-0.5.1
./configure
make
这时你可以看到他是先生成一下scim-make-table
scim-make-table 在src目录下
然后用他编译一个一个的输入法的。
3,SCIM的输入法配置文件格式。
SCIM只支持 UTF-8格式的码表。其配置文件的格式是:
表头
码表部分。
SCIM的码表格式是
编码 对应的结果 词频
wo 我 200
一般你拿到的码表需要做两个操作
4. 是转成UTF8
可以用很多的工具,但我推荐kwrite
注一般的做法是用iconv
iconv -f -t -o
例如:
iconv -f gb2312 -t UTF-8 wubi.txt -o wubi_utf8.txt
但是很多输入法中,GB2312的编码会有一些是乱码,
iconv经常会报错:
iconv: illegal input sequence at position XXX
这个往往是由于你的原始文件不是纯粹的GB2312。
比如在WINDOWS下,微软在WINDOWS里就扩展了GB2312,加入了一些繁体字。
所以如果你用gbk的设置可能会好一些。
5.
码表部分调整
编码 对应的结果 词频
wo 我 200
之间用空格或者TAB来分隔。
一般词频不是很好统计,就空着好了。
如果你的码表是从windows里面用输入法生成工具自己做的,他的格式好像有点区别
工a
式aa
工aaa
工aaaa
这个时候可以在SHELL下执行
sed 's/[a-z]*$/ &/' <source file> | awk '{print $NF,$1}' >
例如:
sed 's/[a-z]*$/ &/' wb98 | awk '{print $NF,$1}' > wb98_scim.txt
6. 填写输入法配置文件的配置部分
一般都有说明,你就按照说明一步一步做就可以了。
如果有什么问题,可以看一下zh目录下其他输入法的设置。
事实上你可以找一个相近的输入法,参照一下
下面是我的例子.
我试验的是一下混和的输入法,
同时支持五笔,拼音,英语的输入,
其实输入法就是输入的字符查找,换成文字的过程,
### Begin Table data.
BEGIN_TABLE
a 工
a 一
....
curmudgeon 守财奴
currant 无核葡萄干
currency 流通
currency 货币
...
zzzb 总政治部
END_TABLE
### Begin Table data.
BEGIN_TABLE
你自己的码表放在这里
END_TABLE
7。生成输入法BIN文件
使用刚才生成的scim-make-table
scim-make-table <source file> -b -o
scim-make-table wubi.txt -b -o wubiall.bin
如果有错有错会有
Loading table file XXX...
table file load failed!
的错误,这时你就再查一下你的表的格式了。
8. 安装
只要拷贝到 /usr/share/scim/tables/ 下面
然后支持 SCIM SETUP配置你的输入法。
好了,现在你有了自己的输入法了。 恭喜 恭喜