Raspbian Stretch Lite の root filesystem を read only にする

Raspbian Stretch Lite の root filesystem を read only にする方法を試してみました。

以下メモ。

$ sudo bash
# cd /usr/share/initramfs-tools
# nano hook-functions
(497行目付近:赤字=追記)

        for arg in "$@" ; do
                case "$arg" in
                base) 
                        modules="$modules btrfs ext2 ext3 ext4 ext4dev overlay"
                        modules="$modules isofs jfs reiserfs udf xfs"

# cd scripts
# cp local overlay
# cp -rp local-premount overlay-premount
# cp -rp local-bottom overlay-bottom   #存在せずエラーになる場合は無視

# nano overlay
(変更箇所=赤字)

        local_premount

#       if [ "${readonly}" = "y" ]; then
                roflag=-r
#       else
#               roflag=-w
#       fi

        # FIXME This has no error checking
        modprobe ${FSTYPE}

        checkfs ${ROOT} root

        # FIXME This has no error checking
        # Mount root
        mkdir /upper /lower
        if [ "${FSTYPE}" != "unknown" ]; then
            mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} /lower
        else
            mount ${roflag} ${ROOTFLAGS} ${ROOT} /lower
        fi
        modprobe overlay
        mount -t tmpfs tmpfs /upper
        mkdir /upper/data /upper/work
        mount -t overlay \
            -olowerdir=/lower,upperdir=/upper/data,workdir=/upper/work \
            overlay ${rootmnt}
}


カーネルのバージョンを確認

# uname -r
4.x.xx-v7+
(ここで、4.x.xx-v7+ のように v7 が付く場合は、以下のままでよいが、v7 が付かない場合は、赤字で示した 7 の部分を除いてタイプ。)

# update-initramfs -c -k $(uname -r)
# cd /boot
# mv initrd.img-$(uname -r) initrd7.img

(ファイル /boot/config.txt を編集。末尾に以下を追加。v7 が付かない場合は、赤字で示した 7 の部分を除いてタイプ。)

# sudo nano /boot/config.txt
kernel=kernel7.img
initramfs initrd7.img

(ファイル /boot/cmdline.txt の赤字の部分を追加&修正。)

# sudo nano /boot/cmdline.txt
boot=overlay dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

(再起動)
# reboot

ログイン

$ mount | fgrep ' / '

以下のようなメッセージが表示されれば成功。
overlay on / type overlay (rw,noatime,lowerdir=/lower,upperdir=/upper/data,workdir=/upper/work)

以下のようなメッセージであれば失敗。
/dev/mmcblk0p2 on / type ext4 (rw,noatime,data=ordered)

(書き込み可能に戻すには?)
"/boot/cmdline.txt" の先頭にある " boot=overlay" を削除して reboot

以上。

----+----+----+----+----+----

参考
FIRMLOGICS:Raspbian OSのSDカードをリードオンリー化する(initrd 編)



このブログの人気の投稿

電力会社と音質

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

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

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

foobar2000 を UPnP/DLNA Renderer として使う