このブログは、株式会社フィックスターズのエンジニアが、あらゆるテーマについて自由に書いているブログです。
Jetson AGX Xavierを使っていて動作が不安定な場合にクリーンインストールからやり直すことがありますが、クリーンインストール、追加パッケージインストール、各種設定まで行うとなるとかなり大変になります。さらに同じ環境構築を複数台やる場合は単純に考えても台数分だけ時間が掛かります。そのような背景から、この環境構築の手間を軽減させる解決手段の一つとして、Jetson AGX Xavierの内蔵ストレージの内容をバックアップし、そこからリストアする方法を紹介します。
今回、以下の環境で動作確認を行いました。
Tegra186_Linux_R32.5.1_aarch64.tbz2
Tegra_Linux_Sample-Root-Filesystem_R32.5.1_aarch64.tbz2
母艦PC上で以下のコマンドを実行し、依存パッケージをインストールします。
$ sudo apt-get install qemu-user-static
クローンに用いるスクリプトを実行するため、母艦PC上でL4T Driver Packageを入手し、展開します。
L4T Driver Package (BSP)」
を入手しますL4T Driver Package (BSP)」
というリンクからTegra186_Linux_R32.5.1_aarch64.tbz2
をダウンロードしますTegra186_Linux_R32.5.1_aarch64.tbz2
を$HOME
以下に展開しますクローンに用いるスクリプトを実行するため、母艦PC上でSample Root Filesystemを入手し、展開します。
Sample Root Filesystem
」を入手しますSample Root Filesystem
」というリンクからTegra_Linux_Sample-Root-Filesystem_R32.5.1_aarch64.tbz2
をダウンロードします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/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を使っている方の作業効率改善につながれば幸いです。
コンピュータビジョンセミナーvol.2 開催のお知らせ - ニュース一覧 - 株式会社フィックスターズ in Realizing Self-Driving Cars with General-Purpose Processors 日本語版
[…] バージョンアップに伴い、オンラインセミナーを開催します。 本セミナーでは、...
【Docker】NVIDIA SDK Managerでエラー無く環境構築する【Jetson】 | マサキノート in NVIDIA SDK Manager on Dockerで快適なJetsonライフ
[…] 参考:https://proc-cpuinfo.fixstars.com/2019/06/nvidia-sdk-manager-on-docker/ […]...
Windowsカーネルドライバを自作してWinDbgで解析してみる① - かえるのほんだな in Windowsデバイスドライバの基本動作を確認する (1)
[…] 参考:Windowsデバイスドライバの基本動作を確認する (1) - Fixstars Tech Blog /proc/cpuinfo ...
2021年版G検定チートシート | エビワークス in ニューラルネットの共通フォーマット対決! NNEF vs ONNX
[…] ONNX(オニキス):Open Neural Network Exchange formatフレームワーク間のモデル変換ツー...
YOSHIFUJI Naoki in CUDAデバイスメモリもスマートポインタで管理したい
ありがとうございます。別に型にこだわる必要がないので、ユニバーサル参照を受けるよ...