電源ぶち切りCentOS7を作る。…といろいろ調べたら、とても簡単でした。
下記のファイルをread_only向けにのそれっぽいオプション指定してやるだけで、良い感じになる。Linuxに慣れている人は、下記ファイルをのぞいてみれば、すぐに分かるでしょう。
/etc/sysconfig/readonly-root /etc/dracut.conf /etc/rwtabWrite許可が必要なファイルは「/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