8.1. 硬件回收

商业计算机市场很大程度上是由寻求销售新硬件和软件的供应商驱动的。推广再利用在商业营销上没有任何好处。

因此,Linux 不需要大型硬件,如果您喜欢或需要使用旧的和小型硬件,它非常有用。

8.1.1. 支持的 CPU 系列

Linux 可以在 Intel 兼容处理器(从 386 开始)以及 AMD、Cyrix 和其他公司的兼容处理器上运行。它还支持长长的 32 位和 64 位处理器列表。完整的列表可以在 Linux 内核源代码的 arch 目录中找到。

ARM 架构是一种快速且低功耗的替代方案,广泛应用于大量嵌入式系统(Linux 和其他系统)。请参阅 ARM Linux 项目,了解丰富的 ARM Linux 资源。

Linux 也支持小型、廉价和低功耗的处理器,即使它们没有内存管理单元 (MMU),只要它们是 32 位的即可。有关详细信息,请参阅 uClinux 项目。

主流 Linux 至少需要 32 位处理器,并且不支持任何 16 位处理器,将来也不会支持。但是,ELKS 项目正在单独努力,将 Linux 代码重用于 286 CPU 系列。

在 Linux 支持的平台上,甚至在一些 16 位处理器上,您也可以使用 eCos 操作系统。这是另一个免费的、POSIX 兼容的操作系统,目标是非常小的设备(可能具有实时要求)。

如果您愿意,可以使用 Minix,它是 Linux 的前辈之一。Minix 支持 8088 到 286,内存仅需 640K。

8.1.2. Linux 应用于旧电脑

8.1.2.1. 规则

硬件的寿命与它运行的软件一样长。RULE 希望使现代自由软件即使在 5 年或更旧的机器上也能使用,在这些机器上,当前的 Linux 发行版将无法安装或运行太慢。

8.1.2.2. ISDN 路由器

ISDN 路由器 允许您将旧硬件转换为安全的伪装 ISDN 路由器,包括缓存域名服务器、IP 端口转发和按需通道捆绑。该系统可以安装在一张磁盘上,用户可以通过一个简单的基于菜单的系统(在控制台上或通过 telnet)更改配置并将其永久存储在磁盘上。

8.1.2.3. Linux LiveCD 路由器

Linux LiveCD 路由器 允许您共享和防火墙您的宽带连接并使用 WiFi。它适用于 DSL、有线调制解调器、T1 和拨号连接,并支持廉价硬件,例如 USB 和 PCMCIA WiFi 和以太网卡。硬件要求:一台专用计算机,具有以下最低规格:486 处理器,16 MB 内存,2X CDRom 读取器,软盘驱动器,1 或 2 个以太网卡。无需硬盘!可选的 WIFI 卡。

8.1.2.4. FreeS/WAN

Linux FreeS/WAN 提供 IPSEC(IP 安全,包括加密和身份验证)内核扩展和一个 IKE(Internet 密钥交换,密钥和加密路由守护程序),以及各种 rc 脚本和文档。这使得一位聪明的 Linux 系统管理员可以使用旧的 584 和 486 PC Clone 盒子构建 VPN 网关。已知 1.00 版本可以与其他供应商(如 OpenBSD)已部署的其他 IPSEC 和 IKE 系统互操作。

8.1.2.5. 打印服务器

旧电脑的常见用途是在其上运行打印服务器。

8.1.3. 适用于旧电脑的小型 Linux 发行版

请参阅 Wikipedia,了解更长的适用于旧机器的小型 Linux 发行版列表

8.1.4. 处理有限的资源或调整系统

本章摘自我编写的 Linux-Mobile-Guide - 笔记本电脑、PDA 和手机指南

8.1.4.1. 相关 HOWTO

8.1.4.2. 介绍

为了处理有限的空间、内存、CPU 速度和电池电量,我编写了本章。

8.1.4.3. 小空间

