顯示廣告
隱藏 ✕
※ 本文為 Knuckles 轉寄自 ptt.cc 更新時間: 2017-04-28 21:33:10
看板 Steam
作者 Tetralet (小四)
標題 [心得] Linux 與 Steam(二):SteamOS
時間 Thu Apr 27 21:12:19 2017



Steam 有推自己的遊戲主機,裡面的系統叫做 SteamOS,
基本上可以說是 BigPicture 模式的 Steam + Gnome Shell 的混合體。

根據 Steam 官方的說法,SteamOS 是 Debian Jessie based 的系統,
現行版本是 2.0,發行代碼是 Brewmaster。(上一版是 Alchemist)
您可以下載它的官方安裝影像檔,並在您的電腦中自行安裝 SteamOS。
請參閱:http://store.steampowered.com/steamos/buildyourown

iso 檔位址:http://repo.steampowered.com/download/SteamOSDVD.iso


==== 【非.常.重.要!!】 ====
安裝 SteamOS 前請務必備份好您的資料,
包括安裝用隨身碟及安裝硬碟裡的所有資料!
除非你真的知道自己在做什麼。
==== 【非.常.重.要!!】 ====


安裝方法很簡單,就把它的 iso 檔寫入隨身碟或燒成光碟後,直接安裝即可。例:

  cat SteamOSDVD.iso > /dev/sdb

其中 /dev/sdb 為您的隨身碟位置。

雖然沒有寫得很明白,但 SteamOS 是 64bit 版的。且應該沒有提供 32bit 版。

如果是以傳統 BIOS 開機的話,SteamOS 光碟的開機選單就只有黑底白字,
然後安裝畫面是標準的 800x600 畫面。

反之如果是以較新的 UEFI 開機的話,SteamOS 光碟的開機畫面會有底圖,
因為已順利驅動顯示卡,進入安裝畫面後的字體大小會依螢幕解析度而異。
但在一些高解析度,像是 4K 螢幕上,字可能會小到難以閱讀...

但這個暫時應該無法可想。

  注:目前看來新版的 Debian-Installer 似乎也沒解決這個問題...

另,SteamOS 可以安裝在傳統 BIOS + MBR,或是較新的 UEFI + GPT 系統上,
或者是很歡樂的 BIOS + GPT 上,如果您的電腦是老 BIOS 系統但 HDD > 2TB 的話。
Linux 這方面老實說蠻強大的!XD

但建議不要用 UEFI + MBR 這個組合,
因為 UEFI 不會去讀取 MBR 分割表,也不使用 MBR 開機。
真的無法可想時,請用 BIOS 相容模式 + MBR 吧!

但如果您的電腦是新的 UEFI,但 HDD 上用的仍是舊的 MBR 分割區,
然後您已備份硬碟裡所有資料,願意為了 GPT 冒個險的話,
是可以用 gdisk 直接將 MBR 轉換成 GPT,
或自行按照 MBR 的分割表數據用 fdisk 手動切割。
硬碟裡的資料應該不會不見... 應該啦!

  注:MBR 位於磁碟的最前端;GPT 則是位於最末端。
      若硬碟上同時有 MBR 及 GPT 的話,安裝程式應該會優先採用 GPT 的分割資料。
      若只有 MBR 資料但卻以 UEFI 開機,然後上有之前以 MBR 安裝的作業系統的話,
      安裝程式會對此發出警告,因為有高機率會使得舊作業系統 無 法 開 機。

      所以可以的話,最好 MBR/GPT 擇一使用,並將另一個用不到的清除掉。

      在由 MBR 轉成 GPT 時,雖然大概不會出錯,
      但還是用 fdisk -l 注意一下磁碟的起始結束位置是不是完全符合。

      另,使用 UEFI 開機的話,還要額外準備一個以 FAT 格式化、
      ID 為 ESP System 的分割區做為開機用。

      在順利轉換至 GPT 後,可用以下指令清掉磁碟的 MBR:

        dd if=/dev/zero of=/dev/sda bs=512 count=1

【警告】:磁碟操作真的請小心為上,稍有不慎硬碟資料往往就這樣一去不復返,
          一切還請三思而後行!至少,把 fdisk -l 的結果存起來以做為不時之需。

不過真的搞砸時可以用 fdisk(如果你有留存舊的分割表數據)或用 teskdisk 救救看。
但我想最好不要走到這一步啦!資料備份真的很重要,磁碟救援可不是什麼太有趣的事...

