读者来信

作者:Staff

读者来信

更正

在我的文章“Ubuntu中的安全特性”(LJ,2008年3月)中,我错误地将 Novell AppArmor 描述为“类型强制执行的实现”。但是,正如我自己在我之前的文章“Novell AppArmor 简介”(LJ,2006年8月)中所解释的那样,AppArmor 代表了一种强制访问控制方法,该方法从根本上并且有意地不同于类型强制执行的方法,尽管它们的目的非常相似。对于这个错误和自我矛盾,我深感抱歉。


Mick Bauer

葡萄酒推荐

我特别喜欢 Marcel Gagné 2008 年 3 月的“与 Linux 一起烹饪”专栏。我的妻子和我在意大利旅行时发现了 Collavini Villa Canlungo Pinot Grigio,它已成为我们最喜欢的葡萄酒之一。我最近去了酒窖,才发现我们已经喝完了最后一瓶 Villa Canlungo,但我们确实还有几瓶 1998 年的 Torciano Baldassarre。我一边品尝着 Baldassarre,一边完成了这篇文章。一杯美酒让 Linux 更加顺畅。


Glenn A. Scherb

浮点简洁性

Joao Macedo 写了一封信,发表在 2008 年 1 月号的 LJ 上,其中提出了以下单行代码

$ echo 'scale=4^J11/7' | bc

Joao 解释说,“^J 是通过发出 Ctrl-V + Ctrl-J 获得的。”

^J 是生成 ASCII LF(换行)字符的击键,UNIX(以及 Linux)使用它作为行终止符。与其在文本中嵌入 LF,我想建议以下作为更好的替代方案

$ echo -e 'scale=4\n11/7' | bc



David Newall

为什么会这样?

我写信是为了评论 Dashamir Hoxha 在 2008 年 2 月号的 LJ 上发表的文章“两全其美”。正如作者所说,Linux 是他最喜欢的操作系统,但我不太明白他为什么选择在 Windows XP 上运行的虚拟机中运行它。为什么 Linux 的性能要因为在 VM 上运行而受到影响?为什么 Linux 的稳定性要受到 Windows XP 稳定性的制约?最后,这篇文章的标题是什么意思?对于 Linux 用户来说,这种组合真的是两全其美吗?我已经使用 UNIX 环境,然后也使用 Linux 环境超过 20 年了,老实说,我只有在别无选择时才使用 Windows。

几年前,当我购买了一台预装 Windows XP 的 1GB 内存 Lenovo T60P 笔记本电脑时,情况完全一样,我保留 Windows 只是为了检查所有硬件是否正常工作。然后,我安装了我最喜欢的发行版 Kubuntu,然后安装了 QEMU(带 kqemu)来运行 Windows XP,以便能够为我的客户测试软件或访问一些仅适用于 Internet Explorer 的网上银行站点。

撇开我不理解 Linux 用户选择在 Windows 上运行 Linux 这一事实不谈,这篇文章的发展非常有趣且具有启发性,尤其是在网络配置方面。

最后一点,如果我的朋友或同事想使用我的笔记本电脑,他们知道他们必须使用 Linux。这让一些人感到沮丧,但对另一些人来说,则揭示了一个非常有吸引力的环境。


Norberto

更优雅的解决方案

在 2008 年 4 月号 LJ 的读者来信部分,Mike Henders 为 Dave Taylor 使用内联 Perl 获取字母的序数值提供了三种可能的 shell 脚本解决方案 [参见 Dave 2008 年 1 月的“Work the Shell”专栏]。嗯,我在日常生活中不太需要序数值,但我发现他的例子很有趣。但是,我不喜欢他在解决方案 1 中使用的循环,也不喜欢他在解决方案 3 中为了处理字符串中的空格而求助于数学运算。

但是,Mike 在解决方案 1 中使用数组,在解决方案 3 中使用可变长度字符串,这给了我将两者结合起来的想法——创建一个可变长度数组,从而获得更优雅的解决方案(我的观点)。

首先,像以前一样初始化数组,但省略 Mike 的占位符(他使用了 0)。同时,通过让 $letter 的值确定数组的最后一个元素,使其成为可变长度数组

LETTERS=($(eval echo {a..$letter}))

现在,序数值($letter 中的字母的序数值)等于数组中元素的数量

