『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 10944|回复: 17

[基础教程] 树莓派 智能家装 新装闭坑手册(二,overlay篇)

[复制链接]

11

主题

121

帖子

838

积分

论坛技术达人

积分
838
金钱
707
HASS币
60
发表于 2020-6-7 18:35:06 | 显示全部楼层 |阅读模式
本帖最后由 yinzhennan 于 2020-6-9 10:26 编辑

0. 前言   
这是我第三次折腾 树莓派装搞智能家装了,希望也是最后一次. 这个希望就是来自于本篇的内容 overlayfs只读文件
总之,在几次ssh到树莓派,运行命令出些莫名其妙的错误,然后重装系统之后,问题的原因最终锁定在了意外断电上(之前还以为是sd不好,重新买了sd卡)

在考量过魔改mini充电宝,购买小型ups,电池扩展等方案后,最后发现还是 overlayfs 最香。

(本文参考: https://blog.csdn.net/zhufu86/article/details/78906046 原理什么的可以进去看下,我这里只写操作步骤)

作为一个系列,会包含以下篇章:

    虽然是系列里的一篇,但稳定的需求是独立的。你也可以在你已经完备的树莓派系统上搞起只读,以备不测。
    不兜圈子了,下面搞起:

1. 禁用交换空间
sudo dphys-swapfile swapoff
sudo dphys-swapfile uninstall
sudo update-rc.d dphys-swapfile remove

2. 更新系统,保证系统为最新状态
如果你是刚从系统篇那里搞完跳过来的,这步可以略过
sudo apt-get update
sudo apt-get upgrade

3. 初始化脚本
wget https://gitee.com/yinzhennan/script-share/raw/master/overlayRoot.sh
sudo cp overlayRoot.sh /sbin/overlayRoot.sh
sudo chmod a+x /sbin/overlayRoot.sh

4. 追加启动命令
cp /boot/cmdline.txt /boot/cmdline.txt.bak
sed -i 's/\($\)/ init=\/sbin\/overlayRoot.sh/g' /boot/cmdline.txt

5. 修改/boot只读
cp /etc/fstab /etc/fstab.bak
sed -i 's/\/boot           vfat    defaults/\/boot           vfat    defaults,ro/g' /etc/fstab

6. 重启,激活只读
reboot

好了,现在你的树莓派已经无敌了。无论是油炸还是火烤都无所畏惧了(免责声明...)。

随便改点什么内容,然后reboot或者直接拔电,会发现之前改的内容都还原了。一方面系统只读了,另一方面就是不再惧怕意外断电了(目的所在)。
当然,我们后面还有需要装其他软件或者更新系统,所以下面是切换 可写/只读 两种模式的方法:

切换可写
sudo mount -o remount,rw /boot
sed -i 's/ init=\/sbin\/overlayRoot.sh//g' /boot/cmdline.txt
reboot
切换只读
sudo mount -o remount,rw /boot
sed -i 's/\($\)/ init=\/sbin\/overlayRoot.sh/g' /boot/cmdline.txt
reboot
我们可以把这两个切换的命令定义成函数(注意在可写模式下操作) :
cat << EOF >> ~/.bashrc
function reboot_rw(){
  sudo mount -o remount,rw /boot
  sed -i 's/ init=\/sbin\/overlayRoot.sh//g' /boot/cmdline.txt
  reboot
}
function reboot_ro() {
  sudo mount -o remount,rw /boot
  sed -i 's/\($\)/ init=\/sbin\/overlayRoot.sh/g' /boot/cmdline.txt
  reboot
}
EOF
这样直接执行 reboot_rw/reboot_ro 就可以在可写和只读间切换了,这比插拔跳线什么的方便的多.


看到这里相信你已经明白了,只读模式下是安全的,不怕意外断电。但是只读模式下所有的修改重启后就会被还原。

可写模式下修改能够真正生效,但是可写模式下惧怕意外断电。所以可写模式操作完成之后,应尽快切换回只读模式reboot重启,以保证数据安全。

另外,为了能方便分清楚当前是只读还是可写模式,我们加两行脚本。 (注意在可写模式下操作):

cat << EOF >> ~/.bashrc
find_overlay=\`mount | grep overlay\`
if [ \${#find_overlay} -gt 0 ]; then
  PS1="[OVL] \$PS1"
fi
EOF
切换到只读模式下,命令行前面就会出现 [OVL] 表示当前是只读模式,效果如下
QQ截图20200607202958.png

好了,本篇就到这了。有了稳定可靠的环境,下一篇我们开始通过docker装hass和nodered






评分

参与人数 3金钱 +30 HASS币 +10 收起 理由
hkmore + 5
ufonba + 5 确实受够了意外断电的问题
+ 20 + 10 感谢楼主分享!

查看全部评分

回复

使用道具 举报

0

主题

5

帖子

97

积分

注册会员

Rank: 2

积分
97
金钱
92
HASS币
0
发表于 2020-6-7 21:46:44 来自手机 | 显示全部楼层
前排膜拜大神,期待后面的几篇力作
回复

使用道具 举报

11

主题

121

帖子

838

积分

论坛技术达人

积分
838
金钱
707
HASS币
60
 楼主| 发表于 2020-6-7 21:58:58 | 显示全部楼层
timcook 发表于 2020-6-7 21:46
前排膜拜大神,期待后面的几篇力作

多谢支持
回复

使用道具 举报

30

主题

493

帖子

4767

积分

论坛元老

佑桑

Rank: 8Rank: 8

积分
4767
金钱
4259
HASS币
156

教程狂人

发表于 2020-6-7 23:51:45 | 显示全部楼层
近期樹莓派官方韌體開始支援使用 USB 啟動系統(無需 SD 卡)
或許以 HA 的應用來說, 改成 SSD 啟動系統會是個不錯的選擇
ASRock H370 PRO4, 48GB, 8TBx3 + 2TBx3
ESXi 6.7 + Ununtu + Docker + HASS.IO -> Homeassistant OS
(Home Assistant Supervised 官方文件)
回复

使用道具 举报

11

主题

121

帖子

838

积分

论坛技术达人

积分
838
金钱
707
HASS币
60
 楼主| 发表于 2020-6-8 00:19:29 | 显示全部楼层
chinyaolin 发表于 2020-6-7 23:51
近期樹莓派官方韌體開始支援使用 USB 啟動系統(無需 SD 卡)
或許以 HA 的應用來說, 改成 SSD 啟動系統會是 ...

U盘启动不怕意外断电吗
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
发表于 2020-6-8 09:39:59 | 显示全部楼层
yinzhennan 发表于 2020-6-8 00:19
U盘启动不怕意外断电吗

我感觉怕意外断电的是 sqlite~写入的时候断电了,整个数据库文件就扑街了。
Nero
回复

使用道具 举报

11

主题

121

帖子

838

积分

论坛技术达人

积分
838
金钱
707
HASS币
60
 楼主| 发表于 2020-6-8 15:13:18 | 显示全部楼层
neroxps 发表于 2020-6-8 09:39
我感觉怕意外断电的是 sqlite~写入的时候断电了,整个数据库文件就扑街了。 ...

意外断电不光是数据库文件损坏,大概率系统文件也会损坏.
我遇到两次,网上查貌似是普遍现象.
回复

使用道具 举报

11

主题

121

帖子

838

积分

论坛技术达人

积分
838
金钱
707
HASS币
60
 楼主| 发表于 2020-6-8 17:48:34 | 显示全部楼层
发现只读模式下docker起不来, 研究了一天没解决
回复

使用道具 举报

11

主题

121

帖子

838

积分

论坛技术达人

积分
838
金钱
707
HASS币
60
 楼主| 发表于 2020-6-9 09:31:56 | 显示全部楼层
yinzhennan 发表于 2020-6-8 17:48
发现只读模式下docker起不来, 研究了一天没解决

卧槽,终于搞定overlayfs和docker的兼容问题了
回复

使用道具 举报

3

主题

150

帖子

941

积分

高级会员

Rank: 4

积分
941
金钱
791
HASS币
0
发表于 2020-6-13 21:32:05 | 显示全部楼层
谢谢分享,最近正好有需要。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-1 02:07 , Processed in 0.090773 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表