我需要尽可能保持一个系统完好无损。只允许焊接硬件材料:-)。我需要安装一个测试软件包,以后这个软件包一定不能留在那里。
我有以下情况:
- mmcblck 分区挂载为 /、ext4、只读、内核 v4.6.0
- USB 棒(仅一个分区),安装到 /tmp/usbstick,ext4
- 在 usbstick /tmp/usbstick/upperdir、/tmp/usbstick/workdir 上创建目录
- 使用以下行: mount -t Overlay Overlay -o lowerdir=/,upperdir=/tmp/usbstick/upperdir,workdir=/tmp/usbstick/workdir /
之后 / 仍然是只读的。我唯一取得的部分成功是当我创建 /tmp/usbstick/merged 并将其作为“合并”目录而不是 / 提供给模块时。然后我在该目录中看到了我的所有 rootfs,并且它是 rw 安装的,但我不能在那里使用它。我应该怎么办?
答案1
我尝试 chroot 到合并目录。结果正如预期的那样:我有 rw rootfs,我唯一错过的是虚拟内核文件系统。因此,在安装覆盖层后,我执行了以下操作:
TARGETDIR="/tmp/usbstick/merged"
mount -t proc proc $TARGETDIR/proc
mount -t sysfs sysfs $TARGETDIR/sys
mount -t devtmpfs devtmpfs $TARGETDIR/dev
mount -t tmpfs tmpfs $TARGETDIR/dev/shm
mount -t devpts devpts $TARGETDIR/dev/pts
然后链接mtab:
chroot $TARGETDIR rm /etc/mtab 2> /dev/null
chroot $TARGETDIR ln -s /proc/mounts /etc/mtab
chroot $TARGETDIR