リードオンリー化(2)
overlayfsによるリードオンリー化
参考
ルートフォルダの整理
# rm /restoresymtable # rm /null # mkdir /fsprotect
init.dスクリプトの追加
# cd /etc/init.d/
# vi mount-overlay
- mount-overlay
#! /bin/sh ### BEGIN INIT INFO # Provides: mount-overlay # Required-Start: mountall-bootclean # Required-Stop: # Default-Start: S # Default-Stop: # X-Start-Before: procps udev-mtab urandom # Short-Description: overlay mode # Descrition: Shutdown process will not be required ### END INIT INFO /bin/mount /boot cd /boot file=nofsprotect if [ -e ${file} ]; then exit 0 fi /bin/mount -t tmpfs tmpfs /fsprotect for d in etc home root var usr opt do mkdir /fsprotect/${d} mkdir /fsprotect/${d}_rw OPTS="-o lowerdir=/${d},upperdir=/fsprotect/${d},workdir=/fsprotect/${d}_rw" /bin/mount -t overlay ${OPTS} overlay /${d} done exit 0
# chmod 755 mount-overlay
# update-rc.d mount-overlay defaults 01 10
# ls /etc/rc*.d/*mount-overlay
rc.localへ追加
# vi /etc/rc.local
(最初の方が望ましい)
- rc.local
# overlayfs cd /boot file=nofsprotect if [ -e ${file} ]; then mount -o rw,remount / mount -o rw,remount /boot fi
fstab修正
# vi /etc/fstab
- fstab
proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat ro,defaults 0 2 /dev/mmcblk0p2 / ext4 ro,defaults,noatime 0 1 tmpfs /tmp tmpfs defaults 0 0
nofsprotectスクリプト
# vi nofsprotect
- nofsprotect
#!/bin/sh mount -o rw,remount /boot file=nofsprotect cd /boot if [ ! -e ${file} ]; then # rm ${file} touch ${file} fi if [ -e ${file} ]; then echo "nofsprotect mode" else echo "fsprotect mode" fi mount -o ro,remount /boot echo "reboot..." sleep 5 sync; sync; sync; reboot
# chmod a+x nofsprotect
fsprotectスクリプト
# vi fsprotect
- fsprotect
#!/bin/sh mount -o rw,remount /boot file=nofsprotect cd /boot if [ -e ${file} ]; then rm ${file} fi if [ -e ${file} ]; then echo "nofsprotect mode" else echo "fsprotect mode" fi mount -o ro,remount /boot echo "reboot..." sleep 5 sync; sync; sync; reboot
# chmod a+x fsprotect
状況
devtmpfs dev
proc proc
tmpfs fsprotect
overlay etc
overlay home
overlay opt
overlay root
overlay usr
overlay var
tmpfs run
tmpfs tmp
RO boot
RO media
RO mnt
RO bin
RO lib
RO sys
RO sbin
RO man
RO srv
RO lost+found