はじめに
Armadillo-640,Armadillo-610,Armadillo-IoT A6E等でDisplayLinkを使用しているUSB-HDMI変換アダプタを介してモニタに画面表示を行います。
今回は、下記の記事でも使用している、Buffalo GX-HDMI/U2を使用します。
Armadillo-IoT(G3/G3L)/X1/640:USB-HDMI変換アダプタ(GX-HDMI/U2)を使ってHDMIモニタに表示
変換アダプタを使用するためには、以下の対応が必要になります。
- DilsplayLinkのドライバー有効化(コンフィギュレーションを変更したカーネルのビルド)
- 画面表示コンテナの用意
DilsplayLinkのドライバー有効化
DisplayLinkのドライバを有効にするために、カーネルのコンフィギュレーションを変更してビルドしなおす必要があります。
カーネルのビルド方法、menuconfigの呼び出し方、ビルドしたカーネルをswupdateで書き込む方法については、下記のマニュアルを参考にしてください。
Armadillo-640製品マニュアル:6.19.2. Linux カーネルをビルドする
Armadillo-610製品マニュアル:6.19.2. Linux カーネルをビルドする
Armadillo-IoT A6E製品マニュアル:6.26.2. Linux カーネルをビルドする
コンフィギュレーション変更のメニューにて、以下の設定を行ってください。
*「Displaylink USB Framebuffer support 」を有効にしている場合は無効に設定するようにしてください。
Device Drivers --->
Graphics support --->
[*] Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
[*] DisplayLink
以上の変更を加えてビルドしたものを対象のArmadilloにインストールしてください。
インストールが完了したArmadilloにUSB-HDMI変換アダプタを接続し、変換アダプタとモニタをHDMIで接続してください。
ドライバの有効化が成功していたら、モニタにコンソールのログイン画面が表示されているはずです。
また、Armadillo Base OSから「/dev/dri/card0」というデバイスとして認識されているはずですので、以下のコマンドで確認してみてください。
root@armadillo:~# ls /dev/dri/card0
/dev/dri/card0
ここまででドライバの有効化が完了しました。
画面表示コンテナの作成
画面表示を行うためのコンテナを作成します。
今回の記事ではとりあえずコンテナから画面を制御できることを確認するために簡易な表示を行います。
Debianコンテナを作成して、最低限必要なパッケージをインストールして表示を行います。
Armadilloをインターネットに接続した状態で下記コマンドを実行してコンテナイメージをダウンロードします。
root@armadillo:~# podman pull docker.io/debian:bullseye-slim
このイメージを使ってコンテナを作成します。
confファイルを使ってコンテナを作成する場合は以下のような内容になります。
コンテナ名をhdmiとしています。
root@armadillo:~# cat /etc/atmark/containers/hdmi.conf
set_image docker.io/debian:bullseye-slim
add_volumes /dev/dri/card0:/dev/dri/card0
add_args --privileged
set_command sleep infinity
上記のconfファイルを使ってコンテナを作成し、そのコンテナの中に入ります。
root@armadillo:~# podman_start hdmi
root@armadillo:~# podman exec -ti hdmi /bin/bash
コンテナ内で必要なパッケージをインストールして、画面表示を実行します。
container:~# apt update && apt install -y xorg jwm
container:~# echo "exec jwm" > ~/.xinitrc
container:~# startx
以下のような画面が表示されれば成功です。 具体的な画面構築などについてはまた別の記事で解説したいと思います。