最佳技术支持

由工作人员

仅限本地的域名?

当设置小型家庭网络 (Red Hat 9) 时,您唯一的互联网连接是通过拨号 PPP 连接,为网络选择域名以使其在您连接到互联网时不会与某些有效的域名冲突的最佳实践是什么?是否存在某种标准的、仅限内部的域名,类似于 127.0.0.1 的主机名 localhost?


Steve Cavender


SyntheSys@csi.com

您不需要任何名称;没有名称您的互联网访问也能正常工作。如果您真的想要一个,那就注册一个域名。


Usman Ansari


uansari@yahoo.com

RFC 2606 保留了 .test 顶级域名用于测试;互联网上不会分配 .test 域名。或者,如果您不想花钱注册域名,并且您有对 DNS 感兴趣的朋友,您可以向他或她索取其域名的子域名。


Don Marti


dmarti@ssc.com

Red Hat 使用 localdomain(您的机器默认为 localhost.localdomain)。


Marc Merlin


marc_bts@google.com

对文件更改采取行动

当使用 cron 作业时,我知道一个进程会在某个时间表上执行。是否有办法在目录或文件发生更改后执行进程?如果是这样,应该怎么做?


Iman Ahmadi


imanahmadi@hotmail.com

一种方法是使用 Linux 目录通知。您可以在内核源代码下的 Documentation/dnotify.txt 文件中找到文档和示例。


Usman Ansari


uansari@yahoo.com

您可以让您的 cron 或 at 作业检查文件或目录的时间戳之一。在 shell 脚本中最简单的方法是使用 GNU find 的"%T@""%C@"格式说明符。这会返回自纪元以来的修改日期 (%T) 或 ctime(更改状态)日期(以秒为单位)。如果您愿意,可以指定许多其他日期格式,但自纪元以来的秒数对于某些形式的日期算术更方便。更高级的方法是使用 FAM(文件更改监视器)监视文件或目录访问。请参阅 oss.sgi.com/projects/fam/faq.html,但这超出了简单 shell 脚本的范围。


Jim Dennis


jimd@starshine.org

我没有 init 且必须启动

我的 Mandrake 系统在尝试启动 Linux 时显示以下错误

mount:error 22 mounting ext2 flags
Kernel panic:no init found.
Try passing init=option to kernel

我已经成功启动了三次,但此后它停止启动并一直显示此消息。我该怎么办?


Devi


deenadev_20@hotmail.com

Linux 内核挂载根文件系统并运行一个名为 init 的程序,通常在 /sbin 目录中找到。您可以阅读内核源代码,找到 Linux 查找名为 init 的程序的其他三到四个位置。您还可以将内核命令行或引导加载程序选项传递给内核init=/bin/sh,或内核将尝试加载的程序的其他完整路径。这就是此错误消息的其余部分试图告诉您的内容。问题变成了:为什么您的内核无法找到 init 程序?最可能的原因是您正在尝试挂载根文件系统以外的其他内容。如果您尝试启动并向内核传递了root=/dev/hda6 ...或一些其他设备/分区路径到没有 /sbin/init 的有效文件系统,这正是您会收到的错误消息。实际上,如果它也没有 /dev/ 目录,您会收到另一条错误消息:“Warning: Unable to open initial console.”。这不是致命错误,但也许您也收到了该错误而没有注意到。

如果您有一个完全伪造的 root= 指令,如果那里没有 Linux 支持的文件系统,您会收到不同的错误,例如:“VFS Kernel panic. Unable to mount root.”。

其他可能性是您已正确设置系统,但意外删除或重命名了 /sbin/init 或 /sbin 目录,或者您的文件系统已损坏到 /sbin/init 的目录条目或 inode 无法访问的程度。

