如何玩遊戲 - Linux

By Charlotte
at 2016-04-18T22:43
at 2016-04-18T22:43
Table of Contents
比較新的教學文...就不另外發了> , ^
http://lifed.gitlab.io/blogger/2016/08/26/PCI-passthrough-2/
---
linux很麻煩但我喜歡,喜歡它帶給我的問題與解決的成就感,它也來許多新穎的觀點,
好讓我們學習、吸收與成長,即使這只是linux世界中的一個點。
本篇基於arch的antergos,其他的發行商就抱歉啦!:Q
題外話...線上安裝antergos的時候,有些設定檔不正確,導致pci passthrough的一些
問題,要跟的話請用arch或manjaro。
---
Wine-staging
說到wine大家都知道,說到玩遊戲專用的wine非wine-staging莫屬。
詳情請見官方網...(這不是本篇的重點)
---
BIOS設定
https://db.tt/NN94KqlB
https://db.tt/3i01FdeF
https://db.tt/nFMruNv1
這裡一個大重點請用HOST的顯卡開機
舉例來說
我有HD4600(Host, linux)與R9-390(Guest, win)
開機必須使用HD4600(linux)開機絕對不是用R9-390那張顯卡去開機,這點錯後面全都不用做了。
大概是這幾點沒講好又用影片混淆了視聽
在此先測試的人說聲抱歉了<(_ _)>
---
qemu/kvm(pci passthrough)
先看影片(沒興趣就可以左轉了) :<
https://www.youtube.com/watch?v=37D2bRsthfI
簡單來講linux開一台win虛擬機,而win有近乎原生的效能(意味著你可以玩任何遊戲)。
實際上我也正在使用,這個方法有許多意想不到的優點存在,最後在慢慢舉例吧!
1. 電腦配備必須要有兩張(或以上)GPU(intel+amd, intel+nv, nv+nv, etc...)
2. 虛擬技術支援且BIOS記得打開...
備註:需要一顆很強大的內心
配備
CPU: i7-4790, RAM: 24g, GPU: intel hd4600 + r9-390, monitor: vh242, mg279q
內顯--hdmi-->vh242
外顯--dp to mini dp -->mg279q
安裝必要軟體
# yaourt -S qemu linux-vfio rpmextract synergy bridge-utils
注意這裡使用原生的kernel(3.12以上)也可以,但須自行測試。
---
設定
---
# vim /etc/default/grub
#pcie_acs_override=downstream必須使用linux-vfio才有效果
...
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on intel_iommu=pt pcie_acs_override=downstream hugepagesz=2M transparent_hugepage=never
"
…
# grub-mkconfig -o /boot/grub/grub.cfg
# vim /etc/mkinitcpio.conf
...
MODULES="vfio_pci vfio vfio_iommu_type1 vfio_virqfd"
...
# mkinitcpio -p linux-vfio
# vim /etc/modprobe.d/kvm-iommu.conf
#[重要]這部份nv passthrough的額外參數要在找一下,有關於效能、體驗的問題。
options kvm allow_unsafe_assigned_interrupts=1
options vfio_iommu_type1 allow_unsafe_interrupts=1
options i915 enable_hd_vgaarb=1
# lspci -nn
紅色為擷取重點
...
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii PRO [Radeon R9 290] [1002:67b1] (rev 80)
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Device [1002:aac8]
…
# /etc/modprobe.d/vfio.conf
#如果不要顯卡音效可以不必加入
options vfio-pci ids=1002:67b1,1002:aac8
options vfio-pci disable_vga=1
# vim /etc/fstab
...
hugetlbfs /dev/hugepages hugetlbfs mode=1770,gid=78 0 0
...
# vim /etc/sysctl.d/40-hugepage.conf
#設定公式"qemu設定的記憶體/2在多一點點"
#如這裡是12G那就是1024*12/2+100
vm.nr_hugepages = 6244
# brctl addbr br0
# 修正有連線能力裝置的名稱
# brctl addif br0 eno1
# ip link set up dev br0
# dhcpcd br0
# 選填 是否給eno1裝置IP(供synergy使用)
# ifconfig eno1 123.123.123.123
---
實戰
---
下載UEFI的BIOS edk2.git-ovmf-x64
https://www.kraxel.org/repos/jenkins/edk2/
# rpmextract.sh edk2.git-ovmf-x64-*.rpm
# cp -R ./usr/share/* /usr/share
qemu測試開啟看pci passthrough是否正常啟動
# qemu-system-x86_64 \
-enable-kvm \
-m 2048 \
-cpu host,kvm=off \
-vga none \
-device vfio-pci,host=01:00.0 \
-drive if=pflash,format=raw,readonly,file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd
如果您到這邊都沒問題
1. pci passthrough沒問題
2. ovmf沒問題
來真的
下載 安裝win系列所缺少的驅動
https://fedorapeople.org/groups/virt/virtio-win/repo/latest/
https://db.tt/ZKMgFjFw
請依照Script的內容修改符合的位置,啟動後應當就像重灌win系列一樣,只是要多一個事先給virto的驅動。
# sh ./vm.sh
安裝完win系列開始設置synergy,linux為伺服端(server)而win為連線端(client)。
紅色部份為ip 記得server IP填寫在client那邊
橘色部份client的名稱要完全與server的設定頁面相同
螢幕的位置就照你想要的位置放
advanced server settings有一個use relative mouse moves(滑鼠相對移動?要開啟)
按下Scroll lokc來鎖定當下螢幕
https://db.tt/de8NPVd8
[喔嗚!?我記得synergy nightly可以好好試用試用...]
以上大功告成...
---
其他部份
---
像是可以啟用samba來達到win與linux之間的資料傳遞
https://db.tt/uKQLQSpw
然而samba又存在一些程式開啟上的問題,這時可以使用mklink
mklink /D "C:\Users\USERNAME\Desktop\SOMEWHERE" "\\1.1.1.111\galgame"
有些程式依然無解...萬惡的battle.net
遊戲在全螢幕的狀態下,滑鼠仍然可以在linux與win之間來去自如,像是開實況要開個網頁監控之類的就可以方便管理。
像是freesync需要在全螢幕下執行,這個方法就很方便了!左邊狂打game右邊逛網頁之類的無壓力!
鑑於板上好像沒有相似的文章來個拋磚引玉
希望之後會跑出virtmanager之類的host-passthrough…
這樣的虛擬機已經使用半年了且完全沒什麼問題,這也不一定僅可以玩遊戲,有問題的大多都是程式先天不相容(win10之類的)。
the division, hots, ark, gta5等等都跟原生win的電腦一樣爽爽跑,實在是沒有理由不去使用。
參考資料
https://bbs.archlinux.org/viewtopic.php?id=162768 (Arch的討論串)
裡面包含「虛擬機成功與失敗資料庫」,還有一堆問題與解決的方法。
http://vfio.blogspot.tw/ (aw大的blog)
裡面從硬體挑選到實機模擬講鉅細靡遺,但是裡面講的都很「英文」(沒有複製貼上的餘地)。
--
--
http://lifed.gitlab.io/blogger/2016/08/26/PCI-passthrough-2/
---
linux很麻煩但我喜歡,喜歡它帶給我的問題與解決的成就感,它也來許多新穎的觀點,
好讓我們學習、吸收與成長,即使這只是linux世界中的一個點。
本篇基於arch的antergos,其他的發行商就抱歉啦!:Q
題外話...線上安裝antergos的時候,有些設定檔不正確,導致pci passthrough的一些
問題,要跟的話請用arch或manjaro。
---
Wine-staging
說到wine大家都知道,說到玩遊戲專用的wine非wine-staging莫屬。
詳情請見官方網...(這不是本篇的重點)
---
BIOS設定
https://db.tt/NN94KqlB
https://db.tt/3i01FdeF
https://db.tt/nFMruNv1
這裡一個大重點請用HOST的顯卡開機
舉例來說
我有HD4600(Host, linux)與R9-390(Guest, win)
開機必須使用HD4600(linux)開機絕對不是用R9-390那張顯卡去開機,這點錯後面全都不用做了。
大概是這幾點沒講好又用影片混淆了視聽
在此先測試的人說聲抱歉了<(_ _)>
---
qemu/kvm(pci passthrough)
先看影片(沒興趣就可以左轉了) :<
https://www.youtube.com/watch?v=37D2bRsthfI
簡單來講linux開一台win虛擬機,而win有近乎原生的效能(意味著你可以玩任何遊戲)。
實際上我也正在使用,這個方法有許多意想不到的優點存在,最後在慢慢舉例吧!
1. 電腦配備必須要有兩張(或以上)GPU(intel+amd, intel+nv, nv+nv, etc...)
2. 虛擬技術支援且BIOS記得打開...
備註:需要一顆很強大的內心
配備
CPU: i7-4790, RAM: 24g, GPU: intel hd4600 + r9-390, monitor: vh242, mg279q
內顯--hdmi-->vh242
外顯--dp to mini dp -->mg279q
安裝必要軟體
# yaourt -S qemu linux-vfio rpmextract synergy bridge-utils
注意這裡使用原生的kernel(3.12以上)也可以,但須自行測試。
---
設定
---
# vim /etc/default/grub
#pcie_acs_override=downstream必須使用linux-vfio才有效果
...
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on intel_iommu=pt pcie_acs_override=downstream hugepagesz=2M transparent_hugepage=never
"
…
# grub-mkconfig -o /boot/grub/grub.cfg
# vim /etc/mkinitcpio.conf
...
MODULES="vfio_pci vfio vfio_iommu_type1 vfio_virqfd"
...
# mkinitcpio -p linux-vfio
# vim /etc/modprobe.d/kvm-iommu.conf
#[重要]這部份nv passthrough的額外參數要在找一下,有關於效能、體驗的問題。
options kvm allow_unsafe_assigned_interrupts=1
options vfio_iommu_type1 allow_unsafe_interrupts=1
options i915 enable_hd_vgaarb=1
# lspci -nn
紅色為擷取重點
...
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii PRO [Radeon R9 290] [1002:67b1] (rev 80)
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Device [1002:aac8]
…
# /etc/modprobe.d/vfio.conf
#如果不要顯卡音效可以不必加入
options vfio-pci ids=1002:67b1,1002:aac8
options vfio-pci disable_vga=1
# vim /etc/fstab
...
hugetlbfs /dev/hugepages hugetlbfs mode=1770,gid=78 0 0
...
# vim /etc/sysctl.d/40-hugepage.conf
#設定公式"qemu設定的記憶體/2在多一點點"
#如這裡是12G那就是1024*12/2+100
vm.nr_hugepages = 6244
# brctl addbr br0
# 修正有連線能力裝置的名稱
# brctl addif br0 eno1
# ip link set up dev br0
# dhcpcd br0
# 選填 是否給eno1裝置IP(供synergy使用)
# ifconfig eno1 123.123.123.123
---
實戰
---
下載UEFI的BIOS edk2.git-ovmf-x64
https://www.kraxel.org/repos/jenkins/edk2/
# rpmextract.sh edk2.git-ovmf-x64-*.rpm
# cp -R ./usr/share/* /usr/share
qemu測試開啟看pci passthrough是否正常啟動
# qemu-system-x86_64 \
-enable-kvm \
-m 2048 \
-cpu host,kvm=off \
-vga none \
-device vfio-pci,host=01:00.0 \
-drive if=pflash,format=raw,readonly,file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd
如果您到這邊都沒問題
1. pci passthrough沒問題
2. ovmf沒問題
來真的
下載 安裝win系列所缺少的驅動
https://fedorapeople.org/groups/virt/virtio-win/repo/latest/
https://db.tt/ZKMgFjFw
請依照Script的內容修改符合的位置,啟動後應當就像重灌win系列一樣,只是要多一個事先給virto的驅動。
# sh ./vm.sh
安裝完win系列開始設置synergy,linux為伺服端(server)而win為連線端(client)。
紅色部份為ip 記得server IP填寫在client那邊
橘色部份client的名稱要完全與server的設定頁面相同
螢幕的位置就照你想要的位置放
advanced server settings有一個use relative mouse moves(滑鼠相對移動?要開啟)
按下Scroll lokc來鎖定當下螢幕
https://db.tt/de8NPVd8
[喔嗚!?我記得synergy nightly可以好好試用試用...]
以上大功告成...
---
其他部份
---
像是可以啟用samba來達到win與linux之間的資料傳遞
https://db.tt/uKQLQSpw
然而samba又存在一些程式開啟上的問題,這時可以使用mklink
mklink /D "C:\Users\USERNAME\Desktop\SOMEWHERE" "\\1.1.1.111\galgame"
有些程式依然無解...萬惡的battle.net
遊戲在全螢幕的狀態下,滑鼠仍然可以在linux與win之間來去自如,像是開實況要開個網頁監控之類的就可以方便管理。
像是freesync需要在全螢幕下執行,這個方法就很方便了!左邊狂打game右邊逛網頁之類的無壓力!
鑑於板上好像沒有相似的文章來個拋磚引玉
希望之後會跑出virtmanager之類的host-passthrough…
這樣的虛擬機已經使用半年了且完全沒什麼問題,這也不一定僅可以玩遊戲,有問題的大多都是程式先天不相容(win10之類的)。
the division, hots, ark, gta5等等都跟原生win的電腦一樣爽爽跑,實在是沒有理由不去使用。
參考資料
https://bbs.archlinux.org/viewtopic.php?id=162768 (Arch的討論串)
裡面包含「虛擬機成功與失敗資料庫」,還有一堆問題與解決的方法。
http://vfio.blogspot.tw/ (aw大的blog)
裡面從硬體挑選到實機模擬講鉅細靡遺,但是裡面講的都很「英文」(沒有複製貼上的餘地)。
--
--
Tags:
Linux
All Comments