ordvalue=${#LETTERS[*]} 



Francois Visser

不仅仅是加拿大的

我是一个住在加拿大北部地区的加拿大人,不得不回应 James Gray 在 2008 年 4 月号 LJ 的文章“使用 Linux 走向绿色,节省开支”中提到的“tonne”是加拿大语的“ton”。在加拿大,我们使用国际化的公制系统,绝大多数国家都采用该系统。一吨等于 2,200 磅。(嗯,美国磅,就是这样。)我喜欢阅读 LJ,并继续保持出色的工作。


Rick Martin

始终是学习体验

我喜欢阅读 2008 年 4 月号的 LJ。我特别想看看 Kyle Rankin 的文章“PXE 魔法:使用菜单进行灵活的网络启动”。

我有一台 Fedora 8 服务器,我将其用作我的主要 SOHO 服务器。我想尝试文章中的步骤,以便我可以拥有实用程序的优势和执行它的经验。就执行而言,我想我成功了,因为找出别人的错误/遗漏总是一个好老师。

Kyle Rankin 写了一篇很棒的文章,它无疑是基础性的,甚至是鼓舞人心的,但它缺少一些 essential 信息。设置 TFTP 和 NFS、调整我的 dhcpd.conf 文件以及适当地打开防火墙以使其工作很容易。我现在有一个粗略的 PXE 可启动菜单,它允许我选择本地磁盘启动(以防我不想进行 PXE 启动)以及 memtest86+ 和 Knoppix 5.1 网络启动。我期待探索添加到此的其他选项,以便我可以网络启动磁盘映像软件进行备份和 Linux 网络安装工具,例如 Kickstart 等。

Kyle 严重不足的地方在于,对于 Knoppix 救援加载,他告诉您转到 Knoppix CD-ROM 并从 boot/isolinux 目录中获取 minirt.gz 和 vmlinuz 文件。将它们放在您的 /tftpboot 目录中,您就万事大吉了!不是!重大遗漏!在 Knoppix 仅部分启动了几个小时后(它永远找不到/挂载 Knoppix NFS 共享),我意识到 Knoppix 无法完成其启动,因为它无法从引导服务器 NFS 挂载 Knoppix CD-ROM 文件,因为通过 PXE 加载的内核未启用网络!从 CD-ROM 获取的基本内核仅加载,并让系统的其余部分启动加载并启动网络。当进行网络启动时,需要在 minirt.gz 的处理过程中启用 NIC 卡(它在其中包含 NIC 卡模块,可以加载它们并启用网络)。因此,它可以挂载 NFS 文件系统并找到 Knoppix CD-ROM 文件并按预期完成启动。

解决方案是,您首先启动到 Knoppix,然后深入菜单以启动 Knoppix 终端服务器,在那里它提供了一个设置对话框,从而获得“启用网络”的 vmlinuz 和 miniroot.gz 文件。您选择(采用默认值)要包含的各种 NIC 卡驱动程序,并让它配置服务。显然,Knoppix 根据您的选择生成这些文件。然后,您启动一个 shell 窗口并cd转到 /tftpboot 并使用 scp 将生成的 miniroot.gz 和 vmlinuz 文件复制到您的引导服务器,替换 Kyle 最初告诉您获取的文件。一旦我获得了这些文件并将它们放入我的引导服务器,我的 HP 笔记本电脑就进行了网络启动,我选择了 Knoppix,它以我预期的速度启动了。应用程序似乎加载和运行非常灵敏等。系统的行为就像从 CD-ROM 启动一样,但速度更快。

虽然我很想准确地按照文章中的步骤来完成这项工作,但很遗憾没有成功!但是,我在此过程中学到了很多东西。我希望这个反馈可以帮助其他遇到与我相同失败并想从这篇文章中受益的读者。


Keith Schneider

Kyle Rankin 回复: 您是绝对正确的。CD-ROM 上 isolinux 目录中的 miniroot.gz 和内核与 /tftpboot 目录中的文件不匹配。传统上,当我将 Knoppix 添加到我的 PXE 引导环境时,它是通过 Knoppix 终端服务器创建的文件(我甚至在我的书Knoppix Hacks中提到了从 /tftpboot 中获取文件),但在本文中,我试图为读者节省启动 Knoppix 和运行脚本的额外步骤,所以我错误地假设 Knoppix 为其终端服务器使用了 isolinux 目录中的相同 miniroot 和内核。对于我的错误给您带来了很多额外的麻烦,我深感抱歉。感谢您的反馈。

加载 Disqus 评论