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へのシンボリックリンクを作成してください。
次に下記手順に従ってuImageをArmadillo-X1に書き込んでください。
https://manual.atmark-techno.com/armadillo-x1/armadillo-x1_product_manu…
使い方としましては、U-bootでoptargsに
usb_update
を指定し、bootします(下記実行例はoverlayfsも有効)。
上記の設定をした場合、起動時に最大約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の設定が行われる
前にユーザーランドのアップデートをすることができます。