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 化できてる?みたいです(^^;)




このブログの人気の投稿

電力会社と音質

メディアサーバーの Plex, Emby, Jellyfin を試す

増え続ける iTunes のコンピレーションを減らす(Windows)

Manjaro Linux KDE Plasma に Waydroid をインストール

foobar2000 を UPnP/DLNA Renderer として使う