Linux 的魅力: 让古老的机器重获新生

级别: 初级

Peter Seebach, 自由作家

2005 年 6 月 27 日

人们说 Linux™ 使得老机器变得有用。这是真的吗?在这个新系列中,Peter Seebach 使用了一台废弃的膝上型电脑,以每月 50 美元的预算构建了一台能够真正做一些有意义的事情的家用电器。

编者注: 欢迎阅读新系列专栏 -- Linux 的魅力 的第一篇文章。developerWorks 专栏作家 Peter Seebach 将研究运行在不同种类硬件上的 Linux —— PDA、嵌入式设备,或者是没有人认为会有用的古老设备。本系列将依次研究具体的 Linux 设备,并向您详细展示如何在过时的硬件上安装设置 Linux。

当人们提及古老硬件上的 Linux 时,他们通常指的是已经使用了一两年的硬件,那些材料仍然非常实用。所讨论的硬件有良好的状态,得到了合理的维护,而且具有相当好的规格 —— 或许它甚至是一台古老的服务器。不过,对本系列而言,我们将着眼于配置稍低的机器。

第一号挑战

进入舞台左侧,是一台古老的网关箱(我绝对没有对网关不敬的意思)。在 1997 年 10 月,我花了将近 3000 美元购买一台当时顶级配置的膝上型电脑。它拥有 Pentium® 133 处理器,32 MB 高速 SDRAM,以及 800x600 TFT LCD 显示器,还拥有 1.15 MB 的显存 —— 对于在显示 800x600 分辨率 16-位色来说刚好足够。

我还记得这台机器快得令人生畏,因为我原来使用的是 33 Mhz 的 68030 机器。

不过,那是八年前的事情了。几年前,有一杯酒泼到了它上面。八十年代的低成本艺术电影迷们都会了解这种情况:它不会再恢复知觉了,所有它所需要的就是进行修理。不幸的是,CardBus 插槽永远不能再恢复原状,而且经常报错。几年前它又遭遇了一位 El-Al 的行李员,导致它的屏幕破碎,不能再使用。它惟一的优势只是拥有额外的 64 MB 内存,那是在被酒浇到之前的那一年安装上的。

依照当前的标准,这个机器就是个玩具。您可以从 Technologic 等公司购买嵌入式系统,这些系统有更好的基本规格以及内置 Ethernet 等另外的特性。婉转地说,它甚至不再具备完整的功能。

所以,这里的挑战是证明那台机器仍然可以有一定用武之地。在本系列中,我将把它构建为一种实用的家用电器。

好,挑战(就算是自愿承担的挑战)是需要规则的,而规则很简单 —— 我为每个项目付出的开销不超过 50 美元。由于要达到机器初始的价值得需要 60 个项目才够,我将考虑使用“免费”硬件(至少使用了四年而且已经废弃不用的硬件)。否则就得必须考虑开销。对了,下载是免费的。



安装硬件

显然要考虑的是,机器所附带的 2 GB 的磁盘可能有点小。幸运的是,我有一个闲置的 6 GB 的磁盘,它最初是 2000 年的 PowerBook G3 中的 —— 那是四年多前的了,所以它符合规则。安装那个设备一点都不困难,尽管我第一次时做错了;那个驱动器必须将跳线设置为从盘(对此做法我没有任何概念)。解决了那个问题后,我就拥有了一台磁盘为 6 GB 的机器,那个磁盘的最后一次格式化大约是在 2001 年左右,在 Mac 上进行的,因而显然不能引导。

我有一台 2001 年购买的 LCD 显示器。它有点太新了,不应使用(根据规则),不过在安装期间我可以“借用”它。在安装的过程中显示器是有用的,但系统建立并运行后我就计划不再使用它了。机器有一个 BIOS 设置,用于决定使用外部显示器、内部显示器或者两者皆用。令我感到好笑的是,外部显示器的设置称为“CRT”,就算是它并不是一个 CRT。

连接上显示器和新的磁盘驱动器后,机器就可以引导了。在启动时出现了一个问题 —— 驱动器的声音很大,所以它可能会出故障。不过别忘了,它是免费的。而且它可能还可以运转几个月。

我们现在所需要的是一个操作系统。



下载 Linux

记住,免费的下载可以认为是不需要花费的。我原来计划在此项目中使用我的 SUSE Linux 安装光盘,不过我遇到了两个问题。第一个问题是系统需要要有 128 MB 内存。第二个问题是我只有 DVD,而买一个新的光驱需要花费。

我决定采用廉价的方式:下载。进行了一些咨询后,我得到的建议是使用一个名为 Slackware 的小的、轻量级的发行版本(distro)。

Slackware 的 Web presence 建议人们使用 16 MB 或者更少的内存。对我来说,这太好了。我下载了 BitTorrent(一款支持“协作发行(cooperative distribution)” 的工具,能为更热门的下载减少带宽开销)并开始下载 Slackware 10.0 的发行版本 CD。第二天早上,我烧制了一些 CD。(实际上是其中的四张。我不久前获得它们时,空白的 CD 是需要去花钱的,所以我说它们每张花费了 0.50 美元。)然后我发现,Slackware 10.1 刚刚发布。唬!

