メインコンテンツまでスキップ

ネットワークブートによる復旧

リムーバブルメディアではなく、ネットワーク経由でDevKitを起動する必要がある場合は、ネットワークブートによる復旧を使用してください。これは、次のような場合に役立ちます。

  • DevKit を、より古いバージョンの SDK にダウングレードする必要があります。
  • 最新リリース版ではないビルドをインストールする必要があります(たとえば、プレリリース版のdevelopビルドや、社内向けのエンジニアリングイメージなど)。
  • 破損したブートローダーまたはファイルシステムを持つボードを復旧する必要があり、SDカードが利用できません。
  • 新しいボードを立ち上げるにあたり、内部ストレージデバイスの摩耗を避けたいと考えています。
  • あなたは、Yocto LinuxのModalix DevKitをeLxrに変換するか、またはeLxrからYocto Linuxに戻しています。変換に特有の前提条件については、eLxr に変換を参照してください。
注記

このガイドでは SiMa.ai が提供するイメージを使用します。また、ボード上で U-Boot プロンプトが動作している必要があります。独自にビルドしたイメージのインストール方法は、このガイドでは説明していません。その場合は、イメージを eMMC に書き込むを参照してください。

sima-cli bootimg とともに、--netboot オプションを使用します。これにより、ターゲットボードのブートイメージがダウンロードされ、ホスト上の組み込みTFTPサーバーから提供されます。ファームウェア2.1.3以降を実行している、アクセス可能な DevKit または PCIe カードの場合、--devkit <ip> を追加して、ホストが U-Boot 環境を構成し、ネットブートを開始できるようにします。この場合、ステップ3をスキップできます。古いファームウェアを使用している場合、またはアクセスできないデバイスの場合は、ステップ3でシリアルコンソールを通じて U-Boot を構成します。

ステップ1:物理的なセットアップ
注記

この手順は、macOS および Ubuntu Linux ホストをサポートします。

ホストマシンに sima-cli がインストールされていない場合は、先にインストールしてから続行してください。

ホストのシェルセッションを使用して、TFTPサーバーを起動し、eMMCフラッシュを開始します。--devkitと--autoflashを使用する場合でも、netbootの進捗状況を監視するために、別のシリアルコンソール接続を使用することをお勧めします。ステップ3のU-Bootを手動で構成するには、シリアルコンソールが必要です。

  1. DevKitのイーサネットポートをホストマシンに直接接続し、ホストのネットワークインターフェースを固定IPアドレス192.168.1.10に設定します。Modalixの早期アクセス版DevKitでは、イーサネットポート0を使用してください。

  2. 推奨されるシリアル接続では、DevKit の UART ポート をホストに接続して、コンソールにアクセスします。ホストに sima-cli をインストールし、シリアルターミナルを開きます。

    sima-user@sima-user-machine:~$ sima-cli serial
  3. DevKitで、ネットワークインターフェースをデフォルトの固定IPアドレス192.168.1.20に設定します。設定方法は、スタンドアロンモードネットワーク設定の手順に従ってください。

ステップ2:ホスト上でTFTP ネットワークブートサーバーを起動します。

要件

  • ホストとDevKitは、同じ物理ネットワーク上にあるか、または直接のイーサネットリンクで接続されている必要があります。
  • イーサネット接続は、ギガビットインターフェース以上(1000Mbpsを超えるリンク速度)である必要があります。
  • ホストは、ファームウェアイメージをダウンロードするためにインターネットに接続する必要があります。
  • UDPポート**69(TFTP)**は、ホストのファイアウォールによってブロックされないようにしてください。

<version> を、ターゲットとなる SDK のバージョン(例:2.1.3)に置き換え、<boardtype> を modalix または mlsoc に、そして <fwtype> を yocto または elxr に置き換えてください。

macOS の場合:

sima-user@sima-user-machine:~$ sima-cli bootimg --boardtype <boardtype> --fwtype <fwtype> -v <version> --netboot

Linux の場合:

警告

TFTPサーバーは、特権ポートである69にバインドされるため、sudo が必要です。

sima-user@sima-user-machine:~$ sudo ~/.sima-cli/.venv/bin/sima-cli bootimg --boardtype <boardtype> --fwtype <fwtype> -v <version> --netboot

ホストから Netboot を設定する(ファームウェア 2.1.3 以降)​

もし、DevKitまたはPCIeカードが現在、ファームウェア2.1.3以降で動作しており、ホストからアクセス可能な場合、上記のコマンドに--devkit <ip>を追加します。<ip>を、デバイスの現在のIPアドレスに置き換えてください。ホストはU-Boot環境を構成し、ネットブートを開始するため、ステップ3をスキップしてステップ4に進むことができます。

デバイスがネットブートを開始した後、自動的にフラッシュを実行するには、--autoflashも追加してください。

sima-user@sima-user-machine:~$ sima-cli bootimg --boardtype <boardtype> --fwtype <fwtype> -v <version> --netboot --devkit <ip> --autoflash

Linuxでは、上記に示したのと同じsudo ~/.sima-cli/.venv/bin/sima-cliプレフィックスを使用します。--autoflashを使用すると、ステップ4で手動のfコマンドを入力する必要はありません。可能であれば、シリアルコンソールを接続したままにして、進捗状況を監視し、CLIから再起動するように指示されるまで待ちます。

