at_shiita.ishigaki
2022年6月13日 8時28分
Armadillo BaseOS ではルートファイルシステムに overlayfs を採用しています。
そのため、ファイルを変更した後 Armadillo-IoT G4 の電源を切ると変更内容は保持されません。
rootfs の変更内容を保持するには、変更したファイルに対して persist_file コマンドを使用します。
persist_fileコマンドの使い方を以下に示します。
[armadillo ~]# persist_file -h Usage: /usr/bin/persist_file [options] file [more files...] Mode selection: (none) single entry copy -d, --delete delete file -l, --list list content of overlay -a, --apk apk mode: pass any argument after that to apk on rootfs -R, --revert revert change: only delete from overlay, making it look like the file was reverted back to original state Copy options: -r, --recurse recursive copy (note this also removes files!) -p, --preserve make the copy persist through baseos upgrade by adding entries to /etc/swupdate_preserve_files -P, --preserve-post same, but copy after upgrade (POST) Delete options: -r, --recurse recursively delete files Common options: -v, --verbose verbose mode for all underlying commands Note this directly manipulates overlayfs lower directories so might need a reboot to take effect
ファイルの変更を永続化する方法を以下に示します。
※ここでは例として、hoge・fugaという2つのファイルを作成し、変更を永続化しています。
[armadillo ~]# touch hoge [armadillo ~]# echo fuga > fuga [armadillo ~]# persist_file hoge fuga
ファイルの削除を行った場合も永続化を行う場合は、persist_fileコマンドを実行する必要があります。
※ここでは例として、piyoというファイルを作成し、変更を永続化してから、ファイルを削除して、変更を永続化しています。
[armadillo ~]# touch piyo [armadillo ~]# persist_file piyo [armadillo ~]# rm piyo [armadillo ~]# persist_file piyo
ディレクトリ内全てのファイルの変更を永続化するには -r オプションを使用します。
[armadillo ~]# mkdir dir [armadillo ~]# touch dir/tmp1 dir/tmp2 dir/tmp3 [armadillo ~]# persist_file -r dir/
永続化したファイルを確認するには -l オプションを使用します。
[armadillo ~]# persist_file -l directory / directory /root opaque directory /root/dir regular empty file /root/dir/tmp3 regular empty file /root/dir/tmp2 regular empty file /root/dir/tmp1 regular file /root/fuga whiteout /root/piyo #削除したファイルはwhiteoutと表示される regular empty file /root/hoge regular file /root/.ash_history
パッケージの変更に対しても、永続化を行う場合はpersist_fileコマンドを使用する必要があります。
パッケージの変更には -a オプションを使用します。 -a オプションはapkコマンドと同様に扱うことができます。
[armadillo ~]# persist_file -a add strace #パッケージの追加 fetch https://download.atmark-techno.com/alpine/v3.15/atmark/aarch64/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.15/main/aarch64/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.15/community/aarch64/APKINDEX.tar.gz (1/3) Installing fts (1.2.7-r1) (2/3) Installing libelf (0.185-r0) (3/3) Installing strace (5.14-r0) Executing busybox-1.34.1-r5.trigger OK: 217 MiB in 205 packages Install succeeded, but might not work in the running system Please reboot if installed program does not work [armadillo ~]# persist_file -a del starce #パッケージの削除 persist_file -a del strace (1/3) Purging strace (5.14-r0) (2/3) Purging libelf (0.185-r0) (3/3) Purging fts (1.2.7-r1) Executing busybox-1.34.1-r5.trigger OK: 215 MiB in 202 packages Install succeeded, but might not work in the running system Please reboot if installed program does not work armadillo:~# persist_file -a upgrade swupdate #パッケージのアップデート OK: 217 MiB in 205 packages Install succeeded, but might not work in the running system Please reboot if installed program does not work