Jeston Xavier NX モジュールはシステムを NVME ストレージに移行します

        みなさん、こんにちは。私は胡兄弟です。最近、自分で設計した最初の Xavier NX キャリア ボードの設計と校正が完了しました。まだ小さな欠陥がありますが、正常に使用できます。ここでは、自分の設計を記録して共有します。 . キャリアボード上でシステム移行を実装する方法。

        SDK Manager を使用してすべてのサポート ライブラリを自分でインストールした後、16G オンボード EMMC が不足したため、システムを NVME ストレージに移動する必要がありました。

目次

1. Jetson Xavier NXシリーズの紹介

1.1 Xavier のようなパフォーマンス、Nano のようなサイズ

1.2 重要な組み込みアプリケーションに最適

1.3 強力な 21 TOPS AI パフォーマンス

1.4. モジュールパラメータ

2. Jetson Xavier NX キャリアボード N100 の紹介

3. N100 ソフトウェア環境の説明

3.1 システムバージョン

3.2 Jetson TX2 L4T バージョンの表示

4. N100 ソフトウェア環境の説明

4.1 SSDを準備し、GPTとしてフォーマットする

4.2 コマンドライン移行システム

4.3 手動によるシステム移行

V. まとめ


 

1. Jetson Xavier NXシリーズの紹介

        NVIDIA® Jetson Xavier™ NX は、スモール フォーム ファクター システム オン モジュール (SOM) により、スーパーコンピューターのパフォーマンスをエッジにもたらします。最大 21 TOPS の高速化されたコンピューティング能力により、最新のニューラル ネットワークを並列実行し、完全な AI システムの要件である複数の高解像度センサーからのデータを処理します。

1.1 Xavier のようなパフォーマンス、Nano のようなサイズ

        わずか 70mm x 45mm の Jetson Xavier NX は、NVIDIA の Xavier SoC のパワーをJetson Nano™サイズのモジュールに詰め込みました。このスモール フォーム ファクタ モジュールは、高速 CSI や PCIe から低速 I2C や GPIO までの豊富な IO セットと優れたパフォーマンスと消費電力の利点を組み合わせています。小型フォームファクタ、豊富なセンサーインターフェイス、優れたパフォーマンスにより、すべての組み込み AI およびエッジ システムに新機能をもたらします。

1.2 重要な組み込みアプリケーションに最適

        Jetson Xavier NX は、ドローン、ポータブル医療機器、小型商用ロボット、スマート カメラ、高解像度センサー、自動光学検査、スマート ファクトリー、その他の IoT 組み込みシステムなどの高性能 AI システムに適しています。

1.3 強力な 21 TOPS AI パフォーマンス

        最大 21 TOPS のパフォーマンスを実現する Jetson Xavier NX は、組み込みシステムおよびエッジ システムにおける高性能コンピューティングと AI に最適です。384 個の NVIDIA CUDA® コア、48 個の Tensor コア、6 個の Carmel ARM CPU、および 2 個の NVIDIA Deep Learning Accelerator (NVDLA) エンジンのパフォーマンスが得られます。これに、59.7 GB/秒を超えるメモリ帯域幅、ビデオのエンコードとデコードを組み合わせることで、Jetson Xavier NX は、複数の最新のニューラル ネットワークを並行して実行し、複数のセンサーからの高解像度データを同時に処理するための最適なプラットフォームになります。

1.4. モジュールパラメータ

2. Jetson Xavier NX キャリアボード N100 の紹介

         N100 キャリア ボードは私自身が設計したもので、公式システムのハードウェア システムと完全な互換性があります。主な構成リソースは次のとおりです。 DB9 インターフェイスは RS232 インターフェイスにつながり、DB9 インターフェイスは CAN インターフェイスにつながり、1 ギガビット イーサネット ポート、HUB チップの使用、4 つの USB3.0 マシン インターフェイスの拡張、および一般的に使用される HDMI インターフェイスと NVME ストレージ インターフェイス、および M .2 WIFI ネットワーク カード インターフェイス。

3. N100 ソフトウェア環境の説明

システム用に JetPack 4.6.3 をプログラムしました

3.1 システムバージョン

nvidia@nvidia-desktop:~$ sudo lsb_release -a
[sudo] password for nvidia: 
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.6 LTS
Release:    18.04
Codename:   bionic

3.2 Jetson TX2 L4T バージョンの表示

head -n 1 /etc/nv_tegra_release
​
# R32 (release), REVISION: 7.3, GCID: 31982016, BOARD: t186ref, EABI: aarch64, DATE: Tue Nov 22 17:32:54 UTC 2022

説明 システムバージョン R32.7.3 を使用してください

4. N100 ソフトウェア環境の説明

