Categories: Linux
感谢假币帮我用好了一个老本本。估计是人品问题,那个本本我用的时候一直有问题,给假币用了一个春节,一点问题都没有。
那个本本很老很老,有8年历史了,屏幕已经黄了(本本也是人老珠黄啊)。不过我坚信deli linux发行版的一句话:“丢弃旧计算机是可耻的”。因此,我要用linux来武装它……
安装了Ubuntu 7.10后,启动gnome,硬盘那个累啊。 现在gnome已经不是过去的苗条身材,占用的内存太多,跑起来就一个字:太慢!哦,是两个字。
还是Google大法,找一个轻量级的WM(Window Manager)。这让我发现了dwm,一个很有意思的wm。所有的配置都在它的config.h文件中,然后编译安装。为了让中文显示正常,我打了 linuxsir.org上一个人提供的xft.patch,使其支持xft字体引擎。编译后的可执行程序才28k,够苗条!启动后很爽,老本本的剩余内存有200多M。
为了让老本本发挥余热,并充分利用120元包月的ADSL带宽,接着安装一个mldonkey。这是一个Linux的daemon程序,负责下载文件,支持bt和emule协议,还有其他的好多协议,不过我没用过。还找了一个跨平台的客户端来操纵这个daemon:sancho。
家里的小音响也闲着,现在利用起来。安装了一个mpd程序,这也是一个Linux的daemon程序,负责播放音乐,支持mp3、ogg、flac 等音频格式。可以用mpc(控制台程序)和gmpc(GUI程序)进行控制。然后将老本本和音响相连,哈,可以高品质的享受音乐了。其实还可以用它做一个闹钟:将mpc用脚本封装,放在crond服务中,每天早上自动播放音乐叫早,呵呵。可惜小音响没有计算机控制接口,整夜开着比较费电。
Categories: Linux
有一个很不错的网站提供生成ubuntu sources.list文件的功能:
http://www.ubuntu-nl.org/source-o-matic/
我发现使用国内的sources.list有时很慢很慢;台湾的挺快,可是不稳定,常常被封锁不能访问;日本的比较稳定。
Categories: Linux
今天在一台裸机上安装Ubuntu,发现设置正确的时区后时间比CMOS时钟多了8小时。原来Ubuntu的安装程序会检测当前计算机有没有安装Windows系统,如果有,则认为CMOS时钟是本地时间,会关闭Linux的UTC设置;如果没有安装过Windows,Ubuntu安装程序会认为CMOS时钟是UTC时间,于是开启UTC设置。
如果想关闭UTC设置,可以编辑/etc/default/rcS文件,将UTC设置为no。
用wxWidgets做了一个HelloWorld程序,一套相同的代码分别在Windows XP和Ubuntu上编译运行成功:

