Arch Linux に Steam をインストールした際の作業メモ。
正月に実家に戻っていてやることがあんまりなかったのと、 日本でも最近発売された Steam Deck が ArchLinux ベースの OS かつ互換レイヤー( Proton )でゲームを動かしている、 という話も思い出したので自分でも試してみようと思った次第。
実家に持ち帰っていたノート PC は元々ゲームをやるつもりで買ってなかったが、 Linux の Steam で不自由なくゲームできる感じであれば、 次買い換えるときにゲーム想定したスペックにしても良いかもと思ったのもある。
事前確認
ArchWiki に記事があったので参考にした(ホントに何でもあるなと思っている)。
記事の最初の方に Steam 実行の要件がまとまっている。
multilib リポジトリを有効にして、steam パッケージをインストールします。
Arch Linux で Steam を実行するには、以下の要件を満たす必要があります。
- 32 ビット版の OpenGL graphics driver をインストールします。
- en_US.UTF-8 ロケールを生成して、無効なポインタエラーを防ぎます。
- GUI は Arial フォントを多用しています。MS フォント を参照してください。別の方法は、代替として ttf-liberation や Steam が提供するフォント を使うこともできます。
- アジア言語のサポートを追加するには、wqy-zenhei をインストールしてください。
- ネットワーク管理に systemd-networkd を使用している場合は、Steam がサーバーに接続できるようにするために lib32-systemd をインストールしてください。
自分の環境に照らしてみると
- steam は 32bit 版のみなので multilib リポジトリにあるが、自分のマシンでは multilib リポジトリは有効化してなかったのでまずこれが必要
- 32bit版の OpenGL graphics driver (
lib32-mesa
)はインストールしてないのでこれも必要- とはいえ
steam
パッケージの依存関係に入っているので別個作業は要らなかった
- とはいえ
en_US.UTF-8
ロケールは元々 OS インストール時に生成済だったので不要- Google Chrome の依存関係で
ttf-liberation
がインストール済だったのでフォントのインストールは不要 - 一応日本語にするので
wqy-zenhei
のインストールは要る - ネットワーク管理には NetworkManager を使っているので
lib32-systemd
は不要
という感じ。
インストールと設定
実際にインストールと設定作業としてやったことのメモ。
multilib の有効化
今回は Arch Linux の公式リポジトリからインストールするが、 steam が 32bit アプリケーションのため、まず multilib リポジトリを有効化してインストールできるようにする。
pacman の設定ファイルをこんな感じで修正。
❯ diff -u /etc/pacman.conf.orig /etc/pacman.conf
--- /etc/pacman.conf.orig 2022-12-24 05:37:01.990854545 +0900
+++ /etc/pacman.conf 2023-01-14 07:57:55.408805885 +0900
@@ -90,8 +90,8 @@
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist
-#[multilib]
-#Include = /etc/pacman.d/mirrorlist
+[multilib]
+Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
リポジトリ DB を同期する。(自分の環境では AUR のパッケージも色々使ってる関係で pacman
じゃなくて yay
だが)
❯ yay -Sy
:: Synchronizing package databases...
core is up to date
extra 1740.2 KiB 5.43 MiB/s 00:00 [################################################] 100%
community 7.2 MiB 13.9 MiB/s 00:01 [################################################] 100%
multilib 163.4 KiB 961 KiB/s 00:00 [################################################] 100%
各種パッケージインストール
必要なものを一式インストールする。
一式とはいえ、本体である steam
パッケージの依存関係にほぼほぼ含まれていたので、
あれこれ指定する必要は無く steam
パッケージ以外は日本語化のための wqy-zenhei
を指定するくらい。
インストール中に出てくる Vulkan ドライバーとしてどれを使うかは環境に応じて適宜選ぶ。
(今回作業しているマシンは Intel CPU + 内蔵GPUという構成なので vulkan-intel
lib32-vulkanintel
で進めている)
❯ yay -S steam wqy-zenhei
resolving dependencies...
:: There are 6 providers available for vulkan-driver:
:: Repository extra
1) amdvlk 2) nvidia-utils 3) vulkan-intel 4) vulkan-radeon 5) vulkan-swrast 6) vulkan-virtio
Enter a number (default=1): 3
:: There are 5 providers available for lib32-vulkan-driver:
:: Repository multilib
1) lib32-amdvlk 2) lib32-nvidia-utils 3) lib32-vulkan-intel 4) lib32-vulkan-radeon 5) lib32-vulkan-virtio
Enter a number (default=1): 3
looking for conflicting packages...
warning: dependency cycle detected:
warning: lib32-mesa will be installed before its lib32-libglvnd dependency
warning: dependency cycle detected:
warning: lib32-keyutils will be installed before its lib32-krb5 dependency
Package (72) New Version Net Change Download Size
extra/bubblewrap 0.7.0-1 0.08 MiB 0.04 MiB
extra/harfbuzz-icu 6.0.0-1 0.02 MiB 0.01 MiB
extra/hyphen 2.8.8-5 0.03 MiB 0.02 MiB
multilib/lib32-alsa-lib 1.2.8-1 1.10 MiB 0.38 MiB
multilib/lib32-alsa-plugins 1.2.7.1-1 0.30 MiB 0.07 MiB
multilib/lib32-brotli 1.0.9-5 0.80 MiB 0.31 MiB
multilib/lib32-bzip2 1.0.8-3 0.07 MiB 0.03 MiB
multilib/lib32-curl 7.87.0-1 0.67 MiB 0.29 MiB
multilib/lib32-e2fsprogs 1.46.5-1 0.56 MiB 0.23 MiB
multilib/lib32-expat 2.5.0-2 0.18 MiB 0.07 MiB
core/lib32-gcc-libs 12.2.0-1 107.52 MiB 29.78 MiB
core/lib32-glibc 2.36-6 18.01 MiB 3.38 MiB
multilib/lib32-icu 72.1-2 35.50 MiB 10.31 MiB
multilib/lib32-keyutils 1.6.3-1 0.02 MiB 0.01 MiB
multilib/lib32-krb5 1.20.1-1 2.40 MiB 0.83 MiB
multilib/lib32-libcap 2.66-1 0.07 MiB 0.03 MiB
multilib/lib32-libdrm 2.4.114-1 0.38 MiB 0.14 MiB
multilib/lib32-libelf 0.188-1 2.43 MiB 0.55 MiB
multilib/lib32-libffi 3.4.4-1 0.04 MiB 0.02 MiB
multilib/lib32-libgcrypt 1.10.1-2 0.98 MiB 0.43 MiB
multilib/lib32-libglvnd 1.6.0-1 1.33 MiB 0.20 MiB
multilib/lib32-libgpg-error 1.46-1 0.14 MiB 0.06 MiB
multilib/lib32-libidn2 2.3.4-2 0.12 MiB 0.05 MiB
multilib/lib32-libldap 2.6.3-3 0.45 MiB 0.17 MiB
multilib/lib32-libpciaccess 0.17-1 0.04 MiB 0.02 MiB
multilib/lib32-libpsl 0.21.1-3 0.07 MiB 0.06 MiB
multilib/lib32-libssh2 1.10.0-2 0.28 MiB 0.10 MiB
multilib/lib32-libtasn1 4.19.0-1 0.09 MiB 0.04 MiB
multilib/lib32-libtirpc 1.3.3-2 0.20 MiB 0.08 MiB
multilib/lib32-libunistring 1.1-1 1.71 MiB 0.51 MiB
multilib/lib32-libunwind 1.6.2-2 0.17 MiB 0.05 MiB
multilib/lib32-libx11 1.8.3-1 1.33 MiB 0.62 MiB
multilib/lib32-libxau 1.0.11-1 0.01 MiB 0.01 MiB
multilib/lib32-libxcb 1.15-2 1.01 MiB 0.19 MiB
multilib/lib32-libxcrypt 4.4.33-1 0.16 MiB 0.07 MiB
multilib/lib32-libxdamage 1.1.6-1 0.01 MiB 0.01 MiB
multilib/lib32-libxdmcp 1.1.4-1 0.02 MiB 0.01 MiB
multilib/lib32-libxext 1.3.5-1 0.08 MiB 0.03 MiB
multilib/lib32-libxfixes 6.0.0-2 0.02 MiB 0.01 MiB
multilib/lib32-libxml2 2.10.3-2 1.48 MiB 0.56 MiB
multilib/lib32-libxshmfence 1.3.2-1 0.01 MiB 0.00 MiB
multilib/lib32-libxss 1.2.3-2 0.01 MiB 0.01 MiB
multilib/lib32-libxxf86vm 1.1.5-1 0.02 MiB 0.01 MiB
multilib/lib32-llvm-libs 14.0.6-3 121.49 MiB 30.60 MiB
multilib/lib32-lm_sensors 1:3.6.0.r41.g31d1f125-2 0.06 MiB 0.02 MiB
multilib/lib32-mesa 22.3.3-1 67.84 MiB 10.21 MiB
multilib/lib32-ncurses 6.4-1 0.59 MiB 0.22 MiB
multilib/lib32-nspr 4.35-1 0.29 MiB 0.11 MiB
multilib/lib32-nss 3.87-1 3.07 MiB 1.12 MiB
multilib/lib32-openssl 1:3.0.7-1 4.90 MiB 1.76 MiB
multilib/lib32-p11-kit 0.24.1-1 2.44 MiB 0.34 MiB
multilib/lib32-pam 1.5.2-1 0.80 MiB 0.16 MiB
multilib/lib32-sqlite 3.40.1-1 1.39 MiB 0.65 MiB
multilib/lib32-systemd 252.4-1 1.95 MiB 0.64 MiB
multilib/lib32-vulkan-icd-loader 1.3.235-1 0.55 MiB 0.14 MiB
multilib/lib32-vulkan-intel 22.3.3-1 18.25 MiB 2.94 MiB
multilib/lib32-wayland 1.21.0-1 0.16 MiB 0.05 MiB
multilib/lib32-xz 5.4.1-1 0.22 MiB 0.10 MiB
multilib/lib32-zlib 1.2.13-2 0.09 MiB 0.05 MiB
multilib/lib32-zstd 1.5.2-1 0.63 MiB 0.24 MiB
community/libmanette 0.2.6-3 0.38 MiB 0.05 MiB
extra/libwpe 1.14.0-1 0.30 MiB 0.05 MiB
community/lsb-release 2.0.r48.3cf5103-1 0.02 MiB 0.01 MiB
core/usbutils 015-2 0.31 MiB 0.09 MiB
extra/vulkan-intel 22.3.3-1 17.29 MiB 2.80 MiB
extra/webkit2gtk-4.1 2.38.3-1 82.65 MiB 23.96 MiB
extra/woff2 1.0.2-4 0.17 MiB 0.06 MiB
extra/wpebackend-fdo 1.14.0-1 0.13 MiB 0.04 MiB
extra/xdg-dbus-proxy 0.1.4-1 0.05 MiB 0.02 MiB
extra/zenity 3.43.0-1 10.53 MiB 2.97 MiB
multilib/steam 1.0.0.75-1 3.62 MiB 3.43 MiB
community/wqy-zenhei 0.9.45-9 16.02 MiB 7.54 MiB
Total Download Size: 140.16 MiB
Total Installed Size: 536.12 MiB
:: Proceed with installation? [Y/n]
ということで依存関係含めると色々あるがインストールする。
インストールが完了したら /usr/share/applications/
にエントリが作成されるので、
各種デスクトップ環境のランチャーから起動できるようになるはず。
❯ ls -lh /usr/share/applications/steam.desktop
-rw-r--r-- 1 root root 7.4K Aug 30 06:12 /usr/share/applications/steam.desktop
Xfce の Application Finder の場合
で、起動すると Steam クライアントのアップデートチェック等で少し待った後サインイン画面になるので、自分のアカウントでログインする。
ということで Steam のインストール作業自体は完了。
ちなみにアップデートが完了したあたりのタイミングで ~/Desktop/
にエントリが作成される。
(中身は先に作成されたものと同じ)
❯ ls -lh ~/Desktop/steam.desktop
-rwx--x--x 1 shida shida 7.4K Jan 14 08:14 /home/shida/Desktop/steam.desktop
Steam Play (Proton) の有効化
ここまでで Linux 版 Steam として Linux にネイティブ対応しているゲームはインストールしてプレイできるようになったが、 Linux 非対応のゲームの場合こんな感じで「AVAILABLE FOR WINDOWS」とかになってインストールボタンが無効化されているのでインストールできない。
なので Steam Play ( Proton )を有効化 1 して Linux 非対応のゲームもインストール、起動できるようにする。 有効化は Steam クライアントの設定画面からできる。
上が Steam で検証済のタイトルを実際に Steam Play で動かすかどうか、下が未検証のものも試せるようにするかどうか。今回は両方有効化した。
未検証のゲームを動かすときに使う Proton のバージョンとしては古いものも含め色々選べるが、基本的には標準版( Proton x.x-x
みたいなやつ)の最新バージョンを選んでおけば良いだろうと思う。
まぁ Proton のバージョン切り替えに時間かかるとかでも無いので、あんまり深く考えず適当に選んで何か不都合でたら切り替えながら試す、くらいで良さそうではあるが。
Proton は GitHub にリポジトリがあるが、パッチ毎のリリースノートを見ると「個別タイトルの〇〇を修正しました」みたいなこともいろいろ書いてるので、こっちも眺めてみると面白いかもしれない。
ここを見た感じ、だいたい数ヶ月くらいの間隔でリリースされているが、 Proton の新しいバージョンが出たときに設定がどうなるのか謎(今の設定が維持されるのか勝手に新しいバージョンになるのか)なので、時々見てみると良いかもしれない。
互換ツールということでタイトルによって動いたり動かなかったりバグったりするが、個々のタイトルがどの程度動くかは ProtonDB というサイトが参考になる。
また、 FAQ によると複雑なアンチチートシステムや DRM (コピープロテクトとか)を使ってるゲームは難しいかもとのこと。 競技色の強いオンラインゲームの類や、すごい金のかかったタイトルに関しては上手く動かないケースが多くなるのかもしれない。
引用 : Steam :: Steam for Linux :: Introducing a new version of Steam Play
Q: Are there any games that will never work with Proton?
It’s likely that some games using complex DRM or anti-cheat systems will be difficult, or even impossible to support.
日本語化
Steam クライアントの日本語化もしておく。
Steam クライアントでの言語設定は、Steam アカウントの設定や OS のロケールを参照するわけでなく、アプリケーションの設定として持っているらしい。
Steam クライアントメニューバーの Steam
> Settings
> Interface
から設定できる。
余談だが、インストール時に日本語化のために入れた wqy-heizen
パッケージを削除してみたところ、
日本語化自体はできるが、タスクバー部分の日本語が豆腐になっていた。
そこ以外(クライアント画面とか設定画面とか)は豆腐になってたり文字化けしている部分は見つけられなかったので、
正直無くても困りはしなさそうだったが、必要は必要っぽい。
スケーリング解像度の無効化
これは使っているモニターに依ると思う 2 のだが、デフォルトで拡大設定がされていて個人的に見辛い。
具体的には27インチ4Kのモニターでこんな感じで見える。(Chrome やタスクバーと比較するとかなり拡大されてるのが分かる)
この機能も人によっては有効にしておきたい場合もあると思うのだが、個人的には要らないので無効化する。 (拡大したいなら Steam クライアントではなくデスクトップ環境あたりの設定でやると思う)
これも同じくインターフェースの設定から無効にできる。
ここがデフォルトでチェックついているので、チェックを外して Steam クライアントを再起動すると期待した通りになる。
動かした感じ
怒首領蜂大復活と Little Witch Nobeta を軽く動かした感じ、音がおかしかったり体感できる遅延があったりということも無く普通に動いた。 (今回試したマシンのスペックが i5-7260U +内蔵GPUとかいうゲームを全く想定してないモノだったので Little Witch Nobeta に関してはまぁまぁカクカクだったが)
あとがき
何のゲームだったかは忘れたが10年くらい前に前に Windows 用のゲームを Wine で動かしたことがあって、 その時は結構苦労した記憶があるのだが、それに比べるとインストールから起動まで面倒な設定もなければ特に詰まることもなくスムーズに進んだ。
プレイに関してもちょっと動かした限りでは不具合も違和感もなく普通に遊べている。 (改めて考えたら Steam Deck みたいなハード出せるくらいなのでそりゃ商品になるくらいの完成度だよな、という気もする)
という感じで、(自分のPCのスペックがアレだったことを除けば)ほんとに普通にプレイできる感じだったので次ノートPC買う時はある程度ゲーム想定のスペックを検討しようかなと思う。
また、記事の途中で複雑な DRM やアンチチートシステムを使っていると Proton でも上手く動かないケースが多くなるかもとは書いたが Steam Deck の影響もあってかこういった動きもあるらしい。 将来的にどうなるかはまだ分からないが、上手く行って欲しいと切に思う。