Sway on Alpine Linux 3.212024年12月07日 19:55

12/5 に、Alpine Linux 3.21 がリリースされました。

Sway 1.10

Sway をインストールしてみました。 全然追えてないですが、色々変更があったみたいです。:D

setup-alpine でインストールした後

root で、doas-sudo-shim をインストールした後は、sudo を使いました。

 sudo setup-xorg-base
 sudo apk add sddm
 sudo setup-devd udev
 sudo adduser $USER input
 sudo adduser $USER video
 sudo apk add font-dejavu
 sudo apk add seatd
 sudo rc-update add seatd
 sudo rc-update add hwdrivers sysinit
 sudo rc-update add mdev sysinit 
 sudo rc-service seatd start
 sudo adduser $USER seat
 sudo apk add sway foot swaylockd swaylockd swaybg swayidle xwayland
 sudo rc-service dbus start
 sudo rc-update add dbus
 sudo apk add elogind polkit-elogind 
 sudo rc-service sddm start
 sudo rc-update add sddm
 sudo apk add wayvnc
 sudo apk add fastfetch

neofetch は、fastfetch に

環境情報を表示するように使用していたneofetchは、 2024/4/26 に、リポジトリがアーカイブされました。 今まで、ありがとうございました。

Alpine Linux 3.21では、fastfetch が紹介されていました。

STREET FIGHTER 6 DEMO の起動2024年10月24日 18:59

sway (alpine linux) with AMD GPU on proxmox で、 steam の STREET FIGHTER 6 DEMOを動かしてみました。

環境変数 XDG_DATA_DIRS

flatpak を入れ update した際、XDG_DATA_DIRS に関する指摘が挙がりました。そのため、XDG_DATA_DIRS を ./.profile に定義をしました。

 export XDG_DATA_DIRS=$XDG_DATA_DIRS:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share

ただ、再起動後、XDG_DATA_DIRS に同じ設定が 2度入っているので、./.profileの設定は、不要かもしれません。

環境変数 DISPLAY

DISPLAY に問題があるかもしれない(?)ので、 dbus セッションで全ての環境変数が参照できるよう、 swayのconfigに、以下の設定を行いました。

 exec dbus-activation-environment --all

wayvnc の表示

流石に、表示がカクつきます。 でも、起動できたので、嬉しいです。:D

wayvnc on sway with AMD GPU2024年10月22日 21:20

No DRM backend supplied

proxmox 上の sway vm の画面表示が遅い事から、wayvncを使ってみました。

wayvnc in headlessからWLR_BACKEDNS=headless で sway を起動、 WAYLAND_DISPLAY=wayland-1 で wayvnc を起動すれば、 sway に vnc 接続できました。

調査の中で、hyprland の issues(Crash in headless mode)から、hyprland も同様に wayvnc 経由できそうだったので、VM の GPU が使えるようにできればと思いました。

ただ、wlroots specific に挙がっている WLR_DRM_DEVICESに、/dev/dri/card0 を指定しても、vnc 接続先の sway は GPUを使用していません。(amdgpu_top で、使用率が上がらないため)

sway 起動時に d オプションで起動して、デバッグログを出力させ、確認すると、"No DRM backend supplied, failed to create wlr_drm_lease_v1_manager"が出ていました。wlroots の wlr_drm_lease_v1.c 内で、DRMが見つけられてないようです。

seat 不足

最初はOSとして、GPUが正しく認識できてないのかと疑いましたが、lspci -v でも、 dmesg でも、amdgpu_top でも、amdgpuが確認できている為、そうではないと思いました。

sway/wlroots が GPUを認識できてないのだろうと、デバッグログとコードを、追ったのですが判りませんでした。

ふと見た、Sunshine のheadlessに関するissuesでsway を起動する前に、seatd を起動していました。alpine linux 3.20 になってから、setup-desktop だけで sway が入るものと思っていましたが、seatd は入りません。

Setting up a seat manager のとおり、Wayland コンポジタが、 入出力デバイスに生でアクセスするために、seatd が必要でした。

bootswayvnc.sh

bootswayvnc.sh として、以下のコードを用意しました。

 WLR_BACKENDS=headless WLR_DRM_DEVICES=/dev/dri/card0 dbus-run-session -- sway &
 WAYLAND_DISPLAY=wayland-1 wayvnc 0.0.0.0 5980 &

ssh で接続し、bootswayvnc.sh を実行すると、5980ポートに外部から vnc接続でき、 かつ、GPU が使える swayに接続できました。

.profile には、以下を設定しています。

 export XDG_SESSION=wayland
 export XDG_CURRENT_DESKTOP=sway
 export LIBSEAT_BACKEDN=seatd
 
 if [ -z "$XDG_RUNTIME_DIR" ]; then
 	XDG_RUNTIME_DIR="/tmp/$(id -u)-runtime-dir"
 	mkdir -pm 0700 "$XDG_RUNTIME_DIR"
 	export XDG_RUNTIME_DIR
 fi

参考