我下载了 10.1 CD。一个重要的提示:当您完成下载时,不要马上闭关 BitTorrent。协作网络的要点就在于要为社区贡献回一些东西。最起码出于礼貌您也应该让它继续运行,直到上传的数据数量至少与您下载的数量相当。



运行安装

当新 Slackware 的第一张光盘开始可用时,我立即制造了一个副本,并开始安装。这次我只烧制了两张 CD,不包括源代码 CD。改天再另外预算。

安装器引导起来,在 /dev/hdb 找到一个磁盘驱动器。此时我发现我的驱动器是设置为从盘的。使用螺丝起子和小钳子忙碌了几分钟后,我的工作开始步入正轨。

Slackware 安装器是非常轻量级的。它不是一个图形化的安装器;它不使用帧缓存驱动器或者 X 或者其他任何东西。它在运行安装器之前告诉您要对硬盘进行分区,然后给出一个登录提示。

没有关于选择分区大小的太多提示;这有些不太方便。作为一个 BSD 老用户,我喜欢将 root 文件系统和 /usr 分开。我还会为 /var 和 /home 建立单独的分区,并划分出一块交换分区。我猜测的数字被证明是合理的;root 大约 128 MB(有足够的额外空间用于测试内核),交换分区 256 MB, /var 最多 1 GB,/usr 2 GB,剩下的空间分配给 /home。

Slackware 将文件非常简单地按顶级进行了划分。我取消了所有基于 X 的部分,包括 GNOME 和 KDE,而安装了所有其他部分。这台机器不适于用作图形工作站,所以那样可以少占用很多空间。(方便的是,它还使得第二张安装光盘变得几乎无关紧要。我本来还能节约 0.50 美元!)

安装过程中的意外

使用安装器并不会完全不出问题。当我格式化完磁盘并开始进行安装时,得到的信息是 LILO 没有运行起来,我需要在重新引导之前去修复它。方便的是,当我处理挂载在 /mnt 的目标磁盘时,安装器为我提供了一个 shell 命令提示符。浏览 /etc/lilo.conf 时发现了问题所在:


