Linux 與 Steam(完):在 chroot 下裝 SteamOS - Steam
By Hedy
at 2017-04-30T20:59
at 2017-04-30T20:59
Table of Contents
chroot,顧名思義,切換至另一個新的 root 目錄,
有點像是『虛擬機』或『沙盒』的作法。
所以我們可以準備一個 SteamOS 的環境,然後直接 chroot 進去,
那就和原生的 SteamOS 系統有 87% 相像了。
畢竟能儘量使用貼近於 SteamOS 的環境來跑 Steam 是再好不過了。
chroot 提供的雖然只是很簡易的虛擬環境,
但因為操作簡便、加上提供近乎原生系統 100% 的效能,
所以很受 Linux 開發人員歡迎。
但近期的 Linux 自從引入 systemd 後,
chroot 就被 systemd-nspawn 所取代了。
敝人剛好是 systemd hater,所以就不討論 systemd-nspawn 了。
有興趣可以自行測試。應該差不多... 吧?
Debian 有提供一個名為 debootstrap 的套件可以用來方便建立 chroot 環境。
請安裝該套件、備份 /usr/sbin/debootstrap 後,修改如下:
DEF_MIRROR="http://repo.steampowered.com/steamos"
DEF_HTTPS_MIRROR="http://repo.steampowered.com/steamos"
然後進入 /usr/share/debootstrap/scripts/,
以 sid 為範本(因為 SteamOS 是 Debian Jessie Based):
ln -s sid brewmaster
然後執行:(其中的 SteamOS 是您的 CHROOT 目錄)
debootstrap --no-check-gpg --arch amd64 brewmaster SteamOS
注:Steam 系統混合了 i386 及 amd64 程式,
比如說主程式 steam 及遊戲中介面 gameoverlayui 是 32bit,
但另一個重要程式 steamwebhelper 卻是 64bit。
所以您必須準備 amd64 版的 chroot 環境。
大概稍等幾分鐘,原汁原味的 SteamOS 環境就成功建立了。
然後就能 chroot 進去 SteamOS 把玩了:
(下面指令中 $CHROOT 指的是您的 CHROOT 目錄)
chroot $CHROOT /usr/bin/env -i HOME=/root TERM=xterm PATH=/bin:/usr/bin:/sbin:/usr/sbin DISPLAY=:0 /bin/bash --login +h
另,包括 Debian、Ubuntu 及 Steam 都有提供 debootstrap 套件。
但如果您是使用其它的 Linux 發行版,
Google 一下應該可以找到很多類似的 script 可用。
chroot 並不是完美的虛擬環境,所以有些注意事項:
1. 它只是『切換至另一個 root 目錄』中,所以很多東西,
像是 Kernel、網路環境、系統參數,全都是沿用主系統。
不要在裡面亂搞一些可能會影響到主系統的東西,
像改系統參數啦、跑 iptables 啦、重建 GRUB 等等。
2. 儘量不要在裡面執行任何服務程式。
像預設會安裝的 logrotate cron rsyslog 等等,
可以的話不如移掉以免後患。
3. 雖然是在虛擬環境中,但和原生系統一樣,
非必要千萬不要用 root 執行任何程式。
chroot 的安全性老實說 不 堪 一 擊,請小心為上!
進入 chroot 後,請先新增一個使用者,如 user:
adduser user
然後使用以下指令切換至 user:
su - user
下文中會以 $USER 代表您的 user 帳號。
4. 因為 chroot 環境只是切換至新的目錄,
所以一些檔案系統的權限切過去後可能會和 chroot 環境裡的不符。
比如說,您的系統裡的 input 群組號碼和 SteamOS 的可能會不一樣,
導致 chroot 進去後,$USER 無法讀取 /dev/input/*。
如果可以,請把主系統的 /etc/passwd 及 /etc/group 複製過去,
可以少掉很多麻煩!
5. 可能是為了配合 systemd-nspawn,$CHROOT/dev/ptmx 被改成使用 link。
請修正如下,不然很多程式會抱怨找不到 tty,甚至無法啟動:
(錯誤訊息大概會類似:『Can not write log (Is /dev/pts mounted?)』)
rm -f $CHROOT/dev/ptmx
mknod -m 666 $CHROOT/dev/ptmx c 5 2
chown root:tty $CHROOT/dev/ptmx
6. 有部份系統目錄,像 proc 或 tmpfs,必須掛到 $CHROOT 裡:
mount proc $CHROOT/proc -t proc
mount /dev/pts $CHROOT/dev/pts -t devpts
mount tmpfs $CHROOT/dev/shm -t tmpfs
但在退出 chroot 環境時請記得 umount。
7. 而 steam 是極傲嬌的程式,
所以 不 要 用 bind 來掛載任何 steam 裡的目錄。
取而代之的,你可以掛在別的目錄然後用符號連結 XD
比如說:
mount -o bind steamapps $CHROOT/home/$USER/steamapps
然後進入 chroot 環境後:
ln -s $HOME/steamapps $HOME/.local/share/Steam/steamapps
8. 原始的 $CHROOT/etc/apt/sources.list 如下:
deb http://repo.steampowered.com/steamos brewmaster main contrib non-free
deb [arch=amd64,i386] http://repo.steampowered.com/steam/ precise steam
當然您可以自己再加入其它的套件庫,
如:Debian Jessie (stable) 或 Debian Stretch (testing)。
既然是虛擬環境,當然要拿來亂搞了 XD
9. 因為架構的是 64 bit 的 chroot 環境,
請用以下指令來讓系統也可以安裝 i386 套件:
dpkg --add-architecture i386
因為相容性的關係,大部份 i386 套件會使用較保守的編譯參數。
因此可以預期的,64 位元的應用程式在效能上表現會比較好。
不過 Steam 裡的遊戲大多還是 i386 就是了。
10. 您可能會想安裝的套件:
locales xauth libc6:i386 libc6-i686:i386
libssl1.0.0:i386 libva1:i386 dbus-x11 libasound2 steam
libgl1-mesa-glx libgl1-mesa-glx:i386
libgl1-mesa-dri libgl1-mesa-dri:i386
libtxc-dxtn-s2tc0 libtxc-dxtn-s2tc0:i386
nvidia-driver | libgl1-fglrx-glx | i965-va-driver
以及各個 driver 的 i386 版本函式庫。
另,請執行 dpkg-reconfigure locales 讓系統支援 zh_TW.UTF-8。
11. 就如前文所說,請以一般者用權限來跑 steam。(記得 steam 不給用 root 跑...)
請將使用者加入以下群組:
audio dip video plugdev netdev input
12. steam 在啟動時會透過 dbus 查詢某些系統及網路參數。
為了讓 chroot 環境裡的 steam 能存取主系統的 dbus,
請先在【主系統】安裝以下套件:
dbus dbus-x11
並把 sysfs 及 run/dbus 掛到 $CHROOT 裡:
mount sysfs $CHROOT/sys -t sysfs -o nodev,nosuid,noexec,ro
mount -o bind /run/dbus $CHROOT/run/dbus
否則 steam 會 segfault 然後開不起來。
另,如果突然無法進入 steam,然後吐出如下錯誤訊息:
Segmentation fault $STEAM_DEBUGGER "$STEAMROOT/$STEAMEXEPATH" "$@"
那麼重啟主系統的 dbus 服務或許就能解決問題了:
/etc/init.d/dbus restart
還有,千萬不要在 chroot 裡啟動 dbus。
在技術上雖然可行,但問題真的超級多。會出事的!
在退出 chroot 環境時請記得 umount 這些目錄。
13. 請務必保持顯示卡驅動程式和主系統的版號相同,
不然可能連 Steam 都進不去。
也就是,您可能得設法自行安裝較新版本的驅動程式...
(比如說,直接裝 Debian Stretch 版的套件?)
14. 為了讓 chroot 裡的應用程式也能存取 X,也就是若您想跑視窗程式的話
您必須設定某些參數。
首先,在主系統以 $USER 身份滙出 X 憑証:
xauth extract $CHROOT/tmp/display $DISPLAY
然後,進入 chroot 環境後,以同一 $USER 身份匯入該 X 憑証:
xauth merge /tmp/display
然後指定 DISPLAY 參數,就行了:
export DISPLAY=:0
(註:這個參數依您的系統而定。
比如說,如果您有安裝 Display Manager 的話,或許會是 :1)
15. 我習慣不用任何的 Sound Server,ALSA 對我而言就很夠用了。
但為了讓遊戲有聲音,請把 ALSA 的目錄也掛進去:
mount -o bind /dev/snd $CHROOT/dev/snd
然後遊戲應該就會有聲音了... 應該啦!
一樣,在退出 chroot 環境時請記得 umount。
16. 或許有部份的遊戲還在使用 5、6 年前就不再被 Linux 支援的 OSS 聲音系統來發聲。
但預設上 debootstrap 不會建立這個 dev/dsp 檔,請手動建立:
mknod -m 660 /dev/dsp c 14 3
chown root:audio $CHROOT/dev/dsp
並在主系統中載入以下模組:
snd_pcm_oss
snd_mixer_oss
但還在用 OSS 的軟體應該很少很少了...
但若遊戲真的使用 OSS 發聲,
它可能會獨佔 /dev/dsp 導致其它也是使用 OSS 來發聲的應用程式無法出聲。
(有時會 hang 在那裡等待 /dev/dsp 回應)
這個似乎無法可想?
17. 而在 Linux 上最常見的 Sound Server 應該是 PulseAudio,
但敝人長久使用以來負面體驗太多,
(敝人使用 Linux 桌面已超過 15 年了...)
所以對 PulseAudio 有點敬謝不敏,在此就略過了。(饒了我!拜託~~)
但如果您真的沒有在用 PulseAudio,
請刪除以下檔案來讓遊戲不會試圖去呼叫 PulseAudio:
Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libpulse-simple.so.0.0.3
Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libpulse-simple.so.0
Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libpulse-simple.so.0.0.3
Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libpulse-simple.so.0
否則有些遊戲,如《返校》,呼叫 PulseAudio 失敗後會直接當掉無法執行。
18. 為了驅動搖桿,請把 /dev/input 及 /run/udev 目錄也掛進去:
mount -o bind /dev/input $CHROOT/dev/input
mount -o bind /run/udev $CHROOT/run/udev
並確認一下 input 這個群組的編號主系統和 chroot 環境裡的是不是相符。
搖桿相關問題可以參考前文中 SteamOS 段落。
一樣,在退出 chroot 環境時請記得 umount。
19. 您可能也希望在 Steam 裡使用中文輸入法。
我們假設您的主系統已安裝好 HIME 輸入法並已正確啟動,(喂喂!)
那麼,只要確認 steam 的 LOCALE 參數和 *啟動 HIME 時* 的 LOCALE 參數一樣,
(這可能是 HIME 的限制...)
然後設定好 XMODIFIERS 環境變數即可。例:
LC_ALL=zh_TW.UTF-8 XMODIFIERS=@im=hime steam
根據個人實測,Steam 只有在 Big Picture 介面下的輸入欄位有支援輸入法,
且只支援 XIM 的 ROOT 模式。所以也不是任何地方都叫得出 HIME 就是了。
但因為不是用 SteamOS 的 steamcompmgr 當 Window Manager,
所以輸入法視窗應該可以正常顯示出來。用起來應該有比較順手一點點。
另,或許有部份遊戲中可以打字,
所以您可能想在系統裡安裝完整的 HIME 套件及設定完整的輸入法環境變數,
然後祈禱這個遊戲能至少支援 XIM 輸入法...
但目前敝人手上的遊戲都無此需求,所以無從測試起。Sorry...
20. steam 在啟動後,於系統工具列上出現的圖示是白色系的。
您可能改用原本的藍色系圖示:
cd /usr/share/pixmaps
rm steam_tray_mono.png
ln -s steam.png steam_tray_mono.png
或,把原有藍色系圖示稍加修改成小一點點:(需安裝 imagemagick 套件)
cd /usr/share/pixmaps
convert steam.png -geometry 40x40 -background none -gravity center -extent 48x48 steam_tray_mono.png
21. 和 Windows 版 Steam 類似的,Linux 版的 Steam 也有字型太小的問題。
然後也和 Windows 版的類似:『無法可解』。XD
Linux 版的 Steam 雖然會透過 fontconfig 來抓字型,
但它基本上不會理會 fontconfig 的設定。
(fontconfig 可以設定縮放字型或是設定最小字體等等,但對 Steam 無效)
所以唯一的不完美解決方案,就是和 Wine 一樣,
改 Steam 所使用的 skin 的字型大小了...
22. 而系統工具列上的 Steam 圖示上選單的字型大小則是視使用者 GTK2+ 的設定。
可修改 ~/.gtkrc-2.0 來設定它的字型及大小,比如說:
gtk-font-name = "Noto Sans T Chinese Medium 20"
23. 在進行遊戲其間,Steam 似乎會關閉 X 的休眠功能。
也就是,只要 Steam 的遊戲開著,螢幕就不會進入省電模式。
這大概是因為 X 只會根據鍵盤滑鼠的動作來決定是否啟用休眠,
但『搖桿』卻不在它的偵測範圍內。
註:您可以用 xinput --list 確認一下,應該沒看到搖桿列在裡面
也就是,如果在使用搖桿玩遊戲時,因為鍵盤滑鼠長時間無動作,
所以 X 可能會進入休眠模式,然後擅自把螢幕給關了,
如果這時正當遊戲的緊要關頭,螢幕卻自己暗掉,玩家真的會抓狂。
所以 Steam 就把這個功能關掉了。XD
所以,如果要長時間離開電腦,
請先關閉遊戲,或手動關閉螢幕電源... orz
注:SteamOS 是在 steamos-session 裡把 dpms 關掉,然後自行進行電源管理。
但目前還我找不到 Steam 本身在哪裡把 dpms 關掉的...
用 chroot 環境來跑 SteamOS 主要是希望 Steam 的運作環境能越貼進 SteamOS 越好,
但打造 chroot 環境可真的不是普通的累。更精確得說,根本是恐怖大工程。
可是以實際運行結果來看,和用 Debian 直接跑 Steam 其實也沒有差很多啦!
(大概是因為 SteamOS 本來就是 Debian Based,環境沒有差異太大)
也就是... 根本在白做工 XDDDD
如果您是別的 Linux 發行版,如 ArchLinux 或 openSUSE,可能才會對這個比較有興趣。
但問題可能會卡在:如何在這個 chroot 環境裡安裝同版本的顯示卡驅動程式?XD
注:若想手動編譯驅動模組,Debian 有提供一個方便的輔助套件 module-assistant。
若有這類需求可以研究看看!
不過,這個 chroot 環境只要能成功建立起來,
您就可以方便得備份、複製、搬移、胡搞瞎搞這個 chroot 環境,
真的不行就還原或打掉重練即可。其實還是很方便的!
【注意】:在刪除 chroot 環境前,請務必確認還有沒有什麼目錄還掛在裡面,
若有什麼重要資料不小心也跟著一起被刪除掉,事情就大條了。
建議寫個 script 以防自己手太賤。
實在太多慘痛經驗了... (現在回想起來還是很心痛)
--
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血
--
有點像是『虛擬機』或『沙盒』的作法。
所以我們可以準備一個 SteamOS 的環境,然後直接 chroot 進去,
那就和原生的 SteamOS 系統有 87% 相像了。
畢竟能儘量使用貼近於 SteamOS 的環境來跑 Steam 是再好不過了。
chroot 提供的雖然只是很簡易的虛擬環境,
但因為操作簡便、加上提供近乎原生系統 100% 的效能,
所以很受 Linux 開發人員歡迎。
但近期的 Linux 自從引入 systemd 後,
chroot 就被 systemd-nspawn 所取代了。
敝人剛好是 systemd hater,所以就不討論 systemd-nspawn 了。
有興趣可以自行測試。應該差不多... 吧?
Debian 有提供一個名為 debootstrap 的套件可以用來方便建立 chroot 環境。
請安裝該套件、備份 /usr/sbin/debootstrap 後,修改如下:
DEF_MIRROR="http://repo.steampowered.com/steamos"
DEF_HTTPS_MIRROR="http://repo.steampowered.com/steamos"
然後進入 /usr/share/debootstrap/scripts/,
以 sid 為範本(因為 SteamOS 是 Debian Jessie Based):
ln -s sid brewmaster
然後執行:(其中的 SteamOS 是您的 CHROOT 目錄)
debootstrap --no-check-gpg --arch amd64 brewmaster SteamOS
注:Steam 系統混合了 i386 及 amd64 程式,
比如說主程式 steam 及遊戲中介面 gameoverlayui 是 32bit,
但另一個重要程式 steamwebhelper 卻是 64bit。
所以您必須準備 amd64 版的 chroot 環境。
大概稍等幾分鐘,原汁原味的 SteamOS 環境就成功建立了。
然後就能 chroot 進去 SteamOS 把玩了:
(下面指令中 $CHROOT 指的是您的 CHROOT 目錄)
chroot $CHROOT /usr/bin/env -i HOME=/root TERM=xterm PATH=/bin:/usr/bin:/sbin:/usr/sbin DISPLAY=:0 /bin/bash --login +h
另,包括 Debian、Ubuntu 及 Steam 都有提供 debootstrap 套件。
但如果您是使用其它的 Linux 發行版,
Google 一下應該可以找到很多類似的 script 可用。
chroot 並不是完美的虛擬環境,所以有些注意事項:
1. 它只是『切換至另一個 root 目錄』中,所以很多東西,
像是 Kernel、網路環境、系統參數,全都是沿用主系統。
不要在裡面亂搞一些可能會影響到主系統的東西,
像改系統參數啦、跑 iptables 啦、重建 GRUB 等等。
2. 儘量不要在裡面執行任何服務程式。
像預設會安裝的 logrotate cron rsyslog 等等,
可以的話不如移掉以免後患。
3. 雖然是在虛擬環境中,但和原生系統一樣,
非必要千萬不要用 root 執行任何程式。
chroot 的安全性老實說 不 堪 一 擊,請小心為上!
進入 chroot 後,請先新增一個使用者,如 user:
adduser user
然後使用以下指令切換至 user:
su - user
下文中會以 $USER 代表您的 user 帳號。
4. 因為 chroot 環境只是切換至新的目錄,
所以一些檔案系統的權限切過去後可能會和 chroot 環境裡的不符。
比如說,您的系統裡的 input 群組號碼和 SteamOS 的可能會不一樣,
導致 chroot 進去後,$USER 無法讀取 /dev/input/*。
如果可以,請把主系統的 /etc/passwd 及 /etc/group 複製過去,
可以少掉很多麻煩!
5. 可能是為了配合 systemd-nspawn,$CHROOT/dev/ptmx 被改成使用 link。
請修正如下,不然很多程式會抱怨找不到 tty,甚至無法啟動:
(錯誤訊息大概會類似:『Can not write log (Is /dev/pts mounted?)』)
rm -f $CHROOT/dev/ptmx
mknod -m 666 $CHROOT/dev/ptmx c 5 2
chown root:tty $CHROOT/dev/ptmx
6. 有部份系統目錄,像 proc 或 tmpfs,必須掛到 $CHROOT 裡:
mount proc $CHROOT/proc -t proc
mount /dev/pts $CHROOT/dev/pts -t devpts
mount tmpfs $CHROOT/dev/shm -t tmpfs
但在退出 chroot 環境時請記得 umount。
7. 而 steam 是極傲嬌的程式,
所以 不 要 用 bind 來掛載任何 steam 裡的目錄。
取而代之的,你可以掛在別的目錄然後用符號連結 XD
比如說:
mount -o bind steamapps $CHROOT/home/$USER/steamapps
然後進入 chroot 環境後:
ln -s $HOME/steamapps $HOME/.local/share/Steam/steamapps
8. 原始的 $CHROOT/etc/apt/sources.list 如下:
deb http://repo.steampowered.com/steamos brewmaster main contrib non-free
deb [arch=amd64,i386] http://repo.steampowered.com/steam/ precise steam
當然您可以自己再加入其它的套件庫,
如:Debian Jessie (stable) 或 Debian Stretch (testing)。
既然是虛擬環境,當然要拿來亂搞了 XD
9. 因為架構的是 64 bit 的 chroot 環境,
請用以下指令來讓系統也可以安裝 i386 套件:
dpkg --add-architecture i386
因為相容性的關係,大部份 i386 套件會使用較保守的編譯參數。
因此可以預期的,64 位元的應用程式在效能上表現會比較好。
不過 Steam 裡的遊戲大多還是 i386 就是了。
10. 您可能會想安裝的套件:
locales xauth libc6:i386 libc6-i686:i386
libssl1.0.0:i386 libva1:i386 dbus-x11 libasound2 steam
libgl1-mesa-glx libgl1-mesa-glx:i386
libgl1-mesa-dri libgl1-mesa-dri:i386
libtxc-dxtn-s2tc0 libtxc-dxtn-s2tc0:i386
nvidia-driver | libgl1-fglrx-glx | i965-va-driver
以及各個 driver 的 i386 版本函式庫。
另,請執行 dpkg-reconfigure locales 讓系統支援 zh_TW.UTF-8。
11. 就如前文所說,請以一般者用權限來跑 steam。(記得 steam 不給用 root 跑...)
請將使用者加入以下群組:
audio dip video plugdev netdev input
12. steam 在啟動時會透過 dbus 查詢某些系統及網路參數。
為了讓 chroot 環境裡的 steam 能存取主系統的 dbus,
請先在【主系統】安裝以下套件:
dbus dbus-x11
並把 sysfs 及 run/dbus 掛到 $CHROOT 裡:
mount sysfs $CHROOT/sys -t sysfs -o nodev,nosuid,noexec,ro
mount -o bind /run/dbus $CHROOT/run/dbus
否則 steam 會 segfault 然後開不起來。
另,如果突然無法進入 steam,然後吐出如下錯誤訊息:
Segmentation fault $STEAM_DEBUGGER "$STEAMROOT/$STEAMEXEPATH" "$@"
那麼重啟主系統的 dbus 服務或許就能解決問題了:
/etc/init.d/dbus restart
還有,千萬不要在 chroot 裡啟動 dbus。
在技術上雖然可行,但問題真的超級多。會出事的!
在退出 chroot 環境時請記得 umount 這些目錄。
13. 請務必保持顯示卡驅動程式和主系統的版號相同,
不然可能連 Steam 都進不去。
也就是,您可能得設法自行安裝較新版本的驅動程式...
(比如說,直接裝 Debian Stretch 版的套件?)
14. 為了讓 chroot 裡的應用程式也能存取 X,也就是若您想跑視窗程式的話
您必須設定某些參數。
首先,在主系統以 $USER 身份滙出 X 憑証:
xauth extract $CHROOT/tmp/display $DISPLAY
然後,進入 chroot 環境後,以同一 $USER 身份匯入該 X 憑証:
xauth merge /tmp/display
然後指定 DISPLAY 參數,就行了:
export DISPLAY=:0
(註:這個參數依您的系統而定。
比如說,如果您有安裝 Display Manager 的話,或許會是 :1)
15. 我習慣不用任何的 Sound Server,ALSA 對我而言就很夠用了。
但為了讓遊戲有聲音,請把 ALSA 的目錄也掛進去:
mount -o bind /dev/snd $CHROOT/dev/snd
然後遊戲應該就會有聲音了... 應該啦!
一樣,在退出 chroot 環境時請記得 umount。
16. 或許有部份的遊戲還在使用 5、6 年前就不再被 Linux 支援的 OSS 聲音系統來發聲。
但預設上 debootstrap 不會建立這個 dev/dsp 檔,請手動建立:
mknod -m 660 /dev/dsp c 14 3
chown root:audio $CHROOT/dev/dsp
並在主系統中載入以下模組:
snd_pcm_oss
snd_mixer_oss
但還在用 OSS 的軟體應該很少很少了...
但若遊戲真的使用 OSS 發聲,
它可能會獨佔 /dev/dsp 導致其它也是使用 OSS 來發聲的應用程式無法出聲。
(有時會 hang 在那裡等待 /dev/dsp 回應)
這個似乎無法可想?
17. 而在 Linux 上最常見的 Sound Server 應該是 PulseAudio,
但敝人長久使用以來負面體驗太多,
(敝人使用 Linux 桌面已超過 15 年了...)
所以對 PulseAudio 有點敬謝不敏,在此就略過了。(饒了我!拜託~~)
但如果您真的沒有在用 PulseAudio,
請刪除以下檔案來讓遊戲不會試圖去呼叫 PulseAudio:
Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libpulse-simple.so.0.0.3
Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libpulse-simple.so.0
Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libpulse-simple.so.0.0.3
Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libpulse-simple.so.0
否則有些遊戲,如《返校》,呼叫 PulseAudio 失敗後會直接當掉無法執行。
18. 為了驅動搖桿,請把 /dev/input 及 /run/udev 目錄也掛進去:
mount -o bind /dev/input $CHROOT/dev/input
mount -o bind /run/udev $CHROOT/run/udev
並確認一下 input 這個群組的編號主系統和 chroot 環境裡的是不是相符。
搖桿相關問題可以參考前文中 SteamOS 段落。
一樣,在退出 chroot 環境時請記得 umount。
19. 您可能也希望在 Steam 裡使用中文輸入法。
我們假設您的主系統已安裝好 HIME 輸入法並已正確啟動,(喂喂!)
那麼,只要確認 steam 的 LOCALE 參數和 *啟動 HIME 時* 的 LOCALE 參數一樣,
(這可能是 HIME 的限制...)
然後設定好 XMODIFIERS 環境變數即可。例:
LC_ALL=zh_TW.UTF-8 XMODIFIERS=@im=hime steam
根據個人實測,Steam 只有在 Big Picture 介面下的輸入欄位有支援輸入法,
且只支援 XIM 的 ROOT 模式。所以也不是任何地方都叫得出 HIME 就是了。
但因為不是用 SteamOS 的 steamcompmgr 當 Window Manager,
所以輸入法視窗應該可以正常顯示出來。用起來應該有比較順手一點點。
另,或許有部份遊戲中可以打字,
所以您可能想在系統裡安裝完整的 HIME 套件及設定完整的輸入法環境變數,
然後祈禱這個遊戲能至少支援 XIM 輸入法...
但目前敝人手上的遊戲都無此需求,所以無從測試起。Sorry...
20. steam 在啟動後,於系統工具列上出現的圖示是白色系的。
您可能改用原本的藍色系圖示:
cd /usr/share/pixmaps
rm steam_tray_mono.png
ln -s steam.png steam_tray_mono.png
或,把原有藍色系圖示稍加修改成小一點點:(需安裝 imagemagick 套件)
cd /usr/share/pixmaps
convert steam.png -geometry 40x40 -background none -gravity center -extent 48x48 steam_tray_mono.png
21. 和 Windows 版 Steam 類似的,Linux 版的 Steam 也有字型太小的問題。
然後也和 Windows 版的類似:『無法可解』。XD
Linux 版的 Steam 雖然會透過 fontconfig 來抓字型,
但它基本上不會理會 fontconfig 的設定。
(fontconfig 可以設定縮放字型或是設定最小字體等等,但對 Steam 無效)
所以唯一的不完美解決方案,就是和 Wine 一樣,
改 Steam 所使用的 skin 的字型大小了...
22. 而系統工具列上的 Steam 圖示上選單的字型大小則是視使用者 GTK2+ 的設定。
可修改 ~/.gtkrc-2.0 來設定它的字型及大小,比如說:
gtk-font-name = "Noto Sans T Chinese Medium 20"
23. 在進行遊戲其間,Steam 似乎會關閉 X 的休眠功能。
也就是,只要 Steam 的遊戲開著,螢幕就不會進入省電模式。
這大概是因為 X 只會根據鍵盤滑鼠的動作來決定是否啟用休眠,
但『搖桿』卻不在它的偵測範圍內。
註:您可以用 xinput --list 確認一下,應該沒看到搖桿列在裡面
也就是,如果在使用搖桿玩遊戲時,因為鍵盤滑鼠長時間無動作,
所以 X 可能會進入休眠模式,然後擅自把螢幕給關了,
如果這時正當遊戲的緊要關頭,螢幕卻自己暗掉,玩家真的會抓狂。
所以 Steam 就把這個功能關掉了。XD
所以,如果要長時間離開電腦,
請先關閉遊戲,或手動關閉螢幕電源... orz
注:SteamOS 是在 steamos-session 裡把 dpms 關掉,然後自行進行電源管理。
但目前還我找不到 Steam 本身在哪裡把 dpms 關掉的...
用 chroot 環境來跑 SteamOS 主要是希望 Steam 的運作環境能越貼進 SteamOS 越好,
但打造 chroot 環境可真的不是普通的累。更精確得說,根本是恐怖大工程。
可是以實際運行結果來看,和用 Debian 直接跑 Steam 其實也沒有差很多啦!
(大概是因為 SteamOS 本來就是 Debian Based,環境沒有差異太大)
也就是... 根本在白做工 XDDDD
如果您是別的 Linux 發行版,如 ArchLinux 或 openSUSE,可能才會對這個比較有興趣。
但問題可能會卡在:如何在這個 chroot 環境裡安裝同版本的顯示卡驅動程式?XD
注:若想手動編譯驅動模組,Debian 有提供一個方便的輔助套件 module-assistant。
若有這類需求可以研究看看!
不過,這個 chroot 環境只要能成功建立起來,
您就可以方便得備份、複製、搬移、胡搞瞎搞這個 chroot 環境,
真的不行就還原或打掉重練即可。其實還是很方便的!
【注意】:在刪除 chroot 環境前,請務必確認還有沒有什麼目錄還掛在裡面,
若有什麼重要資料不小心也跟著一起被刪除掉,事情就大條了。
建議寫個 script 以防自己手太賤。
實在太多慘痛經驗了... (現在回想起來還是很心痛)
--
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血
--
Tags:
Steam
All Comments
By Necoo
at 2017-05-04T03:45
at 2017-05-04T03:45
By Adele
at 2017-05-09T02:13
at 2017-05-09T02:13
By Tracy
at 2017-05-13T04:47
at 2017-05-13T04:47
By Eden
at 2017-05-16T18:53
at 2017-05-16T18:53
By Valerie
at 2017-05-19T04:37
at 2017-05-19T04:37
By Dinah
at 2017-05-23T18:11
at 2017-05-23T18:11
By Connor
at 2017-05-25T10:45
at 2017-05-25T10:45
By Madame
at 2017-05-27T04:32
at 2017-05-27T04:32
By Cara
at 2017-05-31T04:32
at 2017-05-31T04:32
By Liam
at 2017-06-04T14:12
at 2017-06-04T14:12
By Steve
at 2017-06-08T14:55
at 2017-06-08T14:55
By John
at 2017-06-12T06:09
at 2017-06-12T06:09
By Gilbert
at 2017-06-14T14:58
at 2017-06-14T14:58
By Rae
at 2017-06-15T17:54
at 2017-06-15T17:54
By Zora
at 2017-06-16T17:12
at 2017-06-16T17:12
By Tristan Cohan
at 2017-06-17T18:27
at 2017-06-17T18:27
By Regina
at 2017-06-21T21:57
at 2017-06-21T21:57
By Dinah
at 2017-06-23T14:09
at 2017-06-23T14:09
By Belly
at 2017-06-25T09:28
at 2017-06-25T09:28
By Freda
at 2017-06-29T11:41
at 2017-06-29T11:41
By Bennie
at 2017-07-04T02:37
at 2017-07-04T02:37
By Ophelia
at 2017-07-06T10:48
at 2017-07-06T10:48
Related Posts
請問cs go可以兩個人一起打電腦嗎?
By Wallis
at 2017-04-30T19:03
at 2017-04-30T19:03
無線耳麥打fps遊戲的選擇
By Jacky
at 2017-04-30T13:44
at 2017-04-30T13:44
狙擊之王怎麼能出到3代?
By Aaliyah
at 2017-04-30T10:31
at 2017-04-30T10:31
【絕命精神病院2】3小時電影剪輯版(中字)
By Elvira
at 2017-04-30T09:35
at 2017-04-30T09:35
GO MISSION: SPACE TRAVEL免費領取
By Hamiltion
at 2017-04-30T08:42
at 2017-04-30T08:42