在 NetFront浏览器 640x480分辨率下获得最佳浏览效果 我的 Zaurus SL-C3000 和 SL-C3100
Copyright 2006 Hd Luc (hdluc@yahoo.com)
|
# cp init /media/realroot/sbin/init # chmod 755 /media/realroot/sbin/init # cp halt /etc/rc.d/init.d/halt # chmod 755 /etc/rc.d/init.d/halt # cp ide.opts /etc/pcmcia/ide.opts |
在挂载分区之前运行一下fsck是个好主意。挂起失败很多情况下和分区没有查错有关。你可以把fsck拷贝到根分区,开机就可以自动查错了。
# cd /media/realroot/lib # cp /lib/libblkid.so.1.0 . # ln -s libblkid.so.1.0 libblkid.so.1 # cp /lib/libuuid.so.1.2 . # ln -s libuuid.so.1.2 libuuid.so.1 # cp /lib/libext2fs.so.2.4 . # ln -s libext2fs.so.2.4 libext2fs.so.2 # cp /lib/libcom_err.so.2.1 . # ln -s libcom_err.so.2.1 libcom_err.so.2 # cd /media/realroot/sbin # cp /sbin/fsck . # cp /sbin/e2fsck . # ln -s e2fsck fsck.ext2 # ln -s e2fsck fsck.ext3 |
最后,通过下面的改动可以隐去启动时的提示消息
隐藏cardservices cannot find modules消息
# mkdir -p
/media/realroot/lib/modules/2.4.20 |
通常runlevel 3意味着进入控制台而runlevel 5则是进入图形界面. pdaXrom启动的时候是进入runlevel 5,它应该开启图形界面。下面的补丁可以让pdaXrom开机自动进入图形界面
# head -`wc -l /etc/rc.d/rc|awk '{print $1-1}'` /etc/rc.d/rc
> /etc/rc.d/rc.new # echo "if [ \$runlevel -eq 5 ]; then" >> /etc/rc.d/rc.new # echo " export HOME=/home/root" >> /etc/rc.d/rc.new # echo " /usr/X11R6/bin/startx" >> /etc/rc.d/rc.new # echo "fi" >> /etc/rc.d/rc.new # echo "exit 0" >> /etc/rc.d/rc.new # mv /etc/rc.d/rc.new /etc/rc.d/rc |
你也可以把下面的语句加在/etc/rc.d/rc最后,记得要放在exit 0之前,效果是一样的:
if [ $runlevel -eq 5 ]; then export HOME=/home/root /usr/X11R6/bin/startx fi |
默认的Package Manager中的feed已经很旧,需要替换了。C3000有两个feeds,一个是大部分Zauri都通用的feeds,另外一个是C3x00专用的:
此外你还可以把两个feed.tar.gz文件都下载下来,解压到卡上或者内置硬盘上。然后把Package Manager的feed地址指向解压的目录,比如file:///home/root/Documents/installs/C3000/feeds.
你也可以不通过feed直接安装独立的包文件,但是你需要自己管理安装依赖包。你可以使用图形界面的Package Manager或者使用ipkg 命令.
如果是本地安装,你也可以把两个feed合并在一起。直接把两个feed.tar.gz解压到相同目录(首先解压7x0的,然后再解压C3100的),然后运行ipkg-make-index 生成Packages文件。我已经把ipkg-make-index放进我的ipktools包 [ipktools_0.2_armv5tel.ipk]里面了.
除了官方提供的包以外,还有很多其它的非官方包。下面是我手工安装的包列表。
需要的库文件:
有用的命令行工具:
运行库:
游戏:
应用程序:
有些包在安装后需要进一步的配置。下面的章节包含了它们该如何配置的信息。
有两种改变键位设定的方式,一种是通过重要的补丁来使键位设定工作,另一种是增强组合键功能,就像原rom中的keyhelper那种,
自定义键位设定,你需要修改/etc/sysconfig/keyboard/kernel.map和/etc/X11/kb/akita.xmodmap,然后用 loadkeys and xmodmap使新的键位设定生效. X中的xev命令可以用来查看键码。
你也可以使用Systems Tools中的Input setup来设定键盘底部的一些快捷键。但是这样做似乎容易弄乱默认的键位设定,特别是容易找不到.键。所以在使用Input setup之前最好先备份kernel.map,出了问题可以通过loadkeys重新加载kernel.map.
如果你想使用粘滞键,你需要修改/usr/X11/bin/startx,把defaultserverargs中的-kb选项替换成+kb +accessx。此外你还需要修改/etc/X11/kb/akita.xmodmap,把keycode=73附近的除了最后一行以外的语句都反注释掉。这将会把Tab键变成Caps Lock键. 然后重启X,连续按五下Shift键,粘滞键功能就开启了。
大部分的键位在键盘上都有标注,除了以下几个键:
我根据xev的结果重写了Spitz/Borzoi键盘的akita.xmodmap文件。我把清楚设定后的键位保存在spitz.xmodmap文件里。由于Alt和Control键已经有设定了,我删除Calendar和Address的重复设置,现在它们可以分配成别的键了。我还把Fn+m和Fn+q交换了一下。右kanji键我定义成了modifier键(Super L).
默认X中有一些键位是这样定义的:
我的Calendar和Address键设置:
但是下面的设置不起作用:
因此我把这些键位设定改掉了。我还把Alt+F12改成了Alt+6.
为了按键方便,我把Fn+Ctrl+Alt组合键设成了Home键;Ctrl+Alt设成了Super键(右kanji键). 此外大多数的Alt+key组合键也可以用Home+key键来实现.
我还增加了以下一些快捷键:
上面的修改在/etc/xdg/openbox/下的rc.xml可以找到。rc.xml文件也有可能在/home/root/.config/openbox/下面。
在XMMS中,这些键可以用来控制:
但是在竖屏模式下这些快捷键不是很方便,我增加了OK键播放,Cancel键停止,上下滚动在不同歌中切换的功能。N和M是音量键。
如果你已经安装了xmms包,你可以替换xmms文件来使用这些键位。或者你可以安装xmms_1.2.10-2_armv5tel.ipk包。
xpdf的键位如下:
如果你已经安装了xpdf包,你可以替换xpdf文件来使用这些键位。或者你可以安装xpdf_3.01-2_armv5tel.ipk包。
如果你使用USB键盘的时候,机器会自动重新设定这些键位。但这样就会导致Zaurus的键位错乱。当USB键盘拔下来的时候,Zaurus的键位会自动恢复。
这个功能可以通过在/etc/hotplug下写个脚本检测USB键盘的插入和拔出,调用xmodmap来加载合适的键盘映射文件来实现。
你可以使用 xrandr命令在640x480和320x240模式之间进行切换. 它也可以用来旋转屏幕.
在我的键位设定中,你可以使用Home + 1和Super + 1将屏幕切换至320x240模式。Home + 2和Super + 2 将切换到640x480模式.
pdaXrom支持屏幕旋转。Openbox会检测横屏和竖屏模式并且自动旋转屏幕。但是当前运行的程序不会自动旋转方向,我写了一个脚本, rotateall, 可以自动旋转所有的应用程序窗口. 你可以修改rc.xml(/etc/xdg/openbox/rc.xml),把chkhinge替换成rotateall,这样屏幕旋转的时候就会自动调用rotateall脚本了。如果程序运行在最大化模式,效果最佳。如果你在命令行下运行rotateall,而没有真的旋转显示屏,屏幕将会向右旋转,而不是默认的向左。再运行一遍就会复原。
你可以通过xwd -display :0 > screendump.xwd命令来抓图.
你也可以通过 screencap脚本来实现类似原rom中的一键抓图(Ctrl+Alt+c)并播放声音的功能.
我写的这个screencap脚本在抓图的时候会自动播放click.wav文件. 如果你安装了ImageMagick, 它还会自动将xwd转成png格式.
pdaXrom默认使用openbox作为窗口管理器. openbox比较小,而且运行速度飞快。
你也可以使用其它的窗口管理器,比如xfce, blackbox, fluxbox, matchbox, icewm, kde和enlightment. 如果你有足够的空间,你甚至可以安装多个窗口管理器,并在它们中间自由切换.
默认的openbox窗口管理器使用matchbox的面板和任务栏程序来管理桌面.
有很多人使用KDE, 但是它很庞大,而且有点慢. 最简单的安装kde 3.5的方式就是使用kde的 squashfs镜像. 把它拷贝到内置硬盘里面,然后挂载到/usr/lib/kde/kde/kde3.5下面. 然后安装kdesymlink包即可.
你可以修改.xinitrc和startx来改变默认的窗口管理器。我的脚本可以根据不同的WM变量来决定运行哪一个窗口管理器.你也可以输入startxkde来启动kde.
在 /usr/share/applications下面的.desktop定义了应用程序菜单,而图标文件则位于 /usr/share/pixmaps下
正如前面所说, 默认的桌面是通过matchbox的桌面来管理的. 你可以通过菜单或者桌面面板来访问应用程序.
你也可以用rox filter来代替默认的matchbox桌面。rox filter整合了文件管理器和桌面管理器。把 /home/root/.xinitrc里面的:
eval "matchbox-desktop $MBBGND" 2>/dev/null
>/dev/null & |
改成:
eval "rox --pinboard=MYPINBOARD"
& |
并重启X即可.
你可以修改rc.xml中的Theme段来改变主题。主题在/usr/share/themes下. /usr/share/themes下的每个目录都包含了一个主题。你可以把Theme段中的name标签改为相应的主题名. 要让改变生效,你可以重启X,或者运行以下命令:
# openbox --replace 2>/dev/null
& |
Zaurus上很多应用程序的窗口太大了。通常你可以最大化它们来正常工作(按下Home+m或者 Super+m).
有些应用程序可以通过编辑配置文件来调整大小。还有一些应用程序的大小是固定的。我重编译了一些这样的应用程序,比如GQView和AbiWord.
绝大多数的GTK2程序的打开文件对话框都太大了。我重编译了GTK2,修改了FileChooser,使得它适合Zaurus的屏幕。你可以安装我更新的GTK2包,或者手工替换libgtk-2.0.so.0.600.2.
pdaXrom默认没有文件管理器,rox filer是一个好的选择。它的文件管理器界面很像konqueror.
如果你喜欢双面板的文件管理器, emelFM2也是不错的选择.
aterm是pdaXrom中的默认终端。它支持透明背景。要开启透明特性,把Xdefaults拷贝到/home/root并改名为 .Xdefaults
如果你需要输入或查看utf8编码的字符,请使用rxvt终端.
Systems Tools里面的Look & Feel工具里面有改换壁纸的选项,以及其它的一些显示选项。墙纸可以是任何png文件,但是分辨率640x480为佳。
但是如果你使用rox filter而不是matchbox的话,你可以右键单击桌面(按住Fn点击)来激活rox filter的属性页面,在其中改换壁纸。
你可以安装xscreensaver_4.24_armv5tel.ipk来实现屏保功能.
pdaXrom默认不像原rom有zaurus用户,所以所有程序都是以root身份运行的。如果你没有联网,这可能不会出什么问题,因为zaurus是一个单用户环境,只有你一个人使用它。但是如果你打算将你的Zaurus连接到其它机器或者网络上,建立一个用户帐号将会是个好主意。除此之外你也应该考虑装防火墙。你可以使用adduser命令来增加一个用户帐号,并且设置busybox的suid位,从而使普通用户也可以运行su命令,或者做其它的事情。
挂起和恢复功能有一些古怪。有些时候硬盘灯在亮着,但是挂起和恢复将会使硬盘灯熄灭。经常进行磁盘查错会对挂起恢复功能比较好。
此外,如果在xmms播放音乐的时候挂起,音频设备将会被锁定直到你重启机器。所以确保你在apm的suspend脚本里面加入esdctl suspend, 在resume脚本里面加入esdctl resume.
C3100/C1000有个新的开源SD/MMC驱动,mmc-driver_2.4.20_arm.ipk. 这个驱动在C3000也可以工作,但是目前不支持自动挂载,而且在任务栏上不能很好兼容。你可以使用/etc/sdcontrol [insert|eject]来挂载和卸载SD卡.
或者你可以使用Sharp的支持2GB+卡的全功能SD驱动。这个驱动[sdmmc-module_2.4.20_arm.ipk]在pdaXrom (beta1)可以工作,因为它们内核都是2.4.20。
/etc/fstab中的自动挂载在pdaXrom中不起作用。另外,默认只有两个loop设备可以使用。我写了一个automnt脚本来创建更多的loop设备,挂载cramfs/squashfs镜像,以及启动交换分区。我把/etc/rc.d/init.d/automnt链接到/etc/rc.d/rc5.d/S90mount和/etc/rc.d/rc6.d/K30unmount
C3000的pdaXrom默认没有安装telnet和ftp。busybox中并没有包括telnet,而二进制包的glic版本和pdaXrom的不兼容,所以没法运行。我从原rom中拷贝了ftp和telnet,它们可以在pdaXrom中运行。由于原rom中的telnet是busybox的一部分,我把它改名成了telnet,然后放在/bin下面。ftp放在/usr/bin下。
或者你可以安装 inetutils-clients_1.4.2_armv5tel.ipk,但是不确保稳定性。
pdaXrom的USB网络模块和原rom一样有两种模式,一种是作为USB磁盘来访问,另外一种是模拟成虚拟网卡。把更新过后的usbfunction.py拷贝到/usr/bin,你就可以选择共享SD卡,CF卡或是内置硬盘了。在Windows下共享内置硬盘的话你需要使用第三方软件,因为它是ext3格式的。
或者你可以将USB连接设置为网卡模式,然后你可以通过Samba来共享文件,或者访问其它的网络服务。如果你在电脑上设置了internet共享连接(Windows的连接共享或者Linux的iptables),你可以通过Zaurus来访问internet(详细信息见定制Sharp ROM的网络章节). 我写了一个脚本usbnet来自动配置usbd0界面,使用Windows的internet连接共享访问internet. (Internet Connection Sharing).
你需要安装Samba包,然后配置/etc/samba/smb.conf文件来开启网上邻居服务,共享文件。你可以通过adduser -H为Samba建立一个新用户,然后使用smbpasswd -L -a -e建立Samba用户. 然后输入 /etc/rc.d/init.d/samba stop/start来重启Samba.
你可以通过/etc/rc.d/init.d/samba来手工启动和停止Samba服务。这个脚本会有很多乱七八糟的提示,我修改了一下,并且加上了restart选项。
如果你开启了USB网络,你需要重启Samba服务使得它在新的网卡上可以监听。你可以修改/etc/hotplug/usbd.func使得Samba在USB网络模块加载之后自动重启。
中文或日文菜单可以通过安装中文或日文locale及相应的字体来实现。TTF字体需要放在/usr/X11/lib/X11/fonts/TTF下,pcf 字体需要放在/usr/X11/lib/X11/fonts/misc下。你还需要安装输入法。我装的是scim,scim-pinyin和scim-tables.
安装scim之后你需要运行 scim-setup来进行配置.
配置完成后键入scim -d即可启动scim. 在可以使用输入法的应用程序中使用Ctrl+space就可以将scim调出. AbiWord就可以使用scim:
每次你启动X的时候,你都需要启动scim. 你可以把它放进.xinitrc里面自动启动。
* 译者注:关于 pdaXrom 的本地化 / 中文化 的详细信息,可以参考 Wells Wang 的这篇文章:汉化 pdaXrom 1.1.0 beta3
pdaXrom上有很多字典软件. QBEdic是其中一个比较常用的字典,而且字典文件在原rom中也能使用(原rom中叫做ZBEDict). QBEDic上有一个完整的维基百科全书. 你可以把QBEDic的字典放在任何目录下,但默认是在/usr/share/bedic下. 你可以设置QBEDic的字典文件路径.
另一个比较常用的字典软件叫做stardict(星际译王),在Windows下也有相应版本。Stardict有很多字典文件,而且还可以安装声音包来阅读英文单词。Stardict的字典文件放在 /usr/share/stardict/dic, 声音文件放在/usr/share下。
我做了一个包括qbedic和stardict字典和声音文件的squashfs镜像. 因为字典文件很大,把它们压入squashfs镜像会比较省空间一点。此外我还做了一个linkdics.sh脚本,用来建立stardict所需要的链接.
Abiword是一个很好的字处理软件, 但是默认分辨率是800x600. 在C3000中, 我们可以通过修改/home/root/.AbiSuite/AbiWord.Profile把分辨率调整到640x480.
我编译了Abiword 2.4.4,并且修正了所有的窗口大小,现在Abiword的窗口大小没问题了。我还编译了一些文本导入/导出插件,现在它可以编辑StarOffice/OpenOffice的文件了。
安装aspell可以为abiword提供拼写检查功能.
Debian arm版本的OpenOffice 1.1.4可以在Zaurus上使用。但是它是在glibc 2.3环境下编译的,而Zaurus使用的是glibc 2.2.x. 通常的解决方案是安装PocketWorkstation (Debian arm),然后chroot进去,在PocketWorkstation下安装OpenOffice。如果你仅仅是为了使用OpenOffice的话,这样做很不方便并且很浪费空间,因为这两个东西加起来至少要512M空间。
作为替代方案,我做了cramefs和squashfs的镜像文件,含有最小版本的Debian和OpenOffice 1.1.4的预安装包。
你可以把镜像拷贝到硬盘或者SD/CF卡里面,然后挂载并运行zopenoffice-setup 脚本。
我也做了一个tgz文件格式的压缩包,你可以直接解压到ext2/ext3分区,然后运行zopenoffice-setup.
此外我也做了openoffice-cn.squashfs镜像,可以在Chinese Zauri上使用,包含了中文字体。
最后,你需要修改/usr/X11R6/bin/startx,在defaultserverargs里面去掉"-nolisten tcp"选项,并重启X。然后你就可以在菜单里面看到OpenOffice的图标了。或者你也可以在命令行里输入runoo来启动。
Quake和QuakeII都可以在pdaXrom上流畅运行,但是千万不要改变分辨率或其它显示设置,否则会出现白屏。
在Quake2中, 你可以把整个baseq2目录拷贝到 /home/root/.quake2下面
C3x00的pdaXrom feed里面有可以正常工作的mplayer包。有些人说Cacko里面的mplayer有bvdd和iwmmx优化,所以会快一点[mplayer-bvdd-iwmmxt_1.1.5-1_arm.ipk]. 但是C3x00 feed里面的mplayer[mplayer_1.0pre7try2_armv5tel.ipk]比cacko的要新,而且也有bvdd和iwmmx支持。
我把cacko的mplayer[mplayer-bvdd-iwmmxt_1.1.5-1_arm.ipk]重新打包成了 [mplayer-bvdd-iwmmxt_1.1.5-1_armv5tel.ipk],并且改了一下文件结构,把文件从/opt/QtPalmtop移到了/usr/share下,把mplayer改名成了mplayer2,你可以把两个版本都装一下,比较一下速度。
你可以通过下面的命令来播放视频:
# mplayer -vo bvdd -ac mad -ao ss -framedrop
-really-quiet file |
选项-vm开启全屏显示:
# mplayer -vo bvdd -ac mad -ao ss -framedrop
-really-quiet -vm file |
xmms的xmmsmplayer插件xmms可以用作mplayer的前端.
它默认使用-vo x11选项在gtk窗口中运行。你可以使用bvdd驱动来全屏运行。配置文件在 /usr/share/mplayer/mplayer.conf里面,包含如下的配置:
framedrop = yes cache = 1024 dr = yes af=resample=44100 |
你可以加上这两句来使用bvdd驱动全屏播放:
vo = bvdd vm = yes |
mplayer在退出全屏模式之后没有正确的刷新屏幕,要解决这个问题,你可以手动运行 xrandr -o normal来刷屏。或者你可以修改openbox的rc.xml文件,比如按 Home+5 来刷屏.
我编译了mplayer的最新版本1.0pre8,支持gmplayer。
Java可以通过安装javavm和类库来实现。使用这些包可以构建一个支持JRE 1.4.x的环境。但是由于版权问题,javavm不能叫做java,也不能保证100%的对java程序的兼容性。使用jamvm和类库,我可以在Zaurus上运行jedit.
另外,我通过jamvm和类库成功在firefox上使用java插件。你只需要安装gcjwebplugin-0.3.2_armv5tel.ipk,Firefox 1.5将会支持java。大部分的applet都可以运行,但是不是全部。
jamvm和类库包提供了一个java运行平台,但是如果你想开发java程序,你需要java编译器以及其它一些工具比如jar, javah, javap 和javadoc. Jikes是javac的一个替代品,还有一些你需要的类库包。
你也可以直接从java 1.4.x的JDK里面拷贝tools.jar文件。
你可以使用原生的gcc 3.4.5在Zaurus上编译程序。此外,有两个版本的gcc镜像,分别可以用来编译pdaXrom程序和原rom程序.
要使用gcc编译器,你首先需要安装下面的依赖包:
然后把zgcc-3.4.5.img放入/home/root. 它会自动在启动的时候挂载。你也可以手工挂载:
# mount -o loop /home/root/zgcc-3.4.5.img
/opt/native/arm/3.4.5-xscale-softvfp |
这是一个测试程序, 你可以建立一个叫做hello.c的文件并输入:
#include <stdio.h> int main() { printf("Hello World\n"); } |
然后运行下面的命令将会生成一个叫做 hello的可执行文件.
# gcc -o hello hello.c |
如果你要编译源码包,首先下载并解压源码的 tarball. 然后运行以下命令:
# ./configure # ./make |
你可以用strip命令来去除可执行文件中的无用符号,从而减少体积. 通常在Makefile文件里面有个DESTDIR的变量,改变它就可以改变安装目录.
# cd /data/build/pkg # newipk testapp # cd /data/build/src/testapp # make DESTDIR=/data/build/pkg/testapp/data install # cd /data/build/pkg # makeipk testapp |
这个例子使用ipk-tools来建立一个安装包. 更多的信息请见ipkg节.
你可以用gcc 3.4.5来编译命令行或图形界面的应用程序,但是你不能用它来编译内核或glibc.你需要用 gcc 2.95-2来编译内核.
我稍微修改了一下gcc的镜像,加了一些编译gnome程序用到的脚本和程序,然后把它压成了squashfs格式.
此外我还加进去了QT designer, assistant和linguists, 并且调整和重新编译了qtconfig, 所以它启动的时候不会再尺寸过大了。
我做了一个叫做ipktools[ipktools_0.2_armv5tel.ipk]的包来操作ipk文件,你可以通过它来生成你自己的安装包(ipk文件):
现在有两种ipk文件格式,一种使用tar.gz格式,另外一种使用Debian的deb格式。Zaurus的原ROM,Cacko以及pdaXrom使用tar.gz格式,也就是说,这种ipk实质上是一个tar.gz的压缩包,里面有控制文件。你可以在里面找到三个文件,一个是debian-binaries文件,里面只含有2.0这几个字。另外还有两个.tar.gz文件:control.tar.gz和data.tar.gz。control.tar.gz文件里面有一个文本文件control,其中是这个包的一些信息,比如作者,依赖信息,描述等等,还有一些可选的shell脚本来执行安装前后的配置工作。data.tar.gz文件包含所有打包的文件和目录结构。OpenZaurus和PocketWorkstation (Debian)使用deb格式的ipk文件,你需要用ar命令来解压。
使用下面的命令来解压ipk文件:
# unpackipk somefile.ipk |
要创建你自己的ipk包,首先使用下面的命令来创建ipk目录结构:
# newipk myproject |
当你把所有文件都添加好了,control文件也写好之后,使用下面的命令来创建ipk文件:
# makeipk myproject |
如果你想把.deb或者OZ的ipk文件转换成pdaXrom的ipk,你需要首先用 unpackipk解压, 然后使用perl脚本deb2ipk来转换。或者你也可以使用ar工具。
经常备份系统是个好习惯. 最简单的备份方式就是通过tar和gzip把所有文件打包. 我写了一个脚本来做这件事.
免责声明: 本站所包含的信息仅供参考。本站对于本站所提供的所有信息或指令,不作任何保证。你可以把本站的信息当作操作指南使用,但是如果你的系统或者数据资料产生了问题,请 不要追究我的责任。请自行承担按照本站提供的信息操作所产生的风险,我并不会承担任何的责任。