将/etc从光盘挂载到squashfs中

将/etc从光盘挂载到squashfs中

我创建了一个 gentoo-live 系统,应该从 CF 卡启动。整个文件系统位于squashfs 中。我创建了一个自定义 initrd,它首先安装 CF 卡,然后将压缩的文件系统转换为/.

我想要/etc可写,所以我将其复制到添加了绑定的 CF 卡上。然而这似乎不起作用。系统启动但未安装 /etc。

我想知道我的方法是否正确,以及我可以采取哪些措施来解决它,或者如果不正确,实现此目标的正确方法是什么。

这是init-script我的initrd

#!/bin/busybox sh
mount -t proc none /proc
mount -t sysfs none /sys

mount /dev/sda1 /mnt/flash
mount -o loop /mnt/flash/filesystem.squashfs /mnt/root
mount -B /mnt/flash/etc /mnt/root/etc
mount -o remount,rw /mnt/root/etc

umount /proc
umount /sys

exec switch_root /mnt/root /sbin/init

这是以下的缩短输出cat /proc/mounts

rootfs / rootfs rw 0 0
/dev/sda1 /mnt/flash ext2 rw,relatime,errors=continue,user_xattr,acl 0 0
/dev/loop0 / squashfs ro,relatime 0 0
...

答案1

BusyBox 的内置mount命令无法识别-B;你必须使用-o bind

mount -o bind /mnt/flash/etc /mnt/root/etc

/mnt/flash另外,我认为如果已经可写,则无需重新安装。但请先尝试修复绑定安装。

相关内容