一部の古い組み込みシステムを更新する必要があります。ただし、RAUCアップデートには4つのパーティションが含まれていますが、以前のシステムには3つのパーティションしかありませんでした。
追加のパーティションはディスクの先頭にあり、外部アダプタを使用してデバイスをフラッシュすることはできません。
私が持っているのは、デバイス上の既存のLinuxへのSSHアクセスです。
実行中のシステムでパーティションテーブルを変更してシステムパーティションを移動できますか?
それともdd
ディスク全体を新しいイメージで上書きできますか?
私はこれを見つけることができず、ここに良い解決策がないかどうかはわかりません。
答え1
私は組み込みシステムで同様のことをしました。私が手に入れたのは、新しいディスク(およびすべてのパーティション)の圧縮イメージがメモリに入るのと同じくらい小さいということです。
私がしたことは、カスタムスクリプトを含めるようにinitramfsをパッチすることでした。起動時にインストールする前に(圧縮された)ディスクイメージをramfsファイルシステムにコピーし、解凍してdd of=/dev/<disk>
完全に上書きします。すべて、新しいパーティションが含まれます。
(いくつかのファイルを維持するのに少し難しいことがありました。結局、あなたが維持したいものをターボリングしてtmpfsに入れてから、新しいファイルシステムに解凍しました。うまくいきました。)
より良い解決策があると確信していますが、これは私にとって効果的です。
[追加するように編集しました:]
別のオプションは、ネットワークを介してディスクイメージをインポートする小さなスクリプトをinitramfsに追加することです。完全なシステムの助けを借りずにIP設定などを把握する必要があることは厄介です。しかし、スクリプトをinitramfsに入れることは、ディスクをマウントしなくてもRAMで実行でき、ほとんどを扱うことができるので、おそらく最善の選択でしょう。