Apex Legends というゲームをやろうという話になったのだけれど,これはどうにも Windows でしか動かなさそうなので,諦めて Windows を入れることにした.
Apex の感想については一番最後に書いたので,結果を知りたい場合は飛ばすことができる.
Wine
最初は Wine で動かそうとしていたが,Wine では動かないことが知られている.EAC (Easy Anti-cheat) があるので Wine と相性が悪いと評判.
Wine の互換性レポートでは Garbage という評価が与えられている:
https://appdb.winehq.org/objectManager.php?sClass=application&iId=19271
自分が試したときはそもそもセットアップまでいかなくて,まず前提になっている EA が提供している Origin というプラットフォームのインストールにことごとく失敗した.
Steam Play
ところで,Steam はマルチプラットフォームで,Windows 以外のプラットフォームにもインストールできる.しかしながら,そのゲームが Windows 以外の実行形式を提供しているかは別問題で,たいてい Windows 以外では実際は動かないというおもしろい仕組みになっている.
GNU/Linux 版には Steam Play という機能があって,Wine を使ってゲームを動かすことで Windows 用のゲームを動かす仕組みが備わっている.
デフォルトでは確認されたタイトルしか Stream Play を有効にできないのだけれど,設定ですべてのタイトルに関して有効にすることができる.
Cluedo
また話は変わるが,Cluedo というゲームが最近流行っている (YouTuber の間で).
このゲームは Steam で遊べるので Steam で遊んだところ,Steam Play 対象タイトルではないので全タイトル有効にすることで問題なく遊ぶことができた.
Apex
そして Apex に立ち返ると,Steam 上では(まだ)提供されていないようなのでうまく行かないし,Steam Play でもうまく遊べるのか疑問だ.とすると,最早 Windows を入れてしまうほうが早い.
Virtualbox でできるのならいいのだけれど,確実にパフォーマンスは落ちるのでゲームの用途は厳しいのではないかと思われる.
ところで Reddit には r/ApexLegendsOnLinux/ という subreddit があって聖杯戦争になっている:
デュアルブート (めんどい)
デュアルブートすることにした.デュアルブートするには数ステップ必要で面倒臭さと戦う必要がある.
なんか文字で書くと楽な気がしてくる.
パーティション
パーティションが時間的には一番かかる.というのも,普通は容量フルフルで割り当てているので,どこかのパーティションを縮小してから,未確保の領域を作らないといけなくてそれなりに時間がかかる操作になる.
今回は SSD の GNU/Linux の /
(root) パーティションを縮小して,50 GiB ほど Windows に割り当てるための未確保領域を作ることにした:
- EFI Partition (FAT32; 100 MiB)
- GNU/Linux システム (ext4; 200 GiB くらい) ← 縮小 させた
- Windows 用 (unallocated; 50 GiB くらい) ← 作った
時間は測ってないけど結構かかった気がする.HDD だとどうだろうという気分になる.
Windows をインストールしよう
できたので Windows のインストーラーを起動させてマニュアルインストールすると「システムパーティションの容量が少ないよ〜」みたいなメッセージが出てきて進めないという現象にぶち当たった.
Windows 用のパーティションは 50 GiB あるので容量的には十分だけれど,EFI パーティションが 100 MiB あって GNU/Linux 用のファイルで 88 MiB ほど使われているので,Windows ブート用のファイルがおけない状態になっていた.
EFI パーティションを拡張しよう
なので,EFI パーティションを 100 MiB から 300 MiB くらいに拡張することにした.実際には後続の Linux のパーティションを後ろにずらして縮小してから -- (1),EFI パーティションをそのスキマを埋めるように拡張する -- (2) 操作になる.
アンマウントして作業する必要があるので,Ubuntu の Live 環境で GParted を使って操作する.こういうときに 1 つ Live 環境があると便利だけど,なかったので USB メモリに焼き焼きした.
ところがどっこい,GParted が中途半端にエラーが出て (1) ができたけど (2) に失敗して嫌な感じになってしまった.ファイルシステムは 100 MiB のママで,後続に 200 MiB の確保されない領域がスキマで空くことになってしまっている:
GParted (libparted
) には謎の仕様があって,256 MB 以下の FAT32 を拡縮できない:
なのでその操作だけ失敗して歯抜けの状態になってしまう
ところで Microsoft のドキュメントでは
このパーティションの最小サイズは 100 MB であり、FAT32 ファイル形式を使用してフォーマットされている必要があります。
Advanced Format 4K ネイティブ ドライブ (セクターあたり 4 KB) ドライブの場合は、FAT32 ファイル形式の制限のために、最小サイズは 260 MB です。 FAT32 ドライブの最小パーティション サイズは、セクター サイズ (4 KB) x 65527 = 256 MB で計算されます。
となっていて複雑な事情がからんでいる:
diskpart
でがんばろう
Workaround としていったん ext4 にフォーマットしなおすと拡張できるので,その後 FAT32 にフォーマットし直してファイルを戻すというのが挙げられている.
嫌なので餅は餅屋ということで Windows で操作することにした.Windows のインストール前にコマンドラインが開けるので diskpart extend
で拡張しようという魂胆だ.
ところがどっこい,EFI パーティションは diskpart
では操作できないようになっている:
再び GParted
何回やらせるねんという感じで再び Ubuntu の Live 環境を起動して GParted でやることにした.もう素直に提案されていた方法で,マウントした HDD に EFI パーティションの /boot
をコピーしてフォーマットすることにした.
これはうまくいった.ext4 にしなくても ざっくりと FAT32 でフォーマットしなおせば 300 MiB のパーティションが確保できるしファイルシステムもうまく構築される.あとはコピーしておいたファイルを戻して,eps,boot
のフラグをつければ元通りの EFI パーティションになる.
この方法の問題としては EFI パーティションの UUID がフォーマットしたら変わるので,fstab
とか grub とかが UUID で参照している箇所を変更する必要がある.もしかしたら UUID を固定することができたかもしれない.
通常どおりインストール
Windows のセットアップに戻ると今度はすんなりとインストールすることができた.インストール自体は数分で終わる.パーティションもろもろの操作のほうが時間がかかって計 4 時間くらいかかっている.
あとはグラフィックボードのドライバをインストールしたりもろもろの作業があるけど,再起動したりひたすら待つのに比べれば天国的な味わいだ.
最後に grub の設定を修正する
最後にこのままだと Windows のブートローダーに乗っ取られているし,UEFI セットアップから Linux のブートローダーを起動しても UUID が違っていてロードできないエラーが出た.
ので,再び Ubuntu の Live 環境に戻って,fstab
を書き換えたり,普通のインストールのように各パーティションをマウントして chroot
後に grub-mkconfig
して grub の設定をアップデートすればやっと完了となる.
Windows のブートローダーに乗っ取られているのは UEFI セットアップで Linux のブートローダーを一番初めに読むようにして基本は Linux を起動させるようにする.ゲームをしたいときは起動時に F11 を連打してブートローダーを選択して起動することにした.
最終形
最終的には以下のようなパーティションの構成になった:
Microsoft Reserved Partition はセットアップで勝手に切られる謎パーティションだ.
Windows インストール後に EFI パーティションは 113 MiB ほどになった.13 MiB のために大奮闘したことになる.なにかファイルを削除したりすれば余裕で空いたのではという説がある.
Apex
さて,Apex はというとバトルロイヤルの FPS ゲームで,最初に数名のパーティで飛行機から飛び降りて,適当な領地を漁って武器を手に入れて,どんどん活動可能範囲が狭まっていくなか,他パーティを倒して生き延びよう,というゲームだ.パフォーマンスは Windows 上なので当然まったく問題ない.
僕らはというと,1 人を除いて FPS 未経験なので 1 キルもすることができず,誰かに出くわすと即銃殺されるという蜂の巣体験を展開してトラウマが植え付けられて数回プレイしてロビーに戻ると全員無言になって終わった.