Categories: Linux
很早就在Linux中安装了Window Maker,却一直没有解决Gnome程序在Window Maker中字体过小的问题,今晚正好抱着玲玲玩,有一些时间,研究一下这个问题怎么解决。
还是通过Google大法找到了在KDE中类似现象的解决办法:由于Window Maker环境中Gnome的设置没有生效,因此字体不正确,运行了gnome-settings-daemin后Gnome程序就显示正常了。
于是在~/GNUstep/Library/WindowMaker目录下建立autostart脚本,脚本中用gnome-settings-daemon&命令加载Gnome的设置。重新启动Window Maker,开一个Gnome terminal,一个Gedit,一切正常!
(今天玲玲似乎听懂我叫她的名字了,高兴呀!)
Categories: Linux
在帐户的home目录下创建一个.forward文件,文件内容为需要将邮件转发到的邮箱地址,则系统会将所有发到这个帐户的邮件转发到.forward文件中指定的邮箱。
Categories: Linux
当时给笔记本买无线网卡的时候我还是注意了硬件兼容列表的,看到D-link的DWL-G650是支持的,想想650+就多了一个加号,应该没有问题。结果买回来之后才发现我的想法大错特错了,多了一个加号竟然是更换了芯片组,没有native的Linux驱动!
查了很多资料后发现可以用ndiswrapper支持这个网卡。ndiswrapper封装了Windows下的ndis驱动,一个不错的想法!
根据ndiswrapper的资料很快安装成功了DWL-G650+的驱动。现在使用上还是有一些不方便:我不知道如何将其配置为插入卡时自动启用(不清楚/etc/pcmcia下的配置文件用法),每次都需要在启动pcmcia支持后执行一个脚本启动ndiswrapper模块和wlan0网络接口,在移除网卡并重新插入后不能自动重新配置。不知道哪位大侠可以给一些提示?这里先谢过了!
Categories: Linux
打了kuuldor的补丁后中文显示没有问题了,可是中文输入还是不行。在wine notepad.exe中输入中文就出现类似下面的错误:
fixme:imm:ImmSetOpenStatus Semi-Stub fixme:x11drv:XIMPreEditCaretCallback PreeditCaretCalback 0x78079180 fixme:imm:ImmGetDefaultIMEWnd (0x10024 - (nil) 0x4037f750 ): semi-stub fixme:imm:ImmSetOpenStatus Semi-Stub fixme:imm:ImmSetOpenStatus Semi-Stub fixme:x11drv:XIMPreEditCaretCallback PreeditCaretCalback 0x78079180 fixme:imm:ImmSetOpenStatus Semi-Stub fixme:imm:ImmSetOpenStatus Semi-Stub fixme:x11drv:XIMPreEditCaretCallback PreeditCaretCalback 0x78079180 fixme:imm:ImmSetOpenStatus Semi-Stub fixme:imm:ImmSetOpenStatus Semi-Stub fixme:x11drv:XIMPreEditCaretCallback PreeditCaretCalback 0x78079180 fixme:imm:ImmSetOpenStatus Semi-Stub fixme:imm:ImmSetOpenStatus Semi-Stub fixme:x11drv:XIMPreEditCaretCallback PreeditCaretCalback 0x78079180 fixme:imm:ImmSetOpenStatus Semi-Stub fixme:imm:ImmSetOpenStatus Semi-Stub fixme:x11drv:XIMPreEditCaretCallback PreeditCaretCalback 0x78079180 fixme:imm:ImmSetOpenStatus Semi-Stub fixme:imm:ImmSetOpenStatus Semi-Stub fixme:x11drv:XIMPreEditCaretCallback PreeditCaretCalback 0x78079180 fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmSetOpenStatus Semi-Stub fixme:imm:ImmSetOpenStatus Semi-Stub fixme:x11drv:XIMPreEditCaretCallback PreeditCaretCalback 0x78079180 fixme:imm:ImmSetOpenStatus Semi-Stub fixme:imm:ImmSetOpenStatus Semi-Stub fixme:x11drv:XIMPreEditCaretCallback PreeditCaretCalback 0x78079180 fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmSetOpenStatus Semi-Stub fixme:imm:ImmSetOpenStatus Semi-Stub fixme:x11drv:XIMPreEditCaretCallback PreeditCaretCalback 0x78079180 fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub fixme:imm:ImmGetDefaultIMEWnd (0x10024 - 0x10026 0x4037f750 ): semi-stub
按照kuuldor的提示更换了LANG的配置,试过zh_CN、zh_CN.GB2312、zh_CN.GBK、zh_CN.UTF-8都不行。
Categories: Linux
看了kuuldor的comment,今晚下载了最新的WINE源码,打了三个补丁编译安装成功。运行几个Windows程序发现中文显示已经没有问题了。
使用SCIM在WINE环境中运行的Windows程序中输入中文时还是会出错,不知道是不是因为还有些配置没有设正确。
现在正在安装IE6SP1,还有30多分钟才下载完成,只好等……
Categories: Linux
今天下载了gtmess 0.9版本(console下的MSN Messenger Client),这个版本加入了前面kuuldor和我的补丁。
我在Libretto 50m上运行gtmess,所以在它上面编译。由于机器的速度很慢、内存很小,所以配置distcc进分布式编译,以便加快编译速度。
配置了两个编译服务器,一个是我自己的笔记本电脑,运行的是Debian;一个是桌面电脑,通过coLinux运行Debian。
使用distcc很快编译完成(大约10秒钟左右,如果是依赖Libretto 50m至少需要2分钟)。
Categories: Linux
搞了好几天的WINE,到现在还没有搞好。不知是Debian的包有问题还是我的配置有问题,有些地方的中文支持一直没弄好,例如:打开、保存文件对话框上的按钮的中文显示是方块;无法输入中文……。
从网上搜索了很多关于WINE的资料,发现资料中描述的WINE版本都很老,所以还搞不清楚资料中的那些补丁是不是需要打在当前版本的源码上,也就没有手工编译。最近事情多,也就不打算花更多的时间在WINE上了。
还是等kuuldor有空的时候指导一下吧。看了他的WINE的截图让人流口水啊!
Categories: Linux
前一阵不幸地将/usr误删除,只好重装系统。从Stag1做了一遍gentoo,运行速度就是快。以前用的Windows解决方案是Win4Lin,这次不想用了。一方面毕竟还是盗版,另一方面是因为要用改过的内核,用起来心里别扭。决定用WINE了。
不看不知道,现在WINE的功能已经很棒了。我用了最新的snapshot,20050111。可以运行IE6,招行的网银,AcrobatReader 5.1 Chinese,QQ2003等等。中文输入没问题,显示自己做了个小补丁,算的上接近完美。
show 几张图:
图没传上。Dumm你看一下,有没有废文件删掉吧。
这里的用发在Linuxfans的图了。
某些变态网站非此不可。也是网银的基础。
招行网银
![]()
这就是我不得不每次装机都要找Windows解决方案的祸首。
股票软件
![]()
自从去年侥幸逃了顶以后,一直没弄过这个了。咱草民玩不过党和政府。
Hehe, dumm你上次是说想找这本冰霜与烈火吧? 想看吗?想看你就说吗,你不说我怎么知道你想看呢。呵呵,开玩笑。想要的话我把这个PDF发你信箱。
Categories: Linux
今天在Linux下编译了uclinux,制作了xcopilot的ROM,运行成功。
下面是截图:

