Article

2021年6月14日

はじめに

Jetson AGX Xavierを使っていて動作が不安定な場合にクリーンインストールからやり直すことがありますが、クリーンインストール、追加パッケージインストール、各種設定まで行うとなるとかなり大変になります。さらに同じ環境構築を複数台やる場合は単純に考えても台数分だけ時間が掛かります。そのような背景から、この環境構築の手間を軽減させる解決手段の一つとして、Jetson AGX Xavierの内蔵ストレージの内容をバックアップし、そこからリストアする方法を紹介します。

動作確認環境

今回、以下の環境で動作確認を行いました。

母艦PC

  • Ubuntu 18.04 64bit

Jetson AGX Xavier

  1. JetPack 4.5.1をインストールしたJetson AGX Xavier
  2. L4T 32.5.1
    • L4T Driver Package : Tegra186_Linux_R32.5.1_aarch64.tbz2
    • Sample Root Filesystem : Tegra_Linux_Sample-Root-Filesystem_R32.5.1_aarch64.tbz2

前準備

依存パッケージインストール

母艦PC上で以下のコマンドを実行し、依存パッケージをインストールします。

$ sudo apt-get install qemu-user-static

L4T Driver Package展開

クローンに用いるスクリプトを実行するため、母艦PC上でL4T Driver Packageを入手し、展開します。

  1. https://developer.nvidia.com/embedded/jetpack-archiveで対象JetPackバージョンに紐づくL4Tバージョンを調べます
    • 今回クローン元のJetson AGX XavierにはJetPack 4.5.1がインストールされているので、対応するL4Tバージョンは32.5.1になります
    • クローン元と異なるJetPackバージョン、L4Tバージョンでの動作確認は今回未実施です
  2. https://developer.nvidia.com/embedded/downloads#?search=Driverから対象L4Tバージョンの「L4T Driver Package (BSP)」を入手します
  3. Tegra186_Linux_R32.5.1_aarch64.tbz2$HOME以下に展開します

Sample Root Filesystem展開

クローンに用いるスクリプトを実行するため、母艦PC上でSample Root Filesystemを入手し、展開します。

  1. https://developer.nvidia.com/embedded/jetpack-archiveで対象JetPackバージョンに紐づくL4Tバージョンを調べます
    • 今回クローン元のJetson AGX XavierにはJetPack 4.5.1がインストールされているので、対応するL4Tバージョンは32.5.1になります
    • クローン元と異なるJetPackバージョン、L4Tバージョンでの動作確認は今回未実施です
  2. https://developer.nvidia.com/embedded/downloads#?search=Driverから対象L4Tバージョンの「Sample Root Filesystem」を入手します
  3. Tegra_Linux_Sample-Root-Filesystem_R32.5.1_aarch64.tbz2$HOME以下に展開します

その後、以下のコマンドを実行してRoot File Systemを格納し、バイナリを生成します。

$ cd $HOME/Tegra186_Linux_R32.5.1_aarch64/Linux_for_Tegra/rootfs
$ sudo tar -jxpf ../../../Tegra_Linux_Sample-Root-Filesystem_R32.5.1_aarch64.tbz2
$ cd ..
$ sudo ./apply_binaries.sh

詳細はhttps://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/rootfs_custom.html参照ください。

バックアップ

ここまでで準備ができたのでバックアップを行います。https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/flashing.htmlの「To clone a Jetson device and flash」に以下のコマンド例が書いてあります。

$ sudo ./flash.sh -r -k APP -G <clone> <board> mmcblk0p1

今回はJetson AGX Xavierがターゲットのため、母艦PCにForce Recovery ModeにしたJetson AGX Xavierを接続し、母艦PC上で下記コマンドを実行し、Jetson内蔵ストレージ内容を母艦PCにバックアップします。

$ cd $HOME/Tegra186_Linux_R32.5.1_aarch64/Linux_for_Tegra
$ sudo ./flash.sh -r -k APP -G backup.img jetson-xavier mmcblk0p1

バックアップが終わると$HOME/Tegra186_Linux_R32.5.1_aarch64/Linux_for_Tegra以下にbackup.imgが生成されます。

リストア

ここでは、前節で生成したバックアップデータを使ってリストアを行います。https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/flashing.htmlの「To clone a Jetson device and flash」に以下のコマンド例が書いてあります。

$ sudo cp <clone>.img bootloader/system.img
$ sudo ./flash.sh -r <board> mmcblk0p1

今回はJetson AGX Xavierがターゲットのため、母艦PCにForce Recovery ModeにしたJetson AGX Xavierを接続し、母艦PC上で下記コマンドを実行します。

$ cd $HOME/Tegra186_Linux_R32.5.1_aarch64/Linux_for_Tegra
$ sudo cp backup.img bootloader/system.img
$ sudo ./flash.sh -r jetson-xavier mmcblk0p1

リストアが終わるとクローン作業は完了です。

おわりに

Jetson AGX Xavier内蔵ストレージ内容をバックアップし、バックアップデータからリストアできるようになったことで、ソフトウェア的に不安定な状態になってもバックアップ時点まですぐに復旧できるようになったり、同じ環境の複製も簡単に行えるようになりました。Jetson AGX Xavierを使っている方の作業効率改善につながれば幸いです。

参考URL

Tags

About Author

yoshimura

Leave a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Recent Comments

Social Media