2024年11月4日月曜日

Nvidia Jetson AGX OrinにRDPでリモートデスクトップ接続


背景

Jetson AGX OrinとはNvidiaが組み込み用に販売している計算機です。
RDPとはリモートデスクトップ接続に使う通信方式です。
RDP接続設定時に特有の不具合が発生して時間を取られたので、関連情報を記事に残ります。

使ったもの

Jetson AGX Orin


Nvidiaが販売しているubuntuが動く組み込み用の計算機です。
Jetson AGX Orin 64GB開発者キット

箱から出したときはjetpack5.2.1がインストールされていました。
sudo apt-cache show nvidia-jetpack
Package: nvidia-jetpack
Version: 5.1.2-b104
Architecture: arm64
Maintainer: NVIDIA Corporation
Installed-Size: 194
Depends: nvidia-jetpack-runtime (= 5.1.2-b104), nvidia-jetpack-dev (= 5.1.2-b104)
Homepage: http://developer.nvidia.com/jetson
Priority: standard
Section: metapackages
Filename: pool/main/n/nvidia-jetpack/nvidia-jetpack_5.1.2-b104_arm64.deb
Size: 29304
SHA256: fda2eed24747319ccd9fee9a8548c0e5dd52812363877ebe90e223b5a6e7e827
SHA1: 78c7d9e02490f96f8fbd5a091c8bef280b03ae84
MD5sum: 6be522b5542ab2af5dcf62837b34a5f0
Description: NVIDIA Jetpack Meta Package
Description-md5: ad1462289bdbc54909ae109d1d32c0a8

SDK Managerでjetpack6.1をインストールしたOrinでも動作確認しました。
sudo apt-cache show nvidia-jetpack
Package: nvidia-jetpack
Source: nvidia-jetpack (6.1)
Version: 6.1+b123
Architecture: arm64
Maintainer: NVIDIA Corporation
Installed-Size: 194
Depends: nvidia-jetpack-runtime (= 6.1+b123), nvidia-jetpack-dev (= 6.1+b123)
Homepage: http://developer.nvidia.com/jetson
Priority: standard
Section: metapackages
Filename: pool/main/n/nvidia-jetpack/nvidia-jetpack_6.1+b123_arm64.deb
Size: 29312
SHA256: b6475a6108aeabc5b16af7c102162b7c46c36361239fef6293535d05ee2c2929
SHA1: f0984a6272c8f3a70ae14cb2ca6716b8c1a09543
MD5sum: a167745e1d88a8d7597454c8003fa9a4
Description: NVIDIA Jetpack Meta Package
Description-md5: ad1462289bdbc54909ae109d1d32c0a8

RDPのHostになるPC

ubuntu22.04のPCからremminaを使ってRDPログインしました。

Orinの.xsessonrcの配列の定義をコメントアウト

この記事で最も言いたいことはこれです。
下記ようにremove_appsの配列定義の行をコメントアウトします。
.xsessionrc
                # remove_apps=("thunderbird" "rhythmbox" "libreoffice-writer")

不具合の内容と確認方法を共有します。
xrdp設定後に.xsession-errorsを監視しながらRDPの接続を試みると、下記のエラーが発生します。
Orin上で実行
tail -f ~/.xsession-errors
jetpack5.1.2(試したOrinの工場出荷状態)の場合
/etc/X11/Xsession: 83: /home/legmin/.xsessionrc: Syntax error: "(" unexpected (expecting "fi")
jetpack6.1の場合
/etc/X11/Xsession: 85: /home/legmin/.xsessionrc: Syntax error: "(" unexpected (expecting "fi")

上記のエラーで検索すると.xsessionrcが原因だと分かりました。

Xrdp fails to launch due to nvidias ~/.xsessionrc

これは.xsessionrcにshで処理できない配列の定義があるため発生しています。
そのため、冒頭でも紹介した下記のように該当する行をコメントアウトするとエラーが発生せずRDPでログインできます。
.xsessionrc
                # remove_apps=("thunderbird" "rhythmbox" "libreoffice-writer")

コメントアウトせずshでも処理可能な記述が下記のnvidiaの掲示板で提案されていますが、jetpack6.1では取り込まれていません。

Fix for .xsessionrc file for usage with xrdp (Gnome)

Orinにxrdpをインストール

RDPのサーバープログラムであるxrdpを入れるとOrinでRDPサーバーが動きます。
sudo apt udpate
sudo apt upgrade
sudo apt install xrdp

先程解説した.xsessionrcの編集を行えば、xrdpをインストールしたOrinにRDPでログイン可能になります。

画面接続時のユーザーをログアウト


何も設定していないと画面sessionは1つに制限されているため、自動ログインを有効にしているとRDPでのログインを試みてもデスクトップが表示されずに止まります。
画面を繋いでログアウト処理をするか、sshで繋いで下記のコマンドを実行してログアウトしてください。
画面接続でユーザーがログインしているOrinで実行
"DISPLAY=:0 gnome-session-quit --logout --no-prompt"

参考:
How can I logout from the GUI using CLI?

色関係の権限を開放


何も設定していないと下記の文言で色関係の権限をRDP接続の際に毎回要求されます。
Authentication is required to create a color managed device
カラープロファイルを作成するには認証が必要です
カラーマネジメントされたデバイスを作成するには認証が必要です

下記のファイルを作ると権限が開放されて要求が無くなります。
/etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes

参考:
Ubuntu 20.04 に xrdp を入れてリモートデスクトップできるようにする

RDPをGNOME sessionで実行


何も設定していないとランチャーやデスクトップのファイルなどが表示されないデスクトップ画面が表示されます。
画面左上の「Activities」を押せばプログラム検索画面が出るので必要な機能を呼び出せはするのですが、画面を繋げてログインしたときと表示が異なるのは嬉しくありません。

/etc/xrdp/startwm.shの冒頭に下記の設定を記述してRDPでログインすると、ランチャーやデスクトップのファイルが表示されたデスクトップ画面が表示されます。
/etc/xrdp/startwm.sh の冒頭
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME

参考:
Ubuntu 20.04 に xrdp を入れてリモートデスクトップできるようにする

おわり

xrdpをインストールしただけではログインできなかったので戸惑いましたが、不具合が発生している.xsessionの行をコメントアウトしたらログインできると分かりました。
また、権限やデスクトップ動作の設定を施したら画面でログインしたときと同様のデスクトップを表示できました。

参考

.xsession-errorsの見方を把握した記事です。
ubuntu22.04 LTSへxrdpでログイン出来なかったけど解決した話

.xsessionrcが原因と分かった掲示板です。
Xrdp fails to launch due to nvidias ~/.xsessionrc

.xsessionrcの不具合をコメントアウトではなく書き換えで解決している投稿がある掲示板です。
Fix for .xsessionrc file for usage with xrdp (Gnome)

画面接続でのログインをログアウトさせるコマンドを把握した掲示板の投稿です。
How can I logout from the GUI using CLI?

色に関する権限やデスクトップのランチャー有効化設定を把握した記事です。
Ubuntu 20.04 に xrdp を入れてリモートデスクトップできるようにする

0 件のコメント :