# Flash Jetson by script
### 1. Download the files (xxxx)
### 2. Untar and get the two files (I copy the two files separately in other folder) /Projects/jetson/customer_release/generic_release_aarch64/jetson/Linux_for_Tegra

### 2. Untar and prepare the host computer (Example Jetson AGX Orin)
```bash
mkdir -p Projects/jetson
tar xf Jetson_Linux_R39.1.0_aarch64.tbz2
sudo tar xpf Tegra_Linux_Sample-Root-Filesystem_R39.1.0_aarch64.tbz2 -C Linux_for_Tegra/rootfs/
cd Linux_for_Tegra/
sudo ./tools/l4t_flash_prerequisites.sh
```
#### Result


### 3. Apply drivers for AGX Thor or AGX Orin
#### Thor:
```bash
sudo ./apply_binaries.sh --openrm
```
#### For Jetson Orin devices:
```bash
sudo ./apply_binaries.sh
```
### 4. Flash
#### Jetson AGX Thor Developer Kit (NVMe):
```bash
sudo ./l4t_initrd_flash.sh jetson-agx-thor-devkit internal
```
#### Jetson Orin Nano Developer Kit with Super Configuration (NVMe):
```bash
sudo ./l4t_initrd_flash.sh jetson-orin-nano-devkit-super internal
```
#### Jetson AGX Orin Developer Kit (NVMe):
```bash
sudo ./l4t_initrd_flash.sh --external-device nvme0n1p1 \
-c tools/kernel_flash/flash_l4t_t234_nvme.xml \
jetson-agx-orin-devkit external
```
--------------------
# Boot first time
### Install CUDA
```bash
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/sbsa/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-2 cudnn tensorrt python3-dev curl
```
Add PATH to .bashrc
```bash
sudo gedit ~/.bashrc
```
```bash
export PATH=/usr/local/cuda-13.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-13.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
```
```bash
source ~/.bashrc
```
### Install Docker
```bash
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
```bash
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list \
&& \
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
```
```bash
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
sudo nvidia-ctk runtime configure --runtime=containerd
sudo systemctl restart containerd
sudo nvidia-ctk runtime configure --runtime=crio
sudo systemctl restart crio
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
```
```bash
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
```
### Add permission user
```bash
sudo chmod 666 /var/run/docker.sock
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
```
### Modify to compile dockers with Nvidia
If you're going to be building containers, you need to set Docker's default-runtime to nvidia, so that the NVCC compiler and GPU are available during docker build operations. Add "default-runtime": "nvidia" to your **/etc/docker/daemon.json** configuration file before attempting to build the containers:
```bash
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia"
}
```
```bash
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
sudo nvidia-ctk runtime configure --runtime=containerd
sudo systemctl restart containerd
sudo nvidia-ctk runtime configure --runtime=crio
sudo systemctl restart crio
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
```
# Swap
```bash
sudo systemctl disable nvzramconfig
sudo fallocate -l 300G /mnt/300GB.swap
sudo mkswap /mnt/300GB.swap
sudo swapon /mnt/300GB.swap
```