對了,SteamOS 安裝光碟的開機選項中並不提供像 memtest86 之類的記憶體檢測程式。

請自行設法,或是安裝完成後自行安裝 memtest86 套件後再自行測試。
Linux 對於記憶體非常敏感,若記憶體有問題就能看到 Linux 搞不好連開機都有困難。


根據網友回報,nVIDIA 較舊的 legacy 系列顯示卡在安裝時會發生錯誤,
有部份驅動程式的 deb 檔未放入 SteamOSDVD.iso 中。
這或許沒有太簡單的解決方案,
還是找張比較新的顯示卡來玩 Steam 吧! XD


關於安裝磁碟的事前準備差不多這樣,讓我們開始安裝 SteamOS 吧!


安裝方式,如果你知道你在做什麼的話,請選【Expert install】。

SteamOS 的安裝程式是著名的 Debian-Installer。
安裝過程應該非常得簡單,
差不多就按【下一步】→【下一步】→【完成】。
不過有些小細節可以討論一下:

如果想看到安裝過程的詳盡資訊,可按 <Ctrl><Alt><F4> 到訊息輸出畫面;
<Ctrl><Alt><F2> 和 <Ctrl><Alt><F3> 裡有些內建指令可用;
像是用 route 來查看 routing 資訊、ip addr 看 IP 位址等等,
不過 SteamOS 在安裝過程中不需和網路連線就是了。該有的都已放在光碟裡了。
而安裝中的新系統是掛在 /target 目錄下,您還可以用 chroot 切換進去操作看看。

有些指令會隨著安裝進度才會被安裝進來,所以請耐心稍候。
但可能是因為是圖形安裝介面,並沒有 fdisk 程式可用。這一點還蠻不方便的...


在一開始,【選擇語言】這裡,
Debian-Installer 會利用您所選取的語言來決定『語系』『鍵盤』和『時區』。
比如說,若您在此選的是繁體中文,
那麼 Debian-Installer 會預設您的 LOCALE 參數是 zh_TW.UTF-8、
鍵盤配置是『漢語』(別問我那是啥... 以前明明是『美式鍵盤』)、
時區是在台灣或香港之類的。

為了避免日後麻煩,個人是建議選 C;
這是因為在 Linux 的 Console 下基本上是看不到中文字,
若在此被設定成 zh_TW.UTF-8 的話,
在 Console 下操作或出問題想看錯誤訊息時會造成極大困擾。

  注:其實裝個 jfbterm 就能在 console 下看到 UTF-8 文字了啦!
      但它需手動執行、無法輸入中文,且不支援 gpm。

但若您是 Linux 生手,可選【中文(繁體)】。
然後在安裝完成後,再修改以下的檔案來決定 Console 下所使用的語系:

  /etc/default/locale

將其內容清空即表示使用預設值【C】。

但不管在此選的是什麼,重新開機後的 Steam 預設會是英文介面就是了。


依據 Debian-Installer 的標準安裝程序,
接下來的步驟應該是試著驅動網路卡。
但 SteamOS 是採用離線安裝,所以並不會看到這個步驟。

但,如果 SteamOS 此時無法自動偵測到網路的話,
比如說您是用 WIFI 連上網,或是只是忘了插上網路線,
那麼網路設定這部份可能會被略過,然後重開機後將會沒有網路可用:
網路未設定,然後 /etc/resolv.conf 也不見了。

不過,重開機後就會交由 NetworkManager 處理了,大概不用擔心... 吧? XD

  注:如果重開機後發現無法連上網路的話,
      檢查一下 /etc/resolv.conf:

        nameserver 8.8.8.8

      及 /etc/network/interfaces:

        # The loopback network interface
        auto lo
        iface lo inet loopback

        # The primary network interface
        allow-hotplug eth0
        iface eth0 inet dhcp

      但我論事情不會那麼簡單就是了。XDDD

      如果可以的話,買個 IP 分享器架個區網會讓事情快樂很多。

      另,SteamOS 整個設定完成後,Steam 有內建的網路設定程式。
      但 SteamOS 還沒設定完成之前,這部份其實還蠻難搞的 XD


接下來是超重頭戲:『分割硬碟』。