清单 1. 啊哈!罪魁祸首

				
boot = (IN
[...]
root = (IN

我不知道这描述的是什么。我把它修改为看起来可能能生效的值:


清单 2. 好用的旧式参数值

				
boot = /dev/hda
[...]
root = /dev/hda1

重新运行 LILO 没有再出任何错误,所以我进行了重新引导。果真,机器完全正常地启动起来。

那就是安装出现问题的原因。(实际上,并非完全如此。我不得不重复分配挂载点的过程,因为第一次时我出现了打字错误,而我不能为此而抱怨 Slackware。)

浏览

既然系统已经安装,我就可以验证关于所得到的分区大小的猜测。


清单 3. 猜得不错

				
$ df -m
Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/hda1                  130        55        69  45% /
/dev/hda5                  950        31       871   4% /var
/dev/hda6                 1900      1434       369  80% /usr
/dev/hda7                 2326        37      2170   2% /home

还不算太坏。如果我想安装很多另外的软件,/usr 中的空间可能会不够。当然没有足够的空间来安装所有资源。令人高兴的是, Web 页的根(/var/www/htdocs)拥有足够的空间,而且,如果我确实需要加载某些其他内容,我可以将一些文件移动到 /home 中并建立符号链接。

浏览 /usr 可以发现一些细节。在此,du -m 会有所帮助。不幸的是,除了单词 HUMAN(表示使用易读数字)以外,这个版本的 du 不能识别出 $BLOCKSIZE 中的其他值;另外,您可以将其设置为 1 M,然后令 dfdu 使用 1 MB 的块。对 du 的输出运行 sort -n,会得到 /usr 中以大小排序的顶级目录列表:


清单 4. Ah,以大小排序的目录

				
86      ./lib/jre1.5.0_01
92      ./src/linux-2.4.29/drivers
112     ./bin
146     ./doc
173     ./share/texmf
205     ./src
205     ./src/linux-2.4.29
384     ./lib
428     ./share
1402    .

简言之,所安装的最大的一些东西是 TeX 软件和支持文件、内核源代码以及 Java™ 运行时环境。在内存这样少的机器上,Java 可能是没有什么意义的,所以,如果我的空间不够了,首选删除它。内核源代码可能会浪费了很多空间,并且 TeX 可能也是我能够删除的东西。所以,如果我需要几百兆空间,我能够得到。我高兴地了解到,在拥有足够空间的同时,所有我所希望的东西都已经安装了。




现在做什么?

第一件事情是获得一个以太网端口。不幸的是,我的具有以太网端口的老化的 USB 集线在连接时发生了莫名其妙的错误,所以我决定使用价格低廉的 Targus USB“dock”(一两周前得到的)进行测试。它为我提供了 PS/2 键盘和鼠标端口(对我来说没有用)、另一个串行端口、另一个并行端口、另外两个 USB 端口。。。以及一个 10 Mbps 的以太网端口。

您可能会认为 10/100 会更好(那或许是这个小装置的销售价格从一两年前的 70 美元降到 29.99 美元的原因),但是在 USB 1.1 机器上, 100 Mbps 支持没有什么意义。

我的集线器自动检测端口,不用我去管。我没有用到的 2 Mbps 的 USB 带宽以后可以用于运行那个小装置。

自动检测到了那个设备。很奇怪,dhclient 不能作用于那个接口。它说它找不到广播接口。手工配置接口并手工编写 resolv.conf 很好地解决了这个问题。我稍微有些惊讶:我所习惯的语法,即 route add default gateway ,引发了一个非常莫名其妙的错误消息 SIOCADDRT: No such device。我迅速查阅了一下手册,纠正了我的拼写 —— route add default gw gateway

完成后,机器现在可以正常地在网络上工作。在局域网中它是可访问的,并且可以使用我的宽带连接访问外面的世界。我也能够 ssh 进来。

没有能够登录进入的帐号,不太好。我的登录名总是使用 seebs,于是我尝试了想到的第一件事情;useradd seebs。那个命令生效了,但是我并没有获得主目录。添加一个主目录很简单。现在是时候进一步设置这台机器了,拷贝一些我喜欢使用的程序、我常用的 .profile 等等。系统附带了 gcc 版本 3.3.4,这是较新的,支持很多 C99 特性。




重新引导

当然,在引导后通过控制台手工配置所有内容是有问题的。您不必每次都那样去做。相关的配置部分(比如 IP 地址)位于 /etc 中,具体地说, /etc/HOSTNAME 用于主机名,/etc/rc.d/rc.inet1.conf 用于网络地址。

在此,我决定分配一个固定的地址,而不是依赖 DHCP。毕竟,这台机器最终将是一个本地的服务器,不应该让它的地址总是在改变。您也可以运行 netconfig 来完成此任务,不过,运行 Slackware 的部分有趣之处在于,没有很多文件会标记出 “warning: machine-generated file, do not edit”。



结束语

好,到目前为止,这台机器还没有做太多事情,不过,它是一个已经安装的系统,可以通过 ssh 远程访问它,而且它是一个相当完整的 Linux 安装。开支包括用于空白 CD 的 3 美元和用于 USB 网络装置的 31.94 美元。(稍后,我或许会愿意考虑额外的电源预算、端口以及第二个串行端口。)那是预算可以接受的。

“这台老机器”的下一篇文章将是:建立一个家庭日历程序,以使得我们可以利用这台机器。虽然人们都使用若干兆的类库来调度会议,不过我喜欢使用的是几 KB 的 Perl 脚本,这个脚本可以告诉我什么时候轮到我洗碗。



参考资料

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文

  • 轻量级 Linux,第 1 部分” (developerWorks,2002 年 10 月)给出了关于如何在较老的硬件或者内存和存储有限的新硬件上构建可用 Linux 系统的最佳实践和按步就班的指导。

  • Linux breathes new life into old hardware 选取了四个不同的发行版本,并在一台使用了五年的重构的 IBM ThinkPad 600E 上去安装它们,证明了在较老的硬件上使用 Linux 是一个有成本效益的组合。

  • Linuxforums.org 上的论坛讨论了 best distro for old hardware

  • 从 FireWire 设备引导 Linux” (developerWorks,2004 年 7 月)证明,获得一个外部驱动器是让较老的硬件重获新生,或者在不能改变内部硬盘驱动器的机器上使用 Linux 的极佳途径。

  • Slackware Linux 101” (developerWorks,2001 年 3 月)会引领您初步了解 Slackware Linux 的初始化次序。

  • 官方的 BitTorrent 站点对协作发行进行了全面的解释。

  • 欢迎访问 Slackware Linux Project,它是设计时最优先考虑易用和稳定性的高级 Linux 操作系统。

  • 了解 SUSE Linux

  • developerWorks Linux 专区 可以找到更多为 Linux 开发人员准备的参考资料。

  • 通过参与 developerWorks blogs 加入 developerWorks 社区。

  • 在 Developer Bookstore Linux 专栏中订购 打折出售的 Linux 书籍

  • 定购免费的 SEK for Linux,在这套 DVD 中(两张),包含了来自 DB2®、Lotus®、Rational®、 Tivoli® 和 WebSphere® 的最新的用于 Linux 的 IBM 试用软件。

  • 使用可以直接从 developerWorks 下载的 IBM 试用软件 来改进您的下一个 Linux 开发项目。


关于作者

Peter Seebach

Peter 是电子界的 Frankenstein(是那位博士,而不是他制造的怪兽)。要对他的实验进行评论,请通过 dwlinux@plethora.net 与他联系。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值