所以我得到了一个装有我自己的 Debian 运行副本的 USB 盘,并且启动正常。问题是忘记 EFI,只需使用老旧的 LILO 即可使其可启动 - 无需大惊小怪,没有混乱。但是他们说 USB 盘不喜欢不断写入,而 Debian 的运行副本正在被 Firefox 和 systemd 日志以及其他任何东西不断写入。所以我想到,由于您从 .ISO 文件创建的库存安装“实时”USB,据我所知,从未真正写入任何东西 - 所有看似写入的都是 RAM 中的映像,当您注销时就会消失。所以我想到要问一下我是否可以制作我自己的系统的 ISO 并让它也作为“实时”USB 工作。关键是 ISO 吗?还是有其他方法?也许它必须是 EFI?
实时系统避免使用各种技术(完全从内存运行、在只读文件系统之上覆盖基于 RAM 的文件系统等)写入其底层存储;这就是产生您感兴趣的行为的原因。它们如何启动或您下载的用于创建它们的文件的扩展名并不相关。
您可以创建自己的实时系统。由于您使用的是 Debian,我建议您查看用于创建Debian 自己的实时映像的工具集。软件包
live-build
中有详细的手册,但您可能会发现关注用户的帖子(例如Ian LeCorbeau 的)live-manual
会更容易,这些帖子解释了他们如何使用这些工具。还可以手动准备实时图像;如果操作正确,这将允许您根据现有设置创建实时图像。有关详细信息,请参阅Will Haley 关于该主题的帖子。
简而言之,回答标题中的问题:是的,你可以。但你可能不想这么做。
您正在将几个不相关的概念组合在一起。
EFI 和 BIOS(由 LILO 使用)是启动方法。两者都可用于启动常规操作系统安装和“实时”媒体 - 硬盘、USB 或 CD/DVD/蓝光。使用原生 EFI 启动方法可启用一些新功能,例如使用在正在运行的操作系统中配置固件启动选项的标准方法
efibootmgr
,以及使用安全启动的选项。但除此之外,一旦 Linux 内核启动,引导加载程序的工作就完成了,内核 + initramfs 将完全控制之后发生的事情。正确的 .ISO 文件是 ISO9660 文件系统的映像,主要用于刻录到 CD/DVD/蓝光光盘 - 因此,它一度是分发操作系统安装介质的一种有用方式。后来,Linux 发行版开始混合它们的 .ISO 文件,以便它们可以写入类似 HDD 的介质(如 USB 棒)并以此方式启动。这通常需要嵌入第二个引导加载程序,而当映像刻录到 CD/DVD/蓝光光盘时不会使用该引导加载程序。
如果您想构建自己的“实时”Linux USB 棒,您可以这样做 - 但如果您不打算将其副本刻录到 CD/DVD/蓝光上,那么将其制作成合适的 ISO 映像(=使用 ISO9660 文件系统并将其混合用于 USB 启动)将需要做很多不必要的工作。您仍然可以制作 USB 的磁盘映像,但您不应将其称为 ISO,而应称为“磁盘映像”(
.IMG
或.IMA
文件,如 HDD/SSD 映像)。它仍然可以像典型的 Linux ISO 映像一样写入另一个 USB 棒。使用 ISO 文件不会使 Linux 安装成为“实时”媒体;其 initramfs 处理安装根文件系统的方式却能做到这一点。如果它不安装常规的基于磁盘的文件系统,而是将根文件系统设置为 RAMdisk,或者使用将
overlayfs
媒体中的只读根文件系统映像 + RAMdisk 上的一组可写入更改合并(或合并到媒体上的可用空间以用于持久实时媒体),则它就是“实时”媒体安装。如果您想要基于 Debian 的自定义实时 USB,一种简单的设置方法可能是在虚拟机中安装 Debian 以方便开发,添加实时媒体辅助包(如
bilibop-lockfs
或)overlayroot
并根据实时媒体行为对其进行适当配置,进行任何必要的转换(如构建 squashfs 或类似的根文件系统映像),然后将整个安装的必要部分复制到 USB 并在其上安装引导加载程序。此时,必要的部分(除引导加载程序外)可能只有三个文件:但是如果您喜欢挑战,理论上您甚至可以从 Scratch风格开始设置Linux ……整个过程中无需构建自定义 ISO。
根据您的问题,我认为您还没有准备好开始设置您自己的自定义实时 Linux。我建议您挑选一个您选择的实时 Linux 媒体:提取其 initramfs 文件的内容,然后阅读其启动脚本以了解其工作原理以及它可能使用哪些实时媒体特定工具。一旦您对该过程涉及的内容有了更清晰的认识,您就可以开始您自己的实时 Linux 项目了。