armbain overlayroot 问题解决记录

起因

手头一块 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值