Sharing the same Steam game library between Linux and Windows.
我有一顆大容量的HDD,專門用來下載遊戲。
現在希望讓Linux與Windows系統共享該硬碟的遊戲,節省下載時間與空間。
因為從我在Linux玩遊戲的經驗來看,知道即使用Proton還是有遊戲怎麼樣也跑不起來,依然需要Windows環境執行那些不乖的遊戲。
這有兩種解法:
Linux與Windows實體雙重開機,掛載裝遊戲的硬碟。 Ubuntu與Windows雙重開機
將Windows虛擬化,在一個宿主機上跑二個作業系統,將GPU直通給要玩遊戲的虛擬機,再將裝遊戲的硬碟給虛擬機掛載。 Ubuntu Nvidia GPU直通
Steam可以指定遊戲收藏庫存放的位置,那麼,能否在Linux與Windows之間共享Steam收藏庫?其實是可以的。
假設下載的都是Windows版的遊戲,Linux系統的Steam執行遊戲的時候,除了下載exe外還會建立Proton prefix環境。換到Windows系統的Steam執行,同樣的檔案不用再下載一次,可以直接啟動下載好的exe。
1. 硬碟格式化的檔案系統選擇#
木已成舟的、沒地方備份遊戲檔案的就別考慮了,沿用現有檔案系統即可。
想知道目前硬碟格式的請裝 Gparted查看。
用來裝Steam遊戲的硬碟,格式化為NTFS或BTRFS都可以。雖然有人認為BTRFS會降低HDD效能,但我用起來覺得沒差。
就相容性而言,前者是側重Windows,後者是側重Linux。
彼此都有開源驅動能讀取對方的檔案系統,例如Windows透過 WinBtrfs讀BTRFS;Linux透過 NTFS-3G讀NTFS,大致上是沒bug。
如果要我選的話,BTRFS,因為NTFS是專有格式,在Linux出問題的機率更大。
Windows使用磁碟管理員格式化之後,硬碟就能在檔案總管看到。至於如何在Linux格式化並掛載硬碟,請看這篇: Linux新增硬碟與格式化教學
2. Steam遊戲下載技巧#
在Linux和Windows安裝Steam客戶端。
開啟Steam設定,儲存空間,指定收藏庫位置為外部磁碟機。這樣遊戲程式和Proton Prefix都會放到這個硬碟。
然後下載遊戲。不要一個遊戲下載兩次。因為我喜歡測試遊戲在Linux和Windows下的執行情況,所以我會從Linux版Steam下載遊戲。
在Linux版Steam收藏庫,對遊戲按右鍵,點選內容,勾選強制啟用相容性工具(Proton),即可強迫Steam下載Windows版的遊戲。
如果該遊戲本身就有原生Linux版呢?你可以自行測試用Proton能不能跑,或者同時下載Linux版和Windows版。
這得看遊戲開發者如何設計,有的遊戲開啟相容性工具選項後,只需要再下載一些小檔案就能從Linux轉換成Windows版本,且Windows版與Linux版檔案能共存。反之,把相容性工具選項關掉就會切換為Linux版。
最糟糕的情況就是全部重新下載。
3. Virt Manager新增實體硬碟給虛擬機#
本節內容是給GPU直通虛擬機的方案用的。
可不可以兩個系統同時存取硬碟?不行,即使是在虛擬機的情況下,不能讓兩個系統同時掛載硬碟,除非你改用 VirtIO-FS。可我就是因為VirtIO-FS不穩定才用這個方案的!
- Linux需要先取消掛載硬碟:
lsblk
sudo umount "掛載點"
接著使用
ls -l /dev/disks/by-id/
指令找出硬碟代號Virt Mavnager點選新增硬體,點選新增硬碟,在方框輸入
/dev/disks/by-id/ata-硬碟代號
,匯流排選VirtIO