[心得] 如何玩遊戲
比較新的教學文...就不另外發了> , ^
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)
裡面從硬體挑選到實機模擬講鉅細靡遺,但是裡面講的都很「英文」(沒有複製貼上的餘地)。
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.203.240
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1460990620.A.B5D.html
※ 編輯: Shelllife (220.133.203.240), 04/18/2016 22:49:03
推
04/19 00:28, , 1F
04/19 00:28, 1F
→
04/19 00:28, , 2F
04/19 00:28, 2F
→
04/19 00:28, , 3F
04/19 00:28, 3F
→
04/19 00:48, , 4F
04/19 00:48, 4F
滑鼠很順就跟在windows一樣,synergy切換螢幕可以即時或是設定毫秒。
→
04/19 02:19, , 5F
04/19 02:19, 5F
推
04/19 02:45, , 6F
04/19 02:45, 6F
推
04/19 07:47, , 7F
04/19 07:47, 7F
→
04/19 09:30, , 8F
04/19 09:30, 8F
感謝提醒:)
→
04/19 09:49, , 9F
04/19 09:49, 9F
→
04/19 09:50, , 10F
04/19 09:50, 10F
→
04/19 09:51, , 11F
04/19 09:51, 11F
https://bbs.archlinux.org/viewtopic.php?id=162768
https://docs.google.com/spreadsheets/d/1LnGpTrXalwGVNy0PWJDURhyxa3sgqkGXmvNCIvIMenk/edit#gid=0
這邊有資料庫可以比對資訊,如果有相符的有成功大概就沒問題,不用擔心支援度的問題。
這方法2013(kernel的某一版後)就開始討論了,大多都成功的案例,passthrough就僅是多
一條參數並不會麻煩到哪裡去,可惜的是中文有討論的地方太少了。
→
04/19 12:23, , 12F
04/19 12:23, 12F
推
04/19 12:50, , 13F
04/19 12:50, 13F
→
04/19 12:52, , 14F
04/19 12:52, 14F
→
04/19 13:23, , 15F
04/19 13:23, 15F
→
04/19 13:23, , 16F
04/19 13:23, 16F
LC_ALL=ja_JP.UTF-8? (誤)
推
04/19 14:08, , 17F
04/19 14:08, 17F
dx是還好,是影片播放動不動導致wine崩壞的還滿多的,不然wine其實挺方便的!?
→
04/19 14:10, , 18F
04/19 14:10, 18F
→
04/19 14:10, , 19F
04/19 14:10, 19F
推
04/19 15:06, , 20F
04/19 15:06, 20F
※ 編輯: Shelllife (220.133.203.240), 04/19/2016 17:23:52
推
04/19 19:18, , 21F
04/19 19:18, 21F
→
04/19 19:18, , 22F
04/19 19:18, 22F
推
04/19 20:56, , 23F
04/19 20:56, 23F
→
04/19 21:22, , 24F
04/19 21:22, 24F
推
04/20 13:54, , 25F
04/20 13:54, 25F
推
04/20 14:15, , 26F
04/20 14:15, 26F
→
04/20 15:20, , 27F
04/20 15:20, 27F
→
04/20 15:21, , 28F
04/20 15:21, 28F
→
04/20 17:38, , 29F
04/20 17:38, 29F
→
04/20 17:39, , 30F
04/20 17:39, 30F
→
04/20 17:39, , 31F
04/20 17:39, 31F
arch的常客用aur的套件更新前看一下留言訊息基本上應該不會有什麼問題
我是沒遇到過啦,如果真的遇到了arch上面也會有更多慌張的人
頂多就livecd&arch-chroot修正(最常修的反而是grub..愛亂玩的話)
→
04/20 17:48, , 32F
04/20 17:48, 32F
→
04/20 17:48, , 33F
04/20 17:48, 33F
其實我不太懂這說法的意思...我看資料庫裡面也沒有人特別去pass內顯
只要單一螢幕有兩種接法就可以了 內顯vga接A螢幕的vga 外顯DVI接A螢幕的DVI這樣就可以了
玩的時候要切螢幕模式
→
04/20 18:22, , 34F
04/20 18:22, 34F
→
04/20 18:25, , 35F
04/20 18:25, 35F
→
04/20 18:27, , 36F
04/20 18:27, 36F
玩這個東西我只有一個觀點 顯卡有成功過 主機板有成功過理論上就可行。
可能本文是初始設定講的太粗糙,導致許多未預期的事情發生等等趕工:P
※ 編輯: Shelllife (220.133.203.240), 04/20/2016 19:19:41
→
04/20 19:26, , 37F
04/20 19:26, 37F
→
04/20 19:27, , 38F
04/20 19:27, 38F
對:)
※ 編輯: Shelllife (220.133.203.240), 04/20/2016 19:57:22
→
04/20 20:09, , 39F
04/20 20:09, 39F
→
04/20 20:10, , 40F
04/20 20:10, 40F
→
04/20 20:14, , 41F
04/20 20:14, 41F
猜測是不行!
你可以試試顯卡開機&lspci | VGA把內顯給bind
passthrough那邊改成內顯的看看,如果可以也是第一人阿
vfio類似的patch可能就要找一下了
※ 編輯: Shelllife (220.133.203.240), 04/20/2016 21:12:59
→
04/20 21:41, , 42F
04/20 21:41, 42F
→
04/20 21:42, , 43F
04/20 21:42, 43F
推
04/20 21:43, , 44F
04/20 21:43, 44F
→
04/20 21:47, , 45F
04/20 21:47, 45F
推
04/20 23:30, , 46F
04/20 23:30, 46F
→
04/20 23:31, , 47F
04/20 23:31, 47F
→
04/20 23:31, , 48F
04/20 23:31, 48F
推
04/21 02:32, , 49F
04/21 02:32, 49F
→
04/21 02:33, , 50F
04/21 02:33, 50F
wine幾乎都是那個模樣,我是1.6那邊加入的,後來跑出staging讓人趨之若鶩,效能有爆炸性的增長根本天國。
當然缺點也是一籮筐,每天要追這次的staging commit的什麼哇哥,這次的哪個patch導
致破圖都要自己去找,更不用說有一陣子rebase的黑暗期,找不出來問題點的所在。
像如果要用wine玩台灣的遊戲幾乎是不可能...不是遊戲的問題而是「平台的問題」
各種軟體安裝可能裝了A,結果B因為某個conflict跑不起來,才會有許多wine分支的軟體
取而代之的方法就是虛擬一台與win系列效能近乎的虛擬機出來。
wine前期方便..後續要處理的問題跟山一樣高,隨著使用軟體的多樣性處理的時間也是...
虛擬機前期麻煩..後續沒什麼要處理的問題,有什麼問題丟給win自己解決就對啦XD
※ 編輯: Shelllife (220.133.203.240), 04/21/2016 09:40:25
→
04/21 10:21, , 51F
04/21 10:21, 51F
→
04/21 10:22, , 52F
04/21 10:22, 52F
→
04/21 10:27, , 53F
04/21 10:27, 53F
為CP64默哀十秒...1...2...阿~太麻煩了...(茶)
推
04/21 19:25, , 54F
04/21 19:25, 54F
→
04/21 23:28, , 55F
04/21 23:28, 55F
→
04/21 23:28, , 56F
04/21 23:28, 56F
→
04/21 23:28, , 57F
04/21 23:28, 57F
→
04/21 23:29, , 58F
04/21 23:29, 58F
→
04/21 23:29, , 59F
04/21 23:29, 59F
→
04/21 23:31, , 60F
04/21 23:31, 60F
→
04/21 23:31, , 61F
04/21 23:31, 61F
這位大大
面對linux問題也有很多不同的解法,面對linux日新月異的更新,誰都沒辦法清楚明瞭現在linux強大到哪種地步。
小弟僅是標記一下livecd->arch-chroot這種方法可以解、改bootloader參數也是一種可以參考的路線,如果kernel本身出問題可能不是改參數可以解決,或許會有某論壇的大大表示禁掉某些參數可以暫時過度解決。
畢竟livecd有個好處可以邊google邊修理並不是所有大大都精通grub/syslinux/linux等等。
有時候狀況都是剛開始沒講好導致一堆問題出現,像是我一開始沒講要內顯開機,這是一個重點而我習以為常,讓一堆人卡死在門口即使我以前也死在這裡過。
像用顯卡開機然後把自己的顯卡給bind,結果kernel覺的納悶出現問題,而這參數我也沒放在bootloader裡面。
有些東西是可以放到bootloader以利於測試而我沒有做,只因為不想讓grub_default看起來那麼肥。
還有這篇教學已經少掉很多驗證的步驟,我也測試過好幾次重新安裝系統再來一次,一般概念弄懂的話、這篇像複製貼上一樣簡單,就跟安裝arch一樣(抖)。
還有pci passthrough是從kernel 3.12就開始有的概念?(方法)
※ 編輯: Shelllife (220.133.203.240), 04/22/2016 09:18:47
推
04/22 09:15, , 62F
04/22 09:15, 62F
→
04/22 09:17, , 63F
04/22 09:17, 63F
換硬體入坑啦!!!
跑分我是沒什麼興趣,CPU-Z淺淺跑一下是85%(4790)vs100%(4790k)。
CPU的部份又牽扯到很多,最主要還是遊戲的體感最為重要。
https://www.redhat.com/archives/vfio-users/2016-January/msg00124.html
像是這篇所講的用到libvirtd(這個技術我還弄不起來...一直失敗的狀態中T_T)
emulatorpin & vcpupin & linux之間的核心分配,配置的好遊戲反而不會頓。
像我這樣的配置對於某些優化比較不佳的遊戲可能會有許多的影響,所以最後才說看有沒有大大可以用virt-manager教學一下。
我玩遊戲基本上都是host什麼設定kvm就什麼樣的設定,不太能容忍host能開kvm不行...。
※ 編輯: Shelllife (220.133.203.240), 04/22/2016 09:38:09
推
04/22 12:59, , 64F
04/22 12:59, 64F
→
04/22 13:03, , 65F
04/22 13:03, 65F
→
04/22 13:03, , 66F
04/22 13:03, 66F
→
04/22 13:07, , 67F
04/22 13:07, 67F
→
04/22 13:08, , 68F
04/22 13:08, 68F
我的是4790..不是4790k 效能損耗約10%上下。這邊只使用六核心
http://imgur.com/WIT8qFp
※ 編輯: Shelllife (220.133.203.240), 04/22/2016 19:11:16
推
04/26 14:10, , 69F
04/26 14:10, 69F
推
05/01 21:49, , 70F
05/01 21:49, 70F
→
05/01 21:50, , 71F
05/01 21:50, 71F
推
05/12 19:56, , 72F
05/12 19:56, 72F
→
05/17 01:36, , 73F
05/17 01:36, 73F
※ 編輯: Shelllife (220.133.203.240), 07/19/2018 06:09:56