9. 问题和故障排除

本章节旨在为在 JavaStations 上启用 Linux 时经常遇到和偶尔遇到的问题提供解决方案。

9.1. 启动时,出现消息 “加载的文件似乎不可执行。” 为什么?

在具有较旧 OpenBoot 2.3 版本且未设置为使用 PROLL 的系统上,当尝试启动不是 AOUT 格式的内核镜像时,您将收到此消息。请务必运行elftoaout在您的内核镜像上,如“内核构建”章节中所述。

9.2. 启动时,出现消息 “没有 a.out magic” 并停止启动。为什么?

在设置为使用 PROLL 的系统上,当尝试启动不是 AOUT 格式的内核镜像时,您将看到此消息。请务必运行elftoaout在您的内核镜像上,如“内核构建”章节中所述。

9.3. 我尝试启动 Krups,但出现了 JavaOS。我甚至没有 JavaOS!

这很可能意味着您安装了闪存 SIMM,并且闪存 SIMM 上加载了 JavaOS。移除 SIMM,问题应该会消失。

9.4. 无法在我的 JavaStation 上启动大于 10 MB “嵌入式根” 镜像。为什么?

使用 “嵌入式根” 启动镜像选项时,存在 8 MB 的已知限制。

造成这种情况的原因是当前版本的 PROLL 软件,它仅映射 8 MB 的低内存。任何更大的内存都需要为其添加内存库支持。

如果需要,此限制可以由某人修复,因为 PROLL 的源代码已根据通用公共许可证 (GPL) 的条款发布。

因此,实际上,嵌入式镜像大小限制实际上是 8 MB,而不是 10 MB。如果 10 MB 以某种方式对您有效,那纯粹是“运气”!

9.5. 启动后,输入任何内容都会产生乱码字符。为什么?

这有几种可能性。其中包括

  1. 您为 tty0 设置了不正确的设备号。

  2. 加载的 “键盘映射表” 不正确。如果您使用键盘映射表程序,请确保使用 “sun” 而不是 “PC”。查找键盘映射表配置文件(如果存在)。

9.6. 在到 Solaris 服务器的 X 会话中,字体服务器 “xfs” 崩溃。为什么?

如果您执行到 Solaris 服务器的 X 会话,并且发现您的会话不再打开新窗口,则很可能是 Solaris 主机上的字体服务器已崩溃。这是 Solaris 2.6 和 2.7 中的一个已知错误,当您运行大约 2 打 X 终端 会话时会出现此问题。

解决方法是将字体服务器移动到不同的操作系统,并将您的 JavaStations 指向那里,或者将您的 Solaris 升级到 2.7 11/99 维护版本或 Solaris 8,这两者(显然)都修复了此问题。

9.7. 执行到 Solaris 服务器的间接 XDMCP 导致会话登录失败。为什么?

恭喜您!您可能在 Solaris 7 服务器上安装了补丁编号 107180-12 到 107180-19 之一。您需要升级到 107180-20 或更高版本以修复此问题。

我(您的 HOWTO 指南作者)在 1999 年 11 月向 Sun 报告了此问题,当时我被告知没有计划进行修复,因为我使用的是 “不支持的配置。”。别介意客户端是 Sun 自己制造的硬件。也无需在意间接 XDMCP 查询本身就是一个标准,但被 Sun 破坏了。在 2000 年 1 月下旬的一次回访电话中,我得知我之前的通话记录不存在,但修复程序现在正在进行中。修复程序最终在 2000 年 4 月发布,距离首次报告问题过去了五个月。考虑到在有缺陷的 XDMCP 期间对该补丁的修订处理了修复系统安全问题,我们被迫运行较旧的不安全软件五个月,同时等待修复一个本应立即修补的问题。

故事的寓意:针对未处于生产模式的升级服务器测试您的 JavaStation 配置。

如果您遇到与这些有缺陷的 Solaris 补丁无关的 XDMCP 问题,则可能是新问题,请报告它。

9.8. TFTPd 配置在 SUSE 6.3 上不起作用。为什么?

这是在本文档首次发布后由用户报告的。