このコマンドは:

  1. 要求されたSDKバージョンとボードタイプに対応する、起動可能なイメージファイルをダウンロードします。
  2. ファイルを一時的な作業ディレクトリに展開します。
  3. ローカルの TFTP サーバーを起動し、抽出されたブートファイル(Image、boot.scr、.dtbファイルなど)を配信します。
ステップ3:DevKit をネットワークブートするように設定します。

ステップ2でホストに--devkitを使用してネットブートを設定した場合は、この手順をスキップしてください。それ以外の場合は、以下のシリアルコンソール手順に従ってください。

DevKit をシリアルコンソール経由でホストに接続したまま、電源を入れ直します。電源の入れ直し中にシリアルコンソールの接続が切れた場合は、再接続してください。Hit any key to stop autoboot と表示されるまで待ち、任意のキーを押して U-Boot シェルに入ります。

... ... ...

Address in DT is ff:ff:ff:ff:ff:ff
Address in environment is 68:e1:54:00:05:c6
eth0: ethernet@a800000 [PRIME]
Hit any key to stop autoboot: 0
sima$

次に、U-Boot シェルで以下のコマンドを実行します。

sima:~$ setenv boot_targets net; saveenv; boot

Modalix eLxr をターゲットとする場合は、起動前に cpio イメージの名前も設定してください。

sima:~$ setenv cpio_name simaai-image-palette-modalix.cpio.gz; setenv boot_targets net; saveenv; boot

これは、ステップ2で準備したホストのTFTPサーバーから起動するように、DevKitに指示します。

注記

デフォルトでは、DevKit U-Boot は、以下の設定で構成されています。

  • ipaddr=192.168.1.20(DevKitのイーサネットインターフェース、マルチポートボードの最初のポート)。
  • serverip=192.168.1.10(TFTPサーバーが稼働しているホストマシン)。

別のネットワークを使用するには、環境に合わせて、U-Boot 内の serverip と ipaddr を更新してください。選択した IP アドレスで、DevKit がホストにアクセスできることを確認してください。

sima:~$ setenv serverip 10.0.0.10; setenv ipaddr 10.0.0.1; saveenv; boot
ステップ4:eMMCに書き込みます

ステップ2で--autoflashを有効にした場合、ネットワークブートされたデバイスが準備完了すると、自動的にフラッシュが開始されます。進捗状況を監視し、指示に従って再起動してください。そうでない場合は、以下の手動コマンドを使用してください。

ホスト上の--netbootシェルは、次の2つのコマンドをサポートしています。

  • c — 接続されているすべてのクライアントと、現在それらのクライアントで実行されているファームウェアのバージョンを表示します。
  • f — 選択したクライアントのeMMCにファームウェアを書き込みます。

DevKit がネットワークブートを完了するまで待ちます。これには数分かかる場合があります。シリアルコンソールにログインプロンプトが表示されたら、ボードは準備完了です。完全なブートシーケンスを観察するために、シリアルコンソールを接続したままにしておくことをお勧めします。

ホスト端末に戻り、netboot> プロンプトが表示されるまで Enter キーを押します。オプションで、c と入力して、DevKit が接続されていることを確認し、現在のファームウェアバージョンを表示してから、f と入力して書き込みます。

netboot> f

以下のようなログが表示されるはずです。

🔍 Checking SSH availability for 192.168.1.20...
✅ Board is online!
✅ SSH is available on 192.168.1.20
netboot> f
🔧 Initiating eMMC flash [...]

このイメージのサイズは約1.6GBで、転送には数分かかります。進捗状況の例:

↦ 520093696 bytes (520 MB, 496 MiB) copied, 1 s, 515 MB/s
↦ 5368709120 bytes (5.4 GB, 5.0 GiB) copied, 163.331 s, 32.9 MB/s

書き込みが完了したら、DevKit の電源を入れ直してください。これにより、eMMCからターゲットバージョンが起動されます。

トラブルシューティング
  • DevKit がネットワークブートに失敗した場合、ホストとデバイスの両方が同じサブネット (192.168.1.x) 上にあることを確認してください。

  • Modalixの早期アクセス版では、ネットワークブートに利用できるのはイーサネットポート0のみです。

  • Linuxでは、ホストのファイアウォールがUDPポート69(TFTP)を許可するように設定されていることを確認してください。

  • DevKitからの接続を確認してください。

    modalix:~$ ping 192.168.1.10
  • ネットブート中にDevKitのIPアドレスが変更された場合(たとえば、DHCPによって新しいアドレスが割り当てられた場合)、sima-cliには通知されず、以前のアドレスを使い続ける可能性があります。シリアルコンソールを通じてDevKitに接続し、ip addrコマンドを実行して、現在のIPアドレスを確認します。次に、ホストのネットブートシェルで、そのアドレスを使用してfコマンドを実行し、デバイスにファームウェアを書き込みます。

    netboot> f <actual-ip>
  • f でイメージが見つからない場合は、ステップ2のsima-cli bootimg --netboot コマンドを再度実行し、TFTPパスを更新してください。

  • Modalix DevKit を eLxr に変換した後、シリアルコンソールに NFS 関連のエラーメッセージが表示された場合、それらは無視しても問題ありません。