「OverlayによるLINUX OSのROM化」の版間の差分
ナビゲーションに移動
検索に移動
Sufee Admin (トーク | 投稿記録) 編集の要約なし |
Sufee Admin (トーク | 投稿記録) 編集の要約なし |
||
4行目: | 4行目: | ||
<nowiki>#</nowiki> 必要なディレクトリを作成 | <nowiki>#</nowiki> 必要なディレクトリを作成 | ||
mkdir /mnt/upper mkdir /mnt/lower | mkdir /mnt/upper mkdir /mnt/lower | ||
11行目: | 11行目: | ||
<nowiki>#</nowiki> /dev/sdX1 は、適切なデバイスを指定してください(例:/dev/sdb1など) | <nowiki>#</nowiki> /dev/sdX1 は、適切なデバイスを指定してください(例:/dev/sdb1など) | ||
mount /dev/sdX1 /mnt/upper | mount /dev/sdX1 /mnt/upper | ||
18行目: | 18行目: | ||
<nowiki>#</nowiki> UUIDがhogehogeのデバイスを使用します | <nowiki>#</nowiki> UUIDがhogehogeのデバイスを使用します | ||
mount -o ro UUID=hogehoge /mnt/lower | mount -o ro UUID=hogehoge /mnt/lower | ||
<nowiki>#</nowiki> メモリ上にtmpfsを作成してWorkdirをマウント | <nowiki>#</nowiki> メモリ上にtmpfsを作成してWorkdirをマウント | ||
mount -t tmpfs tmpfs /mnt/overlay-work | mount -t tmpfs tmpfs /mnt/overlay-work | ||
<nowiki>#</nowiki> overlayファイルシステムを作成してマウント | <nowiki>#</nowiki> overlayファイルシステムを作成してマウント | ||
mount -t overlay overlay -o lowerdir=/mnt/lower,upperdir=/mnt/upper,workdir=/mnt/overlay-work /mnt/overlay-root | mount -t overlay overlay -o lowerdir=/mnt/lower,upperdir=/mnt/upper,workdir=/mnt/overlay-work /mnt/overlay-root | ||
<nowiki>#</nowiki> オーバーレイ化したファイルシステムを / に移動 | <nowiki>#</nowiki> オーバーレイ化したファイルシステムを / に移動 | ||
umount /mnt/overlay-root mount --move /mnt/overlay-root / | umount /mnt/overlay-root mount --move /mnt/overlay-root / | ||
<nowiki>#</nowiki> マウントポイントの設定を保存 | <nowiki>#</nowiki> マウントポイントの設定を保存 | ||
echo "UUID=hogehoge /mnt/lower ext4 ro 0 1" >> /etc/fstab | echo "UUID=hogehoge /mnt/lower ext4 ro 0 1" >> /etc/fstab | ||
echo "overlay / overlay rw 0 1" >> /etc/fstab | echo "overlay / overlay rw 0 1" >> /etc/fstab | ||
echo "tmpfs /mnt/overlay-work tmpfs defaults 0 0" >> /etc/fstab | echo "tmpfs /mnt/overlay-work tmpfs defaults 0 0" >> /etc/fstab | ||
== 回答 == | == 回答 == |
2023年7月22日 (土) 14:27時点における版
質問
ではこれを 起動時に処理するようにしてください。
# 必要なディレクトリを作成
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
ファイルシステムが起動時に構築され、指定した条件を満たすことができるはずです。