安裝程式會自動替您分割好硬碟。
如果您已事先分割好硬碟,或是您很有自己的主見的話,
可以點兩下【取消所有對硬碟分割的變更】來重新讀取硬碟分割表,
這時您就能自由得分配設定系統如何安裝了。
如果把 /home 放在別的分割區,
SteamOS 的 / 大概需要 10GB 就非常足夠了。(安裝完只佔了約 4.1 GB)

而如果您的電腦是用 UEFI + GPT 的話,
還要另外準備一個 ESP 開機用分割區。
ESP 分割區一般建議是至少 500MB,格式必須為 fat。
但 SteamOS 的 GRUB 放在 ESP 分割區裡的檔案大概只有 250K。
如果您覺得冒點險也無妨的話,ESP 分割區或許可以給少一點。

  注:Windows 8.1 放在 ESP 裡的檔案大概有 30MB。


但請先記得將這個 ESP 分割區格式化為 vfat 格式。
或者在分割硬碟的畫面時,
切換至 Console 2 使用以下指令將其格式化:(假設它是 /dev/sda1)

  mkfs.fat /dev/sda1

因為 ESP 分割區裡搞不好已有別的開機程式,
所以安裝程式並不會試著格式化這個分割區,
但如果無法以 vfat 掛載這個分割區的話,

安裝程式會回報錯誤並拒絕進行後續安裝程序。


如果您是使用 SSD 硬碟,建議使用【ext4】檔案系統,
並在【掛載選項】中選取 discard, noatime, nodiratime。
如此應該可以有效延長磁碟壽命。

  注:包括 jfs 及 xfs 都有支援 discard 選項;但大部份還是建議用 ext4。

如果可以的話,在 /tmp、/var/tmp、/var/spool 甚至 /var/log 等等上面用 tmpfs,
應該可以再延長 SSD 硬碟的壽命。


另外要注意的一點是,ext4 預設上保留 5% 的磁碟空間以做為不時之需。
這是因為 ext3 在磁碟可用空間低於 5% 時,
磁碟效能因 fragmentation 的關係會突然雪崩式下滑,
所以這個『5% 的保留空間』是有其歷史因素的。
但在 ext4 裡已比較沒有這個問題,所以在『非系統碟』上,
可以放心得在安裝時將保留空間設為 0%,
或在事後使用以下指令將這個『保留空間』設為 0%:

  tune2fs -m 0 /dev/sdXY

  請參閱:https://www.redhat.com/archives/ext3-users/2009-January/msg00026.html


如果您的硬碟較新,是採用【Advanced format】的話,請注意硬碟磁區『對齊』的問題。

  注:2009 之後出廠的硬碟,包括 SSD 硬碟,有高機率是採用【Advanced format】


不過只要用較新版的 Linux 的 fdisk 程式,
在切割硬碟時就會自動替您處理好了。

  注:請不要再用 fdisk 裡舊式的『-u=cylinders』來分割硬碟了!


如果您有舊的 /home 分割區,
然後這不是您第一次安裝 SteamOS,
建議先刪除或更名其中的 steam 和 desktop 使用者目錄以避免發生難以預期的問題。

而關於 swap 分割區,請設定為記憶體 2 倍以上的空間以啟用休眠。
但若您用不到休眠功能,或者您是用 SSD 硬碟,
那可以考慮不用 swap,然後加大您的記憶體至 16G。XD


說到 Linux 的記憶體,考慮到會用到吃記憶體怪獸 Firefox 或 Google Chrome,
加上又要玩遊戲,一般建議至少要 8GB 以上。若能加到 16GB 就更好了。
之前用 Wine 在玩 WoW,單一程式都能毫不客氣直接吃掉 8GB 的記憶體了...


SteamOS 的安裝需要一點時間,真的很閒的話,
可以看看安裝光碟裡的 default.preseed 和 post_install.sh,
另外也可以看看 .disk/base_exclude 及 .disk/base_include,
大概就能掌握 SteamOS 到底是惡搞了啥 XD

而這也是敝人喜歡用 Linux 的主因之一:
一切公開透明,沒有秘密,一切只取決於您想花多少心力去挖掘... XD


在安裝快結束時,會有『tasksel』選項問您是否要安裝一些額外軟體。
請【務必】記得安裝『Debian desktop environment』,
不然重開機後很可能會是黑畫面 XD
而『GNOME』勾不勾沒差,有勾『Debian desktop environment』的話一定會裝。 XD

  注:如果您不是很想用 Gnome Shell,或是想替而使用其它的桌面環境的話,
      在此可以【不】安裝任何東西。SteamOS 其實並沒有綁死一定要用 Gnome Shell。
      但您等等還是得動些小手腳,不然 SteamOS 會開不起來。在後文中會說明。


