非持久性实时系统上的程序和文件到底保存在哪里?

非持久性实时系统上的程序和文件到底保存在哪里?

最近,我需要使用实时系统测试各种内核启动选项,并且必须安装一个程序来在每次启动时检查系统信息(我没有可用的 USB 驱动器,而 CD 是当时更可靠的选择)。

经过几次安装后,我开始怀疑程序实际上“保存”在哪里,因为 CD 没有持久区域,也可以创建没有持久区域的 USB 驱动器。此外,可以使用非持久实时系统下载文件或制作屏幕截图,并将它们暂时保存在用户目录中。

这些文件实际上保存在哪里?它们是否加载到 RAM 中,因此实时系统的最大可用内存实际上是机器的 RAM 容量?已安装的程序是否存储在 CPU 缓存中或完全其他地方?或者这些信息可能写在 CD 介质的空白处?显然不可能是未分配的硬盘空间,因为实时系统也可以在完全加密甚至完全未安装硬盘的情况下运行。

答案1

Ubuntu ISO 附带的实时系统是 Ubuntu 安装,位于名为 的压缩文件中filesystem.squashfs。此文件的文件系统为壁球1类似于 CD 和 DVD 的 ISO 文件系统,可以挂载和使用。2

该文件位于/casper/CD 目录中。您甚至可以像挂载 ISO 文件一样挂载该文件。

该文件在启动时被挂载并加载到内存中,用作实时系统。但整个文件不会立即加载,而是只按需加载所需的部分/程序。

实时系统可以借助持久文件。Ubuntu 中使用的持久文件被命名为casper-rw,并包含可写的文件系统,例如ext3ext4。在可启动 USB 中,它位于驱动器的根目录中。

这个casper-rw持久文件是联合安装作为覆盖文件系统,这意味着只读filesystem.squashfs和可读/可写都casper-rw安装在 上/。任何更改或创建的文件都保存在 的可写文件系统中casper-rw。因此有效地创造了 Live CD 可写的假象,而实际上它们不可写。

那么,回答你的问题 -

这些文件实际上保存在哪里?

答案如上所述。

它们是否被加载到 RAM 中,因此实时系统的最大可用内存实际上是机器的 RAM 容量?

我想,memory您指的是空间。您的问题是“那么实时系统的最大可用空间实际上是机器的 RAM 容量吗?”

否。实时系统的最大可用存储空间为持久文件的大小(如果有)+ 交换空间(如果已经存在)+ RAM(需要用作存储空间直到重启)

安装的程序是否存储在 CPU 缓存中或其他地方?

如果您在 Live 系统中安装程序而没有持久文件,这些将保存在您的内存中。如果您重新启动,所有内容都将丢失。但是,如果您使用casper-rw持久文件,这些将保存在该文件中,并在下次重新启动后可用(假设你没有删除该文件

或者该信息可能写在 CD 介质的空白处?

不,它不会写入 CD 介质中。如上一个答案所述。

希望你能得到答案。


笔记:

  1. SquashFS - 这是一个只读文件系统,可让您压缩整个文件系统或单个目录,将它们写入其他设备/分区或普通文件,然后直接挂载它们(如果是设备)或使用环回设备(如果是文件)。来源

  2. 您可以使用以下命令安装它sudo mount ./filesystem.squashfs /mnt -o loop

  3. 联合挂载是一种将多个目录合并为一个目录,使之看起来包含它们组合的内容的方法。来源

答案2

它说的是非持久性的。因此它们在重启后不会“持续存在”。发生的情况是,一部分 RAM 被用作 RAM 磁盘。本质上,一部分 RAM 被用来模拟磁盘。实际上,这就是全部。这就是为什么您可以在 LiveCD 会话期间在 /home/ubuntu 上创建文件。它们在重启后不会存活(=持续存在)。

我手边没有 LiveCD,但df -h下次请尝试在终端中输入并查找/挂载点。查看设备。它很可能是这样的tmpfs。(这一行应该会给你你感兴趣的行df -h | grep \/$:)

阅读一些关于RAM 磁盘

相关内容