8.1.4.3.1. 介绍

有不同类型的技术可以获得更多磁盘空间,例如空间共享、释放未使用或冗余的空间、文件系统调整和压缩。注意:其中一些技术使用内存而不是空间。您将看到,需要许多小步骤才能释放一些空间。

8.1.4.3.2. 技术

  • 剥离:虽然许多发行版今天都带有剥离后的二进制文件,但检查这一点仍然很有用。有关详细信息,请参阅 man strip。要查找每个未剥离的文件,您可以使用 file 命令,或者更方便的工具 findstrip(在 Debian perforate 软件包中查找它)。注意:不要剥离库,有时由于不良的编程技术,会删除错误的符号。

    Russell Marks <rus at beeb.net> 的建议

    现在很多人使用 -g 进行编译,我发现这有点烦人(尽管据我所知,这 会浪费您的磁盘空间,在实践中)。

    strip 有一个 --strip-debug 选项,它不会剥离符号,但仍然会消除调试内容。在许多情况下,这几乎一样好,并且可以在库上使用它。碰巧的是,我最近获得了 SuSE 6.3,所以我可以给您一个 live 示例

    bash-2.03# cd /lib
    bash-2.03# ls -l libc.so.6
    -rwxr-xr-x   1 root     root      4223971 Nov  6 16:22 libc.so.6
    bash-2.03# strip --strip-debug libc.so.6
    bash-2.03# ls -l libc.so.6
    -rwxr-xr-x   1 root     root      1200355 Dec  8 00:13 libc.so.6
    

  • 稀疏文件:在文件包含仅包含空字符的块的情况下,这些块可以被 lseek 命令调用替换,从而节省空间。应用程序(而不是操作系统)负责以正确的方式创建或处理此类文件。例如,tarcp 命令都具有以正确方式处理稀疏文件的选项。请参阅 此页面,了解更多详细信息和用于创建此类文件的 sparse 命令。在 Debian 中,您也可以使用 perforate 软件包中的 zum 命令。

  • 删除奇怪的文件和重复文件:检查您的系统中是否存在核心文件、emacs 恢复文件 <#FILE#>、vi 恢复文件 <FILE>.swp、RPM 恢复文件 <FILE>.rpmorig 和 patch 恢复文件。查找重复项,您可以尝试 finddup。选择一个系统来命名您的备份、临时和测试文件,例如在末尾带有签名。

  • 清理临时文件:例如/tmp,甚至有一个工具 tmpwatch

  • 缩短日志文件:通常是/var/log中的文件。有一些不错的助手可以完成此任务,例如 savelog

  • 删除文件:删除在所有情况下都不是“必要”的文件,例如 man 页面、文档/usr/doc和源代码,例如/usr/src .

  • 不必要的库:您可以使用 binstats 软件包来查找未使用的库(感谢 Tom Ed White)。

  • 文件系统:选择一个经济地处理磁盘空间的文件系统,例如 rsfs 又名 Reiser 文件系统。调整您的文件系统,例如 tune2fs。选择适当的分区和块大小。

  • 减小内核大小:通过仅使用必要的内核功能和/或制作压缩内核映像 bzImage

  • 压缩读写文件系统

    - 曾经有一个项目为 ext2 文件系统添加压缩支持:e2compr。该项目的用途非常有限,因为它目前处于非活动状态,并且仅支持非常旧的 2.4 和 2.6 内核版本。无法在最新的 2.4 和 2.6 版本上获得可用的补丁。

    - 幸运的是,Reiser4 文件系统中存在一个非常认真的解决方案,其中包括一个压缩插件。据报告,使用压缩甚至比不使用压缩更快。实际结果当然应随 CPU 和磁盘速度而变化,并且在旧机器上的结果可能会令人失望。

  • 压缩只读文件系统

    - 这个想法是将系统的一部分(通常是通过 /bin/sbin/usr 目录的可执行文件和库)存储在单独的、压缩的和只读的文件系统中。这非常适合节省空间和保护系统免受外部攻击。但是,限制是当文件系统挂载时,软件升级将无法再完成。整个文件系统内容必须一次重建和替换。

    - CramFS 是第一个实现的解决方案,被许多嵌入式系统制造商使用。尽管仍在维护,但 SquashFS 的性能显着优于它。

    - SquashFS 是现在每个人都应该使用的解决方案。与 CramFS 不同,它对文件系统和文件大小没有限制,并且它实现了更好的压缩和读取速度(高达 5 倍!)。在慢速存储(如 USB 闪存驱动器)上,用 SquashFS 替换 ext2 导致系统启动时间减少 50%(在 Free Electrons 开发的 Linux 演示中观察到)。

  • 分区共享:您可以在不同的操作系统之间共享交换空间(请参阅 Swap-Space-HOWTO)或数据分区(请参阅 mount)。

  • C 库:使用 uClibc 而不是默认的 GNU C 库 又名 glibc。它大约占用 400 KB 而不是 1700 KB (glibc)。许多嵌入式 Linux 项目以及几个微型 Linux 发行版都使用它。它应该满足大多数需求,因为整个 Debian 3.0 都已移植到它。注意:如果您更换 C 库,则所有应用程序也需要使用专用的 gcc 工具链重新编译。

  • Busybox - 一个实现大多数 Unix 命令的工具箱。它最多占用 500 KB,而不是 GNU 实现的约 10-30 MB!几乎所有嵌入式 Linux 项目和小型 Linux 发行版都使用它。大多数命令都已实现,甚至包括 viwget、dhcp 服务器和客户端,甚至是一个足以满足大多数需求的 http 服务器。即使某些罕见的命令选项未实现,即使是经验丰富的 Unix 用户也很难区分它与 GNU 命令!

  • 内核:如果您的需求适合旧版本的内核,您可以节省一些空间。

    但是,使用旧内核,您将错过很酷的功能(例如实时抢占,使您的系统响应更快)以及对最新外围设备的支持。的确,Linux 内核多年来积累了臃肿:更多功能,支持更多特殊情况……现在 Linux 在嵌入式系统中占据越来越重要的地位,正在努力控制内核大小。LinuxTiny 项目发布了一组 Linux 内核源代码的补丁。在 为小型系统配置标准内核功能 内核配置部分中,您可以取消选择简单计算机中不需要的功能。您可以为简单的 PC 实现的 Linux 2.6 内核的最小压缩大小约为 350 KB。请注意,越来越多的 LinuxTiny 更改现在在标准 Linux 内核中可用(无需修补)。

    使用最新的内核版本,您也可以尝试 Ingo Molnar 的 实时抢占补丁。启用完全抢占后,它为 Linux 内核增加了前所未有的响应能力。延迟大大降低,适用于真正的实时系统(小于 100 微秒!)。绝对值得在旧系统上尝试,以赋予它们新的活力并改善用户体验!

  • GUI:尽可能避免使用图形用户界面 (GUI)。

  • 微型发行版:有一些发行版可用,它们的大小从 3.5 英寸软盘到 10MB 磁盘空间不等,并且也适用于小内存。请参阅 Laptop-HOWTO

