创建您自己的 Linux 桌面并随身携带
我们大多数人现在都使用多台 Linux 机器工作,并且我们习惯于在它们之间切换。但是,有时您希望将您的 Linux 桌面体验与您的物理桌面 PC 分开。您想要一个位于 USB 密钥上的 Linux 桌面,您可以自由地在 PC 之间移动它。为了更好地解释这一点,让我描述一下我最近用一个小的、便携式的 Linux 发行版解决的两个问题
我并不总是在同一个地点工作。随身携带便携式笔记本电脑是让我的 Linux 桌面随处可用的方法之一,但另一种方法是在我的钥匙链上放一个小型的 Linux 桌面。当我到达一个新的工作地点时,我可以将 USB 密钥插入任何可用的 PC,快速启动 Linux 并继续我上次的工作。密钥上的实时 Linux 完全在内存中运行,并使用密钥进行持久存储。我不需要大量的存储空间(我的大部分数据都存储在云端),但我确实需要能够使用一组独特的应用程序包,以便我有工具来完成我的工作。
我有一台上网本在几个月前坏掉了。故障出在硬盘上,而这一代上网本使用的是 1.6 英寸的硬盘。如果你能找到一个这种尺寸的替代驱动器,价格太高了,以至于购买一台新的上网本更便宜。我希望即使在这台机器上也能运行我的 Linux 桌面,否则它就是一块砖头。
为了解决这些问题,我需要一个具有以下特性的 Linux 发行版
足够小,可以装在 USB 密钥上。
可在各种机器上启动(所有 PC 架构)。
能够在仅内存中运行,因为目标机器都将具有 1GB 或更多内存。
快速启动。
应用程序包与主要的 Linux 发行版兼容。
那么,为什么不直接从 USB 闪存盘运行桌面发行版呢?事实上,那是我的第一个解决方案,大多数桌面发行版都使其非常容易创建实时 USB 安装,包括持久化存储到 USB 驱动器。例如,Ubuntu 10.10(以及自 9.04 以来的每个 Ubuntu 版本)都带有 usb-creator 工具,该工具为您创建一个实时 USB 安装,前提是您有相关的 .iso 文件。
要创建 Ubuntu 10.10 实时 USB 安装,首先从 Ubuntu 网站 (www.ubuntu.com/desktop/get-ubuntu/download) 下载桌面版本的 .iso 文件。下载完成后,插入 USB 闪存盘(2GB 或更大),然后从 Ubuntu 菜单中选择“系统”→“管理”→“启动盘创建器”。选择下载的 .iso 文件和目标 USB 设备——这里显示的是 /dev/sdb1。当您单击“制作启动盘”时,Ubuntu 会将所有需要的文件复制到闪存盘,并使其可启动。
您将收到一个确认框,然后您就有了便携式 Ubuntu。如果这满足您的需求,那么您就一切就绪了。您可以在另一台机器上启动它,使用以下命令安装应用程序sudo apt-get install,并且可以像在桌面上一样做几乎任何事情,唯一的限制是 USB 闪存盘上的可用存储空间。
但是,您的需求可能超出标准现成桌面所能提供的范围。因为这是 Linux Journal,您几乎肯定有自定义的需求和偏好,幸运的是,有很多方法可以创建您自己的便携式桌面发行版。
Puppy Linux 尤其以定制为构建目标。如果您从未听说过它,您可能需要看看 Louis Iacona 在 2008 年 4 月刊中发表的文章“Puppy Linux”(www.linuxjournal.com/article/9932)。您还应该访问 www.puppylinux.com。Barry Kauler 在 2003 年创建了 Puppy Linux,从那时起,他一直在继续开发它,并为其建立了一个开发者社区。最近,Barry 更加专注于该平台的定制功能,从而产生了 Woof 工具,该工具可以构建类似 Puppy 的发行版。
Puppy Linux 还有许多其他理想的特性,包括
完全从内存运行,因此速度非常快。
非常小的内存占用 (100–110MB)。
支持各种硬件设备。
与来自其他发行版(包括 Ubuntu)的软件包兼容。
用户界面旨在易于上手。
还有一些特性可能并不理想,这取决于您的应用
完全在内存中运行,因此所有活动程序都必须能装下。
用户以 root 身份运行,因此有可能搞砸。
硬件设备支持不如主要的发行版完整。
即使有了 Puppy Linux 提供的工具,构建您自己的发行版也不适合新手。您需要熟练使用 Linux 命令行,拥有合适的构建环境和宽带互联网连接。此外,这些工具仍在开发中,因此请预期事情并非完全完整(例如报告等),并且某些配置选择的组合可能还无法工作。最好的消息是,您可以在 puppylinux.org 找到一个非常活跃的 Puppy 和 Woof 用户社区,您可以向他们寻求帮助。
构建您的发行版分为五个阶段,每个阶段都有多个步骤
创建一个 Puppy Linux 主机系统。Woof 工具只有在 Puppy Linux 下运行时才能工作,因此您需要做的第一件事是创建一个运行 PL 的主机系统。
使用您的 PL 主机下载 Woof 工具。
使用 woof_gui 工具配置 Woof 将用于构建您的发行版的文件。
构建您的发行版。
将您的发行版安装到可启动的 USB 密钥上。
Barry 和 PL 社区使这个阶段变得非常容易。只需从 puppylinux.org 上列出的存储库之一下载最新的 Puppy Linux .iso 文件(撰写本文时为 LuPu 5.1.1),并将 .iso 写入可启动的 CD。在 Ubuntu 上,您可以使用“系统”→“管理”→“启动盘创建器”来刻录 CD。对于 Windows,PL 站点推荐使用 BurnCDCC 实用程序。
一旦您有了 PL CD,您需要在 Linux 系统上启动它。Puppy Linux 完全从内存运行,但 Woof 需要 10GB 的文件空间来进行构建,因此您需要使用底层的硬盘。不幸的是,Woof 只能与 ext3 或 ext4 文件系统一起工作,因此 Windows 磁盘对您不起作用。当 PL 启动时,它应该显示一个桌面并允许您启动 SNS 实用程序来配置您的网络连接。
此时,您可以使用 Puppy Linux 安装实用程序(在桌面上)来创建 PL USB 密钥。如果您喜欢 PL 的预配置方式,或者只想从 .deb 软件包安装一些额外的应用程序,您可以停在这里,而无需完成发行版的完整构建。如果您愿意,您也可以将 Puppy Linux 安装到您的硬盘上,但这不是必须的。
PL 自带其自己的版本控制系统,名为 Bones。您要做的第一件事是在硬盘上的某个位置创建一个名为 woof-tree 的目录。在我使用的设置中,PL 将我的 Linux 硬盘视为 /dev/sda1。
现在您可以打开一个 PL 终端窗口(菜单→实用程序→Urxvt 终端模拟器),并注意您是以 root 用户身份运行 (#)。在我的设置中,我 cd 到了我的 Linux 主目录并创建了 woof-tree
# cd /mnt/sda1/home/rick # mkdir woof-tree # cd woof-tree
完成后,您首先告诉 bones 哪个存储库
# bones setup
您可以为 local_username 填写任何您喜欢的内容;下载 URL 是 bkhome.org/bones/woof。
现在,输入
# bones download
然后,bones 将会执行此操作——下载并解压当前的一组 Woof 文件。
完成后,现在是阅读下载的文件 README.txt 的好时机,您可以在 woof-tree 中找到它。该文件包含有关工具的最新信息,也可以作为下一阶段的帮助文件。
Bones 将许多文件下载到了 woof-tree 中,包括一些名称以 DISTRO_ 开头的配置文件、其他一些文件和脚本,以及六个编号的脚本:0pre、0setup、1download、2createpackages、3builddistro 和 4quirkybuild,后者不用于 Puppy Linux 构建。
您可以编辑配置文件并从命令行使用 Woof 来构建您的发行版,但我会警告您,这有点令人生畏。幸运的是,Barry 和他的朋友们为构建系统提供了一个 GUI 界面,可以帮助您完成整个过程
# ./woof_gui
此实用程序顶部的选项卡对应于构建发行版的步骤。这些选项卡反映了 Woof 配置文件,并允许您自定义您的发行版。要创建您的发行版,您需要从左到右浏览这些选项卡,做出选择并执行所需的构建。
“规格”选项卡显示要构建的发行版的高级设置。在撰写本文时,woof 预配置为构建 Wary,它是 Puppy Linux 的衍生版本之一。请注意大约三分之二位置的“以前的模板”部分。从这个下拉菜单中,您可以选择许多以前定义的(且经过验证的)构建模板,这最大限度地减少了您必须做出的选择以及指定某些无法工作的东西的可能性。我选择了“Ubuntu Lucid Lynx LuPu”。如果您进行了更改,请选择底部的“更新整体规格”以更新相应的配置文件。您可能会收到一些关于缺少文件的错误——此时,所有这些都应该配置为在 Woof 构建时加载。
下一个选项卡“PET 存储库”告诉 Woof 在哪里找到构建所需的 PET 软件包和数据库。PET 是 Puppy Linux 和 Woof 使用的本机软件包格式。它经过优化,因此软件包很小且可以快速加载。除非您想添加一个不属于标准 Puppy PET 存储库的 PET 软件包,否则您不必更改此选项卡。如果您需要修改存储库列表,请单击“编辑”,您将被放入文本编辑器以编辑 DISTRO_PET_REPOS 配置文件。“帮助:存储库”按钮将为您提供该文件的格式。如果您确实进行了任何更改,请单击“更新 PET 存储库”以保存更新。
下一个选项卡“兼容存储库”为 Woof 提供了与您在“规格”选项卡上输入的“兼容发行版”条目兼容的软件包和数据库的在线位置。如果您需要修改兼容软件包位置的列表,请单击相应的“编辑”按钮,您将被放入编辑器以编辑 DISTRO_COMPAT_REPOS 配置文件。同样,“帮助”按钮提供了格式,如果您进行了更改,您需要单击“更新兼容发行版存储库”以保存它们。
下一个选项卡“下载数据库”执行脚本 (0setup) 以从最后两个选项卡下载 PET 和兼容软件包数据库。选项卡的上半部分显示了选定的 PET 数据库以及实际可本地使用的数据库。下半部分对兼容数据库执行相同的操作。如果选定列表和本地列表不一致(此时很可能不一致),请单击“更新本地数据库文件”按钮,文件将被下载。这可能需要一段时间才能完成。
下一个选项卡“选择软件包”是您查看构建中包含的 PET 和兼容软件包的地方。有单独的按钮可以编辑 PET 软件包列表和兼容发行版软件包列表,但在撰写本文时,这些编辑器尚未实现。没关系,您可以通过直接编辑 DISTRO_PKGS_SPECS-<兼容发行版> 来更改软件包选择。该文件的格式在该文件本身中以注释形式给出。在撰写本文时,“检查依赖项”按钮也尚未实现,因此请确保包含任何添加项的依赖项,以便构建可以成功完成。
“下载软件包”选项卡执行脚本 (1download),该脚本实际下载您为发行版指定的软件包。同样,这需要一段时间。该脚本首先检查以确保在线软件包位置可访问,然后下载每个需要的软件包。下载可能需要几个小时,因此会弹出一个小的控制面板对话框,让您暂停、恢复或退出脚本。如果软件包已存在于本地位置,则不会再次下载,因此该脚本也可以用于重新启动下载或在进行更改时更新软件包集。“报告”选项卡上的功能尚未实现,但结果位于 woof-tree 目录中的名为 DOWNLOAD-FAILS-PET 或 DOWNLOAD-FAILS-<发行版> 的文件中。
如果下载软件包时出现任何问题,您可以在这里使用您的 Linux 推理技能。在我的情况下,AbiWord 的下载失败了——脚本正在寻找预构建的 PET 软件包 abiword-2.8.3-lupu.pet。快速 grep Packages* 文件表明脚本期望在 puppy-5-official 中找到它。重新运行下载,问题很快就显现出来——abiword-2.8.3 下载失败,因为链接断开,而 puppylinux.org 上的讨论证实 AbiWord 软件包存在一些问题。我可以找到 .pet 或 .deb 软件包并手动复制它们,但说实话,我的发行版中不需要 AbiWord,因此,我编辑了 DISTRO_PKGS_SPECS-ubuntu-lucid,并将 abiword 条目从“yes”更改为“no”。“下载软件包”确认一切都已成功下载。
“构建软件包”选项卡执行脚本 (2createpackages),该脚本获取您下载的发行版软件包(在本例中为 Ubuntu .deb 软件包)并将它们转换为 PET 软件包。在此步骤结束时,您将拥有发行版的完整 PET 软件包集合。
“内核选项”为您提供 Linux 内核的选择以及一些减少内核大小的选项。根据您对内核大小的担忧、您对提到的特定模块的需求以及您的实验意愿,您可以选择是否包含它们。
“构建发行版”是最后一个选项卡,它使用所有收集的配置和软件包来构建您的自定义发行版。您可以在此选项卡上选择简化的文件名,但阅读相当详尽的帮助文件,似乎没有充分的理由这样做。单击“构建发行版”开始构建。随着构建的进行,您将获得一些选项(将模块移动到单独的文件以缩短启动时间、默认主题、文本阴影、Xorg 驱动程序和可执行文件剥离)。您可以进行实验或采用默认值(提示会告诉您默认值是否不安全)。当 .iso 文件完成时,您可以选择刻录 CD——您需要它,即使是为了制作 USB 密钥。然后,系统会询问您是否要构建 devx 文件,如果您计划使用您的发行版进行编译和构建,则需要该文件。脚本完成后,您将在 sandbox3 目录中找到您的发行版的 .iso 文件(以及 .iso 文件的 MD5)。
Puppy Linux 包括一个 USB 驱动器安装程序,它非常易于使用,但它只知道如何安装正在运行的版本。这就是为什么您之前需要制作发行版的 CD。启动该 CD 并插入 USB 驱动器。单击桌面上的“安装”。从第一页选择“通用安装程序”。
单击“确定”两次。该对话框是不言自明的,其中包含在出现问题时纠正问题的选项,以及在实际写入 USB 驱动器之前的大量确认。
恭喜您,您刚刚创建了自己的 Linux 发行版,您可以将其挂在钥匙链上并在您找到的几乎任何 PC 上启动它。只要 PC 至少有 256MB 内存并且可以从 USB 启动,您就可以启动您的 Linux 桌面,完成您的工作,而不会影响底层系统。
因此,有几种方法可以将 Linux 放在您的钥匙链上
使用主要发行版的 USB 驱动器版本。
使用更小的兼容发行版,如 Puppy Linux。
使用 Woof 创建您自己独特的发行版。
有了这么多选择,您可以权衡定制化与工作量,以获得完全符合您需求的解决方案。
Rick Rogers 是一位拥有 30 多年经验的专业嵌入式开发人员。现在专注于移动应用程序软件,当 Rick 不为生计编写软件时,他会撰写书籍和像这篇文章这样的杂志文章。他欢迎对本文的反馈,邮箱地址为 portmobileapps@gmail.com。