而 SteamOS 預設的使用者帳號是 steam,
沒有密碼,但無法直接登入,角色類似系統帳號。

它也提供了桌面模式,應該就是那著名的 Gnome Shell,
使用者帳號是 desktop,也沒有密碼,但可用 sudo 執行任何程式。

  注:原始的帳密是 desktop/desktop,之後才會被清掉。

如果您覺得『沒有密碼』讓人很擔心的話,
可以在 SteamOS 整個安裝完成、已可以順利進入 Steam 的 BigPicture 介面後,
按下 <Ctrl><Alt><F2> 進入 Consle 2,以 desktop 登入,
然後利用以下指令指定新的密碼:

  passwd

但就算設定了密碼,SteamOS 在操作時不會用到這個密碼就是了 XD


另一個麻煩事是,預設的 steam 的使用者編號是 1001;而 desktop 是 1000。
如果說您有在玩多系統多重開機的話,因為檔案權限的限制,
這種雙帳號設計可能會很麻煩。

而解決方案,就是讓部份 desktop 帳號的檔案也能讓 steam 帳號存取。

比如說,您硬碟中已有內含數十 GB 的 steamapps 目錄想分享給 SteamOS 使用,
但其權限已為編號 1000 的 desktop:desktop,編號 1001 的 steam 無法存取。
那麼,只要把 steam 加入 desktop 群組,就大概能解決問題了:


  adduser steam desktop

而或者,也可以用 setfacl 指定檔案的 ACL:

  # 指定 steamapps 目錄中新建的檔案會預設給 steam 有 rwx 的權限
  setfacl -m d:u:steam:rwx steamapps

  # 在 steamapps 目錄所有現有檔案讓 steam 有 rwx 的權限
  setfacl -R -m u:steam:rwx steamapps

但有時事情變很麻煩時,可以考慮,比如說,
把 steamapps 搬到哪個分割區的某個共用資料夾,
然後設定好權限後,再用符號連結之類的。


另,講到帳號密碼等安全性問題,
Steam 也監聽了某些 Port 做為網路串流、P2P 或語音通訊之用。
請參閱:

  https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=traditional chinese


在安裝的最後,會安裝 GRUB 開機程式。

如果是在傳統的 BIOS 系統下安裝的話,
這時安裝程式會詢問是否將 GRUB 安裝至 MBR?請選【是】;
接下來會詢問 GRUB 的安裝位置,請選『手動輸入安裝位置』,
然後理論上是填入 /dev/sda...
可以用光棒直接選 /dev/sda 啦,但不知為何偶爾會漏裝部份檔案導致無法開機。
倘若如此,只要手動跑一次救援模式【Rescue mode】重建 GRUB 後應該就能開機了。

而如果是在較新的 UEFI 系統下安裝的話,
當然也會安裝 GRUB 開機程式。
但因為會固定安裝到 ESP 這個開機用分割區裡,
所以就沒再多詢問使用者安裝位置了。

您可以觀察到,SteamOS 原始的 GRUB 底圖是 Debian 版的,
後來才更新為 SteamOS 自己提供的 XD

另,在【Rescue mode】中的【重新安裝 GRUB 開機程式】,
指的是再跑一次 grub-install 指令。
在某些極罕見的狀況下,(如:您改變了分割區的 UUID)
請先進入【在 /dev/sda1 裡執行 shell】項目,
然後手動執行 update-grub2 重建 GRUB 項目,

完成後再跑一次【重新安裝 GRUB 開機程式】才行。


以上的 /dev/sda 等等指的是您的主系統硬碟。請依情況自行修改。


如果您在前文中並沒有安裝【Debian desktop environment】的話,
此時先不要重開機進 SteamOS。請再一次用光碟開機後,選【Rescue mode】,
在設定好語系、時區、鍵盤、後,選取 /dev/sda1 進入救援模式,
然後選【在 /dev/sda1 裡執行 shell】,並安裝以下套件:
(以下是假設您想用的桌面環境是 IceWM。icewm 可替換成別的桌面環境,
  如 task-xfce-desktop 或 cinnamon-desktop-environment 之類的)

  icewm dbus-x11 xorg accountsservice

  注:您可能得手動新增某些項目至 /etc/apt/sources.list 中,
      然後要先 apt-get update 才能安裝這些套件...

