您可能会认为 Kuro Box 好得令人难以置信。只需要其他开发板十分之一的价格就可以得到 一块 PowerPC® 开发板?不过,价格并不是那么不可思议。它比 x86 SBC 稍微便宜一些, 但不太多。下面,我们进入正题:这是一份关于我得到一个 Kuro Box 并进行试用后的报告。我们得知, 其名称的含义是“expert box”;定位于有经验的用户。
打开邮寄包裹,里面露出了机箱。包括一个小架子(如果想把机箱架起来的话)、几个螺丝、一张 CD、 文档,以及机箱本身。Kuro Box 是一个小的塑料机箱,上面有一些小区域安置了用于诊断的 LED 灯 。在背面是一根电源线,一个以太网端口,以及一个 USB 端口。那是为连接器 准备的。它有一个重置按钮,一个开关(我认为它将以太网端口转换为上行端口), 以及一个电源按钮(在正面)。机器的配置规格非常简单:200Mhz PowerPC 处理器,64MB 内存。 (哪种 PowerPC?它是 Freescale® 8241,有时称为“G2”,有几分类似 PowerPC 603e。)
文档有些出人意料。那是一张折叠的纸,其中有说明。。。日文的!在安装完硬件后,通过 Windows® 机器运行安装程序是它所支持的唯一途径。不过,为了弄明白,您不得不访问其 Web 站点(除非您懂日语)。 (实际上,聪明的读者可能会从手册中的 Windows 版本列表以及说明里的“CD(squiggle)Setup.exe”文本 中猜到这一点。)
这个美国发行商似乎正在推行非常普通的日文工具包,因而在他们的 Web 站点上 提供了支持(请参阅 参考资料)。
如果没有安装硬盘驱动器,则机器将不能引导起来,而机箱中不包括硬盘。 它使用标准的 3.5 英寸驱动器,这是当前随处都可以找到的那种型号。我使用的是一块闲置的 40GB 驱动器,因为我觉得这就足够了。确实是这样。
用户可能会相当迷惑。这个“Setup”程序会在我的 Windows 机器上做什么?重新格式化硬盘,然后即可转换它?询问要为哪个硬盘驱动器分区?不是。它们的行为更为有趣。 板载的闪存 ROM 用来以非常直接的模式引导机器,它将查找 DHCP,或者自己分配一个 IP 地址。 引导起来后,安装程序可以扫描期望使用它的网络,并利用无需人工干预的、完全开放的安装程序去开 始规划它,具体包括分区和格式化硬盘,以及在其上加载一个最小软件安装。
一旦安装程序在运行,则机器应该(理论上)通过一个可能被更新的闪存和一个可加载并使用 的根文件系统重新引导起来。实际上,我第一次运行它时,它没有正确完成此步骤;我不知道原因。 第二次我重新运行它时,它运转正常。
这是运行安装程序的一种非常有趣的途径。它特别定位于生成一个终端用户工具;
在整个安装过程中,您不能进行任何控制。不喜欢它们的分区模式?忍吧。想要加载
其他一些东西?您需要以后再登录进去才能完成。默认的参数是简单的:您会得到 1GB 根文件系统,
127MB 交换分区,硬盘的其余部分挂载为
/mnt,其中准备了一个
(
/mnt/share)目录用作共享。
软件的安装在某些方面相当简化:没有开发工具,没有 ssh 后台进程(所有工作都通过完全开放的
telnet 来完成)。您以用户
root 身份 telnet 进入(口令是
kuro)。(显然,您应该马上更改这个口令。)
在开始时机器就通过 AppleTalk 和 Samba 共享了所安装的硬盘的大部分,并运行一个 Web 服务器
界面。随便提一句,当您 telnet 进入机器并修改口令时,不要使用真正的口令;使用一个与您实际使用
的口令毫无关系的假口令,这样,当您设置好 ssh,并想以非纯文本方式发送口令时,您不会有任何损失。
Web 服务器界面也是日文的。下面将讨论到 Buffalo Technology 的优秀工作团队所发布的一组批处理文件, 参见 运行英文 Web 服务器。
首先要安装的是一个全都是二进制程序的大压缩文件。不过,Kuro Box 没有 unzip 工具。
(它有
gzip,但是只处理压缩存档文件中的第一个文件。)
所以,您必须在另外一个系统中解压缩那个文件,再通过某种方式拷贝二进制文件。我通过网络
挂载那个文件系统,将文件拷贝过去,非常顺利。然后,telnet 进入并解出它们。它们是
标准的 gzipped tar 文件,
gzip 和
tar
都可以解开。
其中一个二进制程序是 ssh。实际上,您现在就可以设置 sshd。非常简单;只需要向相关的
rc.d 目录添加一个链接。
清单 1. 启用 ssh
root@KURO-BOX:/#
cd /etc/rc.d/rc2.d
root@KURO-BOX:/etc/rc.d/rc2.d#
ln -s ../init.d/ssh S30ssh
root@KURO-BOX:/etc/rc.d/rc2.d#
sh S30ssh start
|
当然,这还不能实际使用。没有预先生成的主机密钥,而且
ssh
脚本本身默认将不会生成一个新的。编辑那个脚本,除去第 14 行
AUTOKEYGEN=yes
文本前的
# 字符。现在重试。
如果您和我一样,那么能够使用 ssh 来访问机器将使您更为惬意。现在是将 root 口令修改得 更为合理的好时机。我不是说要关闭 telnet 访问,而是还不太信任那台机器。现在,将其保持在 私有网络中。
出乎意料的是,仍然没有 unzip 工具!不过,现在您已经拥有了一个编译器,可以构建您自己的解压缩工具。 这里是完成此任务的一组说明:
- 创建一个工作目录,名为
/mnt/unzip。切换到那个目录。 - 从 info-zip 的 FTP 站点下载 unzip 的源文件。撰写本文时,URL 是 <ftp://ftp.info-zip.org/pub/infozip/src/unzip551.tar.gz>。
- 解包那个存档文件。将创建一个名为“unzip-5.51”的目录。切换到那个目录。
- 通过拷贝 Unix 专用的 Makefile 来配置 UNIX® 构建。命令是
mv unix/Makefile。 - 运行 make。对 Linux 而言,好像
make generic可以正确完成。 - 安装软件。
make install将把其完全安装到/usr/local。由于那个目录在您默认的 path 中,所以就完成了!
这基于一个名为
KuroBoxWWW.zip 的文件,在 Buffalo 的 Web 网页
上可以找到(请参阅
参考资料 中的下载网页)。首先,您必须安装一个 unzip
程序。这将让您得到一个名为
WWW without htpasswd 的目录,这个
名字反映出他们决定不为 root 目录使用
.htpasswd 文件。
不过,
cgi-bin 目录仍保持有那个文件的原有拷贝,所以,如果
您修改了那个文件,则不得不重新设置您的口令。
有其他一些问题。所有解压缩得到的文件模式都是 666,非常不幸,因为这缺少可执行权限。
并且,这些文件还都是 DOS 格式的文件,包括回车。虽然 Perl 足够智能,可以检测到
并很好地忽略它们,但是 Linux 内核不能,尝试找到一个名为
perl^M 的
程序来运行它们。
如果您是在解出文件之前阅读本文,那么只需要使用
unzip -a。如果您正要处理一个 ^Ms 的目录(或者忘记了使用
-a 选项),这里是事后补救的方法:
清单 2. 修订 cgi-bin 目录
root@KURO-BOX:/www/cgi-bin#
for i in *
>
do
>
tr -d '\015' < $i > $i.new; mv $i.new $i
>
done
root@KURO-BOX:/www/cgi-bin#
chmod 755 *.cgi *.pl
|
完成后,您就可以通过已经提供的 CGI 脚本来访问前端页面并到处浏览。您可能需要设置 一个 htpasswd:
清单 3. 指派一个 Web 服务器口令
root@KURO-BOX:/#
cd www
root@KURO-BOX:/www#
htpasswd -b .htpasswd root
newpass
Updating password for user root
root@KURO-BOX:/www#
cd cgi-bin
root@KURO-BOX:/www/cgi-bin#
htpasswd -b .htpasswd root
newpass
Updating password for user root
|
运行完这些指令后,我发现 Web 服务器目录已经是所有人都可写了。此外,Web 服务器的配置文件
指定为一个 CGI 目录
/cgi-bin*/*。结果,当我忘记了已经设置的
root 口令时,通过创建一个新目录
/www/cgi-bin2/ 并将脚本放置
到那里,我就能够创建由一个 root 来运行的 CGI 脚本。原始的 CGI 目录不是所有人都可写的,
所以古怪的配置文件也不会带来影响。
注意,通过 Web 界面对“administrative password”进行修改不会影响 root shell 帐号, 只是影响 htpasswd 文件。
特别有趣的是,系统认为它拥有一对 16550 串行端口。不幸的是,这些还远远不能连线使用。
我与某个曾经这样做的人聊过,他将机器拆开,把 USB 拆换为串行适配器来将 Kuro Box
的 3.3 伏电压串行信号反向连接到使用这些信号的另一个芯片 —— 并将缺少的电阻器
焊接到 Kuro Box 的主板上。这可能比大部分人所期望的有点更为“专业”,不过,对那些
想要观察内核的引导,或者登录到串行控制台的人来说,这是一个建立并运行
ttyS0 的途径。令人费解的是,即使缺少使此机器具有标准串行端口
出口所需要的大部分硬件。与之相关的
getty 已经配置并运行,
进行扩展的真正关键是背面的 USB 端口。那只一个端口,但是它是 USB 2,所以速度确实很快。 Kuro Box 附带的驱动模块选择相当有限,但是您可能会需要的那些都有:一些串行端口装置以及 标准质量存储驱动器。所以,如果您不能在机箱中安装一个足够大的硬盘驱动器,您总是可以 添加一个外部驱动器。
另外一件事情:没有安装
dmesg 命令,所以,要想知道
系统是否识别出了插入的指定设备,必须去浏览
/var/log/messages 文件。
Kuro Box 是与 LinkStation 网络附加存储(network attached storage,NAS)设备相同的硬件 (请参阅 参考资料)。这表现在几个方面。看起来可能有些奇怪的硬件 选择完全适合那个市场。这意味着,Kuro Box 与 PowerPC 嵌入式系统供应商 提供的用于 PowerPC 开发的评估板(evaluation board)不非常类似。
可以通过一些途径来考虑这一点。如果您熟悉 x86 嵌入式系统市场,在那里 200 美元左右的计算机都 拥有标准的串行端口,一个闪存存储器插槽,或许不会有太多其他的,那么 Kuro Box 看起来额外受 限 —— 尤其是缺少串行端口(假定硬件几乎是全的)。如果您熟悉 PowerPC 嵌入式系统市场,在那 里供应商通常为一块评价板开价 1500 美元,那么削减掉一些部分也就不会那么令人惊奇了。
使用标准 IDE 硬盘驱动器的选项无疑是 Kuro Box 传统的一个部分,如同黑盒网络存储设备。同样, 您会认为定位于零售的机箱应该具备板载闪存存储器:大部分面向开发人员的系统应该有 CF 插槽,让您可以 在另一个系统上重置闪存(请参阅 参考资料 以深入了解 Kuro 闪存的重置)。
机箱有一些优点。在一个全部由 SBC 组成的世界中,有松散的电源线,巨大的“wall wart”电源, 复杂的电源要求,以及裸露的芯片,最好有一个机箱,这样,一旦装入了硬盘驱动器,它使用标准 的插座(甚至是两个尖头的那种,用于老房子之中的)就可以正常工作。将要发表的 developerWorks 系列文章将评述一个使用 Kuro 作为开发平台的项目,给出了所有可能随之而来的好运与坏运 —— 所以,请当心。
同时,懂得日文的人可以得到更为完整的文档,已经完成一些非常好的资料。当尝试
查找一些关于此机箱某些部分的文档时,我找到了 NetBSD 内核在其中之一上引导时的
dmesg 输出。
一个嵌入式系统可能不具备图形显示,但是通常可以使用某种类型的文本控制台。 在大量昂贵的但通常没有用处的基准中,我已经找到一个可供选择的基准。它通常 没有用处,但是非常便宜:Zork Test。Zork 是一个可以在所有地方运行的游戏,从 C64 到 VAX。这是通过一个为 Z-machine 的虚拟机来实现的。这个简单的虚拟机支持 虚拟内存访问,所以,比 C64 的著名的 64K 内存更大的游戏也可以运行。它提供了 很多抽象特性,这些特性可以较好地而且方便地映射到最新的嵌入式系统(参见侧栏 关于:Zork 以深入了解 Zork 和 Z-machine)。
为了运行这个测试,您需要一个 Z-machine 解释器:我选择的是 Frotz(参见
关于:Zork)。除了占资源少之外(small-footprint),
Frotz 还进行一种标准化的最终测试,测试系统的编程工具包是否是足够完全的。
这是一个很好地快速而完全的检查:稳定的 C 编译器,
<curses.h> 实现,等等。
可以通过其维护者的 Web 页面下载 Frotz(请参阅
参考资料)。
得到它后,解开它(它是一个普通的 gzipped tar 文件),然后只需要运行
make
来构建它。
make install 将把它方便地安装到
/usr/local
之中。现在,所有您需要的就是一个故事文件,让它来解释。我使用的是现在 Activision 允许人们免费
地拷贝的 Zork I —— 在参考资料中也可以找到指向它的链接。得到故事文件后,只需要运行
frotz Zork1.z5,
就可以开始享受了!(我建议您首先检查邮箱。)
您或许会期望,由于 Kuro 附带了一个 Linux 环境,它将出色地通过 Zork Test。 的的确确是这样的(但不一定永远这样,这些事情明白得早一些比晚了更好)。 这里是 Kuro 的测试结果:
清单 4. Frotz 输出
seebs@KURO-BOX:~$ frotz Zork1.z5
[...]
ZORK I: The Great Underground Empire
Copyright (c) 1981, 1982, 1983 Infocom, Inc. All rights reserved.
ZORK is a registered trademark of Infocom, Inc.
Revision 88 / Serial number 840726
West of House
You are standing in an open field west of a white house, with a boarded front
door.
There is a small mailbox here.
>
|
- 您可以参阅本文在 developerWorks 全球站点上的
英文原文。
-
PenguinPPC 上的一篇关于 Kuro Box 的早期概述给出
了一些历史背景。
-
Tom 的 Networking 也
评论了 Kuro Box。
-
毫无疑问,在
http://kurobox.com/ 可以找到美国发行商的官方
主页。Buffalo 也销售普通的老的
LinkStation
NAS 设备。
- 查阅 Buffalo Technology 的
下载网页。
-
官方站点上还有
开发者论坛,这个论坛非常活跃,
涵盖了很多额外资料。
-
开发者论坛给出了
执行手工安装
的说明。
-
行结束符的转换是常见的问题根源,不过在网络上有免费的
dos2unix 转换软件。
-
访问 Wikipedia 这一免费的百科全书,以便深入了解
Zork 和
Infocom。
-
人们现在还在编写 Z-machine 游戏。访问
Interactive Fiction Archive 以了解更多信息
(注:Interactive Fiction 经常被称作“text adventures”,不过不要让 IF 迷知道是我们告诉您的!)
-
您有想与 Power Architecture 专区读者分享的经验吗?欢迎 IBM 内部以及非 IBM 的作者
提交关于 Power Architecture 各个方面的文章。查看
Power
Architecture author FAQ 以了解更多。
-
您是否有关于本文或者常规 Power Archetecture 技术的问题或者见解?请将它发布到
Power
Architecture 技术论坛 中,或者
给编辑发信。
-
当您
加入 Power Architecture 社区 时,请订阅 Power Architecture Community Newsletter。
-
在
developerWorks Power
Architecture 编辑的 blog 中记载了关于 Power 的所有内容,这只是众多
developerWorks blogs 之一。
-
在
developerWorks Power
Architecture 技术专区 中可以找到更多关于 Power Architecture 技术及所有相关内容
的更多文章和参考资料。
-
下载
IBM PowerPC 405 Evaluation Kit 以便在仿真的环境中演示 SoC,或者只是研究得到完全许可版本的
Power Architecture 技术。在 developerWorks Power Architecture 技术专区的
下载部分 列出了这个
以及其他极好的 Power Architecture 相关下载。

Peter Seebach 是一名专注于嵌入式开发系统的自由作家,他希望在出现 足够多这样的系统并占据主导地位时,不会对他的工作造成革命性影响。您可以通过 developerworks@seebs.plethora.net 与他联系。