# Upgrade Jetson AGX Orin to Ubuntu 24.04
# *** READ BEFORE UPGRADE ***
### Official Support is coming H1 2026
***This is under testing. I'm only playing with the Hardware. You can find issues maybe with GPU.
Kernel from 5.15 and to 6.12 it is compatible. Maybe I show how to compile them.***
***Canonical now is partner from Nvidia, so they distribute packages for tegra and SBSA.
MANDATORY READ --->*** https://discourse.ubuntu.com/t/changes-to-ubuntu-for-tegra-kernel-metapackages-on-jetson-and-igx/48807
### Nvidia distribute packages for cuda-tegra ubuntu 24.04
https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/arm64/
#### Exists dristributions of drivers but are only compatible with Jetson Thor
Download all files (https://launchpad.net/ubuntu/noble/+source/linux-nvidia-tegra):
# *** TUTORIAL AGX ORIN ***
Check and it should show on the result "Prompt=never": (This block distro ugprades)
```bash
grep 'lts' /etc/update-manager/release-upgrades
cat /etc/update-manager/release-upgrades
```
#### 1. Ensure the Prompt line in /etc/update-manager/release-upgrades is set to ‘lts‘ using the “grep” or “cat”

### 2. Upgrade Ubuntu with everything to Yes but *not reboot*
```bash
sudo apt update
sudo apt full-upgrade
sudo do-release-upgrade -d
sudo apt full-upgrade
sudo apt install --fix-broken
```
### 3. Reboot
### 4. Add Ubuntu 24.04 packages
```bash
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/arm64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt-get install -y nvidia-container-toolkit
```
### 5. MANDATORY: Add again Jetpack 6 URLs
```bash
echo "deb https://repo.download.nvidia.com/jetson/common r36.4 main" | sudo tee -a /etc/apt/sources.list.d/nvidia-l4t-apt-source.list
echo "deb https://repo.download.nvidia.com/jetson/t234 r36.4 main" | sudo tee -a /etc/apt/sources.list.d/nvidia-l4t-apt-source.list
sudo apt update
sudo apt install --reinstall nvidia-l4t-core
sudo apt install --reinstall \
nvidia-l4t-bootloader \
nvidia-l4t-camera \
nvidia-l4t-configs \
nvidia-l4t-cuda \
nvidia-l4t-cuda-utils \
nvidia-l4t-firmware \
nvidia-l4t-3d-core \
nvidia-l4t-gbm \
nvidia-l4t-display-kernel
```
# 6. FIX DOCKER to use JETSON-CONTAINERS
```bash
sudo apt update
sudo apt install -y iptables iptables-legacy
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
```
# 7. Install jtop
```bash
sudo python3 -m pip install -U jetson-stats --break-system-packages
```
# *** THOR PACKAGES ***
**Jetpack 7 URLs:**
```bash
echo "deb https://repo.download.nvidia.com/jetson/common r38.1 main" | sudo tee -a /etc/apt/sources.list.d/nvidia-l4t-apt-source.list
echo "deb https://repo.download.nvidia.com/jetson/t234 r38.1 main" | sudo tee -a /etc/apt/sources.list.d/nvidia-l4t-apt-source.list
```
### Download
```bash
wget https://us.ports.ubuntu.com/pool/main/l/linux-nvidia-tegra/linux-buildinfo-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
wget https://us.ports.ubuntu.com/pool/main/l/linux-nvidia-tegra/linux-headers-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
wget https://us.ports.ubuntu.com/ubuntu-ports/pool/main/l/linux-signed-nvidia-tegra/linux-image-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
wget https://us.ports.ubuntu.com/pool/main/l/linux-nvidia-tegra/linux-modules-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
wget https://us.ports.ubuntu.com/pool/main/l/linux-nvidia-tegra/linux-modules-extra-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
wget https://us.ports.ubuntu.com/pool/main/l/linux-nvidia-tegra/linux-nvidia-tegra-headers-6.8.0-1004_6.8.0-1004.4_all.deb
wget https://us.ports.ubuntu.com/pool/main/l/linux-nvidia-tegra/linux-nvidia-tegra-tools-6.8.0-1004_6.8.0-1004.4_arm64.deb
wget https://us.ports.ubuntu.com/pool/main/l/linux-nvidia-tegra/linux-tools-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
wget https://us.ports.ubuntu.com/ubuntu-ports/pool/main/l/linux-nvidia-tegra-modules-signed/linux-modules-tegra-oot-jetson-devel-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
wget https://us.ports.ubuntu.com/ubuntu-ports/pool/main/l/linux-nvidia-tegra-modules-signed/linux-modules-tegra-igpu-jetson-devel-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
wget https://us.ports.ubuntu.com/ubuntu-ports/pool/main/l/linux-nvidia-tegra-modules-signed/linux-modules-tegra-igpu-jetson-devel-nvidia-tegra_6.8.0-1004.4_arm64.deb
wget https://us.ports.ubuntu.com/ubuntu-ports/pool/main/l/linux-nvidia-tegra-modules-signed/linux-nvidia-tegra-tegra-igpu-jetson-devel-defaults_6.8.0-1004.4_all.deb
```
List
```bash
linux-buildinfo-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
linux-headers-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
linux-image-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
linux-modules-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
linux-modules-extra-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
linux-nvidia-tegra-headers-6.8.0-1004_6.8.0-1004.4_all.deb
linux-nvidia-tegra-tools-6.8.0-1004_6.8.0-1004.4_arm64.deb
linux-tools-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
linux-modules-tegra-oot-jetson-devel-6.8.0-1004-nvidia-tegra_6.8.0-1004.4_arm64.deb
linux-modules-tegra-igpu-jetson-devel-nvidia-tegra_6.8.0-1004.4_arm64.deb
linux-nvidia-tegra-tegra-igpu-jetson-devel-defaults_6.8.0-1004.4_all.deb
```
# Decompress Image
```bash
sudo zcat /boot/vmlinuz-6.8.0-1004-nvidia-tegra | sudo tee /boot/Image-6.8.0-1004-nvidia-tegra > /dev/null
ls -lh /boot/Image-6.8.0-1004-nvidia-tegra
```
# Change boot menu
```bash
sudo cp /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.bak
sudo nano /boot/extlinux/extlinux.conf
```
```
TIMEOUT 30
DEFAULT newkernel
MENU TITLE L4T boot options
LABEL newkernel
MENU LABEL Ubuntu 24.04 (Kernel 6.8.0-1004-tegra)
LINUX /boot/Image-6.8.0-1004-nvidia-tegra
INITRD /boot/initrd.img-6.8.0-1004-nvidia-tegra
APPEND ${cbootargs} root=/dev/nvme0n1p1 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 nospectre_bhb video=efifb:off console=tty0
LABEL primary
MENU LABEL Ubuntu 24.04 (Kernel 5.15.148-tegra)
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} root=/dev/nvme0n1p1 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 nospectre_bhb video=efifb:off console=tty0
# 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}
```