並修改 /usr/bin/post_logon.sh,將 gnome 替換成 icewm-session 之類的:

  dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetXSession string:icewm-session

可以猜到的,這是在指定編號 1000 的使用者(desktop)所使用的 Session Manager。
事後可以再用相同指令指定 desktop 用別的 Session Manager。

另外,/usr/bin/steamos-session 也要改:

  export HOMETEST_DESKTOP_SESSION=icewm-session

但似乎不改也沒關係...

這樣幾個小步驟就能順利把 SteamOS 的『桌面環境』改成用 IceWM 了!


如果您有著無限惡搞魂,或許您還可以試著用 xterm 當 SteamOS 的『桌面環境』 XD

您可以把上文中的設定改填 xterm,
然後再手動將 xterm 指定為預設的 x-session-manager:

  cd /etc/alternatives
  ln -s /usr/bin/xterm x-session-manager

並新增 /usr/share/xsessions/xterm.desktop 如下:

  [Desktop Entry]
  Exec=xterm

把 xterm 當 x-session-manager 是很有趣啦,
但在完全沒有 Window Manager 的狀況之下,實際操作起來有點痛苦... XD


另,您可以修改 ~/.Xresources 如下:(desktop 及 steam 都要)

  xterm*faceName:               DejaVu Sans Mono:style=Book
  xterm*faceNameDoublesize      WenQuanYi Micro Hei Mono:style=Regular
  xterm*faceSize:               18
  xterm*VT100.geometry:         120x40
  xterm*saveLines:              8192
  xterm*background:             black
  xterm*foreground:             white

及在 ~/.xsessionrc 中新增以下一行:

  xrdb -merge ~/.Xresources

這會讓 xterm 用起來更愉快一點。


然後,重開機。


在重開機後,第一次開機時,SteamOS 會自行下載 steam、編譯驅動模組並重開機數次。
請耐心稍候... (搞不好會等很久)


如果重開機後是直接進入了桌面環境但什麼事都沒發生,
大概是您在上文中使用其它的桌面環境,但這個桌面環境不支援 ~/.config/autostart。
請打開 xterm 手動執行 /usr/bin/post_logon.sh,
然後就會開始安裝 Steam 用戶端程式了。


等到順利進入 SteamOS 之後,進去的應該是 Steam 的 BigPicture 介面。

如果您想使用其它的指令操作 SteamOS,
可用 <Ctrl><Alt><F2~F6> 切換至其它 console 介面後以 desktop 登入操作。
或者,安裝 ssh 由遠端操作.
或是啟用 Gnome Shell 桌面(或您喜愛的桌面環境)後再切換過去,
它將會是 <Ctrl><Alt><F8>,DISPLAY=:1,預設是以 desktop 登入。

在切換去桌面環境後,切換回 Steam 的指令是 /usr/bin/returntosteam.sh。
您可能想在桌面上弄個捷徑以方便按一下就回 Steam 之類的...


也可以利用以下指令,直接由 desktop 切換成 steam 帳號:

  sudo su - steam

如果遇到什麼狀況,真的搞不定的話,
可以切到 <Ctrl><Alt><F2> 然後按 <Ctrl><Alt><Del> 就會跑重新開機程序了。XD


SteamOS 的硬體調校得算還不錯,但畢竟用的套件版本都有點舊了,
所以若您原有的 Linux 系統效能跑起來竟和在 SteamOS 下差很多的話,
請檢查原系統是少裝了什麼套件、未安裝 DKMS 系統,或是哪個韌體未載入之類的。

如果用一些 3D 效能測試程式來跑的話,
像用 Unigine Heaven Benchmark 4.0,(它同時提供了 Windows 及 Linux 版本)
我的電腦成績如下:

  Windows7+D3D11:  54.1  100%
  Windows7+D3D9:   50.5   93%
  Windows7+OpenGL: 47.7   88%
  SteamOS+OpenGL:  49.4   91%
  Wine-staging:    25.9   48%
  Wine:            21.4   40%

可以看到的,Win7 和 SteamOS 若都跑 OpenGL 的話,
兩者的 3D 效能其實在誤差範圍內,有時 SteamOS 的效能甚至還好一點。

