§2024-12-01
[Jetson Linux](https://developer.nvidia.com/embedded/jetson-linux-r3640)
NVIDIA® Jetson™ Linux Driver Package is the board support package for Jetson. It includes Linux Kernel, UEFI bootloader, NVIDIA drivers, flashing utilities, sample filesystem based on Ubuntu, and more for the Jetson platform.
VIDIA Jetson Linux 36.4
Jetson Linux 36.4 is a Product quality release which supports all Jetson AGX Orin, Jetson Orin NX, and Jetson Orin Nano Production Modules and Jetson AGX Orin Developer Kit and Jetson Orin Nano Developer Kit. It includes Linux Kernel 5.15, an Ubuntu 22.04 based root file system, a UEFI based bootloader, and OP-TEE as Trusted Execution Environment.
See the online Jetson Linux Developer Guide for detailed documentation.
¶Host Machine, 192.168.2.131
- x86_64, ubuntu 20.04,
- git clone
alexlai@api-server:~/build$ git clone https://github.com/jetsonhacks/bootFromExternalStorage.git
$ cd bootFromExternalStorage/
alexlai@api-server:~/build/bootFromExternalStorage$ ls -l
total 32
-rwxrwxr-x 1 alexlai alexlai 6366 12月 1 07:37 flash_jetson_external_storage.sh
-rwxrwxr-x 1 alexlai alexlai 2617 12月 1 07:37 get_jetson_files.sh
-rwxrwxr-x 1 alexlai alexlai 1812 12月 1 07:37 install_dependencies.sh
-rwxrwxr-x 1 alexlai alexlai 1101 12月 1 07:37 install_jetson_default_packages.sh
-rw-rw-r-- 1 alexlai alexlai 1071 12月 1 07:37 LICENSE
-rw-rw-r-- 1 alexlai alexlai 6283 12月 1 07:37 README.md
Jetson Linux 36.4 is part of JetPack 6.1 and adds the following highlights. (Please refer to release notes for additional details)
alexlai@api-server:~/build/bootFromExternalStorage-r36.4$ diff flash_jetson_external_storage.sh flash_jetson_external_storage.sh.backup
5c5
< JETSON_FOLDER=R36.4.0
---
> JETSON_FOLDER=R35.4.1
-
On the host machine, follow this sequence:
get_jetson_files.sh - Downloads the Jetson BSP and sample rootfs, copies NVIDA user space libraries to rootfs. Also installs dependencies needed to flash the Jetson.
- version Jetson_Linux_R35.4.1_aarch64.tbz2 [following]
alexlai@api-server:~/build$ pwd
/home/alexlai/build
$ ./bootFromExternalStorage/get_jetson_files.sh
Ready to download!
--2024-12-01 08:30:47-- https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v4.1/release/jetson_linux_r35.4.1_aarch64.tbz2
Resolving developer.nvidia.com (developer.nvidia.com)... 152.199.39.144
Connecting to developer.nvidia.com (developer.nvidia.com)|152.199.39.144|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://developer.download.nvidia.com/embedded/L4T/r35_Release_v4.1/release/Jetson_Linux_R35.4.1_aarch64.tbz2 [following]
--2024-12-01 08:30:48-- https://developer.download.nvidia.com/embedded/L4T/r35_Release_v4.1/release/Jetson_Linux_R35.4.1_aarch64.tbz2
Resolving developer.download.nvidia.com (developer.download.nvidia.com)... 152.199.39.144
Connecting to developer.download.nvidia.com (developer.download.nvidia.com)|152.199.39.144|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 747069329 (712M) [application/octet-stream]
Saving to: ‘jetson_linux_r35.4.1_aarch64.tbz2’
....
https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v4.1/release/tegra_linux_sample-root-filesystem_r35.4.1_aarch64.tbz2
tegra_linux_sample-root-filesystem_r35.4.1_aarch64.t 100%[===================================================================================================================>] 1.40G 11.1MB/s in 2m 9s
2024-12-01 08:34:01 (11.1 MB/s) - ‘tegra_linux_sample-root-filesystem_r35.4.1_aarch64.tbz2’ saved [1505929477/1505929477]
[sudo] password for alexlai:
...
sing rootfs directory of: /home/alexlai/build/R35.4.1/Linux_for_Tegra/rootfs
Installing extlinux.conf into /boot/extlinux in target rootfs
/home/alexlai/build/R35.4.1/Linux_for_Tegra/nv_tegra/nv-apply-debs.sh
Root file system directory is /home/alexlai/build/R35.4.1/Linux_for_Tegra/rootfs
Copying public debian packages to rootfs
inutils is already the newest version (2.34-6ubuntu1.9).
cpio is already the newest version (2.13+dfsg-2ubuntu0.4).
libxml2-utils is already the newest version (2.9.10+dfsg-5ubuntu0.20.04.7).
nfs-kernel-server is already the newest version (1:1.3.4-2.5ubuntu3.7).
openssl is already the newest version (1.1.1f-1ubuntu2.23).
python3-yaml is already the newest version (5.3.1-1ubuntu0.1).
udev is already the newest version (245.4-4ubuntu3.24).
uuid-runtime is already the newest version (2.34-0.1ubuntu9.6).
qemu-user-static is already the newest version (1:4.2-3ubuntu6.30).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'python-is-python2' instead of 'python'
python-is-python2 is already the newest version (2.7.17-4).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
lz4 is already the newest version (1.9.2-2ubuntu0.20.04.1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
alexlai@api-server:~/build$ ls R35.4.1/
jetson_linux_r35.4.1_aarch64.tbz2 Linux_for_Tegra tegra_linux_sample-root-filesystem_r35.4.1_aarch64.tbz2
- put Jetson Orin Nano into Recovery Mode
- check
alexlai@api-server:~/build/R35.4.1/Linux_for_Tegra/tools$ lsusb <----
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
Bus 003 Device 003: ID 1c4f:0048 SiGma Micro
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 003 Device 005: ID 0955:7523 NVIDIA Corp. APX <--- make sure you see this
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
take Jetson Orin Nano out of recovery mode
- flash
alexlai@api-server:~/build/R35.4.1$ sudo find -name "*flash*.sh"
[sudo] password for alexlai:
./Linux_for_Tegra/nvautoflash.sh
./Linux_for_Tegra/flash.sh
./Linux_for_Tegra/nvsdkmanager_flash.sh
./Linux_for_Tegra/tools/l4t_flash_prerequisites.sh
./Linux_for_Tegra/tools/kernel_flash/l4t_create_images_for_kernel_flash.sh
./Linux_for_Tegra/tools/kernel_flash/l4t_initrd_flash_internal.sh
./Linux_for_Tegra/tools/kernel_flash/initrd_flash/nv_flash_from_network.sh
./Linux_for_Tegra/tools/kernel_flash/l4t_flash_from_kernel.sh
./Linux_for_Tegra/tools/kernel_flash/l4t_initrd_flash.sh
- run
alexlai@api-server:~/build/bootFromExternalStorage$ ./flash_jetson_external_storage.sh
alexlai@api-server:~/build/bootFromExternalStorage$ ./flash_jetson_external_storage.sh
Could not find the Linux_for_Tegra folder.
Please download the Jetson sources and ensure they are in R35.4.1/Linux_for_Tegra
alexlai@api-server:~/build/bootFromExternalStorage$ mv ../R35.4.1/ ./
alexlai@api-server:~/build/bootFromExternalStorage$ ./flash_jetson_external_storage.sh
sudo password:
....
copying recdtbfile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/kernel/dtb/tegra234-p3767-0003-p3768-0000-a0.dtb.rec)... done.
20+0 records in
20+0 records out
20 bytes copied, 9.5878e-05 s, 209 kB/s
Existing sosfile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/mb1_t234_prod.bin) reused.
Existing tegraboot(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/mb2_t234.bin) reused.
Existing cpu_bootloader(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/mb2_t234.bin) reused.
Existing mb2blfile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/mb2_t234.bin) reused.
Existing xusbfile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/xusb_t234_prod.bin) reused.
Existing dcefile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/display-t234-dce.bin) reused.
Existing nvdecfile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/nvdec_t234_prod.fw) reused.
Existing psc_rf(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/psc_rf_t234_prod.bin) reused.
Existing mb2_rf(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/mb2rf_t234.bin) reused.
Existing mb1file(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/mb1_t234_prod.bin) reused.
Existing bpffile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/bpmp_t234-TE950M-A1_prod.bin) reused.
copying bpfdtbfile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/t186ref/tegra234-bpmp-3767-0003-3509-a02.dtb)... done.
Existing scefile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/camera-rtcpu-sce.img) reused.
Existing camerafw(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/camera-rtcpu-t234-rce.img) reused.
Existing apefile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/adsp-fw.bin) reused.
Existing spefile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/spe_t234.bin) reused.
Existing wb0boot(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/sc7_t234_prod.bin) reused.
Existing tosfile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/tos-optee_t234.img) reused.
Existing eksfile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/bootloader/eks_t234.img) reused.
copying dtbfile(/home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/kernel/dtb/tegra234-p3767-0003-p3768-0000-a0.dtb)... done.
Copying nv_boot_control.conf to rootfs
populating kernel to rootfs... done.
populating initrd to rootfs... done.
populating kernel_tegra234-p3767-0003-p3768-0000-a0.dtb to rootfs... done.
Making system.img...
Setting "FDT /boot/dtb/kernel_tegra234-p3767-0003-p3768-0000-a0.dtb" successfully in the extlinux.conf...done.
populating rootfs from /home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra/rootfs ...
...
home/alexlai/build/bootFromExternalStorage/R35.4.1/Linux_for_Tegra
***************************************
* *
* Step 3: Start the flashing process *
* *
***************************************
Waiting for target to boot-up... <--- you will see the fan is moving
....
Copied 16896 bytes from /mnt/internal/gpt_secondary_3_0.bin to address 0x03ffbe00 in flash
[ 243]: l4t_flash_from_kernel: Successfully flash the qspi
[ 243]: l4t_flash_from_kernel: Flashing success
[ 243]: l4t_flash_from_kernel: The device size indicated in the partition layout xml is smaller than the actual size. This utility will try to fix the GPT.
Flash is successful
Reboot device
Cleaning up...
Log is saved to Linux_for_Tegra/initrdlog/flash_3-2_0_20241201-092357.log
Writing gpt_secondary_3_0.bin (parittion: secondary_gpt) into /dev/mtd0
Sha1 checksum matched for /mnt/internal/gpt_secondary_3_0.bin
Writing /mnt/internal/gpt_secondary_3_0.bin (16896 bytes) into /dev/mtd0:67091968
Copied 16896 bytes from /mnt/internal/gpt_secondary_3_0.bin to address 0x03ffbe00 in flash
[ 238]: l4t_flash_from_kernel: Successfully flash the qspi
[ 238]: l4t_flash_from_kernel: Flashing success
[ 238]: l4t_flash_from_kernel: The device size indicated in the partition layout xml is smaller than the actual size. This utility will try to fix the GPT.
Flash is successful
Reboot device
Cleaning up...
Log is saved to Linux_for_Tegra/initrdlog/flash_3-1_0_20241201-141357.log
- reboot from Jetson
- went through the setup just as ubuntun installation!
- install chromium chromium browser ---> takes a while--> when finished click close to go to next steps