GNU/Linux >> Linux の 問題 >  >> Linux

このオープンソースツールを使用してデバイスをリモートで更新します

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アップデートを送信することに基づいています。


Linux
  1. このLinuxツールとのオープンソースファイル共有

  2. このオープンソースツールを使用してELFバイナリの機能を検査します

  3. このオープンソースツールを使用してLinuxメモリフォレンジックを実行します

  1. このオープンソースツールを使用して、携帯電話とLinux間でファイルを転送します

  2. 私のLinuxストーリー:オープンソースで言語の壁を打ち破る

  3. オープンソーススキルを持つITプロフェッショナルの採用を増やすための雇用主

  1. このLinuxコマンドラインツールでメモリ使用統計を取得する

  2. このオープンソースツールを使用して、Linux上のiPhoneにアクセスします

  3. このオープンソースツールを使用して、USB上に複数のLinuxディストリビューションを保持します