作者gR7P4zXH (tpn7gpdx)
看板PCReDive
標題[聊天] How to Run PCRedive on Linux
時間Thu Feb 6 08:35:21 2020
--------------------------
2020/07/23 update
使用QEMU啟動的可再處理完image後參考下列參數啟動
qemu-system-x86_64 -enable-kvm -m 4096 -smp
4,sockets=1,cores=4,threads=1 \
-cpu host \
-drive file=pcredive.qcow2,format=qcow2,if=none,id=drive-virtio-disk0 \
-device
virtio-blk-pci,scsi=off,bus=pci.0,addr=0x8,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1
\
-soundhw ac97 -machine vmport=off -usb -device usb-tablet,bus=usb-bus.0 \
-netdev user,id=mynet,hostfwd=tcp::5555-:5555 \
-device virtio-net-pci,netdev=mynet \
-device virtio-vga,virgl=on -display gtk,gl=es -name 'PCRedive'
注意-display參數,與一般gl=on的差別是gl=es
減少一次複製,能有效減少cpu使用量並增進效能
--------------------------
各位佑樹好,考慮到Linux使用者日益增加,我希望也能在Linux上運行公主連結,在
linux上透過QEMU/KVM來建構為Android-x86基礎的虛擬機執行遊戲。windows使用者請左
轉,謝謝,前方有Blues____和夜O模擬器。
(先感謝實驗室小精靈提供技術)
http://i.imgur.com/Spm75kl.jpg
測試環境(Testing environment)
‧Ubuntu 19.10
‧libvirt 5.4.0
‧qemu-system-x86 4.0
硬體設備(Hardware)
‧I7-6700
‧32G Ram
‧Intel 512G SSD
測試方式(Testing)
‧創建Android x86虛擬機
‧打Magisk上去對PCReDive隱藏root
‧繞過PCReDive對虛擬機的設下的重重障礙
‧開心課金
動機(Motivation)
‧買不起手機且現有手機跑不動PCReDive
‧三個伺服器有六個帳號要顧
‧想在Linux上面跑
貢獻(Contribution)
‧打上最新版的Magisk到Android-x86
‧可以Migration的虛擬機!
------------------------------------------------------------------------------
1.創建Android x86虛擬機
安裝libvirt+qemu/kvm
sudo apt install virt-manager
下載Android-x86 (
https://www.android-x86.org/)安裝檔,並用virt-manager創建虛擬
機。libhoudini是intel用來轉譯arm到x86的閉源函式庫,android-x86各版本搭載的
libhoudini支援度有所不同,建議各位下載8.1版。
android-x86 hostOS guestOS libhoudini 跑公連測試結果
7.1 (32bit) x86 x86 x decoder有問題導致3d動畫無法顯現
8.1 (64bit) x64 x86 y 一切正常,推薦使用
9.0 (32bit) x86 x86 ? 在開啟遊戲時會用64bit libhoudini
開導致錯誤 (Intel退坑,android x
86社群沒人想port)
https://i.imgur.com/eEiE5O5.png
https://i.imgur.com/aJyLHBZ.png
初次開啟PCReDive遇到閃退的問題,且可用logcat觀察到以下訊息,請啟用Native
bridge
02-06 00:40:15.047 9274 9274 E art : No implementation found for void
com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator() (tried
Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator and
Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator__)
https://i.imgur.com/2iLmS6l.png
-----------------------------------------------------------------------------
2. Magisk
我們對現有的kernel打上Magisk,需要一點Android知識,不過照著下列操作,完全不需
要!
先將虛擬機關機,並將必要檔案提取出。
sudo -i
mkdir /mnt/vmdk /mnt/workspace
guestmount -a /var/lib/libvirt/images/vm1-1.qcow2 -m /dev/sda1 /mnt/vmdk
cp /mnt/vmdk/android-7.1-r3/ramdisk.img /mnt/workspace/ramdisk.img
不忘記備份
cd /mnt/workspace
cp ramdisk.img ramdisk.img.bak
查看ramdisk.img的格式並將其壓縮,這意味著我們可以用mkbootimg製作boot.img,在已
安裝Magisk的android上對此boot.img進行patch。
# file ramdisk.img
ramdisk.img: gzip compressed data, from Unix, original size modulo 2^32
4208896
# mv ramdisk.img ramdisk.img.gz
# gunzip ramdisk.img.gz
# file /mnt/workspace/ramdisk.img
/mnt/workspace/ramdisk.img: ASCII cpio archive (SVR4 with no CRC)
# git clone
https://github.com/xiaolu/mkbootimg_tools.git
# cd mkbootimg_tools
# ./mkbootimg --kernel /mnt/vmdk/android-7.1-r3/kernel --ramdisk
/mnt/workspace/ramdisk.img -o /mnt/workspace/boot.img
用任何方式送進已安裝Magisk的android,裝好的Android-x86自然也能幫上忙,於Magisk
選擇Install > Select and Patch a File。
https://i.imgur.com/beRF8xq.png
成功!取得magisk_patched.img,取出ramdisk.img送回虛擬機算是大功告成
https://i.imgur.com/IwPzMBV.png
# cd mkbootimg_tools
# ./mkboot /mnt/workspace/magisk_patched.img /mnt/workspace/magisk_patched
Unpack & decompress ../magisk_patched.img to magisk_patched
kernel : kernel
ramdisk : ramdisk
page size : 2048
kernel size : 6008384
ramdisk size : 4794092
base : 0x10000000
kernel offset : 0x00008000
ramdisk offset : 0x01000000
tags offset : 0x00000100
cmd line :
ramdisk is unknown format,can't unpack ramdisk
Unpack completed.
# file /mnt/workspace/magisk_patched/ramdisk.packed
/mnt/workspace/magisk_patched/ramdisk.packed: ASCII cpio archive (SVR4 with
no CRC)
# mv ramdisk.packed ramdisk.img
# gzip ramdisk.img
# mv ramdisk.img.gz ramdisk.img
# cp ramdisk.img /mnt/vmdk/android-7.1-r3/ramdisk.img
最後卸載並開機
umount /mnt/vmdk
終於能啟用Magisk Hide加入PCReDive
https://i.imgur.com/PwVtqsZ.png
https://i.imgur.com/6vyOK4z.png
------------------------------------------------------------------------------
3. 繞過PCReDive對虛擬機的限制
世界上已有解法,請各位自己去問log貓和goo狗。
------------------------------------------------------------------------------
4. 實際遊玩
On 8.1:
https://youtu.be/oYTWmPDKIvM
On 7.1:
https://www.youtube.com/watch?v=5zKJpVKoDrY
(2/7更新)
推 v72807647: 7.1r3的virgl和h264 decoder有問題,改用8.1-64bit可解02/07 07:18
→ v72807647: 順暢度會提升很多,而且影片也可以播放02/07 07:19
------------------------------------------------------------------------------
5. 小結
在android-x86 8.1上運行能順利完成每日任務打公會戰
此外用libvirt+qemu/kvm玩有幾個優點
‧隨時migrate到其他host,由會長代刀
‧使用快照save/load,取最佳輸出
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 192.168.0.1 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/PCReDive/M.1580949325.A.64E.html
※ 編輯: gR7P4zXH (114.137.120.99 臺灣), 02/06/2020 08:37:09
推 a37805: VM你自己弄的嗎...(跪02/06 08:38
推 peter0627: 太神啦02/06 08:39
推 plzza0cats: 大師02/06 08:39
推 r22742557: 想在實驗室偷玩公主連結?02/06 08:39
推 sweetmiki: 天了嚕02/06 08:44
→ sweetmiki: 人人有公主玩給推 02/06 08:44
推 sweetmiki: 只要能打公會戰都不是問題(X02/06 08:46
→ shinobunodok: 你想在實驗室玩公主連結吼02/06 08:48
推 ae323436: 慾望果然是人類進步的原動力 02/06 09:00
推 mapleyu: 神人推 02/06 09:18
推 sopdet: Linux使用者日益增加...? 02/06 09:23
推 fly9588: 日益增加沒錯啊 02/06 09:25
推 smart0eddie: OAO 02/06 09:31
推 Raynor: 想在lab偷玩齁 02/06 09:38
推 sismiku: 嗯嗯嗯 跟我想的一樣 02/06 09:49
推 miss80423: 我看了什麼 02/06 09:56
推 david22649: 太強了吧.... XD 02/06 10:06
推 aleckleehaha: 你是不是要叫學弟們一起測軸? 02/06 10:06
推 tomphone: 慾望無限 02/06 10:08
推 Incredible99: 你是不是想推教授入坑 02/06 10:19
→ Incredible99: 每次meeting 都在討論軸 02/06 10:20
→ Incredible99: 計畫通欸牛逼逼 02/06 10:20
明年度的計劃,基於QEMU-KVM虛擬機器的公主連結容錯技術(X)
推 Jmoe: 喔喔還不錯 剛好也有類似需求~ 不然linux的模擬器都不大行 02/06 10:25
推 ArrowEye: (′・ω・‵)b 02/06 10:30
推 x80307: 窩不知道 02/06 10:40
推 karta3223567: 推 02/06 10:53
→ lou3612: 嗯嗯 果然跟我想的一模一樣 02/06 11:00
推 driver5566: 先推不然別人以為我看不懂 02/06 11:02
推 suits890726: 嗯嗯跟我想的一樣 02/06 11:04
推 d9123155: 雖然不是Linux使用者 還是跪著推 02/06 11:04
推 SHiroo: 推 02/06 11:06
推 PTTallener: ... 02/06 11:07
噓 s8802228: 這個格式 宅氣沖天 02/06 11:09
推 Kuroyukihime: 我以為會來這版就夠宅了XD 02/06 11:12
推 bheegrl: 真愛 02/06 11:31
推 x41122x: 慾望使人進步 02/06 11:49
推 ap9xxx: 看不懂總之先推 02/06 11:50
推 abjeffop: 這專業不凡 我還是先跪再推 02/06 11:52
推 wutomy2000: 公主連結是一款真正適合工程師的遊戲 02/06 11:54
推 dan901054: 先推,不然被人發現我看不懂 02/06 11:58
推 chons2332: 教授:欸欸那個你等等幫我出個刀 02/06 11:59
推 arrenwu: 看了這個教學,我還是用Windows好了 02/06 12:04
→ Ericz7000: 扯 02/06 12:07
推 AL107: 下午瞇挺麻煩交出最新的軸 洩洩 02/06 12:07
推 sirakuma: meeting結束了很閒齁 02/06 12:14
推 leo0519: 你的IP好酷 02/06 12:29
推 windmai: 剛剛哪個學弟亂出刀的! 02/06 12:35
推 Xunion: 研究精神給推 02/06 12:42
推 enders346: 雖然看不懂但是先推再說 02/06 13:02
推 hankstak: 記得高中電腦課用linux 什麼遊戲都玩不了 02/06 13:16
https://twitter.com/i/status/1191012727583473666
推 globalspirit: 暴雪:你沒有手機嗎? 02/06 13:27
https://www.youtube.com/watch?v=ly10r6m_-n8
推 kirimaru73: 請問你們fine tune軸用的optimizer是哪一種?02/06 13:41
推 longkiss0618: 有這等實力竟買不起手機02/06 14:03
小精靈有買二手旗艦機,他只是覺得好玩搞這個
推 os5566ga: 不要在lab偷玩好不好XD02/06 14:11
推 StCor: 螢幕右邊 02/06 15:14
推 a65482913: 你484來曬掛軸的www 02/06 15:22
在測軸
推 longkiss5566: 教授在你後面 他非常火02/06 15:33
推 Jimmy030489: 優文02/06 15:41
推 eplovecm: 好猛啊02/06 17:35
推 rhythm7321: 推 以後可以在lab 灌公主了02/06 18:06
→ rhythm7321: 在lab 打公會戰lul02/06 18:07
推 s9m87o: 優文02/06 19:29
推 HuashenBAO: 為什麼我的實驗室沒有小精靈ㄋ02/06 20:42
半夜留守實驗室會發現
推 ShibaTatsuya: 優文02/06 21:14
推 v72807647: 7.1r3的virgl和h264 decoder有問題,改用8.1-64bit可解02/07 07:18
→ v72807647: 順暢度會提升很多,而且影片也可以播放02/07 07:19
推 max410286: 等等去lab測一下那個軸02/07 07:23
※ 編輯: gR7P4zXH (1.163.8.163 臺灣), 02/08/2020 16:58:03
※ 編輯: gR7P4zXH (1.163.8.163 臺灣), 02/08/2020 16:58:49
※ 編輯: gR7P4zXH (140.115.52.18 臺灣), 07/23/2020 20:27:24