1つのアカウントを介して複数のデバイスにリモートでアクセス、接続、および管理する機能は重要です。さらに一歩進んで、デバイスをリモートで完全に更新できることは、システム管理者が労力を削減し、頭痛の種を最小限に抑えるためのもう1つの方法です。
UpdateHubは、ファームウェアやブートローダーを含む完全なデバイス更新をリモートで実行できるオープンソースソリューションです。その目標は、何千ものデバイスを更新する場合でも、小規模な展開を管理する場合でも、デバイスの更新を容易にし、やり直しとリスクを軽減することです。 UpdateHubは、パッケージの整合性や信頼性など、無線(OTA)更新のすべての側面を処理し、他の作業も処理します。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
UpdateHubのこのステップバイステップガイドは、このプロフェッショナルツールの使用を開始するのに役立つことを目的としています。 UpdateHubサーバーオプションには、UpdateHubCloudとUpdateHubCommunity Edition(UpdateHub CE)の2つがあります。これは、このチュートリアルで使用する完全にオープンソースのサーバー(MITライセンスの下で配布)です。
まず、Linuxディストリビューションに、YoctoProjectを使用してイメージをビルドするために必要なすべてのパッケージがインストールされていることを確認します。
次のハードウェアも必要です:
- ターゲット 開発デバイスです。このチュートリアルでは、Raspberry Pi3モデルB+を使用しますが、Raspberry Pi 3、モデルB、またはモデルB+を使用することもできます。
- ホスト YoctoProjectを使用してイメージをビルドするコンピューターです。このチュートリアルでは、Yocto3.1Dunfellを使用します。
UpdateHub CEを起動するには、ホストにDockerがインストールされている必要があります。お持ちでない場合は、Dockerのオリエンテーションとセットアップ手順をご覧ください。
このチュートリアルでは、複数のリポジトリが必要なため、Googleのリポジトリツールを使用してプロセスを容易にします。リポジトリの詳細については、Android開発セットアップガイドをご覧ください。
DebianおよびUbuntuディストリビューションでは、次のコマンドを使用してリポジトリをインストールします。
sudo apt install repo
別のLinuxディストリビューションを使用している場合は、リポジトリを直接ダウンロードして、ディストリビューションを次のように設定します。
mkdir ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
PATH=${PATH}:~/bin
最後に、DHCPを介したネットワーク接続が必要です。または、インターネットプロトコル(IP)アドレスを変更する方法、またはこの構成を処理するYoctoProjectレイヤーを作成する方法を知っている必要があります。
UpdateHubは、リポジトリツールで使用されるマニフェストファイルをリポジトリに提供します。これにより、複数のレイヤーの管理が容易になります。
ディレクトリを作成し、必要なYocto Projectレイヤーを取得して、ソースコードをダウンロードします。
mkdir updatehub-platform
cd updatehub-platform
repo init -u https://github.com/UpdateHub/updatehub-yocto-project-reference-platform.git -b dunfell
repo sync
repo sync
の後 コマンドが完了すると、sources
に必要なすべてのレイヤーが表示されます ディレクトリ。
UpdateHubプラットフォームは、サポートされている複数のデバイスをサポートします。 Yocto Project環境のセットアップ中に、meta-freescale
のエンドユーザー使用許諾契約(EULA)に同意するかどうかを尋ねられます。 層;これはこのプロジェクトには必要ありません。
Yocto Project環境をロードします:
MACHINE="raspberrypi3" source ./setup-environment build
このコマンドは、環境をロードしたターミナルセッションでのみ有効であることに注意してください。新しい端末を使用する場合は、環境を再度ロードする必要があります。ただし、構成コンテンツはconf/local.conf
に保存されているため、マシンを再度構成する必要はありません。 ファイル。
UpdateHubCEを開始します
Dockerをインストールしたら、Dockerイメージをダウンロードし、ポート8080でサーバーを起動します。
docker run -d -p 8080:8080 updatehub/updatehub-ce:latest
ホストIPアドレスとポート8080(http://IP_ADDRESS:8080
)を介してUpdateHubCEダッシュボードにアクセスします )。この例のホストIPは192.168.15.50であるため、http://192.168.15.50:8080
になります。 。
デフォルトのadmin
を使用します ログインとパスワードを入力し、ログインをクリックします。 。
UPDATEHUB_SERVER_URL
を構成する必要があります デバイスはサーバーのIPアドレスを知っている必要があるため、UpdateHubCEアドレスを使用します。デフォルトでは、meta-updatehub
レイヤーは、サーバーのURL変数でUpdateHubCloudアドレスを使用します。
UpdateHubCEのメインインターフェイスが表示されます。
次のステップは、デバイスで使用されるLinuxイメージを生成することです。ただし、最初に、conf/local.conf
にいくつかの変数を設定する必要があります ファイル:
UPDATEHUB_SERVER_URL = "http://IP_ADDRESS:8080"
UPDATEHUB_PACKAGE_VERSION_SUFFIX = "-test-image-1"
ENABLE_UART = "1"
UPDATEHUB_POLLING_INTERVAL = "1m"
上記のコードで1行ずつ移動します:
-
UPDATEHUB_SERVER_URL
UpdateHubCEが実行されているIPアドレスが含まれています。 -
UPDATEHUB_PACKAGE_VERSION_SUFFIX
画像バージョンに接尾辞を追加します。これは、バージョン番号を配置し、新しいイメージごとにバージョン番号をインクリメントする場合に役立ちます。この変数はVERSION_ID
になります 、DISTRO_VERSION
で構成されます (ドキュメントで説明されています)プラスUPDATEHUB_PACKAGE_VERSION_SUFFIX
。これは/etc/os-release
で確認できます ターゲット内のファイル。 -
ENABLE_UART
:シリアルコンソールを使用したり、キーボードとモニターを接続したりするなど、ターゲットデバイスにアクセスする方法はいくつかあります。この変数を使用すると、GPIOヘッダーで使用可能なシリアルポートを使用して、RaspberryPiのシリアルコンソールにアクセスできます。 -
UPDATEHUB_POLLING_INTERVAL
:デフォルトでは、UpdateHubのエージェントとサーバー間の通信は24時間ごとに行われます。この変数を使用して、1分の新しい診察時間を設定します。
このチュートリアルでは、Minicomを使用してターゲットに接続します。必要に応じて、RaspberryPiでのシリアル接続の使用について詳しく知ることができます。
Yocto Project環境の準備ができたので、次を実行してBitBakeタスク実行エンジンを使用してイメージをコンパイルします。
bitbake updatehub-image-base
ホストマシンによっては、画像の生成に時間がかかる場合があります。 raspberrypi3
のイメージを作成するのが初めての場合 YoctoのDunfellブランチでは、BitBakeがソースコード全体をダウンロードするため、ダウンロード速度が画像の生成にかかる時間に影響します。
イメージがコンパイルされたら、build/tmp/deploy/images/raspberrypi3/
に移動します ホストディレクトリとイメージファイルupdatehub-image-minimal-raspberrypi3.wic.gz
を確認します 、あります。
SDカードをRaspberryPiに挿入し、dmesg
を実行して名前を確認します 。次に、次のコマンドを使用してイメージをSDカードにフラッシュしますが、必ず/dev/sdX
を変更してください。 SDカード名に:
zcat updatehub-image-base-raspberrypi3.wic.gz | sudo dd of=/dev/sdX
画像化されたSDカードをターゲットデバイスに挿入して、RaspberryPiに接続します。イメージには、DHCPを使用してIPアドレスを取得するように構成されたネットワークがあります。ユーザーroot
でコンソールにアクセスします パスワードは空のままにしておきます。
cat /etc/os-release
を使用して、ターゲットで実行されているイメージのバージョンを確認します 。
デバイスは正常に動作しているはずですが、更新パッケージを作成するには機能を追加する必要があります。これにより、ターゲットを更新するための画像が作成されます。次の例では、ターゲットにSSHサーバーのサポートを追加し、この機能をインストールするための更新パッケージを作成します。
build/conf/local.conf
に次の行を追加して、OpenSSHサーバーのサポートを追加します。 ファイル:
IMAGE_FEATURES += "ssh-server-openssh"
更新された画像に別のバージョンがあることを明確にするには、接尾辞-test-image-2
を付けます。 UPDATEHUB_PACKAGE_VERSION_SUFFIX
内 変数:
UPDATEHUB_PACKAGE_VERSION_SUFFIX = "-test-image-2"
ファイルを保存して実行します:
bitbake updatehub-image-base -c uhuarchive
このコマンドは、.uhupkg
を含むファイルを生成します 拡張機能、システムを更新するためにUpdateHubによって使用される形式。生成されたファイルは、イメージと同じディレクトリtmp/deploy/images/raspberrypi3
にあります。;この例では、それはupdatehub-image-base-raspberrypi3.uhupkg
。
UpdateHub CEダッシュボードにアクセスするには、デバイスをクリックします タブでデバイスが一覧表示されているかどうかを確認します:
UpdateHubCEダッシュボードのパッケージ タブには利用可能なパッケージのリストが表示されますが、まだありません。パッケージを追加するには、パッケージのアップロードをクリックします ボタンをクリックし、updatehub-image-minimal-raspberrypi3.uhupkg
を選択します ファイル。この例では、tmp/deploy/images/raspberrypi3/directory
にあります。 。パッケージの詳細を示す画面が表示されます。これは、ダッシュボードに更新パッケージを追加するプロセスを示しています。
デバイスが認識され、パケットがサーバーに送信されたら、ロールアウトを作成できます。これは基本的に展開計画です。 ロールアウトに移動します タブをクリックし、ロールアウトの作成をクリックします 。アップグレードで使用するパッケージバージョンを選択します。この例には、バージョン20.04-test-image-2
の前のステップのパッケージのみが含まれています。 。このバージョンを選択し、更新されるデバイスのリストが含まれていることを確認してください。
以前は、ターゲットで実行されているイメージを1分ごとにUpdateHubサーバーで更新クエリを実行するように構成していたため、ロールアウトを作成してから1分以内に更新プロセスが開始されます。更新ステータスを追跡するには、ロールアウトを確認してください タブ。
アップグレードプロセスが完了すると、ターゲットは自動的に再起動します。新しいイメージが起動し、サーバーに更新を自動的に照会します。サーバーは更新がないと応答し、更新サイクルを終了します。
ステータスがupdated
を示している場合 、ホストで以下のコマンドを実行して、SSH経由でターゲットにアクセスします。
ssh root@IP_DO_TARGET
パスワードは必要ありません。 Enterを押すだけです 、およびターゲットコンソールが表示されます。 /etc/os-release
でバージョンを確認できます 確認するファイル。
おめでとうございます!完了です!
これで、デバイスをリモートで更新するためのプロフェッショナルなツールにアクセスできます。このチュートリアルでは、YoctoProjectバージョンのDunfell3.1.2でRaspberryPi 3を使用しましたが、他のデバイスとバージョンもサポートされています。
デバイスの統合について質問がある場合は、Gitterを介して、または[email protected]に電子メールを送信して開発者チームにアクセスしてください。
この記事は、UpdateHub:UpdateHubのブログでYoctoProjectを使用してOTAアップデートを送信することに基づいています。