无论如何,我都会从救援磁盘启动,可能是 BBC(可启动名片),例如您可以从 www.lnx-bbc.org 下载一个。刻录到 CD-ROM;迷你 CD 或名片格式通常用于这些,但全尺寸光盘也适用。从 BBC 或 Tom's Root/Boot (www.toms.net/rb) 启动,并在您的每个文件系统上运行 fsck。然后,检查它们并找出哪个是真正的 rootfs。接下来,尝试手动启动,使用您的引导加载程序 (GRUB 或 LILO) 传递参数 root= 和 init=。然后尝试修复 /boot/grub/menu.lst (grub.conf) 或 /etc/lilo.conf 以正确列出正确的内核参数(如果这最终是整个问题的原因)。当您从 BBC 或其他救援媒体启动系统时,现在是问自己的好时机:在这些文件系统上是否有任何我尚未备份的数据?现在是将这些数据复制到其他媒体的好时机吗?在最坏的情况下,您可以重新安装。说:“我的数据已备份;我不明白所有这些 fscking 和那些引导加载程序配置文件。管它的!”然后重新安装,这没什么可耻的。


Jim Dennis


jimd@starshine.org

Minicom 不是 pppd

我在上网时遇到问题。我正在使用 Minicom 并设置了 PPP(使用 Red Hat 6.1)。当我使用 Minicom 拨号时,它似乎已连接,但随后它要求输入登录名和密码。我输入我的用户登录名,然后弹出一堆字符,但一分钟后,它说“No carrier”。知道我哪里做错了吗?


Chris


calf@lanset.com

您没有做错任何事情;您只是没有使用适合任务的程序。Minicom 是一个终端程序;它无法建立 PPP 会话并允许您成为远程网络的客户端。您需要像 pppd 这样的程序,它应该是您发行版的一部分。但是,由于您的发行版相对过时,您可能会遇到连接到 ISP 的问题,具体取决于包含的 pppd 版本。如果是这样,您应该安装较新版本的 pppd 或升级到较新的发行版,具体取决于您的技能和舒适度。


Chad Robinson


crobinson@rfgonline.com

尝试图形化的 kpppd 或类似的东西。您可能还需要更新您的发行版。目前 Red Hat 9.0 已经发布,您会惊喜地发现它。


Usman Ansari


uansari@yahoo.com

连接到公司 VPN

我工作的公司有一个 VPN,它使用 Microsoft 的 VPN 服务器。是否可以使用 Linux (Red Hat 9) 连接到它?


Dean Siewert


dsiewert@execpc.com

有一个与 Microsoft 的 VPN 服务器兼容的 Linux 点对点隧道协议 (PPTP) 客户端。访问 pptpclient.sourceforge.net


Chad Robinson


crobinson@rfgonline.com

务必查明他们正在使用哪种协议。使用 Microsoft 产品创建 VPN 的标准方法是内置的 PPTP。最近,他们采用了 IPSec 和 L2TP。


Mario Bittencourt


mneto@argo.com.br

Linux 的 PPTP 服务器是 PoPToP 包,www.poptop.org


Jim Dennis


jimd@starshine.org

回复:2003 年 8 月,最佳技术,“双启动系统跳过 LILO 菜单”

打印出来的两个答案都有效,但都假设存在或可以使用救援软盘。如果没有,可以使用第一个 Red Hat 安装 CD 进行修复:1) 从 Red Hat 9 CD #1 启动。2) 输入启动选项linux rescue. 3) 选择任何相关的语言和键盘选项。4) 在救援提示符下,选择跳过。5) 在 shell 提示符下,输入cd /mnt. 6) 输入mkdir sysimage. 此文件夹可以命名为任何名称。但是,Red Hat 出于此原因在 Red Hat 7.3 中包含了一个以此名称命名的文件夹,因此我在此处包含它以方便记忆。7) 输入mount /dev/WHATEVER sysimage/. 在此处挂载您的 / 分区。8) 输入chroot sysimage. 9) 如果需要,挂载 /usr 和 /boot 分区。10) 输入grub/sbin/grub. 11) 输入root (hd0,0). 这告诉 GRUB 在哪里找到其第二阶段加载程序和配置文件——在本例中,是第一个硬盘的第一个分区。12) 输入setup (hd0). GRUB 被放置在第一个 HS 的 MBR 中。13) 输入quit. 14) 输入exit直到您退出所有 shell 并且 Red Hat 重新启动。info grub有很多有用的信息可以充实这个简陋的教程。


Daniel Callahan


proteus@eclectic-cheval.net

加载 Disqus 评论