NVMe SSD ハードディスクはシステム ディスク (rootfs およびユーザー領域) としてのみ使用され、システムの起動は依然として SD カードまたは EMMC を介して行われます (デバイス ツリー dtb のアップグレードや SD カードまたは EMMC 内など)。

4.1 SSDを準備し、GPTとしてフォーマットする

#新存储接入系统后,查看存储情况
$ sudo fdisk -l

ここでは主に NVMe ストレージに焦点を当てます。

 同様の情報が表示された場合は、このディスクがパーティション テーブルをまだフォーマットしていないことを意味します。次に、ストレージを手動でフォーマットし、パーティション テーブルを構築します。

#分区: /dev/nvme0n1 是之前查出来的
$ sudo fdisk /dev/nvme0n1

 次のコマンドラインが表示されます。最初に m を使用してヘルプ情報を表示します

Command (m for help): m
​
Help:
​
  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag
​
  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition
​
  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)
​
  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file
​
  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes
​
  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table

GPT パーティション テーブルを作成し、ストレージ用にフォーマットします。

#使用g建立分区表
Command (m for help): g
Created a new GPT disklabel (GUID: 8ED2D809-5D3A-DC45-8CFA-A4DA8124D705).
The old ext4 signature will be removed by a write command.
​
Command (m for help): 

N コマンドを使用して新しいパーティションを追加します。パーティション書き込み 1 を除き、その他はすべてデフォルトです。

Command (m for help): n
Partition number (1-128, default 1): 1
First sector (2048-500118158, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-500118158, default 500118158): 
​
Created a new partition 1 of type 'Linux filesystem' and of size 238.5 GiB.

Wコマンドを使用して保存します

Command (m for help): w
The partition table has been altered.
Syncing disks.

保存後は積極的に終了しますが、このときストレージを再度確認します。

$ sudo fdisk -l

 このような分布は、パーティションの確立が完了したことを示しています。次に、パーティションをフォーマットします

sudo mkfs -t ext4 /dev/nvme0n1p1

デフォルトの改行までずっと。

nvidia@nvidia-desktop:~$ sudo mkfs -t ext4 /dev/nvme0n1p1
mke2fs 1.44.1 (24-Mar-2018)
Discarding device blocks: done                            
Creating filesystem with 62514513 4k blocks and 15630336 inodes
Filesystem UUID: 87471bb3-2a48-4cb7-80bc-40b3bede09c6
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000, 23887872
​
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information:          
done
​
nvidia@nvidia-desktop:~$ 

現時点では、ストレージがマウントされていないため、コマンド ラインでストレージの配布を表示してもストレージは表示されません。

nvidia@nvidia-desktop:~$ df -hl
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1   14G   13G   37M 100% /
none            3.5G     0  3.5G   0% /dev
tmpfs           3.8G   40K  3.8G   1% /dev/shm
tmpfs           3.8G   38M  3.8G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
tmpfs           777M   12K  777M   1% /run/user/120
tmpfs           777M  132K  777M   1% /run/user/1000

この時点で、デスクトップ システムにログインし、左側のメニュー アイコン バーで対応するストレージを見つけ、ダブルクリックして開くと、それが表示されます。

 ここまでで保管の準備が完了しました。

4.2 コマンドライン移行システム

https://github.com/jetsonhacks大手のツール コレクションのアクセス アドレス。このアドレスでは、移行を簡単に実現するのに役立つツールが多数あることがわかります。

ターミナルで実行する方法を見つけてください。

git clone https://github.com/jetsonhacks/rootOnNVMe.git
cd rootOnNVMe
./copy-rootfs-ssd.sh
./setup-service.sh
sudo reboot

#执行拷贝脚本
./copy-rootfs-ssd.sh

nvidia@nvidia-desktop:~/Downloads/rootOnNVMe-master$ ./setup-service.sh 
==== AUTHENTICATING FOR org.freedesktop.systemd1.reload-daemon ===
Authentication is required to reload the systemd state.
Authenticating as: nvidia,,, (nvidia)
Password: 
==== AUTHENTICATION COMPLETE ===
Created symlink /etc/systemd/system/default.target.wants/setssdroot.service → /etc/systemd/system/setssdroot.service.
Service to set the rootfs to the SSD installed.
Make sure that you have copied the rootfs to SSD.
Reboot for changes to take effect.

セットアップ スクリプトを実行した後、システムを再起動して確認してください。

 ルート ディレクトリは NVME に正常に置き換えられたので、この方法が機能することを確認します。

4.3 手動によるシステム移行

JetPack4.6.3 システムをインストールしたため、以前の TX1 および TX2 の方法を参照して移行できます。公式マザーボード Jeston TX1 TX2 ubuntu 18.04 システムをソリッド ステート SSD に移行する_jeston tx2_Robot Huge のブログ - CSDN ブログこれは以前の方法です。手順は次のとおりです。

