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

树莓派 智能家装 新装闭坑手册(二,overlay篇)

[复制链接]

11

主题

110

回帖

840

积分

论坛技术达人

积分
840
金钱
709
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

积分

注册会员

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

使用道具 举报

11

主题

110

回帖

840

积分

论坛技术达人

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

多谢支持
回复

使用道具 举报

30

主题

463

回帖

4795

积分

论坛元老

佑桑

积分
4795
金钱
4287
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

主题

110

回帖

840

积分

论坛技术达人

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

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

使用道具 举报

40

主题

3016

回帖

1万

积分

超级版主

Nero

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

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

使用道具 举报

11

主题

110

回帖

840

积分

论坛技术达人

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

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

使用道具 举报

11

主题

110

回帖

840

积分

论坛技术达人

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

使用道具 举报

11

主题

110

回帖

840

积分

论坛技术达人

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

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

使用道具 举报

3

主题

147

回帖

941

积分

高级会员

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

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-5-10 08:51 , Processed in 0.425174 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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