把 Steam 遊戲裝在 exFAT 外接硬碟,想用 Proton 跑 Windows 遊戲,結果噴錯:
PermissionError: [Errno 1] Operation not permitted: '../AppData/Local' ->
'/media/jason/0123-4567/SteamLibrary/steamapps/compatdata/2062430/pfx/drive_c/users/steamuser/Local Settings/Application Data'
看起來是權限問題?
不是。
Proton 需要在 compatdata 資料夾裡建 symlink 來模擬 Windows 的目錄結構。
exFAT 不支援 symlink。
就這樣。
解法是把 compatdata(Wine prefix)放到內部硬碟,遊戲檔案繼續留在外接硬碟。
先把壞掉的 compatdata 砍掉:
rm -rf /media/jason/0123-4567/SteamLibrary/steamapps/compatdata/2062430
在內部硬碟建新的:
mkdir -p ~/.local/share/Steam/steamapps/compatdata/2062430
然後在 Steam 遊戲的啟動選項加環境變數:
STEAM_COMPAT_DATA_PATH="/home/你的使用者名稱/.local/share/Steam/steamapps/compatdata/遊戲ID" %command%
或者直接改 ~/.local/share/Steam/userdata/你的ID/config/localconfig.vdf:
"LaunchOptions" "STEAM_COMPAT_DATA_PATH=\"/home/jason/.local/share/Steam/steamapps/compatdata/2062430\" %command%"
改設定檔前記得先關 Steam。
重開 Steam 跑遊戲,應該會看到:
Proton: Upgrading prefix from None to 10.1000-200 (/home/jason/.local/share/Steam/steamapps/compatdata/2062430/)
fsync: up and running.
這樣就對了。
結論:遊戲檔案放 exFAT 沒問題,但 Proton 的 compatdata 要放在支援 symlink 的檔案系統(ext4)。
其他選項?把整個遊戲移回內部硬碟、外接硬碟改格式化成 ext4、或用 NTFS。但都比較麻煩。