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