Jetson Orin NanoでPREEMPT_RTを有効にする手順

に公開

Jetson Orin NanoでPREEMPT_RTを有効にする手順

前提

  • Jetson Orin Nano開発者キット
  • JetPack 6.2(r36.4)をインストール済み
  • SDK Manager を使用してJetson Orin Nanoをセットアップ済み
  • SDK ManagerでOSのインストール先としてNVMeを選択していること
  • Ubuntu 22.04が起動していること

RT カーネル導入の手順

参考URL: https://docs.nvidia.com/jetson/archives/r36.4/DeveloperGuide/SD/Kernel/KernelCustomization.html

  1. APT ソースに RT 専用リポジトリを追加
sudo vim /etc/apt/sources.list.d/nvidia-l4t-apt-source.list
# 末尾に 1 行追記(例:JetPack 6.2 = r36.4)
deb https://repo.download.nvidia.com/jetson/rt-kernel r36.4 main
  1. APT パッケージリストを更新
sudo apt update
  1. パッケージをインストール
sudo apt install \
nvidia-l4t-rt-kernel \
nvidia-l4t-rt-kernel-headers \
nvidia-l4t-rt-kernel-oot-modules \
nvidia-l4t-display-rt-kernel

注意
ここでこのまま再起動すると、正常に起動しない場合があるので、次の手順を実行するまで再起動しないことをお勧めします。

  1. 現在のカーネルを確認
uname -r

ここで表示されるのは、5.15.148-tegraになっている想定で進めます。

  1. インストールされたRT用のドライバを確認
ls /lib/modules/

ここで5.15.148-tegraと5.15.148-rt-tegraの2つのディレクトリがあることを確認します。

  1. RT用initrdを作成する
sudo update-initramfs -c -k 5.15.148-rt-tegra

生成されたファイルを確認します。

ls -lh /boot/initrd-5.15.148-rt-tegra
  1. カーネルの設定を変更
    まずは、extlinux.confをバックアップします。
sudo cp /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.bak

次に、extlinux.confを編集します。

sudo vim /boot/extlinux/extlinux.conf

LABEL real-timeのセクションのINITRDの行を以下のように変更します。

INITRD /boot/initrd.img-5.15.148-rt-tegra
  1. 再起動
sudo reboot
  1. 再起動後、RTカーネルが有効になっていることを確認
uname -r

ここで表示されるのは、5.15.148-rt-tegraになっていることを確認します。

以上で、Jetson Orin NanoでPREEMPT_RTを有効にする手順は完了です。

再起動時に黒画面でカーソルだけ表示される場合

ブートに失敗している可能性が高いです。以下の手順で復旧できます:

  1. 再起動直後の画面でESCキーを押して、UEFIメニューを表示させます。
  2. 次の順番で進みます:
    • Device Manger
    • NVIDIA Configuration
    • L4T Configuration
  3. OS chain A statusがUnbootableになっている場合は、Normalに変更します。
  4. Saveして再起動します。
  5. ブートメニューで選択肢が表示されるので:
    • 0キー:通常カーネル(primary)で起動
    • 1キー:リアルタイムカーネル(real-time)で起動
  6. 0キーを押して、通常カーネルで起動します。

再起動後、通常のカーネルで起動できることを確認します。

uname -r

ここで表示されるのは、5.15.148-tegraになっていることを確認します。

Discussion