Armadilloフォーラム

ArmadilloBaseOSのアップデート(rootfsを変更しない場合)について

e1234

2024年4月22日 14時43分

以下の記事を参照いたしました。
https://armadillo.atmark-techno.com/blog/15349/11131

上記記事の「2.Armadillo Base OSのアップデート」の「①rootfsを変更しない場合」に関して、
SWUpdateのdescファイル書式について、質問です。

■質問内容
(1)
descファイルの内容を
-------------------------------------------------
swdesc_tar "baseos-600-3.19.1-at.1.tar.zst" \
--version base_os 3.19.1-at.1
-------------------------------------------------
として作成し、mkswuコマンドでswuファイルを生成するコマンドを実行すると、
swuファイルは生成できたのですが、Warningが出力されていました。
「base_osアップデートで--preserve-attributesを自動的に設定しました。」というのはどういう意味なのか、
ご教授いただけないでしょうか?
-------------------------------------------------------------------------------
atmark@atde9:~/mkswu$ mkswu -o baseos_update.swu baseos_update.desc
Warning: base_osアップデートで--preserve-attributesを自動的に設定しました。
Enter pass phrase for /home/atmark/mkswu/swupdate.key:
baseos_update.swu を作成しました。
-------------------------------------------------------------------------------

(2)
「--versionに続く"base_os"はrootfsを変更しない場合に指定します。」と記載がありましたが、
例えば、descファイルに、
-------------------------------------------------
swdesc_tar "baseos-600-3.19.1-at.1.tar.zst" \
--version base_os 3.19.1-at.1
-------------------------------------------------
と記載すると、
/etc/swupdate_preserve_files に記載されたファイル"以外"を、
"baseos-600-3.19.1-at.1.tar.zst"の内容で更新する
という理解であっていますでしょうか?

たとえば、ArmadilloホストOS上に/etc/proftpdや/etc/rsyslog.confがある状態で、
Armadillo BaseOSのアップデートによりファイルを消したくない場合は、
/etc/swupdate_preserve_filesに、
--------------------
 /etc/proftpd
 /etc/rsyslog.conf
--------------------
を追記すればよいのでしょうか?

コメント

at_satoshi.ohta

2024年4月22日 16時38分

太田です。

(1)についてですが、

--preserve-attributes は swupdate のオプションです。

https://sbabic.github.io/swupdate/handlers.html#archive-handler

ここの記述にあるように、このオプションを追加することで、アーカイブからファイルを解凍する際に、uid/gidやパーミッションなどの属性を保持するようにしています。
--preserve-attributes をつけない場合、例えば /home/atmark や /etc/shadow の uid/gid が root のものになってしまいます。
基本的には必要なオプションであるため、SWU ファイル生成時に自動的に設定するようにしています。

また、

atmark@atde9:~/mkswu$ mkswu -o baseos_update.swu baseos_update.desc
Warning: base_osアップデートで--preserve-attributesを自動的に設定しました。

ですが、表示として Warning というより Info が適切だと思うので、来月修正を行う予定です。

(2)についてですが、

base_os は Armadillo Base OS を SWU ファイルから一括アップデートする際に使用します。

> /etc/swupdate_preserve_files に記載されたファイル"以外"を、
> "baseos-600-3.19.1-at.1.tar.zst"の内容で更新する
> という理解であっていますでしょうか?

このご質問についてですが、/etc/swupdate_preserve_files の書き方によります。

例えば、descファイルに、

swdesc_tar "baseos-600-3.19.1-at.1.tar.zst" \
--version base_os 3.19.1-at.1

と記述されていて、
/etc/swupdate_preserve_filesに、

/etc/proftpd
POST /etc/rsyslog.conf

と記述がされている場合について説明します。

swupdate の順番は
① /etc/swupdate_preserve_files の /etc/proftpd をコピー
② baseos-600-3.19.1-at.1.tar.zst を展開
③ /etc/swupdate_preserve_files の POST で指定されている /etc/rsyslog.conf をコピー
となります。

そのため、この場合、もし baseos-600-3.19.1-at.1.tar.zst に /etc/proftpd がある場合は baseos-600-3.19.1-at.1.tar.zst にある /etc/proftpd で更新されます。
確実に /etc/swupdate_preserve_files に記載されたファイルを更新したくない場合は、 POST で指定してください。

よろしくお願いいたします。

太田さん

お世話になっております。
回答ありがとうございます。

丁寧なご説明ありがとうございます。
(2)については、/etc/swupdate_preserve_filesで、POSTで指定したファイルは更新されないことの動作確認もできました。
ありがとうございました。