NVIDIA Jetson TX2NX에 SSD 추가

개시하다


최근 Jetson Nano의 상위 기종인 Jetson TX2NX가 사용하기 시작했다여기 참조. SSD를 계속 증설하면서 기존 가이드 장비로 내장된 eMMC와 듀얼 가이드 환경을 구축했기 때문에 소개한다.

SSD 설치 및 식별


슬라이더에 SSD가 설치된 곳.

사용하는 SSD는 TS128GMTE 452T(Transcend 128GB SSD)입니다.구매 사이트는여기.입니다.우선 설치된 SSD가 제대로 인식되는지가 관건이다.
$ dmesg | grep nvme
[    2.253370] nvme nvme0: pci function 0000:01:00.0
[    2.253397] nvme 0000:01:00.0: enabling device (0000 -> 0002)
[    2.375443]  nvme0n1:
$ ls -las /dev/nvme0n1
0 brw-rw---- 1 root disk 259, 2  1月 23 14:33 /dev/nvme0n1
먼저 얻은 것TS120GMTS420S은 물리적으로 찔린 것이 찔린 것이기 때문에 식별하지 못했다.하지만 SATA가 되는 건 안 되겠죠.

SSD의 파티션 생성 및 형식


주로 참고Jetson Xavier NX 개발자 번들에 M.2 NVMe SSD를 추가하는 방법.
파티션과 mke2fs를 사용하여 섹션을 만들고 포맷합니다.
rootOnNVMe.git의copy-rootfs-ssd.sh를 사용하여 eMMC의 루트fs를 SSD로 복사합니다.
내장된 eMMC를 설정할 때와 마찬가지로 플래시입니다.sh로 쓸 수 있어요. 물론 복사가 빠르겠죠.
여기, rootOnNVMe.git에서 준비한 setup-서비스입니다.sh를 사용하지 않고 U-Boot에서 SSD로 시작합니다.
rootOnNVMe.git의 의미
L4T32.5는 USB와 SSD에서 시작해 USB 메모리에서 시작해 Jetson Nano에서 한 번 시도해 본 결과 발표 노트를 재확인했다.
https://developer.nvidia.com/embedded/l4t/r32_release_v5.0/jetson_linux_driver_package_release_notes_r32.5_ga.pdf

Loading from USB or NVMe drive: Jetson Nano, Jetson TX2, and Jetson TX1 modules now support loading kernel, device tree, and initrd from the root file system on a USB or NVMe drive.
이런 기술이 바로 그것이다.따라서 아직 SSD 등에서 부트할 수 없을 때는 루트 파일 시스템을 복사해 해당 SSD에 있는 파일 시스템을 루트 파일 시스템으로 설치해 시스템을 실행하지만, 지금은 SSD에서 직접 부트할 수 있도록 대응하고 있다.

시작 순서 수정


Serial 콘솔에서 U-Boot autoboot에서 Enter 키, bootdevices를 nvme0mmc0 순서로 설정한 후 SSD에서 시작합니다.
setenv boot_targets nvme0 mmc0 usb0
saveenv
boot
여기서는 saveenv를 통해 앞으로 항상 SSD에서 먼저 시작합니다.반대로 SSD가 시작되지 않을 때 내장된 eMMC에서 시작하려고 할 때도 autoboot에서 mmc0에서 시작하여 안내하는 것으로 변경할 수 있다.

U-Boot 업데이트


여기서 갑자기 U-Boot의 업데이트를 말하면서 그 경과를 설명한다.
이는 SSD가 아니라 eMMC에서 논의 중이었으나 Jetson I/O로 생성된 Device Tree를 사용하여 시작할 수 없는 문제가 발생했기 때문입니다.검색할 때 아래의 투고를 발견하였다.
[L4T 32.6.1 TX2 NX] Loading default dtb trough extlinux FDT ...
오리지널 U-Boot의 경우 프로필 include/configs/p3636-0001.h 오류, 결과적으로 커널이 32GB로 제한되었습니다.이건 도저히 눈치채지 못하겠어...
따라서 U-Boot의 TX2NX용 설정(p366-0001.h)을 수정하고 구축한 다음 플래시를 만듭니다.쉬에서 U-Boot만 업데이트가 되면...
이번 쓰기는 실패했습니다.
아이고, 생각하고 또 조사해 보니, 어떤 사람이 같은 말을 했다.
problem flashing u-boot on to TX2 eMMC
결론은 플래시.sh -r -k kernel ... 이렇게 하면 마치 Write가 온 것 같다.
NVIDIA Jetson Linux Driver Package Software Features
Bootloader의 U-Boot Custoomization의 Flashing U-Boot Only에서 설명한 대로
$ sudo ./flash.sh -k LNX <platform> mmcblk0p1
이렇게 수행되지만 LNX가 아닌 kerner로 지정해야 할 것 같습니다.(참고로 이곳의 목표는 SSD이기 때문에 mmcblk0p1이 아니라 nvme0n1이고 의 부분은jetson-xavier-nx-devkit-tx2-nx를 지정했다.)

Jetson 입출력 시 고려 사항 등(2022/25 보충)


여기.에 기재된 바와 같이 듀얼 부팅 환경에서 Device Tree 업데이트를 사용하면 NVIDIA에서 제공하는 Jetson I/O와 같은 도구를 사용하는 것이 비교적 편리하므로 여기에 기재합니다.
SSD를 시작할 때 Jetson 입출력을 실행하면 SSD 측면의/etc/extlinux/extlinux입니다.conf에서 루트 파일 시스템을 지정하는 곳에서 이상하게 eMMC로 바뀌었는데 Jetson I/O를 그대로 다시 시작하면 혼란스러울 수 있습니다.
U-Boot은 SSD에서 시작하든 루트fs가 eMMC에서 시작되기 때문입니다.(이 부위는 아래 mmcblk0p1이다.)
extlinux.conf
APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 isolcpus=1-2
Save and reboot to reconfigure pins를 선택하는 것이 아니라 Jetson I/O에서 Save and exit without rebooting,/boot/extlinux/extlinux를 선택하십시오.conf의 내용을 확인하고 필요에 따라 편집한 후 시작하는 등 절차를 권장합니다.(구체적으로 mmcblk0p1을 nvme0n1p1로 수정합니다.)
그 원인 등
Jetson/board.결과적으로 모든py는 eMMC 측의 구역 정보를 은근히 볼 수 있다. 예를 들어 설치, 등이다. 그러나 더 이상 추적을 하지 않고 위에서 말한 조작을 통해 대응할 수 있다.

끝말


따라서 기본적으로 SSD에서 시작하거나 SSD에서 시작하지 않는 등 고장이 발생할 때 eMMC에서 시작하여 대응하여 SSD와 eMMC의 이중 시작 환경을 구축할 수 있다.
여러가지 골칫거리를 겪다가 가까스로 결승점에 도착한 뒤 회상하면서 기술하니 부족한 점이 있었을 것이다.생각나면 보충/수정하겠습니다.

좋은 웹페이지 즐겨찾기