#author("2021-07-19T03:52:22+00:00","","")
#author("2021-07-19T04:04:09+00:00","","")
&size(24){RaspberryPiのOSをOverlayを使用してReadOnly FSにする方法};


*概要 [#ue2cae2a]
overlayfs を使用して SD カードをRead Only 化することで、shutdown 操作をせずに電源断してもファイルシステムが壊れないようにする。~
ただし、Log 等ファイルへの書き出しはRAMDISK 上に行われるので、RAM 逼迫が起きないように注意が必要。~
長時間動作させる用途では、Log出力を抑止するような処理も必要となる(ここでは割愛)。~
RO とRW の切り替えはあらかじめ用意しておくスクリプトで行う。これによりファイルのUpdate は可能。~

*手順 [#k3d0fdc0]
 rootに移行する
 $ cd /home/pi
 $ sudo bash
 
 まずはカーネルのバージョンを確認~
 # uname -r
 
 バージョンにv7が含まれているかどうかが重要。~
 含まれていなければ以下の記述で7を削除して編集を行う。
 
 initrdを作る(v7含む場合)~
 # update-initramfs -c -k $(uname -r)
 # cd /boot
 # mv initrd.img-$(uname -r) initrd7.img
 
 initrdを作る(v7含まない場合)~
 # update-initramfs -c -k $(uname -r)
 # cd /boot
 # mv initrd.img-$(uname -r) initrd.img
 
 必要なパッケージをダウンロード
 # apt-get install git rsync gawk busybox bindfs
 
 swapを無効にする
 # dphys-swapfile swapoff
 # dphys-swapfile uninstall
 # update-rc.d dphys-swapfile disable
 # systemctl disable dphys-swapfile
 
 ReadOnlyFS化するキットをダウンロードして配置する
 # git clone https://github.com/josepsanzcamp/root-ro.git
 # rsync -va root-ro/etc/initramfs-tools/* /etc/initramfs-tools/
 
 initrdのramfsを作る
 # mkinitramfs -o /boot/initrd.gz
 
 ramfsを使用して起動する様に設定を追加する
 # echo initramfs initrd.gz >> /boot/config.txt
 # reboot

*RWモードへの切り替えスクリプト [#x9d57bf4]
 #!/bin/sh
 # switch to RW
 if [ -e /mnt/boot-ro/config.txt ]; then
     sudo mount -o remount,rw /dev/mmcblk0p1
     sudo grep -v initramfs /mnt/boot-ro/config.txt >/tmp/config.txt
     sudo cp /tmp/config.txt /mnt/boot-ro/config.txt
     sudo reboot
 else
     echo Already write enabled
 fi

*ROモードへの切り替えスクリプト [#t70bd790]
 #!/bin/sh
 # switch to RO
 if [ -e /mnt/boot-ro/config.txt ]; then
     echo Already write protected
 else
     sudo grep -v initramfs /boot/config.txt >/tmp/config.txt
     sudo echo initramfs initrd.gz >> /tmp/config.txt
     sudo cp /tmp/config.txt /boot/config.txt
     sudo reboot
 fi

*注意事項 [#lb536534]
- カーネルアップデートが行われると、この手順をやり直す必要がある

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS