h-yuusuke
2022年1月25日 14時01分
お世話になっております。
掲題の件に関しまして、下記質問がございます。
製品マニュアル「9.1.9.2. X Window System を扱う」の図9.81および図9.82に記載されている手順を実施し、Armadillo-IOT G4に接続したディスプレイに添付画像ののものが表示されるところまでは確認できました。
次の段階として、Armadillo-IOT G4起動時にX Window Systemを自動起動させることを考えております。図9.81の起動コマンドをもとに/etc/atmark/containers/に.confファイルを作成したのですが、G4起動後にX Windowコンテナのステータスを確認すると「Exited」になっており、正常に起動できておりません。
X Window Systemを自動起動させるにはどのようにしたらいいでしょうか?
ファイル | ファイルの説明 |
---|---|
X Window System画面.png |
コメント
at_dominique.m…
h-yuusukeさん、
お世話になっています。 アットマークテクノのマルティネです。
/etc/atmark/containersのconfファイルの具体的な内容をここで送ってもらえませんでしょうか?
マニュアルの例では /bin/bash
を podman run -ti
で実行しますが、 podman_start
コマンドで実行されるコンテナに-tiを渡さないために引数なしの /bin/bash
コマンドはコンテナのコマンドとして向いてません。
set_command
で適切なコマンドを設定する必要があります(例えばXの起動コマンド)
Xの場合、デフォルトのコンテナに含まれてませんので、一同コンテナに入れてコンテナをcommitしてから、 set_command X vt7 -retro
で起動できると思います。
よろしくお願いします。
h-yuusuke
入江様、マルティネ様
ご返信ありがとうございます。
/etc/atmark/containersに作成した.confファイルは添付ファイルの"x_window.conf"となります。
また、podman logs <コンテナ名>を実行した時の出力内容は、添付ファイルの"podman_logs.log"となります。
よろしくおねがいいたします。
ファイル | ファイルの説明 |
---|---|
podman_logs.log | |
x_window.conf |
at_dominique.m…
h-yuusukeさん、
> また、podman logs <コンテナ名>を実行した時の出力内容は、添付ファイルの"podman_logs.log"となります。
このログファイルは手動でapt install xorg/X vt7 -retro を動かしていた時のログで、自動的に動いたコンテナのログではありません。
自動的に起動するコンテナはconfファイルの名前で表示されますので、ここでは podman logs x_window
でもらえるはずです。
起動後で試すために podman_start x_window
で一つのコンテナの起動もできます。
また、コンフィグファイルで localhost/at-debian-image:latest
を使用していますが、アットマークテクノが提供しているイメージに xorg が含まれてませんので、一回イメージに入れて保存する必要があります。 8fffabfbc92a
のイメージにインストールしましたので、例えば podman commit 8fffabfbc92a x_window:latest
でコンテナイメージを固めてコンフィグファイルに localhost/x_window:latest
を使ってください。
それでも起動できなかったら、 podman logs x_window
の出力をお願いします。
よろしくお願いします。
h-yuusuke
マルティネ様
返信ありがとうございます。
"podman commit"でxorgがインストールされたコンテナイメージを作り、コンフィグファイルに "localhost/x_window:latest"を使いましたが、起動できませんでした。
以下に実行したコンフィグファイルの内容と"podman logs x_window"の内容を記載します。
●コンフィグファイル
image=localhost/x_window:latest devices="/dev/tty7 /dev/fb0 /dev/input" volumes="/run/udev:/run/udev" append_args --env=LD_LIBRARY_PATH=/opt/firmware/usr/lib/aarch64-linux-gnu append_args --cap-add=SYS_ADMIN set_command X vt7 -retro
●”podman logs x_window"の内容
(EE) Fatal server error: (EE) Cannot move old log file "/var/log/Xorg.0.log" to "/var/log/Xorg.0.log.old" (EE) (EE) Please consult the The X.Org Foundation support at http://wiki.x.org for help. (EE)
解決方法がありましたら、ご教授願います。
at_dominique.m…
h-yuusukeさん、
> (EE) Cannot move old log file "/var/log/Xorg.0.log" to "/var/log/Xorg.0.log.old"
このエラーはコンテナがreadonlyでデフォルトすることで、X の起動でエラーが発生して起動できませんでしたね。
コンフィグファイルにreadonly=noを追加して、もう一度試してもらえますか?
# この設定でかなり多くのプログラムが失敗するので、明後日のアップデートからデフォルトが無効になります。
他のデフォルトは大丈夫だと思いますが、まだ起動できなかったらお手数ですがまたログをお願いします。
よろしくお願いします
h-yuusuke
h-yuusuke
X Window Systemの自動起動に関して、もう1件質問があります。
現状、添付ファイルの画像の通り、X Window画面がディスプレイ全体に表示されておりません。
X Windowの解像度を変更する場合、/etc/X11/xorg.conf を修正しますが、Armadillo-IOT G4のコンテナでも同様の対応が必要でしょうか?
ファイル | ファイルの説明 |
---|---|
X Window画面.png |
at_dominique.m…
h-yuusuke様、
お世話になっております、
マルティネです。
> 現状、添付ファイルの画像の通り、X Window画面がディスプレイ全体に表示されておりません。
> X Windowの解像度を変更する場合、/etc/X11/xorg.conf を修正しますが、Armadillo-IOT G4のコンテナでも同様の対応が必要でしょうか?
そうですね、こちらも再現できました。
Armadillo iot G4 のコンテナにxorgをpreinstallしていませんので、コンフィグファイルだけを入れても不自然だと思います。
マニュアルにXの場合にも解像度の設定方法を追加します。
今更ですが、Xを直接に走らせる場合はrenderingにGPUを使ってません(NXPがドライバを作らなかった)ので、Xのアプリケーションでもweston+Xwaylandを使った方がいいかもしれません。firefoxが遅いと感じていたら試してみて下さい。
使い方としてはXとほとんど同じですので、そちらのドキュメンテーションもマニュアルに足しておきます。
(xwaylandのパッケージをコンテナにインストールして、weston を起動すれば/tmp/.X11-unixの共有で使えます)
よろしくお願いします
h-yuusuke
マルティネ様
返信ありがとうございます。
weston+XwaylandとGUIアプリの連携について下記の質問がございます。
教えて頂いた内容をもとに、at-debian-imageをベースにxwaylandパッケージをインストールした"localhost/xwayland:latest"という名前のコンテナイメージを作成し、下記のコンフィグファイルで起動させて、ディスプレイにweston+xwaylandの画面が表示されることを確認できました。
image=localhost/xwayland:latest readonly=no devices="/dev/tty1 /dev/fb0 /dev/input /dev/dri /dev/galcore" volumes="/run/udev:/run/udev /opt/firmware:/opt/firmware" volumes="$volumes /tmp/.X11-unix:/tmp/.X11-unix" append_args --env=LD_LIBRARY_PATH=/opt/firmware/usr/lib/aarch64-linux-gnu append_args --cap-add=SYS_TTY_CONFIG append_args --cap-add=SYS_ADMIN set_command weston --tty 1
その後、下記のコンフィグファイルでfirefoxを動かすコンテナを起動させているのですが、firefoxブラウザ画面が表示されません。
("firefox_alp:latest"はalpine linuxベースでfirefoxをインストールいたコンテナイメージです。)
image=localhost/firefox_alp:latest readonly=no volumes="/var/app/volumes/work:/var/app/volumes/work" volumes="$volumes /tmp/.X11-unix:/tmp/.X11-unix" append_args --env="DISPLAY=:0" set_command firefox
何かコンフィグファイルの設定として、足りていないものがあるのでしょうか?
at_dominique.m…
h-yuusuke様、
お世話になっています。
マルティネです。
> 何かコンフィグファイルの設定として、足りていないものがあるのでしょうか?
申し訳ありません、本日画面がないため最後までこちらで最後まで確認できません。明日もう一度確認します。
xwaylandのコンテナは私のコンテナの設定と少し違いますが、westonが無事に起動したらそちらのコンフィグレーションでも問題ないと思います。
参考までに、私のコンフィグファイルは以下のようです
image=localhost/xwayland:latest readonly=no devices="/dev/tty1 /dev/input /dev/dri /dev/galcore" volumes="/opt/firmware:/opt/firmware:ro /run/udev:/run/udev:ro" volumes="$volumes /tmp/xdg_runtime:/run/xdg_runtime /tmp/.X11-unix:/tmp/.X11-unix" append_args --env=XDG_RUNTIME_DIR=/run/xdg_runtime append_args --env=LD_LIBRARY_PATH=/opt/firmware/usr/lib/aarch64-linux-gnu append_args --cap-add=SYS_TTY_CONFIG set_command weston --tty 1
# 大きい違いは:/dev/fb0とCAP_SYS_ADMINを渡さない、XDG_RUNTIME_DIR変数を設定する
# /tmp/xdg_runtimeのボリュームはwaylandのクライアントがない限り不要ですし、:roのタグも問題にならないはずです
再現できるまで、とりあえず「podman logs firefox」と「podman logs xwayland」のログ出力を送っていただけますでしょうか?
よろしくお願いします
h-yuusuke
マルティネ様
返信ありがとうございます。
「podman logs xwayland」のログ出力は下記の通りです。
「podman logs firefox」の方はログ出力はありませんでした。
# podman logs xwayland Date: 1970-01-01 UTC [00:00:13.600] weston 9.0.0 https://wayland.freedesktop.org Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/ Build: lf-5.10.35-2.0.0-rc2-0-g230e9bc+ [00:00:13.610] Command line: weston --tty 1 [00:00:13.611] OS: Linux, 5.10.52-1-at, #2-Alpine SMP PREEMPT Thu Dec 2 00:04:57 UTC 2021, aarch64 [00:00:13.611] warning: XDG_RUNTIME_DIR "/run/xdg_home" is not configured correctly. Unix access mode must be 0700 (current mode is 755), and must be owned by the user (current owner is UID 0). Refer to your distribution on how to get it, or http://www.freedesktop.org/wiki/Specifications/basedir-spec on how to implement it. [00:00:13.612] Using config file '/etc/xdg/weston/weston.ini' [00:00:13.614] Output repaint window is 16 ms maximum. [00:00:13.617] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/drm-backend.so' [00:00:13.686] initializing drm backend [00:00:13.687] logind: not running in a systemd session [00:00:13.687] logind: cannot setup systemd-logind helper (-2), using legacy fallback [00:00:13.691] using /dev/dri/card1 [00:00:13.691] DRM: supports atomic modesetting [00:00:13.691] DRM: does not support GBM modifiers [00:00:13.691] DRM: supports picture aspect ratio [00:00:13.700] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/g2d-renderer.so' [00:00:13.811] event2 - gpio-keys: is tagged by udev as: Keyboard [00:00:13.820] event2 - gpio-keys: device is a keyboard [00:00:13.836] event0 - PixArt USB Optical Mouse: is tagged by udev as: Mouse [00:00:13.838] event0 - PixArt USB Optical Mouse: device is a pointer [00:00:13.842] event1 - audio-hdmi HDMI Jack: is tagged by udev as: Switch [00:00:13.888] event1 - not using input device '/dev/input/event1' [00:00:13.919] libinput: configuring device "gpio-keys". [00:00:13.920] libinput: configuring device "PixArt USB Optical Mouse". [00:00:13.920] DRM: head 'LVDS-1' found, connector 39 is connected, EDID make 'unknown', model 'unknown', serial 'unknown' [00:00:14.030] DRM: head 'HDMI-A-1' found, connector 40 is connected, EDID make 'DEL', model 'DELL P2417H', serial 'PV85Y67C1FFB' [00:00:14.031] Registered plugin API 'weston_drm_output_api_v1' of size 24 [00:00:14.038] Create File /run/xdg_home/use-g2d-renderer [00:00:14.039] Output HDMI-A-1 (crtc 36) video modes: 1920x1080@60.0, preferred, current, 148.5 MHz 1920x1080@60.0 16:9, 148.5 MHz 1920x1080@59.9 16:9, 148.4 MHz 1920x1080@50.0 16:9, 148.5 MHz 1600x900@60.0, 108.0 MHz 1280x1024@75.0, 135.0 MHz 1280x1024@60.0, 108.0 MHz 1152x864@75.0, 108.0 MHz 1280x720@60.0, 74.2 MHz 1280x720@60.0 16:9, 74.2 MHz 1280x720@59.9 16:9, 74.2 MHz 1280x720@50.0 16:9, 74.2 MHz 800x600@60.3, 40.0 MHz 720x576@50.0 16:9, 27.0 MHz 720x480@60.0 4:3, 27.0 MHz 720x480@60.0 16:9, 27.0 MHz 720x480@59.9, 27.0 MHz 720x480@59.9 16:9, 27.0 MHz 720x480@59.9 4:3, 27.0 MHz 640x480@60.0 4:3, 25.2 MHz 640x480@59.9, 25.2 MHz 640x480@59.9 4:3, 25.2 MHz [00:00:14.040] associating input device event2 with output HDMI-A-1 (none by udev) [00:00:14.040] associating input device event0 with output HDMI-A-1 (none by udev) [00:00:14.040] Output 'HDMI-A-1' enabled with head(s) HDMI-A-1 [00:00:14.040] Compositor capabilities: arbitrary surface rotation: yes screen capture uses y-flip: yes presentation clock: CLOCK_MONOTONIC, id 1 presentation clock resolution: 0.000000001 s [00:00:14.048] Loading module '/usr/lib/aarch64-linux-gnu/weston/desktop-shell.so' [00:00:14.050] launching '/usr/libexec/weston-keyboard' [00:00:14.058] Loading module '/usr/lib/aarch64-linux-gnu/libweston-9/xwayland.so' [00:00:14.197] Registered plugin API 'weston_xwayland_v1' of size 32 [00:00:14.197] Registered plugin API 'weston_xwayland_surface_v1' of size 16 [00:00:14.198] xserver listening on display :0 [00:00:14.198] launching '/usr/libexec/weston-desktop-shell' could not load cursor 'dnd-move' could not load cursor 'dnd-copy' could not load cursor 'dnd-none' could not load cursor 'dnd-move' could not load cursor 'dnd-copy' could not load cursor 'dnd-none' [00:02:20.719] Spawned Xwayland server, pid 5 [ 1] wl_drm_is_format_supported, format = 0x30335241 [ 2] wl_drm_is_format_supported, format = 0x30335258 [ 3] wl_drm_is_format_supported, format = 0x30334241 [ 4] wl_drm_is_format_supported, format = 0x30334258 Disabling glamor and dri3 support, XWAYLAND_NO_GLAMOR is set Failed to initialize glamor, falling back to sw The XKEYBOARD keymap compiler (xkbcomp) reports: > Warning: Unsupported maximum keycode 569, clipping. > X11 cannot support keycodes above 255. Errors from xkbcomp are not fatal to the X server
at_dominique.m…
h-yuusuke様
お待たせしました。マルティネです。
> 「podman logs xwayland」のログ出力は下記の通りです。
> 「podman logs firefox」の方はログ出力はありませんでした。
ログありがとうございます。異常なかったのでこちらで調査しました。
マニュアルの「NPUを扱う」ワーニングと同じ現象のようです:
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
コンテナ内のアプリケーションから NPU を使う場合は、そのアプリケーションの プロセス ID(PID) を 1 とすると、 アプリケーションが正常に起動しません。 また、複数のコンテナを同時に立ち上げており、それぞれのコンテナ内の アプリケーションから同時に NPU を使用する場合は、 それらのアプリケーション の PID が同一となるとアプリケーションが正常に起動しません。
NPUとは書いてありますが、GPUにも同様な動作で同じ現象だと確認ができました。
linux kernelのgpu-vivドライバを直す予定ですが、修正にまだ作成中でまだ公開できません。
恐れ入りますが、今のところはPIDがかぶらないように注意していただけたら幸いです。
xwayland.confのコマンドを以下のようにすれば動かせました:
set_command sh -c 'trap "exit 1" INT TERM QUIT; weston --tty 1 & wait $!'
普通に「sh -c "weston --tty 1"」でも動くと思いますが、trapとwaitを使わないと「podman stop」のsigtermが無視されていてコンテナの扱いが荒くなります。
コンテナの世界でよく使われてるパターンです。
h-yuusuke
h-yuusuke さん
マルティネさん
> > 現状、添付ファイルの画像の通り、X Window画面がディスプレイ全体に表示されておりません。
> > X Windowの解像度を変更する場合、/etc/X11/xorg.conf を修正しますが、Armadillo-IOT G4のコンテナでも同様の対応が必要でしょうか?
>
> そうですね、こちらも再現できました。
こちらでも同様でした。以下のような方法で固定サイズですが、どうにかなりました。
1.Armadillo Base OS の /etc/local.d ディレクトリにスクリプトファイルを作成
persist_file コマンドで永続化を忘れないようにします。
中身は以下のようです:
#!/bin/sh
/usr/sbin/fbset -g 1920 1080 1920 1080 24
2.コンテナーを起動して、/etc/X11/xorg.conf.d ディレクトリ内のコンフィグレーションファイルを作成
ドライバー用コンフィグレーションファイルの例
Section "Device"
Identifier "FBDev"
Driver "fbdev"
#BusID "pci:bus:dev:func"
EndSection
スクリーン用コンフィグレーションファイルの例
Section "Screen"
Identifier "FBDev"
Device "FBDev"
#Monitor "monid"
SubSection "Display"
Depth 24
ViewPort 0 0
Virtual 1920 1080
EndSubSection
EndSection
3.動作確認したら、コンテナーを exit して podman commit 実行です。
コンテナー内に fbset コマンドのパッケージをインストールして確認するのもよしです。
at_akihito.irie
2022年1月25日 14時25分
入江です。
原因究明のため、自動起動に失敗した状態における以下2つを
送っていただけますでしょうか?
1. 作成した.confファイルの内容
2.
podman logs <コンテナ名>
を実行した時の出力以上、よろしくお願いいたします。