第626回の
ホストをできるだけキレイに保つために
Steamのインストーラーはソースが公開されているものの,
- ※1
- 実は最近Steam自身がコンテナ化を進めています。少なくとも最新のベータ版クライアントでは,
Linuxの名前空間を利用してゲーム自身をコンテナの中で実行するような仕組みが実装されたようです。
これまでにも第416回や第433回,
あらかじめ第521回の
steamコンテナの準備
では早速steamコンテナを作ってみましょう。今回は手作業で随時設定していますが,
コンテナの作成: $ lxc launch ubuntu:20.04 steam $ lxc exec steam -- sh -c \ "apt update && apt full-upgrade -y && apt autoremove -y" UID/GIDの設定: $ lxc config set steam raw.idmap 'both 1000 1000' パッケージのインストール: $ lxc exec steam -- dpkg --add-architecture i386 $ lxc exec steam -- sh -c 'apt update && apt install -y \ x11-apps mesa-utils libgl1-mesa-glx:i386 \ libcanberra-gtk-module:i386 pulseaudio dbus-x11 \ language-pack-ja fonts-noto-cjk-extra \ fonts-noto-color-emoji' 日本語環境の設定: $ lxc exec steam -- update-locale LANG=ja_JP.UTF-8 $ lxc exec steam -- timedatectl set-timezone Asia/Tokyo
今回はraw.
」
- ※2
- LXD 4.
0ではこのあたりの設定がさらに簡単になるようにshiftfsが導入されています。ただ, 現時点ではまだ安定して動かないようです。
Steamクライアントをインストールするために,
次にコンテナの中からホストのサウンドサーバーにアクセスできるようにしておきましょう。単にUnixドメインソケットをそのままコンテナの中に見せているだけです。
$ lxc exec steam -- sed -i "s/; enable-shm = yes/enable-shm = no/g" /etc/pulse/client.conf $ lxc exec steam -- sh -c "echo export PULSE_SERVER=unix:/tmp/.pulse-native | tee --append /home/ubuntu/.profile" $ lxc config device add steam pa disk source=/run/user/1000/pulse/native path=/tmp/.pulse-native
さらにコンテナからホストのXサーバーとGPUデバイスにアクセスできるようにします。
$ lxc exec steam -- usermod -aG video ubuntu $ lxc config set steam environment.DISPLAY :0 $ lxc config device add steam xorg disk \ source=/tmp/.X11-unix/X0 path=/tmp/.X11-unix/X0 $ lxc config device add steam mygpu gpu \ gid=`getent group video | cut -d: -f3`
第532回の/tmp/
」
同様の理由でコンテナの自動起動を停止しておいたほうが無難でしょう。後ほどSteamを起動するタイミングでコンテナも起動するスクリプトを作ります。
$ lxc config set steam boot.autostart false