Stateless-CentOS7を作る

電源ぶち切りCentOS7を作る。…といろいろ調べたら、とても簡単でした。
下記のファイルをread_only向けにのそれっぽいオプション指定してやるだけで、良い感じになる。Linuxに慣れている人は、下記ファイルをのぞいてみれば、すぐに分かるでしょう。

/etc/sysconfig/readonly-root
/etc/dracut.conf
/etc/rwtab
Write許可が必要なファイルは「/etc/rwtab」で定義され、起動時に「/usr/lib/systemd/rhel-readonly」によってtmpfsとbind処置される。GNOME等を起動させたい場合は、「/etc/rwtab」に下記を追記してやると良い。
files   /home
files   /root
次に、この作業はおそらく必要無いが、念のため、「/etc/dracut.conf」にて ro_mnt="yes"とし、下記コマンドでinitrdを更新する。
dracut -f
最後に、 /etc/fstab も編集し root(/)をroマウントするように変更すること。
/etc/fstabの例:
UUID=abcdef           /               ext4    defaults,ro     1 1
LABEL=SWAP            /none           swap    sw              0 0

注意事項:
tmpfsファイルシステムは空き容量の半分までなので、/etc/rwtabで定義されたファイルやフォルダが占める容量が大きいと、OOMキラーが発動し正常動作を維持できなくなる。/homeや/rootの扱い、「ゴミ箱」にも注意すること。

[備考]
read-onlyで起動した後、何か書き込みたい時:
mount -o remount,rw /
yum update等をしたい時:
「/etc/rwtab」で定義したファイルは、rwリマウントして編集しただけでは実ファイルは更新されない。下記のいずれかを実施してから更新作業を実施した方が良いでしょう。
(1) bindマウントを解消してから更新作業する
(2) /etc/sysconfig/readonly-rootを元に戻して再起動してから更新作業する
(3) 別のポイントにHDDをマウントし、そこにchrootしてから更新作業する
上記(3)の支援スクリプト例(/usr/local/sbin/my_chroot):
#!/bin/bash
mount -oremount,rw /
mount /dev/sda1 /mnt
mount -o bind /dev /mnt/dev
mount -t proc proc /mnt/proc
mount -o bind /sys /mnt/sys
echo
echo "Pre-work complete! This is the new environment."
echo
chroot /mnt
# chroot環境でyum update等が終わったらexit<Enter>
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /dev/sda1
mount -oremount,ro /
echo
echo "Chroot exit with after-work complete!"
echo