Armadilloフォーラム

overlayfs中のアップデートについて

kyas-t5

2021年3月18日 21時35分

Linux初心者です。
overlayfs設定にして起動している時にUSBメモリに入ったユーザーランドのプログラムに
アップデートしたいと考えているのですが可能でしょうか?
Armadillo-x1はケースに入る為、プログラムアップデートはUSBメモリで行う予定でいます。
ですので一時的にoverlayfsを解除しアップデートするかreboot時にoverlayfsを無効にして書き換え後のrebootで有効に戻す等
手段はありますでしょうか?
ちなみにoverlayfsの実装とoverlayfs無効時のUSBメモリによる/home以下の差し替えプログラムはすでにできています。

コメント

at_akihito.irie

2021年3月23日 13時10分

入江です。

Armadilloの起動時にoverlayfsの設定を行う前に、USBメモリ内に配置された
update-hook.shを実行するinitramfsを作成してみました。

添付のinitramfs_x1-update.cpio_.gzをinitramfs_x1-update.cpio.gzにリネー
ムしてから以下の手順を行ってください。

まず、下記手順に従ってLinuxカーネルをビルドしてください。
https://manual.atmark-techno.com/armadillo-x1/armadillo-x1_product_manu…

ただし、「initramfsアーカイブへのシンボリックリンク作成」では下記コマ
ンドを実行し、添付のinitramfsへのシンボリックリンクを作成してください。

[ATDE]$ ls
initramfs_x1_update.cpio.gz linux-4.9-x1-at[version]
[ATDE]$ cd linux-4.9-x1-at[version]
[ATDE ~/linux-4.9-x1-at[version]]$ ln -sf ../initramfs_x1-update.cpio.gz initramfs_x1.cpio.gz

次に下記手順に従ってuImageをArmadillo-X1に書き込んでください。
https://manual.atmark-techno.com/armadillo-x1/armadillo-x1_product_manu…

使い方としましては、U-bootでoptargsにusb_updateを指定し、bootします(下
記実行例はoverlayfsも有効)。

=> setenv optargs overlay usb_update
=> boot

上記の設定をした場合、起動時に最大約5秒間USBメモリの認識を待ちます。

USBメモリは認識されるまでに多少時間がかかるために、認識されるまで待つ
必要があります。
今回デフォルトの待ち時間は5秒に設定してありますが、usb_update=10のよう
に指定することで、任意の秒数待つようになります。
USBを認識するために十分な時間を設定する必要がありますが、USBが挿さって
いない場合にその時間分起動が遅くなるため、お客様で試していただいてこの
時間を調節してください。

その時間内に一番最初に認識したUSBメモリの第1パーティション内直下に配置
されたupdate-hook.shを自動実行します。
そのため、ご使用時はアップデート用のUSBメモリのみArmadilloに挿してご使
用ください。
また、USBメモリを認識しても、update-hook.shがない場合は何もしません。

あとはUSBメモリ内直下にupdate-hook.shという名前でアップデートの処理が
書かれたスクリプトを配置することで、起動時にoverlayfsの設定が行われる
前にユーザーランドのアップデートをすることができます。

ファイル ファイルの説明
initramfs_x1-update.cpio_.gz 末尾の「.cpio_.gz」を「.cpio.gz」にリネームしてご使用ください