但不管 Linux 的 3D 效能其實不差,也不管 Steam 是如何努力調校,
大部份的遊戲都並不是專為 Linux 出的,也就是十之八九都是移植作。
(看遊戲的 Log,有些遊戲其實是在呼叫 DX11 轉 OpenGL 的函式庫)
所以在 SteamOS 上有部份遊戲的效能並不夠好。


比如說,《Tomb Raider 2013》裡有個選項可以測試簡單的基本效能。
在 Windows 7 下,選用【基本畫質】,我的電腦可以跑出 FPS 100 左右的成績,
但在 SteamOS 上同樣的硬體設備同樣的設定,FPS 大概只有 75。
如果是 Wine 則是 40 不到... 只能說慘不忍睹。


而 SteamOS 在使用上還有一個麻煩的地方就是『設定搖桿』。

基本上 SteamOS 預設使用者是使用 Steam 自家的搖桿。

如果您真的是使用 Steam 自家出的搖桿,
它會直接載入預設的搖桿佈局,然後就能在 SteamOS 裡直接使用,
不過想改變內建的搖桿佈局並不容易...

但如果您的搖桿 SteamOS 有抓到但被辨識為『非』Steam 自家搖桿,
如 PS3、PS4 或其它市面上販賣的它牌搖桿,
那反而有提供介面可以直接設定這個搖桿的佈局方式。

在以上兩種狀況之下,只要進入遊戲應該就能順利直接抓到搖桿了。
Steam 在啟動遊戲時會傳送一個 SDL_GAMECONTROLLERCONFIG 環境變數給遊戲,
該環境變數裡包含了搖桿的 ID 及按鈕及搖桿等佈局方式,
遊戲會讀取這個環境變數並利用這些資料來設定搖桿。

但如果您的搖桿可以在 SteamOS 裡正常操作,但遊戲卻無法辨識,
這時您可能得手動設定了。

這個可能發在 Xbox 360 的搖桿上。
SteamOS 是能正確得辨識出 Xbox 360 搖桿,且將其『視同 Steam 搖桿』,
但不知為何卻而傳送了錯誤的搖桿的 ID 給遊戲,
(傳過去的好像是 Steam 搖桿的 ID,可能是 Bug),
導致遊戲用錯誤的資料來初始化搖桿,結果當然是不會動作。

解決方案有點麻煩。首先,要想辨法得知自己搖桿的 ID。
方法是安裝 input-utils 套件,
然後執行 lsinput,看看您的搖桿有沒有列在裡面。
比如說:(請注意 vendor、product 及 version 等資料。)

  lsinput:

    /dev/input/event5
       bustype : BUS_USB
       vendor  : 0x45e
       product : 0x28e
       version : 276 (0x114)
       name    : "Microsoft X-Box 360 pad"
       phys    : "usb-0000:00:12.2-2.2/input0"

而 SteamOS 裡搖桿的 ID 是採取 SDL Gamepad 格式,
並且是以 Little-Endian 編碼:

  SDL 制式格式:BUSTYPE 0000 VENDOR 0000 PRODUCT 0000 VERSION 0000
  lsinput 結果:    0x3 0000  0x45e 0000   0x28e 0000   0x114 0000
  轉成 LE 編碼:   0300 0000   5e04 0000    8e02 0000    1401 0000

  註:BUS_USB 固定為 0x3,定義在 linux/input.h 裡。

所以這個搖桿的 ID 就是 030000005e0400008e02000014010000。

因為 SteamOS 是傳遞了錯誤的 ID 資料給遊戲,
所以我們必須找出 SteamOS 所傳遞的錯誤參數,然後替代成正確的參數就行了。

最簡單的方式就是直接去 /proc 裡撈環境參數,
方法是,比如說,先找出正在跑的遊戲的 PID:

  ps ax | grep TombRaider


然後進入 /proc/$PID 後下達以下指令:

  sed 's/\x0/\n/g' environ

您可能會看到一行類似:(如果您有多個搖桿,那大概會有數行)

  SDL_GAMECONTROLLERCONFIG=03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,

然後把那個 03000000de280000fc11000001000000
小心得替換成 030000005e0400008e02000014010000 後,
把它當成環境變數傳入 Steam 即可。例:

  export SDL_GAMECONTROLLERCONFIG="030000005e0400008e02000014010000,Steam Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,"

而或者,大部份支援搖桿的遊戲資料夾裡,
多有個 SDLGamepad.config 或 controllermapping.txt,
它是通用的 SDL Gamepad 的設定檔,用的也是 SDL Gamepad 格式。
把那一行寫入這個檔案後,重開遊戲應該就能順利抓到這個搖桿了。

