Raspbian Jessie Lite の root file system を read only にする
ルートファイルシステムをリードオンリーにすると、電源のブチ切りができるということで、試してみました。
(参考)Raspbian OSのSDカードをリードオンリー化する(initrd 編)
(参考)[メモ] RaspberryPi: リードオンリーRoot-FS (overlayfs使用)
read only 化にはいくつかの方法があるようなのですが、上記のサイトで解説されている方法が素人でもできそうな感じでした。
残念ながら上段の方法は "Stretch" 向けに解説されているため、今回は下段の方法でやってみることにしました。
/boot/cmdline.txt の書き換え
変更前: dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=b14b2030-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
変更後: dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
/etc/fstab の書き換え
...
# 変更前
PARTUUID=b14b2030-01 /boot vfat defaults 0 2
PARTUUID=b14b2030-02 / ext4 defaults,noatime 0 1
# 変更後
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
...
設定
$ cd /home/pi
$ sudo bash
$ echo Installing all dependencies
$ apt-get install git subversion rsync gawk busybox bindfs
$ echo Disabling swap
$ dphys-swapfile swapoff
$ dphys-swapfile uninstall
$ update-rc.d dphys-swapfile disable
$ systemctl disable dphys-swapfile
$ echo Cloning repository
$ git clone https://github.com/josepsanzcamp/root-ro.git
$ echo Doing the setup
$ rsync -va root-ro/etc/initramfs-tools/* /etc/initramfs-tools/
$ mkinitramfs -o /boot/initrd.gz
$ echo initramfs initrd.gz >> /boot/config.txt
$ echo Restarting RPI
$ reboot
--------------------------------
rwに戻すには、/boot/config.txtの最後に追加された、initramfs initrd.gzをコメントアウトして再起動。
$ sudo mount -o remount,rw /dev/mmcblk0p1
$ sudo nano /mnt/boot-ro/config.txt
#
#
$ sudo reboot
--------------------------------
確認
$ mount | grep /mnt/root
/dev/mmcblk0p2 on /mnt/root-ro type ext4 (ro,relatime,data=ordered)
tmpfs on /mnt/root-rw type tmpfs (rw,relatime)
overlay on / type overlay (rw,relatime,lowerdir=/mnt/root-ro,upperdir=/mnt/root-rw/upper,workdir=/mnt/root-rw/work)
$ mount | grep /mnt/boot
tmpfs on /mnt/boot-rw type tmpfs (rw,relatime)
/dev/mmcblk0p1 on /mnt/boot-ro type vfat (ro,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
bindfs on /mnt/boot-ro2 type fuse.bindfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)
overlay on /boot type overlay (rw,relatime,lowerdir=/mnt/boot-ro2,upperdir=/mnt/boot-rw/upper,workdir=/mnt/boot-rw/work)
無事 read only 化できてる?みたいです(^^;)
(参考)Raspbian OSのSDカードをリードオンリー化する(initrd 編)
(参考)[メモ] RaspberryPi: リードオンリーRoot-FS (overlayfs使用)
read only 化にはいくつかの方法があるようなのですが、上記のサイトで解説されている方法が素人でもできそうな感じでした。
残念ながら上段の方法は "Stretch" 向けに解説されているため、今回は下段の方法でやってみることにしました。
/boot/cmdline.txt の書き換え
変更前: dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=b14b2030-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
変更後: dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
/etc/fstab の書き換え
...
# 変更前
PARTUUID=b14b2030-01 /boot vfat defaults 0 2
PARTUUID=b14b2030-02 / ext4 defaults,noatime 0 1
# 変更後
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
...
設定
$ cd /home/pi
$ sudo bash
$ echo Installing all dependencies
$ apt-get install git subversion rsync gawk busybox bindfs
$ echo Disabling swap
$ dphys-swapfile swapoff
$ dphys-swapfile uninstall
$ update-rc.d dphys-swapfile disable
$ systemctl disable dphys-swapfile
$ echo Cloning repository
$ git clone https://github.com/josepsanzcamp/root-ro.git
$ echo Doing the setup
$ rsync -va root-ro/etc/initramfs-tools/* /etc/initramfs-tools/
$ mkinitramfs -o /boot/initrd.gz
$ echo initramfs initrd.gz >> /boot/config.txt
$ echo Restarting RPI
$ reboot
--------------------------------
rwに戻すには、/boot/config.txtの最後に追加された、initramfs initrd.gzをコメントアウトして再起動。
$ sudo mount -o remount,rw /dev/mmcblk0p1
$ sudo nano /mnt/boot-ro/config.txt
#
#
$ sudo reboot
--------------------------------
確認
$ mount | grep /mnt/root
/dev/mmcblk0p2 on /mnt/root-ro type ext4 (ro,relatime,data=ordered)
tmpfs on /mnt/root-rw type tmpfs (rw,relatime)
overlay on / type overlay (rw,relatime,lowerdir=/mnt/root-ro,upperdir=/mnt/root-rw/upper,workdir=/mnt/root-rw/work)
$ mount | grep /mnt/boot
tmpfs on /mnt/boot-rw type tmpfs (rw,relatime)
/dev/mmcblk0p1 on /mnt/boot-ro type vfat (ro,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
bindfs on /mnt/boot-ro2 type fuse.bindfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)
overlay on /boot type overlay (rw,relatime,lowerdir=/mnt/boot-ro2,upperdir=/mnt/boot-rw/upper,workdir=/mnt/boot-rw/work)
無事 read only 化できてる?みたいです(^^;)