在 SUSE 6.3 中,使用来自 netkit rpm 的 'a' 包的 tftpd,您必须确保您的 /etc/inetd.conf 中的 tftpd 行具有 -s 标志。否则,您需要指定完整路径。

此外,没有必要以 root 身份运行 tftpd,因此 SUSE 6.3 上 tftpd 的建议用户名和组是 'nobody' 和 'nogroup'

尚不清楚较新版本的 SUSE 是否需要这些更改。

9.9. 关于 RARP:是否需要?

对于 Krups Espresso 型号和最新的 PROLL 软件,不需要 RARPRARP 对于 Mr. Coffee 是必需的。

“服务器配置”章节解释了如何在 2.2.x 系统上设置内核级 RARP

在内核版本为 2.3.x/2.4.x 的服务器上,内核级 RARP 支持已被移除。ZLS 持有来自 SuSE 的 Andi Klein 的 ANK 用户空间 RARP 版本,该版本适用于 Linux/SPARC。可从以下网址获取: http://people.redhat.com/zaitcev/linux/rarpd-ap1.tar.bz2。那时要使用的命令是rarpd-ank -e eth0“-e” 使其忽略 /tftpboot 检查,如果您在防火墙后面,则需要 “eth0”

9.10. 是否可以在 Espresso 型号上使用智能卡读卡器?

目前不支持此功能,但读卡器遵循 ISO 标准 (ISO 7816-3)。在 Espresso 上,如果您查看 PROLL,则在 “eeprom.c” 中有 GPIO 智能卡数据/时钟的定义。因此,从技术上讲,程序员应该能够使智能卡插槽运行起来。

Dover 和 Espresso 上的智能卡读卡器是否等效尚不清楚。

9.11. 是否可以使用 Solaris DHCP 服务器代替 ISC

是的,这是可能的。早期的 ISC 守护进程在处理 JavaStations 的 1514 字节请求时存在问题,而 Solaris 服务器能够毫无问题地处理它们。此外,JavaOS 的前用户可能已经激活了他们的 Solaris DHCP 服务器,并希望将所有内容保留在一台机器上。

以下是如何配置它

首先,填写您的 /var/dhcp/“networks” 文件,用以太网到 IP 信息和适当的最短租约时间填充它。

# This example uses "infinite" leastime
#
0108002081C2AE 03 192.168.128.1  192.168.128.100 -1 java01  # JavaStation
010800208E4CF6 03 192.168.128.2  192.168.128.100 -1 java02  # JavaStation

接下来,填写您的 /var/dhcp/dhcptab 文件,条目类似于

##
# First, some network info
#
Locale   m  :UTCoffst=21600:
www  m  :Include=Locale:Timeserv=192.168.128.100:DNSdmain=my.own.net:DNSserv=192.168.128.100:
192.168.128.0  m  :Broadcst=192.168.128.255:Subnet=255.255.255.0:MTU=1500:BootSrvA=192.168.128.100:Router=192.168.128.101:NISdmain=my.own.net:NISservs=192.168.128.100:
#
#  note: BootServA can point to a different TFTP server to get the kernel image
#        off of.
#
#
##
# Now we define the JavaStation TFTPboot parameters
#
SUNW.Linux m :Include=www:JOSchksm=0x155dbf97:Rootpath=/tftpboot:BootFile=proll.mrcoffee:BootSrvA=192.168.128.100:TFTPsrvN=lnxserv:
SUNW.Linux.Krups m :Include=www:Rootpath=/tftpboot:BootFile=proll.krups:BootSrvA=192.168.128.100:TFTPsrvN=lnxserv:
#
#
#  note: different classes are defined for the different PROLL images.
#
##
# Lastly, we list our hosts and which boot class each one gets.
java01  m  :LeaseTim=-1:Include=SUNW.Linux:
java02  m  :LeaseTim=-1:Include=SUNW.Linux.Krups:
#
#
#
###

9.12. 是否可以在像这样的无盘启动中将参数传递给 “/sbin/init”