另,理論上,USB 搖桿大多使用的是 xpad 模組。

如果使用的是 XBox360 搖桿,也有人推薦用 xboxdrv 來驅動它。
但個人認為應該用不著就是了。


如果您的電腦是採用 Windows/SteamOS 雙開機的話,
因為 Windows 採用的是本機 BIOS 裡的時間,但 SteamOS 採用的是『世界標準時間』,
因此您可能會發現系統時間老是差 8 個小時。XD
解決方法是請把 /etc/adjtime 裡的『UTC』改成『LOCAL』,
讓 SteamOS 和 Windows 一樣採用『本機時間』即可。


而 SteamOS 本身套件庫裡大概只有 Debian Base、Steam 及 GNOME:

  deb http://repo.steampowered.com/steamos brewmaster main contrib non-free
  deb [arch=amd64,i386] http://repo.steampowered.com/steam/ precise steam

如果您有用到其它套件,可以加入 Debian Jessie 的檔案庫後安裝:

  deb [arch=amd64,i386] http://ftp.tw.debian.org/debian/ jessie main contrib non-free
  deb [arch=amd64,i386] http://security.debian.org/ jessie/updates main contrib non-free
  deb [arch=amd64,i386] http://ftp.tw.debian.org/debian/ jessie-updates main contrib non-free

【注意】混用 SteamOS 和 Debian Jessie 的套件庫並非明智之舉。
        但有時人生是很無奈的...

對此,您可以在 /etc/apt/apt.conf 中設定,
除非找不到套件,否則儘量安裝 SteamOS 套件:

  APT::Default-Release brewmaster;

這樣就能確保主要安裝的都是 SteamOS 所提供的套件了。


比如說,您希望 SteamOS 在開機後,NumLock 燈能自動亮起。
您可以安裝 numlockx 套件來達成這項需求。

或者,您還在使用 ADSL 撥接上網,
您可以安裝 pppoeconf 套件,
然後執行 pppoeconf,按照畫面上的指示來設定 PPPoE 連線。


而因為有了 Debian Jessie 的強力支援,
是可以把 SteamOS 安裝成完整的桌面環境。
但麻煩是,發行於 2015 年 4 月的 Debian Jessie 的套件也有點舊了,
Debian 向來大概是 2 年才大更新一次...
一般喜歡嘗鮮的使用者應該等不及。


如果您想安裝其它的非官方套件,如上文說的 wine-staging,
也可以加入其 Debian Jessie 版的套件庫:

  deb https://dl.winehq.org/wine-builds/debian/ jessie main

然後安裝即可。(但它是用 https,請先安裝 apt-transport-https 套件)


比如說,Steam 上面也有搜尋欄,也可以和朋友聊聊天,
所以您大概會想在 SteamOS 上使用中文輸入法。
但,一講到中文輸入法嘛... 嗯... (突然好想逃走)

讓我們假設您和敝人一樣使用的是 HIME 輸入法... (咳咳)
您可以加入 Luna's Debian/Ubuntu/Mint Archiver 的套件庫:

  deb [arch=amd64,i386] http://debian.luna.com.tw/jessie ./

後,安裝 hime 套件:

  apt-get install hime libhime:i386

並編輯 /etc/X11/Xsession.d/90steam-init 如下:
(您也可以順便把上文中的 SDL_GAMECONTROLLERCONFIG 放在這裡)

  export SDL_GAMECONTROLLERCONFIG="030000005e0400008e02000014010000,Steam Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,"
  export LANGUAGE=zh_TW
  export LC_CTYPE=zh_TW.UTF-8
  export LC_MESSAGES=zh_TW.UTF-8
  export XMODIFIERS="@im=hime"
  export GTK_IM_MODULE=hime
  export QT_IM_MODULE=hime
  /usr/bin/hime &

重開機後,應該或許可能就有輸入法可用了!

當然了,在 /etc/X11/Xsession.d/90steam-init 裡設定 locale 並不是很正規的做法。
但... 嗯,反正會動就好,事情能簡單解決最高!XD

但使用 HIME 做為輸入法還有個問題...
其實 SteamOS 上在跑的是個名為 steamcompmgr 的 Window Manager,
但它本身並沒有實作太多 Window Manager 的功能,
加上 Steam 只有支援 XIM 輸入法的 ROOT 模式,
所以即使按下 <Ctrl><Space> 鍵切換至 HIME,
HIME 的輸入法視窗還是出不來。(其實是有出來但未顯示)
所以您可能得『盲打』了... orz

  請參閱:https://github.com/ValveSoftware/SteamOS/wiki/steamcompmgr

