overlay是一种联合文件系统,包含两个文件系统,一个lower底层只读文件系统和一个upper上层可写文件系统。
开启overlay可以有很多有意思的玩法,比如立即恢复默认系统配置、保存当前系统配置、切换不同系统配置等。

本教程通过修改启动参数来执行一个自定义预载脚本,使用备份分区/dev/mmcblk0p5作为系统底层,在6分区中新建overlay数据文件夹用作写入,不影响原先6分区的数据,使用原启动参数即可恢复到原系统

下面是开启overlay步骤:

  • 1、挂载备份分区

mount -t ext4 /dev/mmcblk0p5 /media

  • 2、制作preinit脚本进行文件系统的预载操作(整段复制到终端运行)
cat > /media/preinit<< EOF
#!/bin/sh
overlay_device="/dev/mmcblk0p6"
overlay_subdir=""
mount -t devtmpfs none /dev
mount -t proc proc /proc
mount -t sysfs none /sys
mount -t tmpfs none /mnt
mkdir -p /mnt/lower /mnt/overlay$overlay_subdir /mnt/newroot
mount -o bind,ro / /mnt/lower
mount -t ext4 $overlay_device /mnt/overlay$overlay_subdir
mkdir -p /mnt/overlay$overlay_subdir/upper /mnt/overlay$overlay_subdir/work
mount -t overlay -o lowerdir=/mnt/lower,upperdir=/mnt/overlay$overlay_subdir/upper,workdir=/mnt/overlay$overlay_subdir/work overlayfs-root /mnt/newroot
mkdir -p /mnt/newroot/lower /mnt/newroot/overlay
cd /mnt/newroot
pivot_root . mnt
exec chroot . sh -c "$(cat <<END
mount --move /mnt/mnt/lower/ /lower
mount --move /mnt/mnt/overlay /overlay
chmod 755 /overlay
mount --move /mnt/proc /proc
mount --move /mnt/dev /dev || true
mount | sed -E -e 's/^.* on //g' -e 's/ type .*\$//g' | grep -x '^/mnt.*\$' | sort -r | while read xx ; do echo -n "\$xx\0" ; done | xargs -0 -n 1 umount
exec /sbin/init "\$@"
END
)" sh "$@"
EOF
  • 3、赋予脚本执行权限,然后卸载5分区重启。
chmod a+x /media/preinit
umount /media
  • 4、ttl进入fasboot,并修改bootargs启动参数

setenv bootargs console=ttyAMA0,115200 root=/dev/mmcblk0p5 init=/preinit rootfstype=ext4 rootwait blkdevparts=mmcblk0:1M(boot),1M(bootargs),10M(kernel),256M(rootfs),700M(backup),-(ubuntu)

  • 5、(可选)如需每次重启自动进入overlay系统的话需要保存启动参数

saveenv

  • 6、运行命令进入系统

mmc read 0 0x1FFBFC0 0x4B000 0x5000; bootm 0x1FFBFC0

  • 7、确认是否开启

df -hT
挂载点 / 对应的文件系统为overlay即开启成功

备注:

  1. 可以通过修改脚本的 overlay_subdir 参数来切换overlay的子文件夹,这样可以实现不同配置的用户数据相互独立,比如改为"/ubuntu"(参数必须以"/"开头),则所有用户数据均保存在/overlay/ubuntu

  2. 删除/overlay/中相应配置的文件夹即可恢复默认配置

  3. 多个配置如有数据需要共用建议把数据目录建立到/overlay下,比如共用docker的/var/lib/docker目录等

12 天 后

有没有简单一点的。之前不是用这个脚本去做U盘启动吗。

5 个月 后

openwrt系统就是用一个只读的squashfs分区(可以在线升级squashfs-sysupdate镜像文件)和一个yaffs2可写分区overlay它,系统界面上恢复出厂默认按钮一点:格式化overlay分区重启就完全重置了,不需要专备一个backup分区来保存初始镜像

    1 个月 后

    https://blog.csdn.net/qq_42330920/article/details/124729854
    安装NFS

    apt-get update
    sudo apt-get install nfs-kernel-server#安装nfs-kernel-server
    vi /etc/exports

    修改配置文件,在文件中写入/home/xxx/nfs共享文件夹名/ *(rw,sync,no_subtree_check,no_root_squash)

    参数介绍:* 表示任何网段的都可以访问, sync 表示资料同步写到硬盘和内存中,no_root_squash 表示具有超级用户权限

    用NFS挂载根文件系统详解(带nfs版本不兼容问题的解决方法)
    https://blog.csdn.net/weixin_42031299/article/details/122464952

    ARM板内核支持nfs服务
    cat /proc/filesystems

    看见了nodev nfs项,说明板子内核支持nfs服务,若没有则,从新制作内核。
    查看Ubuntu支持nfs版本
    cat /proc/fs/nfsd/versions

    24 天 后

    fastweb 那种方法需要改分区表,而且fastboot要支持squashfs。这个是进busybox再引导系统,绕过了fastboot直接读取squashfs文件系统

    2 个月 后

    overlay 的确不错 最近我在服务器也用起来了 现在暴力关电也不怕了

    10 个月 后

    怎么加入USB网卡驱动呢,玩客云带网卡坏了需要追加usb网卡驱动,有可以用的dtb,怎么放进去并开机自动运行

    说点什么吧...

    开源、免费、互助、进步

    e 酷网 www.ecoo.top 2023