我创建了一个 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
另外,我认为如果已经可写,则无需重新安装。但请先尝试修复绑定安装。