如何chroot进入持久安装?

Las*_*all 4 mount chroot

chroot 进入“正常”安装只需要挂载 common /、/proc、/sys 和 /dev 来执行正常的管理任务。

但是如何进行所谓的“持久”安装(请参阅此处)?如何模拟引导过程中的“持久”参数(系统如何处理此问题)?

这个问题可能与如何在持久性 LiveUSB 上恢复我的用户名和密码有关?

(我没有要解决的具体问题,我只是感兴趣。)

Por*_*jim 6

持久性 USB 驱动器使用压缩的只读文件系统 (squashfs),并在存储更改文件的顶部覆盖可写文件系统层。可写文件系统存储在单个文件中(就像一个 zip 文件,但没有压缩——它实际上是 ext3,但这并不重要)

把所有东西“重新组合在一起”:

  1. 创建事情将要去的地方。
  2. 使文件系统看起来像整个文件系统而不是文件(就像他们现在所做的那样。
  3. 将文件系统连接在一起。
  4. 玩弄文件系统,比如chrooting
  5. 清理

我假设 USB 驱动器安装在

 /media/usb/
Run Code Online (Sandbox Code Playgroud)

按照这些说明将其更改为包含持久安装的目录。

您需要是 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
Run Code Online (Sandbox Code Playgroud)

(说明:使用squashfs挂载filesystem.squashfs文件/media/rootfs

接下来是可写文件系统

mount -o loop,rw /media/usb/casper-rw /media/cow
Run Code Online (Sandbox Code Playgroud)

(说明:casper-rw' on '/media/cow使用循环设备挂载文件)

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

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

mount -t aufs -o dirs=/media/cow=rw:/media/rootfs=ro unionfs /media/persist_usb
Run Code Online (Sandbox Code Playgroud)

(说明:安装使用两个目录的联合AUFS(见的unionfs)到/media/persist_usb/media/cow为可写入,/media/rootfs为只读)

4. 玩耍

我会把这一步留给你。

5. 清理

一旦你完成了安装的乐趣(比如chrooting),你需要摆脱创建的东西。

首先撤消第 3 步:

 umount /media/persist_usb
Run Code Online (Sandbox Code Playgroud)

接下来撤消第 2 步。我们可以同时执行两个文件系统:

 umount /media/{rootfs,cow}
Run Code Online (Sandbox Code Playgroud)

(说明:卸载/media/rootfs/media/cow

最后,要撤消步骤 1:

 rmdir /media/{rootfs,cow,persist_usb}
Run Code Online (Sandbox Code Playgroud)

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