By Ursula
at 2016-04-21T00:33
at 2016-04-21T00:33

By Christine
at 2016-04-24T12:24
at 2016-04-24T12:24

By Olive
at 2016-04-24T15:06
at 2016-04-24T15:06

By Kelly
at 2016-04-26T07:57
at 2016-04-26T07:57

By Sandy
at 2016-04-26T16:17
at 2016-04-26T16:17

By Kelly
at 2016-04-30T12:17
at 2016-04-30T12:17

By Elma
at 2016-05-04T17:23
at 2016-05-04T17:23

By Megan
at 2016-05-05T10:18
at 2016-05-05T10:18

By Ivy
at 2016-05-06T09:31
at 2016-05-06T09:31

By Yedda
at 2016-05-08T07:35
at 2016-05-08T07:35

By Ivy
at 2016-05-09T12:32
at 2016-05-09T12:32

By Lily
at 2016-05-10T10:19
at 2016-05-10T10:19

By Edwina
at 2016-05-15T07:09
at 2016-05-15T07:09

By Victoria
at 2016-05-15T19:59
at 2016-05-15T19:59

By Susan
at 2016-05-17T00:02
at 2016-05-17T00:02

By Jack
at 2016-05-21T13:12
at 2016-05-21T13:12

By Sierra Rose
at 2016-05-21T17:53
at 2016-05-21T17:53

