起因
手头一块 nanopi neo,老式的 32位开发板,想做一个前置的小代理服务,但为了保护 TF 卡不被各种乱七八糟的东西,比如日志什么的频繁写入给写死,所以想需要使用类似网吧还原卡似的东西,让写入的东西都入内存里放,重启就清空,反正就是不能动我的 TF 卡,这样 TF 卡能活的久些;
所以呢就查到了 overlayroot 这个东西,其实好像是叫 overlayFS 吧,我也不是很清楚,反正就相当于在真正的系统上面盖了一层膜,你所有的写入操作都在这个膜上,重启系统就相当于换一张膜,所以之前的数据就都没了,就跟网吧的还原卡是一个意思;
但是呢在按网上的教程操作就总也不好用,所以这里记录的主要是问题的解决,不解决如何安装的问题;
问题
在系统安装完后,并把所需要的服务都配置完成了,要开始使用 overlayroot 了,重启发现并没有生效,写入的东西还是保存在 TF 卡上,查看 df -lh 还是没有 overlayroot 的挂载;
# 安装 overlayroot 工具
apt install overlayroot
# 修改 overlayroot 配置文件
vim /etc/overlayroot.conf
# 在文件最后的 overlayroot=""
# 改为 overlayroot="tmpfs:swap=1,recurse=0" 或 overlayroot="tmpfs" 都可以
正常来说,配置完成后重启系统再进入系统就可以成功了,查看 df -lh 中 / 是挂载在 overlayroot 下的,正常的应该如下:
user@nanopineo # df -lh
文件系统 大小 已用 可用 已用% 挂载点
udev 183M 0 183M 0% /dev
tmpfs 49M 1.3M 48M 3% /run
/dev/mmcblk0p1 15G 1.8G 13G 13% /media/root-ro
tmpfs-root 242M 4.2M 238M 2% /media/root-rw
overlayroot 242M 4.2M 238M 2% / # 要有这行才是生效了
tmpfs 242M 0 242M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 242M 0 242M 0% /tmp
/dev/zram1 47M 3.2M 41M 8% /var/log
tmpfs 49M 0 49M 0% /run/user/1000
而且使用命令 overlayroot-chroot 还会出现错误 ERROR: Unable to find an overlayroot filesystem
这都说明并没有使用生效 overlayroot,还是在正常的可保存写入的系统中
解决
在经过多方查找,资料查看,中英文混查,AI 协助,终于让我找到了解决问题的方法,我照着做了,然后成功了,现在是否使用 overlayroot 的功能只要修改一下那个 /etc/overlayroot.conf 最后的一行就行了
overlayroot="" 重启后就是正常可保存记录的系统
overlayroot="tmpfs" 重启后就是 overlayroot 的系统,完全不会影响 TF 原系统,所以也就不怕各种意外断电什么的
原因:就是因为在开发板的系统初始化时,如果需要使用 overlayroot 功能,就必须要用 grep 命令(特好奇,为什么是要用这个命令,可能是为了获取一些参数吧),但 initramfs 这个环境里是非常小非常纯净的一个系统,所以就没有这个命令(这个我试过了,因为在各种解决问题时被逼迫进入过这个系统,连个文本编辑器都没有,只能用 cat 去重新编辑配置内容,也幸亏 putty 可以复制粘贴),所以解决问题的关键步骤在下面:
# 安装 busybox-static
apt install busybox-static
但文档里还有两步,我后来分析可能也不需要操作,原因你看下面的操作就知道了
# 修改 initramfs.conf 中的配置
vim /etc/initramfs-tools/initramfs.conf
# 修改其中的 BUSYBOX = auto 改为 BUSYBOX = y 保存
# 更新 initramfs 的配置
update-initramfs -c -k all
所以我分析原配置是 auto,应该就可以自己认出来了,不改 initramfs 的配置,也就不用 update-initramfs 了,谁要是有机会可以试一下我的想法。
最后这个问题就水灵灵的解决了;不过这个资料真是太少了,真是不好找。
后话
如果在 overlayroot 环境中使用时,有需要操作长久保存的数据,比如修改配置,安装新软件这类的,可以使用 overlayroot-chroot 命令进入到原 TF 卡上的系统中操作,就可以正常保存了,再重启时就是你修改过配置或软件的新 overlayroot 系统
要注意,这种操作都要使用 root 权限,你也可以试试 sudo

被折叠的 条评论
为什么被折叠?



