如何进入持久安装的 chroot 环境?

要进入“正常”安装,只需将常见的/、/proc、/sys和/dev挂载到进行正常的管理任务。
但是如何处理所谓的“持久性”安装(请参阅这里)?如何模拟引导过程中的“持久性”参数(系统如何处理此问题)?
这个问题可能与如何在持久性LiveUSB上恢复用户名和密码?有关。
(我没有特定的问题要解决,我只是感兴趣。)
1个回答

持久化USB驱动器使用压缩的只读文件系统(squashfs),并在其上覆盖一个可写文件系统层来存储更改的文件。可写文件系统存储在单个文件中(类似于zip文件,但没有压缩-实际上是ext3,但这不重要)

要将所有内容“重新组合”:

  1. 创建事物将放置的位置。
  2. 使文件系统看起来像整个文件系统而不是文件(就像它们目前所做的那样)。
  3. 将文件系统连接在一起。
  4. 对文件系统进行操作,例如chrooting
  5. 清理

我假设USB驱动器被挂载在

 /media/usb/

按照以下说明,将此更改为包含您持久安装的目录。

您需要以root身份登录,或在每个命令前加上sudo

1. 创建文件夹

需要创建一些文件夹:

  • /media/rootfs - 我们将放置只读文件系统的位置
  • /media/cow - 可写覆盖层的位置
  • /media/persist_usb - 两个文件系统将合并的位置

    可以使用以下命令完成:

    mkdir /media/{rootfs,cow,persist_usb}

2. 使文件看起来像文件系统

首先是压缩的文件系统

mount -t squashfs -o loop,ro /media/usb/casper/filesystem.squashfs /media/rootfs

(描述:使用squashfs将filesystem.squashfs文件挂载到/media/rootfs)

接下来是可写文件系统

mount -o loop,rw /media/usb/casper-rw /media/cow

(描述:使用loop device将文件casper-rw'挂载到'/media/cow

3. 将文件系统连接在一起

现在我们准备好将这两个目录连接在一起了

mount -t aufs -o dirs=/media/cow=rw:/media/rootfs=ro unionfs /media/persist_usb

(描述:使用aufs(参见unionfs)将两个目录的联合挂载到/media/persist_usb,其中/media/cow可写,/media/rootfs只读)

4. 玩耍一下

这一步就留给你了。

5. 清理工作

当你完成了安装过程中的一些有趣操作(比如chrooting),你需要清理掉创建的东西。

首先撤销第三步:

 umount /media/persist_usb

下一步是撤销第二步。我们可以同时进行文件系统的操作。
 umount /media/{rootfs,cow}

(说明:卸载 /media/rootfs 和 /media/cow)
最后,撤消步骤1:
 rmdir /media/{rootfs,cow,persist_usb}

您对文件系统所做的更改已经保存,现在您可以卸载USB驱动器(如果您愿意)。

哇,非常好!安装了 aufs-tools 后,它的表现就像魔法一样。这个星期我会将您的方法添加到德国Ubuntu维基上 :)。 - Lasall