為此,您可以先切回 desktop 那邊的桌面環境先把 HIME 設定好,
再把設定 /home/desktop/.config/hime/ 複製至 steam 那裡(注意檔案權限),
那 hime 用起來或許就會比較順手了...


而 Steam 內建的字型應該是 ttf-wqy-microhei(文泉驛微米黑),
它是 Google 的 Droid Sans 字體的補完版,基本上是採用簡體中文字筆劃。

Google 的 Droid Sans 是一個非常精簡美觀的字體,字集包山包海但才不到 5MB。
如果您想找它的正體中文筆劃版,以下為網友自改版:

  https://github.com/pesder/Droidfont-tw
GitHub - pesder/Droidfont-tw
[圖]
Contribute to Droidfont-tw development by creating an account on GitHub. ...

 

或是改用著名的 Noto Font(思源黑體):

  https://github.com/adobe-fonts/source-han-sans/tree/release
GitHub - adobe-fonts/source-han-sans at release
[圖]
source-han-sans - Source Han Sans ...

 


另,Steam 自行維護了包含 debian base、steam 及 gnome 等等大量的套件庫,
老實說這真的是很恐怖的吃力不討好的苦差事。
尤其安全更新方面,不是夠專業是很難勝任的...

雖然我論 steam 只是 sync Debian Jessie 罷了 XD


然後,最近 Debain 新的 stable 版本,Debian Stretch 也差不多要推出了,
Steam 應該也會因應出 3.0 吧?


如果一切順利,其實 SteamOS 是個用起來很舒服的系統,
加上 Steam 隨點即玩的市集,老實說真的有正中 Linux 玩家的心坎。
但 SteamOS 支援的遊戲有點少,尤其是日系大作大部份都沒有移植到 Linux 上,
畢竟 0.77% 的市佔真的很難吸引到遊戲開發商...


《待續...》


--
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.18.3
※ 文章代碼(AID): #1P0Uv71K (Steam)
※ 文章網址: https://www.ptt.cc/bbs/Steam/M.1493298759.A.054.html
juiclykiller: EUFI啥鬼1F 04/27 21:36
Shuoger: UEFI吧    怎麼可以這麼認真地打一堆錯字。 XD2F 04/27 21:48
嗚嗚...
※ 編輯: Tetralet (1.34.18.3), 04/27/2017 21:55:50
kkkkkkq: 在macbook上會不會有steamOS效能比較高的情況?他的intel3F 04/27 22:50
kkkkkkq: 內顯的驅動怎麼樣?
我論差不多?SteamOS 裡的 intel 驅動模組就只有 Xorg 內建的及 i965-va-driver。
※ 編輯: Tetralet (1.34.18.3), 04/27/2017 23:56:07
VISprout: 認真推,也來玩玩steam OS5F 04/28 00:34
WindSucker: debian大法好6F 04/28 00:42
HuangJS: 認真推7F 04/28 01:12
LoserPenguin: 推個8F 04/28 01:23
Bencrie: 日系就 AVG 比較有機會上 Linux,不然就是 Unity based9F 04/28 01:57
Bencrie: 要玩日系大作還是買家用主機比較快
SOC: 有用Linux玩遊戲的人必推11F 04/28 07:21
trashprince: 推! 也可以裝發行版裡的steam12F 04/28 09:37
kaito12: 認真推,不知道為什麼總覺得未來某個時間點回頭看這篇文章13F 04/28 10:10
kaito12: 一定會流眼淚 orz
CrazyMika: 認真給推~但我還是繼續用windows方便 XD15F 04/28 14:38
aeolus0829: 熱血推16F 04/28 15:04
victor5517: 推17F 04/28 15:21
gghhgghh: 認真推18F 04/28 17:40
jerry92277: 紅明顯,良心建議別碰steam os,問題一堆,除非原本就19F 04/28 21:28
jerry92277: 有linux底子不然自己裝來玩根本就是自虐
jerry92277: 用deb包安裝更糟,不先花個半小時處理dependency,ste
jerry92277: am根本連開都打不開

--
※ 看板: Games 文章推薦值: 0 目前人氣: 0 累積人氣: 223 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