OverlayによるLINUX OSのROM化
質問
ではこれを 起動時に処理するようにしてください。
# 必要なディレクトリを作成
mkdir /mnt/upper mkdir /mnt/lower
# Upper Layerのデバイスをマウント
# /dev/sdX1 は、適切なデバイスを指定してください(例:/dev/sdb1など)
mount /dev/sdX1 /mnt/upper
# Lower Layer(ストレージのROM化されたデータ)を読み込み専用でマウント
# UUIDがhogehogeのデバイスを使用します
mount -o ro UUID=hogehoge /mnt/lower
# メモリ上にtmpfsを作成してWorkdirをマウント
mount -t tmpfs tmpfs /mnt/overlay-work
# overlayファイルシステムを作成してマウント
mount -t overlay overlay -o lowerdir=/mnt/lower,upperdir=/mnt/upper,workdir=/mnt/overlay-work /mnt/overlay-root
# オーバーレイ化したファイルシステムを / に移動
umount /mnt/overlay-root mount --move /mnt/overlay-root /
# マウントポイントの設定を保存
echo "UUID=hogehoge /mnt/lower ext4 ro 0 1" >> /etc/fstab
echo "overlay / overlay rw 0 1" >> /etc/fstab
echo "tmpfs /mnt/overlay-work tmpfs defaults 0 0" >> /etc/fstab
回答
起動時に自動的に上記の処理を行うようにするには、上記のコードをスクリプトとして保存し、/etc/rc.local
ファイルに追加します(もしくは systemd
サービスとして実行する方法もあります)。/etc/rc.local
ファイルにスクリプトを追加すると、システム起動時に自動的に実行されます。
以下は手順の概要です:
- 上記のコードをテキストエディタで開き、内容をコピーして新しいファイル(例えば、
overlay_setup.sh
)に保存します。 - ファイルを実行可能にします:
chmod +x overlay_setup.sh
。 /etc/rc.local
ファイルをテキストエディタで開き、/etc/rc.local
ファイルの最後の行(exit 0
の前)に以下の行を追加します: ここで、/path/to/overlay_setup.sh
はoverlay_setup.sh
スクリプトのフルパスを指定します。例えば、スクリプトが/root/overlay_setup.sh
に保存されている場合、/root/overlay_setup.sh
のように指定します。- ファイルを保存して終了します。
これで、システム起動時に/etc/rc.local
ファイルが実行され、overlay_setup.sh
スクリプトが自動的に実行されるようになります。スクリプトが正しく実行されると、overlay
ファイルシステムが起動時に構築され、指定した条件を満たすことができるはずです。