By Victoria
at 2016-05-21T23:56
at 2016-05-21T23:56

By Emma
at 2016-05-26T03:32
at 2016-05-26T03:32

By Hamiltion
at 2016-05-30T03:54
at 2016-05-30T03:54

By Tom
at 2016-06-04T01:50
at 2016-06-04T01:50

By Thomas
at 2016-06-06T17:04
at 2016-06-06T17:04

By Daph Bay
at 2016-06-10T11:04
at 2016-06-10T11:04

By Jacky
at 2016-06-12T20:19
at 2016-06-12T20:19

By Edith
at 2016-06-16T17:16
at 2016-06-16T17:16

By Joseph
at 2016-06-21T03:44
at 2016-06-21T03:44

By Belly
at 2016-06-25T17:06
at 2016-06-25T17:06

By Ursula
at 2016-06-28T08:22
at 2016-06-28T08:22

By Isla
at 2016-07-03T01:08
at 2016-07-03T01:08

By Elma
at 2016-07-06T10:23
at 2016-07-06T10:23

By Leila
at 2016-07-06T12:55
at 2016-07-06T12:55

By Mary
at 2016-07-09T15:20
at 2016-07-09T15:20

By Victoria
at 2016-07-13T23:35
at 2016-07-13T23:35

By Carolina Franco
at 2016-07-15T10:02
at 2016-07-15T10:02