PROLL 出厂时禁用了 DHCP 选项,但可以更改。然后您可以执行类似 “/tftpboot/0A0A0000.ARGS” 的操作来获取这些参数。

如果您从闪存启动,PROLL 会获取 SILO 选项(其中 SILO 是 > 版本 0.9.6,PROLL 是 >= 版本 11)

9.13. 在 JavaStation 上启用 X

这是一个非常常见的问题。

JavaStation 上启用 X 是可能的。

首先,请确保您已启用内核配置中适当的帧缓冲设备,如“内核构建”章节中所述。

接下来,您将需要使用通用的 Sun 帧缓冲 X 服务器 “XF86Config” 文件。您可以自己构建它,或者您可以尝试某人的预构建二进制文件,例如“文件系统构建”章节中指向的示例。

据报告,与 XFree 4 一致的最新版本的帧缓冲服务器无法工作。请使用基于 XFree 3.3 的旧版本,或修复新版本并成为数千人的英雄。

9.14. 是否有邮件列表帮助?

有两个邮件列表专门用于在基于 SPARC 处理器 的机器(如 JavaStations)上运行 Linux

第一个邮件列表是 VGER 上的 sparclinux 列表,地址为。您应该首先订阅它,方法是发送消息至,主题和正文行为 “subscribe sparclinux <您的电子邮件地址>”。您可以省略您的电子邮件地址,但如果您在您的站点有多个有效地址,则最好将其添加进去。

VGER sparclinux 邮件列表的存档保存在: http://www.progressive-comp.com/Lists/?l=linux-sparc&r=1&w=2"

第二个邮件列表是 Debian 项目的 debian-sparc 列表,地址为。您应该首先订阅它,方法是发送消息至,主题和正文行为 “subscribe <您的电子邮件地址>”。您可以省略您的电子邮件地址,但如果您在您的站点有多个有效地址,则最好将其添加进去。

由于许多 SPARC 内核黑客运行 Debian,因此订阅这两个列表都很有帮助。

请勿向任何一个列表报告有关本文档的问题,而是将它们发送至。此外,请使用列表存档。JavaStations 在 Linux 上已获得支持一段时间了,您未在本文档中找到答案的任何问题很可能在存档中都有答案。

9.15. 是否可以从板载闪存启动 JavaStation?

可以从闪存启动 JavaStation-NC,但这目前需要太多的神秘知识才能推荐。即使您确实走了这条路,一个问题是闪存只能以只读方式挂载。这对于许多事情来说都是一个问题,例如 X,它需要写入套接字文件。将需要混合 ramdisk/闪存解决方案。

9.16. “Piggyback” 也适用于 x86 吗?

随着 JavaStations 出色的嵌入式根解决方案的出现,问题出现了,是否可以为标准的 x86 硬件做类似的事情。虽然有一些 x86 网卡带有启动 ROM,但您还需要 piggyback 程序来将所有内容放在一起。根据 Eric Brower 的说法,这目前是不可能的,因为 piggyback 程序查找特定于 SPARC 平台的标头。(2000 年 4 月 28 日)

Robert Thornburrow发送了一个 piggyback 版本,该版本可在 Linux/x86 和 Solaris 等非 SPARCLinux 架构上运行。这自动化了创建嵌入式根镜像的任务。您可以从以下网址获取他更新的 piggyback 包: http://dubinski-family.org/~jshowto/Files/tools/piggyback_nonsparc.tar.gz

9.17. 我安装了新内存,但现在它无法启动。为什么?

您是否碰巧使用了 EDO 内存?Mr. Coffee 仅使用快速页面内存,而不是 EDO。

9.18. 既然 JavaStations 可以与 Linux 一起工作,那么其他自由操作系统呢?

JavaStation 支持现在也适用于 NetBSD 操作系统以及 Linux。

9.19. Linux 2.4 内核是否有效?最新有效版本是什么?

截至今日(2001 年 10 月 31 日),当前稳定 Linux 内核版本为 2.4.13。稳定 2.4 系列中的内核应该与 JavaStations 一起工作,但它们可能对您不起作用的原因有几个。有关详细信息,请查看“内核构建”章节中关于受支持内核的条目。

