使用overlayfs影子系統(tǒng)打造一個只讀的不怕意外關(guān)機(jī)的樹莓派
關(guān)閉交換分區(qū)
sudo swapoff -a
sudo rm -rf /swapfile
free # 查看是否生效
pi@raspbian:~/pi3-script/overlayfs$ free
total used free shared buff/cache available
Mem: 977980 491368 27672 13900 458940 430668
Swap: 0 0 0
永久關(guān)閉swap,將/boot分區(qū)也修改為只讀羡滑,修改 fstab 文件奉狈,把/boot 對應(yīng)的行改為ro
sudo vi /etc/fstab
# 修改后
pi@raspbian:~/pi3-script/overlayfs$ cat /etc/fstab
proc /proc proc defaults 0 0
PARTUUID=daf1c5e3-01 /boot vfat ro 0 2
PARTUUID=daf1c5e3-02 / ext4 defaults,noatime,nodiratime 0 1
# 注釋掉下面這行
# /swapfile swap swap defaults 0 0
add script to /sbin
cp ./overlayRoot.sh /sbin/
add command to ~/.bashrc
function reboot_rw(){
sudo mount -o remount,rw /boot
sudo sed -i 's/ init=\/sbin\/overlayRoot.sh//g' /boot/cmdline.txt
sudo reboot
}
function reboot_ro() {
sudo mount -o remount,rw /boot
sudo sed -i 's/\($\)/ init=\/sbin\/overlayRoot.sh/g' /boot/cmdline.txt
sudo reboot
}
function rw() {
sudo mount -o remount,rw /ro
sudo mount -o remount,rw /boot
}
切換overlayfs指令
reboot_ro # enter overlayfs
mount # 查看是否生效 /dev/mmcblk0p2 改為掛載在 /ro 句喜,并且是只讀建瘫;/boot 也掛載為只讀洁桌;而 / 的 type 變成了overlay
# /dev/mmcblk0p2 on /ro type ext4 (ro,noatime,data=ordered)
reboot_rw # exit overlayfs
rw # 不切換系統(tǒng)的時候掛載讀寫
臨時想讀寫
sudo mount -o remount,rw /ro
sudo mount -o remount,rw /boot
docker兼容問題處理
"storage-driver": "vfs", 是為了兼容overlayfs只讀模式媚朦,如想還原回去修改vfs為overlay2
為了兼容overlayfs只讀模式, 還需要執(zhí)行下面的命令氧敢,注意:此時以前的容器會看不到了
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"storage-driver": "vfs",
"registry-mirrors": ["https://vlv9r1l5.mirror.aliyuncs.com"]
}
EOF
sed -i 's/ExecStart/ExecStartPre=mv \/var\/lib\/docker\/runtimes \/var\/lib\/docker\/runtimes-old\nExecStart/g' /lib/systemd/system/docker.service
sudo systemctl daemon-reload
sudo systemctl restart docker
參考:
http://www.glgxt.cn/file/25.html
https://blog.csdn.net/bona020/article/details/79039410
https://blog.csdn.net/zhufu86/article/details/78906046
樹莓派 智能家裝 新裝閉坑手冊(二,overlay篇) - 『HomeAssistant』綜合討論區(qū) - 『瀚思彼岸』? 智能家居技術(shù)論壇 - Powered by Discuz! (hassbian.com)