8.1.4.4. 硬盘速度

使用工具 hdparm 来设置更好的硬盘性能。虽然我见过笔记本电脑磁盘启用了 stripping,但我看不到这样做的理由,因为恕我直言,aka RAID0 stripping 至少需要两个不同的磁盘才能提高性能。

8.1.4.5. 小内存

8.1.4.5.1. 相关 HOWTO

8.1.4.5.2. 技术

使用 freetop 检查内存使用情况。

您还可以通过删除对您不需要的任何功能并将内核尽可能模块化来尽可能减小 内核大小

此外,您可以关闭每个不需要的服务或 daemon,例如 lpdmountdnfsd 并关闭一些 虚拟控制台。有关详细信息,请参阅 Small-Memory-mini-HOWTO

当然,在可能的情况下使用交换空间。

如果可能,您可以使用另一台机器的资源,例如使用 X、VNC 甚至 telnet。有关虚拟网络计算 (VNC) 的更多信息,请参阅 VNC

8.1.4.6. 低 CPU 速度

您可能想要超频 CPU 速度,但这可能会损坏您的硬件,我对此没有经验。有关一些示例,请参阅 可爱的 Toshiba Libretto - 超频

8.1.4.7. 微型应用程序和发行版

一个小型集合,但我正在寻找更多信息。

  • BOA - “轻量级和高性能 Web 服务器。boa 是一个单任务 HTTP 服务器。这意味着与传统的 Web 服务器不同,它不会为每个传入连接派生,也不会派生自身的多个副本来处理多个连接。它在内部多路复用所有正在进行的 HTTP 连接,并且仅为 CGI 程序(必须是单独的进程)派生。初步测试表明,boa 能够在 100 MHz Pentium 上每秒处理数百次点击。”

  • 低带宽 X - Alan Cox 在 LINUX REDUX 1998 年 2 月:“...(差分 X 协议压缩器 - Dxpc)是大多数人喜欢的替代方案。这些系统充当代理 X11 服务器,并将正常请求的数据流压缩超过 50%,通常达到原始带宽使用量的 25%。使用 dxpc,X windows 应用程序可以通过 28.8 调制解调器链路或跨 Internet 非常好用。”

  • Blackbox - “这是一个用于 X 的窗口管理器。Ixt 在许多方面与 Window Maker、Enlightenment 和 FVWM2 等流行的软件包相似。如果您厌倦了那些大量消耗系统资源的窗口管理器,但仍然想要一个有吸引力且外观现代的界面,您可能会对这个软件包感兴趣。”

  • screen - 微型但功能强大的控制台管理器。John M. Fisk <fiskjm at ctrvax.vanderbilt.edu> 在 LINUX GAZETTE 中写道:“这是一个 GUI、GUI、GUI、GUI 的世界!“ - 或者主要的操作系统制造商会让你相信。事实是,虽然这种情况越来越普遍,但有时命令行界面 (CLI) 仍然是完成工作的一个非常好的选择。它速度快、效率高,并且是在内存或 CPU 受限的机器上的一个不错的选择。并且不要忘记,仍然有很多非常巧妙的事情可以在 控制台 上完成。” “screen 是一个全屏窗口管理器,它在多个进程(通常是交互式 shell)之间多路复用物理终端。每个虚拟终端都提供 DEC VT100 终端的功能,此外,还提供来自 ANSI X3.64 (ISO 6429) 和 ISO 2022 标准(例如,插入/删除行和对多种字符集的支持)的多个控制功能。真正的多用户支持、分屏支持、硬状态仿真支持、可配置的窗口分隔符和硬状态字符串、永久窗口分隔符、许多新的转义符、日志文件时间戳和刷新超时、可选的内置 telnet、可选的盲文支持、对历史记录压缩的支持。”

  • tinyirc - “一个微型的、精简的 IRC 客户端。它没有 ircII 系列 IRC 客户端中的大多数高级命令,也没有任何颜色,但它可以工作,而且非常小巧。”

  • tinyproxy - “是一个轻量级的 HTTP 代理,旨在以最少的系统资源使用来完成工作。它非常适合小型网络,在这些网络中,像 squid 这样的大型 HTTP 代理可能显得过分或存在安全风险。这种简单性也使 tinyproxy 成为自定义的理想候选者 - 阅读和理解 tinyproxy 源代码只需很短的时间,因此您可以立即开始添加您自己所需的功能。”

实际上,随着 Linux 在嵌入式系统中的进步,现在存在无数轻量级应用程序。Free Electrons 的演示文稿 试图列出最受欢迎的应用程序。