Slackware で VRChat 環境構築の手順

令和七年 5月10日 (土) 雨

こっちで使っているスタック:

Quest 3 側

開発者モードを有効にしてから、ヘッドセットをパソコンに有線で繋げて、adb を用いて ALVR アプリをインストールする。

adb devices # 実行後ヘッドセット側で許可ボタンを押す
adb install -r ~/Downloads/alvr_client_android.apk

Slackware 側

あいにく Slackware Linux はなかなか対応されないディストロだから、こっちは Distrobox で Arch Linux のコンテナを構築して VR やってるの。

Dockerfile:

FROM archlinux:latest

COPY multilib.sh /tmp/multilib.sh
RUN /tmp/multilib.sh

COPY setup-mirrors.sh /tmp/setup-mirrors.sh
RUN /tmp/setup-mirrors.sh

# update keyrings
RUN pacman -Sy --noconfirm archlinux-keyring
RUN pacman-key --init && pacman-key --populate archlinux

RUN pacman -Syu --noconfirm mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau radeontop vulkan-tools vkd3d lib32-vkd3d alsa-utils pipewire pipewire-alsa pipewire-pulse pipewire-jack kde-cli-tools noto-fonts xdg-desktop-portal xdg-desktop-portal-kde atk fuse2 fuse3 xdg-utils python3 ffmpeg yt-dlp kitty zsh openxr wine steam lutris rust chromium clang bind-tools aws-cli cmctl kubectl terraform helm helix git yt-dlp qt5-multimedia

COPY locale.sh /tmp/locale.sh
RUN /tmp/locale.sh

ENTRYPOINT ["/usr/bin/zsh"]

multilib.sh:

#!/bin/sh

add_multilib() {
  cat <<- EOF >> /etc/pacman.conf
  [multilib]
  Include = /etc/pacman.d/mirrorlist
EOF
}

grep '^\[multilib\]' /etc/pacman.conf || add_multilib
echo

setup-mirrors.sh:

#!/bin/sh

cat <<-'EOF' > /etc/pacman.d/mirrorlist
##
## Arch Linux repository mirrorlist
## Generated on 2025-03-05
##

## Japan
Server = https://mirrors.cat.net/archlinux/$repo/os/$arch
Server = https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch

locale.sh:

#!/bin/sh

cat <<- EOF > /etc/locale.gen
en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8
EOF

locale-gen
echo

distrobox.ini:

[arch]
image=localhost/arch
init=false
pull=false
root=false
replace=true
start_now=true

こうしてビルドできる:

docker build -t arch .
distrobox-assemble create --file ./distrobox.ini --verbose

コンテナ環境に入る:

distrobox enter arch

steam を起動して、SteamVR をダウンロードして実行する。色々初期化されるのを待つ。初期化時に、ルート権限を求めてくるはずだけど、許可しても失敗しちゃうw 憶測だけど原因はおそらくサンドボックスにあるかと。修正するためには、新たな端末から次のコマンドを実行。

sudo setcap CAP_SYS_NICE=eip \
    ~/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher

※ 上記コマンドは SteamVR に含まれる ~/.local/share/Steam/steamapps/common/SteamVR/vrsetup.sh というスクリプトから。

上記コマンドを実行したら、SteamVR を再起動させる。エラーは生じず無事起動するはず。

さて、これから SteamVR を起動するたびに、Steam Library じゃなくて alvr から起動しよう。alvr のインストール方法は次の通り:

tar zxf ~/Downloads/alvr_streamer_linux.tar.gz -C ~/.local/share
ln -s "$HOME/.local/share/alvr_streamer_linux/bin/alvr_dashboard" \
    ~/.local/bin/alvr_dashboard

これで alvr_dashboard コマンドで alvr を起動できるようになる。万が一コマンドが見つからないというエラー出る場合、 $PATH 環境変数に ~/.local/bin が登録されていることを確かめよう。

次に VR ヘッドセットを被って ALVR アプリを起動する。初めてはヘッドセットのホスト名とローカルIPアドレスをパソコン側の alvr アプリの方で手動で登録する必要あるかも。ホスト名とローカルIPアドレスはVRヘッドセットに表示されているはずだから、間違いないように気をつけてパソコン側で入力しよう。

ここまで来てうまく行ったら、パソコン側の alvr アプリでヘッドセットが Connected と緑色で表示されるはず。ヘッドセット側には、オーロラのような三次元の壁紙が見えるはずだけど、実はこっちがやったとき、映像が全く見えず真っ黒だった。そこで、SteamVR の設定を変えることで一旦直すことができた。

ヘッドセットで映像が見えない場合は、SteamVR を終了させて、Steam Library でその設定画面を開く。そこで先ずは Launch Options にこう書き込む:

~/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command%

次、設定画面の Betas タブで previous を選択。終わったら alvr アプリから SteamVR を再び起動する。

VRChat 周り

steam を一旦終了させて、GE-Proton をインストールする:

tar zxf ~/Downloads/GE-Proton9-27.tar.gz -C ~/.steam/root/compatibilitytools.d

それから steam をまた起動して、VRChat の Steam 設定画面で Compatibility タブで Force なんちゃらにチェック入れて、ドロップダウンでさっき入れた GE-Proton を選択するだけ。終わったら VRChat を普通に起動すれば動くはず。

wlx-overlay-s

VR の中からパソコンの通知を受け取ったり、デスクトップ使ったりするためには、いわゆるオーバーレイ表示ソフトが必要。こっちはこういうもの使ってる:

単純に落として、cargo build --release でビルドできる。それから一度だけ CLI から起動したら、SteamVR と連携して次から自動的に起動するように自己設定してくれるみたい。便利〜