コンテンツにスキップ
JelinaJelina Documentation技術ドキュメント
公式サイトに戻る

A/B デュアルシステムと切り替え

A/B デュアルシステムは JelinaOS の信頼性の中核です。カーネルとシステムをそれぞれ完全な 2 コピーで保持し、一方で稼働しながら他方へ更新を書き込みます。このページでは日常運用に関わる操作を説明します。

現在の起動パーティションの確認

Section titled “現在の起動パーティションの確認”
Terminal window
jelina-info

出力で現在の起動パーティション(A または B)とシステムの健全性を確認します。デバイスは常に一方のシステムで動作し、もう一方をバックアップとして保持します。

現在稼働中 System A
│
▼ 更新を System B へ書き込み
▼ 再起動後に B へ自動切り替え
▼ 起動時検証通过 → 稼働を継続 B
│
▼ 検証失敗 → A へ自動復帰(業務への影響なし)
  • 切り替えは自動で行われ、人の介入は不要です。
  • 2 つのシステムは相互のバックアップで、どちらも出荷時の状態です。
  • 稼働中のユーザー書き込みはすべてデータパーティションに入り、切り替えから独立しています。
  1. システム更新から更新を開始します。
  2. デバイスの稼働を継続しながら、予備パーティションへ書き込みます。
  3. 再起動後、新しいシステムへ自動で切り替えて検証します。

新しいバージョンに問題があり、元に戻す場合:

  1. システム更新機構で、前のバージョンへのロールバックを指定します。
  2. 元のパーティションへ切り替えて検証します。
  3. デバイスが正常稼働に戻ります。

システムのロールバックサービスを使用して手動で戻すこともできます。root/kernel のロールバックは再起動後に有効となり、アプリケーション領域のロールバックは直ちに有効となります。

Terminal window
systemctl restart jelina-rollback@root # システムパーティションをロールバック(再起動で有効)
systemctl restart jelina-rollback@kernel # カーネルパーティションをロールバック(再起動で有効)
systemctl restart jelina-rollback@app # アプリ領域をロールバック(即時有効)
systemctl restart jelina-rollback@adv # コンポーネント領域をロールバック(即時有効)

実行前に、現在の実際のマウント状態と設定の一致を検証し、重複操作を防止します。

**起動カウント(bootcount)**で起動状態を追跡し、段階的な自動復旧を実現します。

  • 起動のたびにカウントを増やし、正常起動が成功すると自動でゼロに戻します。
  • クラッシュ、電源断、ウォッチドッグ再起動などで失敗した場合は、カウントが増え続けます。
  • 起動に連続して失敗すると、復旧処理へ移行します。まず復旧起動を試み、それでも失敗する場合はシステム、カーネルの順にパーティションをロールバックします。
  • 復旧後は通常起動に戻り、カウントをリセットします。

この仕組みにより、アップグレードや障害による再起動ループを防止し、使用可能な状態へ自動で戻します。

起動のたびに現在のパーティションを検証します。

  • 検証成功:通常どおりシステムを起動します。
  • 検証失敗:もう一方のシステムを自動で試し、使用可能な状態を確保します。

起動して使用でき、故障時に戻せる仕組みが、無人運用での信頼性を支えます。

現在どちらのパーティションで動作しているか確認するには jelina-info を実行し、起動パーティション情報を確認します。

2 つのパーティションの内容は同期されますか。 いいえ。各システムは出荷時の状態を保持し、ユーザーデータはデータパーティションに集約します。バージョンの関係はシステム更新機構で管理します。

起動パーティションを手動で選択できますか。 通常は自動管理されるため手動選択は不要です。特殊な保守作業では、プラットフォームの起動管理機能を使用できます。Rockchip には jelina-rk-bootctl が用意されています。詳細はコマンドのヘルプを参照してください。