在自定义目录或分区中拥有自己的自由容器

在自定义目录或分区中拥有自己的自由容器

有没有办法在自定义目录或分区中安装自己的自由容器?我认为容器安装的主要大小(卷)属于这样的目录:

/home/phablet/.cache/libertine-container/my-container/rootfs

当然,了解自己容器的其他文件位置列表也会很有帮助,例如:

~/.local/share/libertine/ContainersConfig.json
~/.cache/libertine-container/my-container
~/.cache/my-container
~/.local/share/libertine-container/user-data/my-container
~/.local/share/libertine-container/user-data/my-container/.cach/libertine-container/my-container

我现在看到的唯一方法是使用mount --bind..,但这样做我们有几个问题此处/etc/fstab编辑或使用/etc/rc.local 或者设备启动时自动挂载的 upstart 脚本

所以,第二个问题是:如果我 不时手动使用mount --bind..绑定 ,那么/home/phablet/.cache/libertine-container/my-container/rootfs我会在自由范围的正确工作方面遇到麻烦吗就像那里描述的一样)?

答案1

在我们操作之前,我们应该有一个带分区的 SD 卡ext2/3/4。在 Ubuntu Touch 中,它可以表示为/dev/mmcblk1p2(在我的情况下)。如果我们想要永久安装,我们不能使用/etc/fstab/,但我们可以使用/lib/init/fstab,因为我指出答案在 Ubuntu Touch 中永久安装 SD 既不方便也不稳定。有时,由于 ext2 分区上的文件系统错误,我在启动 Ubuntu Touch 时遇到问题。也许,关闭设备无法正确执行卸载。因此,我决定安装 SD 卡并时不时地在其上使用 Libertine 容器。

首先,我sd-container在内部磁盘空间中创建了一个新的容器,名字和往常一样:/home/phablet/.cache/libertine-container/sd-container。然后,我使用以下命令在 SD 上挂载了 ext2 分区:

sudo mount /dev/mmcblk1p2 /home/phablet/mnt/sd -t ext2 -o defaults,noatime,nodiratime,errors=remount-ro

然后我创建了目录/home/phablet/mnt/sd/sd-container/并将 sd-container 的 rootfs 复制到 SD 上的 ext2 分区:

cd /home/phablet/.cache/libertine-container/sd-container
rsync -aAXvH ./ /home/phablet/mnt/sd/sd-container/

经过这些准备后,我编写了脚本来在 SD 上挂载 ext2 分区并绑定 rootfs(sdgo.sh):

#!/bin/sh
sudo mount /dev/mmcblk1p2 /home/phablet/mnt/sd -t ext2 -o defaults,noatime,nodiratime,errors=remount-ro
sudo mount --bind  /home/phablet/mnt/sd/sd-container/rootfs /home/phablet/.cache/libertine-container/sd-container/rootfs
restart unity8-dash

并停止播放此脚本(sdstop.sh):

#!/bin/sh
sudo umount /home/phablet/.cache/libertine-container/sd-container/rootfs
sudo umount /dev/mmcblk1p2
restart unity8-dash

最后,在我运行sdgo.shunity8-dash 后,我可以在桌面应用程序范围下看到新的 SD 容器范围及其应用程序。我可以像往常一样运行或安装新应用程序。但此容器的根文件系统位于 SD 卡上!当我想停止时,我运行sdstop.sh,SD 容器范围消失。而小的原始文件rootfs(被此绑定隐藏)仍保留在内部磁盘空间中,没有变化。

结论:我在 SD 卡上拥有 Libertine 容器的 rootfs,并且可以在需要时打开/关闭它及其范围。

相关内容