EMMC システムのコンテンツを NVME ストレージに手動でコピーします。

1. 保存場所を確認する

nvidia@nvidia-desktop:~$ df -hl
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1   14G   13G   37M 100% /
none            3.5G     0  3.5G   0% /dev
tmpfs           3.8G   40K  3.8G   1% /dev/shm
tmpfs           3.8G   38M  3.8G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
tmpfs           777M   12K  777M   1% /run/user/120
tmpfs           777M  128K  777M   1% /run/user/1000
/dev/nvme0n1p1  234G   61M  222G   1% /media/nvidia/87471bb3-2a48-4cb7-80bc-40b3bede09c6

2.NVMEストレージを入力します

cd /media/nvidia/87471bb3-2a48-4cb7-80bc-40b3bede09c6/

3. すべてのファイルを NVME ストレージにコピーします

sudo cp -ax / ./

4. NVMEストレージ上のシステム起動ファイルを変更します。

コピー直後に、NVME システムのブート ディレクトリに入ります。

#进入目录
cd /media/nvidia/87471bb3-2a48-4cb7-80bc-40b3bede09c6/
#进入boot目录
cd /boot/extlinux

#备份和修改启动引导文件
sudo cp extlinux.conf extlinux.conf_bak
#修改extlinux.conf

元のファイルの内容

TIMEOUT 30
DEFAULT primary
​
MENU TITLE L4T boot options
​
LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 nv-auto-config
​
# When testing a custom kernel, it is recommended that you create a backup of
# the original kernel and add a new entry to this file so that the device can
# fallback to the original kernel. To do this:
#
# 1, Make a backup of the original kernel
#      sudo cp /boot/Image /boot/Image.backup
#
# 2, Copy your custom kernel into /boot/Image
#
# 3, Uncomment below menu setting lines for the original kernel
#
# 4, Reboot
​
# LABEL backup
#    MENU LABEL backup kernel
#    LINUX /boot/Image.backup
#    INITRD /boot/initrd
#    APPEND ${cbootargs}

変更された内容:

TIMEOUT 30
DEFAULT nvmessd
​
MENU TITLE L4T boot options
​
LABEL nvmessd
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} quiet root=/dev/nvme0n1p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 nv-auto-config
 LABEL emmc
      MENU LABEL internal Emmc
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 nv-auto-config

4. システムを手動で NVME に書き込み、起動します。

仮想マシン上でターミナルを開きます。

モジュールを手動で制御してリカバリモードに入る

 EMMC ブート システムのプログラミングを開始する

#更新DTB和内核文件,设置NVME启动
sudo ./flash.sh -r -d kernel/dtb/tegra194-p3668-all-p3509-0000.dtb -K kernel/Image jetson-xavier-nx-devkit-emmc nvme0n1p1
#内核文件,设置NVME启动
sudo ./flash.sh -r -K kernel/Image jetson-xavier-nx-devkit-emmc nvme0n1p1
​
#以下做为参考
#重新生成系统,烧写至EMMC
sudo ./flash.sh jetson-xavier-nx-devkit-emmc mmcblk0p1
#使用以有的系统镜像,烧写至EMMC
sudo ./flash.sh -r jetson-xavier-nx-devkit-emmc mmcblk0p1

 この時点でプログラミングは完了です。システムが再起動すると、ストレージ情報が表示されます。

nvidia@nvidia-desktop:~$ df -hl
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p1  234G   13G  209G   6% /
none            3.5G     0  3.5G   0% /dev
tmpfs           3.8G   40K  3.8G   1% /dev/shm
tmpfs           3.8G   22M  3.8G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
tmpfs           777M   12K  777M   1% /run/user/120
tmpfs           777M  120K  777M   1% /run/user/1000
/dev/mmcblk0p1   14G  5.0G  8.1G  39% /media/nvidia/a0cb2694-3e4c-4a67-9e05-92f278444e97

説明も成功しました。

V. まとめ

        4.2 で提供されるメソッドと 4.3 で提供されるメソッドがあります。明らかに 4.2 の方がはるかにシンプルで自由なので、個人的には 4.2 を使用することを好みます。ここでのマスターのオープンソース精神は特に学ぶ価値があります。4.3 TX1とTX2でいつもやってるやり方なのでここでも使えますし、記念したら廃止される気がします。ただし、その後、2 つの方法で構築されたシステムを長期的に比較し、最終的にどちらの方法を使用するかを決定します。今日の共有を楽しんでいただければ幸いです。

誤り訂正、質問、連絡: [email protected]

おすすめ

転載: blog.csdn.net/cau_weiyuhu/article/details/131504533