「好記性不如爛筆頭。」 —— 張溥
最近某個特殊的專案需要用到銀河麒麟系統,物理機是arm64架構的,由於架構不同,沒辦法在x86機器上使用 VMware 和 VirtualBox 等軟體直接建立虛擬機器器,條件有限,只能藉助支援多種架構的QEMU,期間踩坑無數,特寫本文以記錄。真正的手把手,我的手都快握到你的滑鼠上了。
作業系統映象:Kylin-Desktop-V10-SP1-General-Release-2203-ARM64.iso(2107版本也可以,區別不大)
QEMU安裝包:QEMU Binaries for Windows (64 bit) 20221208
ARM架構的BIOS韌體:QEMU_EFI.fd
還有100GB左右的磁碟空間,沒有的話你就使勁挪吧,總要擠出來的。把作業系統ISO映象和BIOS韌體放到d:\soft
目錄下備用。
這個簡單,雙擊執行,一路Next,英文看不懂也沒關係,因為無關緊要。既然是手把手,就還是發下過程:
在完成QEMU的安裝之後,如果你沒有修改過安裝路徑,那麼應該能在C:\Program Files\qemu
目錄下找到qemu-img.exe
和qemu-system-aarch64.exe
(注意是不帶w的那個)這兩個可執行檔案,我們後面會用到。如果沒有找到,你可能需要從上一個步驟重新開始。
現在我們在C:\Program Files\qemu
目錄下開啟命令列視窗,像這樣:
輸入命令:
qemu-img.exe create -f raw d:/qvm/kylin_arm64.img 80G
然後用力按下回車,不出意外的話就要出意外了,如果你看到這樣的提示,請不要驚慌,那是因為你還沒有建立相應的目錄:
輸入命令:
mkdir d:\qvm
按下回車,建立我們需要用到的目錄。接著再繼續執行我們剛才執行失敗的命令:
到這一步,我們建立虛擬磁碟的步驟就完成了。
建議:在進行這一步之前,可以關閉各種防毒軟體全家桶,否則,你真的需要漫長的等待……
還是剛剛的控制檯視窗,輸入命令(太長建議直接複製)並回車:
qemu-system-aarch64.exe -m 4G -cpu cortex-a72 --accel tcg,thread=multi -M virt -bios d:\soft\QEMU_EFI.fd -rtc base=localtime -display sdl -device VGA -device nec-usb-xhci -device usb-tablet -device usb-kbd -drive if=virtio,file=d:\qvm\kylin_arm64.img,id=hd0,format=raw,media=disk -drive if=none,file=d:\soft\Kylin-Desktop-V10-SP1-General-Release-2203-ARM64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom
此時應該能看到系統安裝介面,必須在五秒鐘之內通過鍵盤方向鍵選擇「Install Kylin-Desktop V10-SP1」,按下回車,否則會進入預覽模式,如果你不小心錯過了,請關閉QEMU視窗並重新執行上面的步驟。注意,安裝期間請勿關閉控制檯視窗,否則虛擬機器器程序也會關閉,安裝介面如下:
之後便是漫長的等待……期間可能會長時間黑畫面,不要懷疑自己,請讓它繼續執行:
在經過5~20分鐘左右的等待之後(時間取決於你的機器效能),你會看到下面的介面:
聰明的你應該無師自通一路點選下一步:
到了這一步,請設定足夠複雜的密碼,並用小本本記住它!否則無法點選下一步。建議勾選「開機自動登入」,後面會方便很多:
如果你不是Linux狂熱愛好者或者有手工分割區的需求,這一步預設全盤安裝就好了,點選下一步:
勾選格式化整個磁碟,然後點選開始安裝(請放心,格式化的是虛擬磁碟,不是你藏了新建資料夾的電腦硬碟),之後便是更加漫長的等待:
在進度條走完之前,可以去打會兒遊戲,這個過程大概需要30~60分鐘:
恭喜你,到這一步,系統安裝就完成了。無需點選「現在重啟」按鈕,直接關閉視窗即可。命令列視窗此時也可以安全關閉了。
為了簡化虛擬機器器的啟動,請把下面的命令(太長建議直接複製)儲存為批次檔start.cmd
,並放在d:\qvm
目錄下,每次雙擊執行就可以啟動虛擬機器器哦:
@echo off
"C:\Program Files\qemu\qemu-system-aarch64.exe" -m 8G -cpu cortex-a72 --accel tcg,thread=multi -M virt -bios d:\soft\QEMU_EFI.fd -rtc base=localtime -display sdl -device VGA -device nec-usb-xhci -device usb-tablet -device usb-kbd -drive if=virtio,file=d:\qvm\kylin_arm64.img,id=hd0,format=raw,media=disk -net nic,model=virtio -net user,hostfwd=tcp::2222-:22
雙擊執行我們的啟動指令碼,然後你可能會看到防火牆的攔截提示,請勾選並點選允許存取:
系統啟動過程中還會有一些初始化工作,請耐心等待。同安裝的時候一樣,在啟動和使用期間,請勿關閉命令列視窗:
進入系統後,預設解析度太高,可能會有點卡頓,建議調成1024*768:
桌面右鍵選擇「開啟終端」,輸入命令:
sudo systemctl restart ssh
為了防止埠衝突,我們在啟動指令碼中將遠端埠設定為2222埠轉發,因此其他人通過SSH
遠端連線時需要使用2222埠,如果2222埠也跟其它應用程式衝突了,你可以修改指令碼並按照你修改後的埠進行連線:
ssh -p 2222 coder@localhost
有時候你可能需要在虛擬機器器和實體機之間傳輸檔案,可以使用SCP
命令:
scp -P 2222 本地檔案路徑 coder@localhost:~
scp -P 2222 -r coder@localhost:~ 本地檔案路徑
或者直接使用WinSCP工具:
你可以看到我在建立虛擬磁碟時使用了raw
格式,它會一次性分配所有空間,如果你的儲存足夠,理論上它會有更好的效能,你會看到一些教學使用qcow
或者qcow2
格式,它的特點是支援壓縮和加密,可以自行衡量和選擇。
有些教學裡面啟動指令碼載入的是-device usb-mouse
而不是-device usb-tablet
,雖然也能用,但是-device usb-mouse
有個問題就是它的滑鼠座標系基於物理機解析度計算,當虛擬機器器解析度和宿主機不一樣時會發生偏移現象,所以建議使用-device usb-tablet
。
很遺憾,暫時沒有找到解決方案,至少在Windows上,效能非常糟糕。你可以嘗試解除安裝掉麒麟系統一部分自帶軟體,將桌面背景改為純色 ,這是為數不多的有效手段之一了。