最近的工作有項任務是將行動網站專案部署至 Linux 作業系統上。雖說 .NET Core 主打跨平台程式開發,但過去公司這項專案的開發環境和部署環境仍以 Windows 為主。為了測試專案是否能順利在 Linux 環境下執行,在安裝至NAS之前,先在自己本機架設虛擬環境,並將行動網站發佈上去執行。
以往在本機架設虛擬環境時大多首選是安裝 VMWare、VirtualBox 等產品,而微軟從 Windows 10 開始,於 64 位元的專業版、企業版和教育版提供了 Hyper-V,提供另一項選擇。Hyper-V 中建構的虛擬機器可匯出儲存,匯出的虛擬機之後可匯入其他 Hyper-V,包括 Azure 環境底下的 Hyper-V。
一般在 Windows 的預設中,Hyper-V 功能是被關閉的,第一次啟用需至開啟或關閉Windows功能中打開;可使用快捷鍵 Win+R,輸入 optionalfeatures,將 Hyper-V 項目打勾,打勾後可能會要求重新啟動電腦設定才會生效。
開啟 Hyper-V 後畫面如上,於右側選單選擇新增 → 虛擬機器,便可開始建立虛擬機。
於指定世代這步驟記得選擇第2代,以確保具備 UEFI 功能。
若要效能順暢,記憶體分配最低規格為 4 GB,建議至少配置 8 GB,輸入完記憶體大小後選擇下一步。
確認至少選擇一項網路設定,以便 Ubuntu 安裝完成後下載更新,也方便稍後我們下載安裝各驅動程式。
建立虛擬硬碟,若無特殊需求,使用預設大小 127 GB 就足夠應付一般狀況,確認輸入無誤後點選下一步。
最後選擇從開機映像檔安裝作業系統,ubuntu 的映像檔可於官網下載。點選下一步後視窗會顯示此次新增的虛擬機資料,確認無誤點擊完成便會開始建立虛擬機。
回到 Hyper-V 管理員便能看到新增的虛擬機器。
虛擬機建立完成後,仍有些設定需要調整。首先,由於 Ubuntu 不支援安全模式開機,需進到設定中關閉。點選新增的虛擬機器→右側欄位的設定→安全性→將啟用安全開機一項取消勾選。
至此我們成功地於 Hyper-V 上建立了一台新的虛擬機,接下來為了便於之後我們在本機與虛擬機之間共用裝置和資料,接著來設定加強工作模式(Enhanced Session Mode),須注意不能啟用自動登入,否則加強工作模式將不能使用。
加強工作模式允許 Hyper-V 使用 RDP 遠端桌面協定(Remote Desktop Protocol),可使虛擬機變更大小及提高 DPI 感應敏銳度、增進虛擬機的整合:包括分享剪貼簿、可拖放複製檔案;也允許與本機分享硬體設備例如麥克風、喇叭、印表機、USB 插拔裝置、硬碟……等等。
首先打開剛剛安裝好的 Ubuntu 虛擬機,會跳出 Ubuntu 安裝的步驟引導,安裝完作業系統後打開 terminal,執行下面這段指令。此段指令會以 wget 自目標網址下載一段 script 並執行。
wget <https://raw.githubusercontent.com/Microsoft/linux-vm-
tools/master/ubuntu/18.04/install.sh>
sudo chmod +x install.sh
sudo ./install.sh
若在中途有跳出錯誤訊息,需再調整一項設定,使用 sudo 權限打開 /etc/xrdp/xrdp.ini,任何編輯器皆可(e.g. vim, nano, gedit…),找到下列行數內容並更改參數後儲存。
port=vsock://-1:3389
use_vsock=false
確認安裝 install.sh 無問題後關閉虛擬機,並打開 PowerShell 輸入以下指令:
Set-VM -VMName <虛擬機名稱> -EnhancedSessionTransportType HvSocket
其中<虛擬機名稱>請自行置換成先前步驟中自訂的虛擬機名字。理論上做完這步驟後再開啟虛擬機,即可進入加強工作模式。但筆者做完這些步驟後打開虛擬機,切到加強工作模式,xrdp 登入後會出現黑屏的狀況;研究試驗良久後才發現需點擊右側虛擬機設定→整合服務,將客體服務(Guest Service)勾選起來,即可於加強工作模式正常進入作業系統。