By Dinah
at 2016-07-17T08:03
at 2016-07-17T08:03

By Robert
at 2016-07-22T01:36
at 2016-07-22T01:36

By Jessica
at 2016-07-26T01:56
at 2016-07-26T01:56

By Quanna
at 2016-07-30T02:47
at 2016-07-30T02:47

By Isla
at 2016-07-30T22:02
at 2016-07-30T22:02

By Lydia
at 2016-08-03T01:19
at 2016-08-03T01:19

By Enid
at 2016-08-05T00:10
at 2016-08-05T00:10

By Xanthe
at 2016-08-09T06:47
at 2016-08-09T06:47

By Heather
at 2016-08-13T20:58
at 2016-08-13T20:58

By Andrew
at 2016-08-14T16:26
at 2016-08-14T16:26

By Victoria
at 2016-08-14T22:22
at 2016-08-14T22:22

By Olive
at 2016-08-18T00:35
at 2016-08-18T00:35

By Lily
at 2016-08-22T17:42
at 2016-08-22T17:42

By Ida
at 2016-08-24T23:26
at 2016-08-24T23:26

By David
at 2016-08-25T13:42
at 2016-08-25T13:42

By Carol
at 2016-08-28T18:26
at 2016-08-28T18:26

By Erin
at 2016-08-29T18:50
at 2016-08-29T18:50