9.20. 我可以在非 SPARC 机器上编译内核吗?

从技术上讲,应该可以在非 Sun 工作站(例如 PC)上编译内核。目前还没有任何人这样做过的报告,但如果您想这样做,首先要查看的地方是 GCC 交叉编译 HOWTO。

当然,如果您的文件系统镜像支持,您也可以在工作的 JavaStation 上编译新内核。

9.21. 我可以像其他 Sun 设备一样获得 ok> 提示符吗?

当您向 JavaStation 发送中断信号时,会发生一件奇怪的事情:它会重置,而不是像其他 Sun 设备一样中断到 openboot prom 提示符。这可以在 Krups 上通过设置跳线 J1300,引脚 7-8 来更改。这样做可以通过 PS/2 键盘上的 Ctrl-Alt-Break 或通过串行终端的中断来获得 OBP ok 提示符。

您也可以在 Dover 设备上获得 ok 提示符,但这需要硬件修复。要在此设备上执行此操作,您必须在 R362 位置(FDD 连接器附近)焊接一个 220K 欧姆电阻。

9.22. 我的键盘无法识别。我该怎么办?

虽然不太可能,但您的 javastation 可能设置为错误的输入设备模式。要纠正此问题,您需要启用 openboot prom 提示符(如本 HOWTO 指南的其他地方所述),然后相应地设置 ‘input-device’ 指令。或者,正如一位贡献者在发现 OBP 设置之前所做的那样,在您的 JavaStation 上加载 NetBSD,并在那里运行 eeprom 命令。复杂,但它也有效。

9.23. Proll 报告 “TFTP: ARP 超时”。为什么?

据报告,当 PROLL 查找的文件不可用时,就会发生这种情况。在重试之前,请仔细检查您的配置。

9.24. 为什么我无法在 Krups 上获得真彩色?

Krups 上使用 Linux 的真彩色有点争议。有些人认为这是可能的,而另一些人则不认为。

首先,Krups 被列为具有 IGS C1682 帧缓冲,而 Espresso 具有 IGS C2000 芯片。

根据一位内核黑客的早期报告,Krups 不支持真彩色的原因是缺少内核对 Cyber2000 芯片的支持。也许 Espresso 的 C2000 是 ‘Cyber2000’?也许 C2000 接近于 C1682。ZLS 网站上的注释似乎指向这一点。

最近的 2.4.x 系列内核有一个标记为 ‘Cyber2000’ 的条目。也许这有效?一位贡献者尝试过但失败了。

好的,有一个名为 ‘fbset’ 的用户空间实用程序可以更改帧缓冲的模式。那有效吗?一位贡献者说没有。

在 sparclinux 存档中,有一位用户使用 24 位 TCX 帧缓冲并取得成功的报告。但 TCX 芯片在 Mr. Coffee 中,而不是 Krups 中,并且 Mr. Coffee 上的板载 TCX 最大为 8 位,而不是 24 位。

那么 Krups 上 24 位色彩的真实情况是什么?在其他人尝试并说出来之前,我们不知道。

9.25. 我按照本 HOWTO 指南操作,但我的 Dover 无法工作。为什么?

Dover 不是基于 SPARC 的 JavaStation,本 HOWTO 指南是针对后者的。您必须使用 x86 程序才能使其正常工作。您确实阅读了 Dover 介绍部分中的警告,不是吗?

我收到了多份关于 Dover 设备内核加载失败的报告。随着更多信息的到来,本 HOWTO 指南将会介绍它。

9.26. 帧缓冲是否可以在串行控制台初始化后加载?

如果您通过串行控制台启动 JavaStation,则帧缓冲控制台将完全禁用。是否有任何方法可以在启动后激活帧缓冲控制台?(在 Sparclinux 邮件列表 2001-05-11 上提出的问题)。

据我们所知,没有。

9.27. 我真的需要一个完整的开箱即用解决方案,马上!

那你最好忙起来。

9.28. 您没有回答我的问题。

那就问吧。电邮我会尽力帮忙。如果我无法提供帮助,我会将您转到邮件列表或合适的联系人。