Categories: Linux
这几天Mozilla、Firefox、Thunderbird、AbiWord等软件一直无法正常使用,总是在运行过程中出现“段错误”,然后就结束运行。今天终于无意中发现凡是用到字体Tahoma的时候软件就出问题,经过检查发现是Tahoma字体文件损坏了。重新复制tahoma.ttf后故障排除。
Categories: Linux
昨天在笔记本上使用Linux的时候,需要装载NTFS分区访问其中的文件。直接mount后发现只有root可以访问(哪怕是普通用户身份mount的)。查看man后加上了umask选项,设置umask=002后即可让普通用户也访问NTFS分区的文件了(当然是只读的)。
Categories: Linux
我的Libretto(见以前的《咸鱼翻身》系列)只有32M的内存,安装Debian的时候配置了64M的交换分区。使用的过程中发现有时会在apt-get upgrade/install的时候内存不够用,而且用光交换分区空间的情况,导致无法正确安装、升级软件包。我用下面的方法解决这个问题:
1、使用dd命令建立一个文件,作为交换文件;
2、使用mkswap命令初始化上一步中建立的文件;
3、使用swapon命令激活交换文件,这样交换空间就是原有交换分区的容量加上新建的交换文件的容量;
4、进行耗费内存的操作;
5、根据需要可以使用swapoff关闭交换文件,并删除文件节省磁盘空间。
下面是操作的例子:
# dd if=/dev/zero of=/tmp/swapfile bs=1024 count=65536 # mkswap /tmp/swapfile # swapon /tmp/swapfile # ... # swapoff /tmp/swapfile # rm /tmp/swapfile
Categories: Linux
上回说到经过一番研究,决定用Debian发行版重新安装libr。这次讲讲安装配置的过程……
首先是找一个Debian的镜像,下载了bf24的启动镜像和驱动包。由于libr上已经有Gentoo系统了,所以我在现有系统中增加了lilo的启动项,从bf24内核启动。
重新启动libr,在lilo中选择bf24的启动项,libr顺利的进入了Debian安装程序。安装程序询问了一些设置方面的问题,大多数都是用默认值,只是键盘布局选择了日文键盘,因为libr就是日文键盘。
进入磁盘分区过程时需要注意,不能把bf24镜像文件和驱动包所在的分区删除,因为后面还需要安装内核和加载驱动。
分区并设置文件系统装载点后,安装程序开始安装内核和驱动模块。默认情况下安装程序不加载PCMCIA驱动,需要手工选择。手工选择后,PCMCIA网卡的驱动幸运的加载成功了。
接着就开始选择安装来源。我选择了一个日本的Debian镜像网站(这是我当时知道的最快的镜像网站,后来找到了更快的镜像网站,在下文中会说明),安装程序开始下载并安装基本系统。大约30分钟后,基本系统安装完成。
安装程序会在第一次重新启动前询问是否安装一些软件包。我在这时没有安装任何软件包,因为我计划重启后重新配置apt-get的来源,安装testing的软件包。
接着就重新启动。用root登录后,开始安装软件包,并对系统进行微调。
首先安装的软件包是apt-spy,用它找到了最快的apt-get来源,是台湾的镜像网站。修改/etc/apt/sources.list后,下载Debian包的速度大大增加。
接着使用apt-get安装了许多常用的工具软件包和服务程序软件包,例如vim、less、pppoe、dhcp、ssh等。安装都非常顺利,只有在安装language-env是遇到了一点麻烦:由于libr只有32M内存,而我只分配了64M的SWAP给Linux,在language-env生成zh_CN.GB2312语言环境的时候由于内存不足而安装失败。我把硬盘拆下在IBM的笔记本上安装language-env后,其他的软件包继续在libr上安装。
系统微调用的时间比较多,比如/etc/init.d下的服务的启动顺序(感觉Gentoo的功能要强很多,可以定义依赖性)、/etc/profile、apache2的配置等等。这些内容比较琐碎,而且在网上论坛里资源很多,就不在这里哆嗦了。配置过程中有一些有趣的、或者是我认为实用的内容,会在后面的《咸鱼翻身》中写出来。
Categories: Linux
“咸鱼翻身”这个标题是Peter给想的,我觉得很满意。这次写写我是如何使用一台旧笔记本电脑做Linux服务器的。
故事要从家里的网络说起。家里有大大小小的计算机4台(不算PDA、HPC之类的东西),要是需要同时上网,就必须打开一台PC做服务器接通ADSL共享上网,又麻烦又有很大的噪声。在网上看到Toshiba的Libretto 50m很便宜,就动了用它做服务器的念头。再说有时和朋友协同开发软件,需要在Internet上建立一个版本控制服务器,所以最终决定使用Libretto 50m做一个服务器。
决定之后就很快联系了以前的一个同事,从他手里搞到一个Libretto 50m(下面简称libr),已经配置了网卡,一共X00元(X<5),很划算。星期五晚上拿到机器,联系了kuuldor约好第二天来家里一起安装配置Linux。
第二天kuuldor来了之后,经过一番讨论,最终决定先用Gentoo发行版,原因是其他发行版要么没有用过,要么就是安装基本系统需要的配置比较高。要知道libr配置低,奔腾75的CPU、32M内存、810M硬盘,很多Linux的发行版在这样的系统上安装是比较困难的。Gentoo可以方便的自己定制,应该比较适合这样的机器。
Gentoo是编译安装的,显然在这样的配置水平的机器上进行编译很不现实,再说它也没有光驱、软驱,因此我们把libr的硬盘取下,在另外一台IBM笔记本上安装Gentoo。
好不容易安装好了基本系统、配置好/etc下的配置文件,并且安装了grub,把硬盘装回libr上,grub竟然不能启动!取下硬盘换lilo,再装回去试试,成功启动了!
接着就是配置、重新编译内核、安装必要的软件……都是简单的工作,但是工作量比较大,而且Gentoo的软件需要编译安装,所以总是拆下硬盘接在IBM笔记本上编译、配置,然后再装回libr上测试。来来回回弄了很多次,还好边弄边看电影《两小无猜》(英文名是Love me if you dare、法语名是Jeux d'enfants--都是peter告诉我的,她是个电影谜)--虽然我和kuuldor感觉这个电影的男女主角瞎胡闹,不过总比没有看的好~~
辛苦kuuldor了,一直干到半夜3点多才打车回去。最后libr成为了家里其他4台机器上网的网关、防火墙,还安装了版本控制系统、apache2、sshd、dhcpd等服务。
后来openssh发布新版本,升级libr的openssh时又进行了同样复杂的维护工作:关机、取下硬盘接在IBM笔记本上、mount外挂硬盘作为源码下载区(libr的硬盘空间不够)、下载源码、编译、将硬盘装回libr、开机试验……这时我就在想维护工作这么复杂,还需要停机,有没有更好的方法呢?于是就在VMWare上试验其他的发行版,例如Slackware、Debian等,最后决定使用Debian发行版,重新安装libr的Linux。当然这是后话,请听下回分解……
Categories: Linux
gtmess是一个开源的控制台下的MSN Messenger Client软件。本来不支持中文(应该说支持的不好,老外写的软件总是这样),kuuldor很快做了一个补丁,修改了若干行代码,让它完美支持中文了。
感谢kuuldor,更感谢gtmess的作者按照开源软件的协议发布作品!
Categories: Linux
上次说到要在HPC上装Linux。需要先建立一套工具链,好在我的athlon-xp上交叉编译给HPC用的东西。虽然现在利用现成的资源已经让HPC上运行了Linux,但是一来软件太少,还是得自己编译,二来我还是想自己能够从头作一遍,可以自己定制。所以,还是决定建立这个交叉编译的工具链。
用的工具源码都是我的Gentoo上现成的,版本分别是:
binutils-2.14.90.0.8 Gentoo_patched
gcc-3.3.3 Gentoo_patched
glibc-2.3.2
主要的参考文献是Linux-VR的创始人Bradley D. LaRonde的一片文章:
Building a Modern MIPS Cross-Toolchain for Linux
具体过程是很繁琐的,主要按照LaRonde的文章进行,但是由于版本不同,在有些地方还是有些区别的。
开始之前,把环境中的CC、AR、RANLIB等等编译相关的变量都关掉,否则也许会影响交叉编译时的结果。此外,我所有的configure配置时,都指定--prefix=/usr,这样相关的东西都会在/usr/mipsel-linux目录下。
首先编译binutils:
这个没有什么特殊的,按照文章里的方法很快完成。
编译静态连接的C编译器:
这里有两个问题。
首先,编译gcc前要有目标机器上的头文件。文章里说可以把本机的copy过去,但是很可能会出问题。最好还是找一份mipsel机器的发行版的头文件来用。
ftp.linux-mips.org/pub/linux/mips/redhat/7.3/RPMS/mipsel/glibc-devel-2.2.5-42.1.mipsel.rpm
是有人移植的Redhat的安装包。里面有头文件,拷贝到指定的目录下就好了。然后把预先准备好的MIPS Linux内核中的linux、asm-mips、asm-generic三个目录也拷贝过去,做好asm符号链接。
之后configure指定好编译选项后,开始make。
make中会有一个问题,如果不是在gcc自己的目录下编译,而是象文章中所说单独建立的编译目录,编译中会有两个文件找不到,分别是fp-bit.c和dp-bit.c。这两个文件的Makefile中指定的位置没有加上相对路径,编译时在单独的编译目录下会找不到。解决办法是从源码目录中拷贝到编译目录下,或者直接在gcc目录下编译。当然最根本的办法是把Makefile改正过来,或者找到合适的patch。呵呵,我这个懒人就没这么作了。
编译glibc:
在此之前,先把原来的头文件目录里除了linux内核之外的头文件全部清除,因为不需要了,而且留着可能对glibc的编译有影响。
然后打一个patch,http://honk.physik.uni-konstanz.de/linux-mips/glibc/patches/applied/elf-machine-rela-mips.dpatch。这个patch修正了mips平台上elf文件重定位的一个bug。然后自己手工改一下stdio-common目录下的sscanf.c中的sscanf的函数原型,改成ansi C的格式,然后在后面加上...。
之后按照文章中的configure配置后面再加一个参数--with-headers=/usr/mipsel-linux/include,指定linux内核头文件所在的目录。配置好后开始编译。
安装时一定要注意,用install_root指定安装目录,否则把本机的libc替换了就哭吧。
libc有了之后,最后重新编译完整的gcc,照着文章编译就可以了。
之后就大功告成了。
Categories: Linux
受上次在libretto 50上装Gentoo所感染,准备在我的HPC-Nec R730F上装Linux。
本来也想买个libretto来玩,后来作罢,却准备在HPC上装一个。我的R730F是去年初买的,买来后也颇用了一阵,看电子书可以撑6个小时还是比较爽的。还可以通过telnet连到我们的工作机上干活。后来又进行改造,将鸡肋指纹卡去掉,加了一个128M的CF卡。不过后来还是逐渐冷落了,主要是WinCE实在不是太好用。也曾经想过在上面装Linux,但没付诸行动。
这次又想起它。vR4121 168MHz/32M Mem/PCMCIA/USB/CF/800x600x64k,看看配置,加上我的512M CF卡,简直比Libretto还高。装个Linux一定没问题。
当然这个装Linux可就不象Libretto作为标准PC机的架构那么简单了。内核,库,执行环境都得自己动手找,甚至自己编译建立。
关于内核有一个项目,Linux-VR,按照说明已经可以在我的机器上跑了。但是版本太低,只有2.3.21,已经很久没有更新,看来是没人维护了。至于库和运行环境可能只能自己弄了。所以首要工作是建立一个MIPS的工具链,其次是争取将内核升级至最新的2.4.26,之后当然是编译内核,建立库和工作环境。还得找一个BootLoader,把内核引导起来。
工具链有现成的,但是我不太清楚能不能用。准备还是自己做一套,反正有How-To,就是Linux-VR的创始者写的,不会比LFS的stage1复杂。正好学学交叉编译。
内核升级真是麻烦,尝试弄了一下,发现要将一个没进入主流的老内核补丁加到现在的source上还真名不是一般的费劲,几乎没有一处成功的。又准备用所有的标准patch把linux-vr的内核逐步升到最新版,尝试着升级了两个版本,暂时放弃了。几乎每个patch打上,都有一堆的rej文件。我只能一个一个去看,手工改正。太麻烦了。准备等会好好看看linux-vr的内核,到底加了那些东西,手工移植到最近的MIPS内核上去。不过如果不成功,可能还得用标准patch一个一个的打,一个版本一个版本地手工改。毕竟这是笨办法,但是应该可以保证成功。如果有人维护的话,每次升级的工作量不是很大。现在可就不行了,差了几十个版本。
库和运行环境有两种选择,使用标准Glibc和标准环境,或者使用uClibc和busybox。后者适合嵌入式环境,很小,这次准备玩一下。不过可能有些程序不一定能够运行,毕竟还不是完全兼容Glibc的。而且图形环境可能会更麻烦。尝试一下吧。
呵呵,还没开始干,就罗嗦了一大堆。好了,动手,现在开始建工具链了。
Categories: Linux
今天学到一招:如果设置了TMOUT环境变量,则bash在没有用户操作TMOUT秒后自动退出。例如:
export TMOUT=60
则在bash中如果有60秒没有操作,bash就自动结束。如果它是登录后的shell,其效果就是自动注销。
Categories: Linux
上个礼拜一直在安装和调试Gentoo。现在已经非常好地运转起来了。
相比较于SuSE和Fedora,速度确实快了很多。我觉得一方面是编译中使用针对处理器的优化,另外一方面应该是按需安装的缘故。
可以说是我需要用到的最小系统了。
目前只装了KDE和GTK+,没有Gnome。习惯KDE了,而且觉得KDE的程序还是多些。呵呵。
绝大多数的日常工作都是在Linux下做了。已经不再启动到Windows了。但是有些实在无法作的事,比如网上银行和股票软件,只能在Windows下用了。呵呵,这次用了Win4Lin,很不错,速度飞快,而且直接使用Linux的文件系统。虽然只能支持到Win98 SE,但是对我的这点Windows应用是足够了。真的不错。
Categories: Linux
使用下面的命令通过ssh执行passwd命令:
ssh user@domain passwd
会发现passwd无法隐藏控制台上输入的密码。kuuldor告诉了我这个问题的原因和解决方法:这样使用ssh的时候不分配tty,因此passwd无法控制回显,使用ssh -t参数强制ssh分配tty即可解决这个问题。
Categories: Linux
今天配置了通过ssh提供的cvs服务:
安装了sshd后,创建使用cvs的帐户。不过这些帐户的开通使得cvs的用户可以通过ssh登录到cvs服务器上执行命令。为了限制cvs用户只能通过ssh使用cvs功能,我用Google找到了两个方法。
方法一:关闭ssh的密码认证功能,让ssh服务必须通过密钥(证书)认证,并在服务器上的认证证书文件的证书前加上command选项限制ssh登录后的执行命令。这个方法不太好,用户通过ssh连接到服务器后,就进入cvs的服务命令状态,没有任何提示。
方法二:建立一个脚本作为用户登录后的shell,脚本的内容为判定执行的命令,如果是cvs命令则执行,否则显示提示信息后退出。我选择了这个方法,建立了下面的脚本文件(文件名为cvsonly):
#!/bin/sh
if [ "$*" != "-c cvs server" ]; then
echo "CVS Only!";
exit;
fi;
cvs server
脚本存放在/usr/local/bin下,通过chmod 755加上执行权限。
然后在/etc/passwd中将只允许使用ssh访问cvs的用户的shell替换成上面的脚本即可。
在cygwin上也可以用类似的方式进行配置。(实际上我就是在cygwin环境下这样配置的,Linux上反而还没有试验。)
另外,为了更加安全可以在上面的脚本的最后一行cvs server后加参数--allow-root,防止cvs访问cvsroot之外的文件系统。
Categories: Linux
lynx -dump htmlfile.htm > txtfile.txt
Categories: Linux
这几天在Linux下写文档,开始的时候用OpenOffice Writer写,后来想起基于SGML的DocBook标准不错,就想用DocBook标准写文档。于是上网Google了一番,发现了docutils这个好东西。
docutils不是DocBook的书写工具,而是一个纯文本文件的转换工具,用来转换reStructuredText文档到其他的文档格式,例如HTML、DocBook等。reStructuredText的优点在于用易读的文本格式就可以说明文档结构,而不用使用复杂的DocBook的XML标记。当然,还有一个好处就是写完的文档本身可读性非常强,不会象DocBook等格式把有用的信息淹没在大量的噪声(如各种标签)中。
docutils的官方网站在这里。显然,这又是一个开源软件。
Categories: Linux
TPB是一个非常优秀的工具软件,它可以让使用Linux的IBM Thinkpad笔记本用户享受到类似Windows下的IBM热键反馈功能:当你使用Thinkpda的热键(例如音量调节、屏幕亮度调节等)时,在Linux的X环境下可以显示出反馈信息。
昨天我升级了xorg-x11的启动脚本后,发现tpb不能自动启动了。仔细检查了x11的启动脚本/etc/X11/xinit/xinitrc后,发现新的启动脚本虽然也是从/etc/X11/xinit/xinitrc.d下读取脚本执行,但是只执行以.sh结尾的脚本,其他的脚本都被忽略了。tpb在这个目录下的启动脚本就命名为tpb,将其改成tpb.sh就解决了不能自动启动的问题。
Categories: Linux
由于这段时间一直事情比较多,很久没有更新BLOG了。
自从上次kuuldor帮我安装并配置了Fedora Core 2之后,我就尽量在Linux下工作、上网,感觉现在的Linux的易用性还是很不错的,可以用于一般性的任务。
这段时间我在Fedora Core 2上用了下面的一些软件(使用频率最高的):
OpenOffice:非常好的Office软件,和MS Office基本兼容。在OpenOffice中操作MS Office文档时我只遇到过排版上的细微区别,还没有发现不兼容的情况。
XMMS:类似Winamp的MP3播放软件。通过安装更多的解码器可以让XMMS支持更多的文件格式,例如WMA。
Mozilla:浏览器。不用我废话了。
Gaim:极其棒的IM软件,支持一大堆协议。我用它的ICQ、MSN Messenger和Yahoo! Messenger协议。
Evolution:类似MS Outlook的电子邮件客户端软件。
Gedit:类似Notepad的文本编辑器。写一些小东西用。
Gnome-terminal:终端。很多命令在这里执行。
RDesktop:Windows远程终端服务客户端的Linux版本。我用它访问远程的Windows XP机器,非常好用。
aMule:eMule的Linux Clone。
apt和synaptic:安装升级工具。这两个工具可以从Internet上下载、安装、升级系统软件,大大简化了Linux软件的升级维护工作。
另外还使用一些日常工具软件进行系统维护工作,这里就先不提了。