By Annie
at 2016-09-03T11:06
at 2016-09-03T11:06

By Gilbert
at 2016-09-04T08:46
at 2016-09-04T08:46

By Noah
at 2016-09-07T03:51
at 2016-09-07T03:51

By Ethan
at 2016-09-11T07:23
at 2016-09-11T07:23

By Ivy
at 2016-09-15T21:09
at 2016-09-15T21:09

By Suhail Hany
at 2016-09-18T10:29
at 2016-09-18T10:29

By Adele
at 2016-09-20T08:39
at 2016-09-20T08:39

By Liam
at 2016-09-24T01:54
at 2016-09-24T01:54

By Cara
at 2016-09-26T04:18
at 2016-09-26T04:18
Related Posts
DNS 無法解析某網頁

By David
at 2016-04-18T22:30
at 2016-04-18T22:30
szlin - 分散式編譯 icecream 使用心得

By Olivia
at 2016-04-17T13:08
at 2016-04-17T13:08
proxmox zpool的問題

By Jessica
at 2016-04-15T22:37
at 2016-04-15T22:37
關於想自己架NAS的LINUX新手該怎麼學習

By Kelly
at 2016-04-15T19:31
at 2016-04-15T19:31
有沒有 pctools 這樣的工具?

By Yuri
at 2016-04-14T22:32
at 2016-04-14T22:32