最佳技术支持
我的系统在几个月内运行良好,但现在我遇到了一些问题。当使用 X 时,系统突然冻结。键盘和鼠标都没有响应。我无法 telnet 到我的电脑——什么都不起作用。日志文件什么也没说——就像什么都没发生一样——但我不得不重启我的电脑,并希望 fsck 可以修复一切。这种情况大约每周发生一次,我一点也不知道为什么。该系统是 Red Hat 6 开箱即用,没有更新。尝试了另一个视频适配器,但没有任何改变。硬件:AMD-233, 64MB, ATI 3d Rage Pro, 3c509, Seagate 32。—Tony Söderudd, tsoderud@cc.hut.fi
很难说问题是什么。一个可能的原因是 X 中的错误;尝试升级到最新的稳定版 XFree86(在我写这篇文章时是 3.3.5)。另一种可能性是某种硬件/资源冲突,尽管你说这个问题平均每周只发生一次,但可能性不大。最后一种选择只是硬件坏了,例如 CPU 过热(风扇坏了?)或内存不稳定。我认为这是最可能的替代方案,而冻结实际上与 X 完全无关。请参阅 http://www.bitwizard.nl/sig11/。—Marc Merlin, merlin@varesearch.com
在过去的几年里,我的电脑一直是互联网上的一个小服务器。它的连接是通过调制解调器。第一年左右我没有遇到任何问题。1999 年 4 月 16 日,我的 /var/adm/messages 文件被垃圾填满。几周后,我确定电话公司来到了错误的住宅,并在我的调制解调器连接时“摆弄”了我的电话线。从那时起,我的调制解调器会随机挂断,而不会断开载波。Linux 仍然认为它已连接到互联网,即 route, ifconfig... 仍然显示连接,即使实际上没有连接。这种情况并非每次调制解调器断开连接时都会发生。有时一天会发生几次;有时一个月只发生一次。一旦发生,就无法修复,只能物理地关闭调制解调器然后再打开。我尝试更换所有硬件:调制解调器、调制解调器电缆、串口、电话线、电话插孔。我还尝试编译新的内核和 pppd。没有任何帮助。这到底是怎么回事,我该如何修复它?—Eric Trimmer, eric@et.trimmer.org
有一个相对简单的解决方案,但您可能需要升级您的内核和 PPP 包以支持它,这取决于您实际安装的年限。使用 lcp-echo-interval 和 lcp-echo-failure 选项来告诉 pppd,当它没有收到一定数量的 ping 请求响应时终止。pppd 将在您的物理层出现故障时终止并循环连接,无论您的调制解调器是否正确地告诉 Linux 它已失去连接。—Chad Robinson, Chad.Robinson@brt.com
Software Forge Inc. 提供的安装 LinuxCAD 的说明并不真正适用于 OpenLinux 2.2。在使用 RPM 的操作系统上安装 .tar 或 .tar.gz 文件,最好的方法是什么?—Wayde C. Gutman, wcgutman@mwpower.net
实际上,您可以在基于 RPM 的系统上很好地安装 tar 文件。但是,最好有一个 RPM,因为它会跟踪已安装的文件。我相信您应该能够使用 alien 将您的 tar 文件转换为 RPM:http://kitenet.net/programs/alien/。—Marc Merlin, merlin@varesearch.com
tar.gz 格式在某种程度上类似于其他操作系统下的 .ZIP。通常,您只需解压缩 tar 文件,并按照包含的 README 或等效文件中的说明进行操作。
使用 tar tvzf filename 列出 tar.gz 文件的内容,使用 tar xvzf filename 提取它。tar 是最重要的 UNIX 命令之一;查看 UNIX 入门指南或查看 info tar 和 man tar 以获取详细信息。—Alessandro Rubini, rubini@prosa.it
我尝试在我的代码中使用函数 request_module 来加载动态内核模块。request_module 函数本身没有问题,但是 kerneld_send 函数,它是由 request_module 调用的。每次我尝试插入 (insmod) 我的模块(它应该请求另一个模块)时,我都会收到以下错误:“helloworld.o: unresolved symbol kerneld_send”。为什么 request_module 找不到 kerneld_send 函数?我使用 Red Hat 5.0,内核 2.0.36RTL1.1。—Kristiina Valtanen, Kristiina.Valtanen@vtt.fi
在 insmod 时,该模块链接到正在运行的内核,使用内核导出的公共符号表(在 /proc/ksyms 中显示)。函数 request_module(在 linux/module.h 中定义)实际上是一个内联函数,它在编译时被内联展开。但是,kerneld_send 不是内联的,必须在链接时找到。由于 kerneld_send 未导出,因此无法加载您的模块。该函数未导出,因为通常没有模块要求 kenreld 功能。不需要的内部组件不会导出。您可以通过破解文件 kernel/ksyms.c 并重新启动新内核来导出该函数。—Alessandro Rubini, rubini@prosa.it
我正在尝试在我的 486 上安装 Linux 6.0。我遇到了严重的问题。Red Hat Linux 6.0 似乎无法识别我的 Sony CD-ROM。多次发送电子邮件和致电 Red Hat 技术支持都没有解决我的问题。我一直收到的错误消息是“I could not mount your CD on device hdk”。我被要求下载新的启动镜像并尝试再次安装,但没有成功。我被要求在启动提示符下给出一些参数,但仍然徒劳。我从技术支持得到的最后一个建议是购买新的 CD-ROM。我有的 CD 是 Sony Atapi CD76E。它是一个 IDE 控制器。有没有人可以告诉我如何解决这个问题,这样我就不必购买另一个 CD-ROM 了?—Srilakshmi, RSSri@aol.com
你说安装程序正在尝试将 CD 驱动器挂载为 /dev/hdk——那是你系统上的第 11 个驱动器!我怀疑这是不正确的,内核只需要被引导到正确的设备。首先考虑 IDE 驱动器(包括 CD 驱动器)的命名约定
第一个控制器上的第一个 IDE 驱动器:/dev/hda
第一个控制器上的第二个 IDE 驱动器:/dev/hdb
第二个控制器上的第一个 IDE 驱动器:/dev/hdc
第二个控制器上的第二个 IDE 驱动器:/dev/hdd
你应该能看到规律。您可能需要做的是确定哪个 /dev 设备正确指向您的驱动器,并在 boot: 提示符下告诉 Linux 内核它是什么。例如,如果您的系统上有两个 IDE 控制器(非常常见),第一个控制器有一个 IDE 硬盘驱动器,第二个控制器有您的 CD 驱动器。因此,您应该将您的内核指向 /dev/hdc。在 boot: 提示符下,键入
hdc=cdrom在 boot: 行上,这之前会有一些需要键入的内容;可能是 linux 或 install。Red Hat 支持应该能够告诉您需要在上面这行之前输入什么。—Erik Ratcliffe, erik@calderasystems.com
我正在使用 Linux,我想知道如何从 shell 脚本控制 TELNET 会话。在 DOS 中,我会使用键盘缓冲区,但似乎这在 Linux 中不可用。我想发送字符,等待特殊响应,然后再发送一些东西。我该怎么做?—Thomas Lienhard, tl@tlienhard.com
您可以打开一个管道连接到 telnet,并将数据发送到其 STDIN,并从 STDOUT 读取响应。在 UNIX 中使用键盘缓冲区是没有意义的,因为没有进程访问键盘;它们只是从标准输入读取。如果使用 telnet 命令不起作用,您可以尝试 netcat(在 Debian 中可用)。另外,请注意,大多数语言都支持 TCP 连接;例如,expect 是一个 Tcl 扩展,旨在执行您需要完成的任务:发送输入并期望响应。—Alessandro Rubini, rubini@prosa.it
您正在寻找的是 expect。这正是它的设计目的。在任何安装了 expect 的 Linux 机器上 man expect 将为您提供您需要的信息,或者如果您还没有安装,您可以从 http://expect.nist.gov/ 下载它。—Mark Bishop, mark@bish.net
我正在使用 KDE 窗口管理器、KDM 和 tcsh。我的发行版是 Mandrake 6.0。在我的主目录中,我保留了 .cshrc 和 .login 用于我自己的初始化,但问题是,在登录到 X 会话并调用任何终端(xterm 或 kvt)后,.login 根本没有执行(.cshrc 执行正常)。这两个文件(.cshrc 和 .login)都具有执行权限,并且在正常的(批处理)会话中正确执行。我需要在哪里以及如何告诉 X(和/或 KDM)在启动后执行我的 .login?—Valentine Kouznetsov, vkuznet@fnal.gov
当您使用显示管理器登录计算机时,不会启动登录 shell,因此不会加载 .login 或 .bashlogin。显示管理器处理身份验证并运行您的显示配置,而无需通过 shell。您需要从 .cshrc 中执行所有初始化。这就是我根本不运行显示管理器的原因之一。—Alessandro Rubini, rubini@prosa.it