512MBのRAMと4GBの内部ストレージを備えた内蔵デバイスがあります。 (ラズベリーパイナビーグルボンを考えてみてください)
3つのパーティションを持つ外部SDカードがあります。
mmcblk0
ディスクで、mmcblk0p1
その上に3つのパーティションmmcblk0p2
があります。mmcblk0p3
mmcblk0p2
また、mmcblk0p3
各パーティションにはDebianオペレーティングシステムがあります。
mmcblk0p2
アクティブパーティションmmcblk0p3
と同時にバックアップパーティションとして使用されます。
私はu bootが最初のパーティションの動作を好むことに気づきました。パーティションからuEnv.txtを読み、それに応じて起動します。
したがって、パーティションにはmmcblk0p1
uboot設定があります。 (uEnv.txt
および起動に必要なその他のファイル)
変更の始まり構成を使用していますuEnv.txt
。つまり、起動したい場合は、次のことをmmcblk0p3
提供できます。
mmcargs=setenv bootargs console=tty0 console=${console} ${optargs} ${cape_disable} ${cape_enable} root=/dev/mmcblk0p3 rootfstype=${mmcrootfstype} ${cmdline}
内部にuEnv.txt
uEnv.txt
障害が原因でパーティションが破損したり、パーティションが破損した場合、デバイスはいずれかのパーティションから起動できません。 (例:オペレーティングシステム)
uEnv.txt
アクティブパーティションが破損した場合、再起動時に他のパーティションからどのように起動できますか?このトピックに関連する利用可能なリンクまたはリソースを共有できれば良いでしょう。つまり、この状況をどのように処理するのですか?
答え1
独自のOTAを最初から実装する場合はそうです。他の既存のOTAメカニズムがそれをどのように処理するかを理解する必要があります。これは通常、更新があるかどうかを確認するためにフラグの組み合わせを使用するためです。それを更新します。