首頁  >  文章  >  系統教程  >  在Ubuntu的KVM中設定和安裝Windows作業系統的指南

在Ubuntu的KVM中設定和安裝Windows作業系統的指南

王林
王林轉載
2023-12-31 09:57:461481瀏覽

在Ubuntu的KVM中設定和安裝Windows作業系統的指南

#為什麼要折騰 KVM 虛擬機器

最近因為公司的事情,沒有太多時間寫作,就用一篇技術類的文章來湊數吧。

事情是這樣的,我們公司有一個小東西是基於嵌入式的系統開發的,不屬於 Android 也不屬於 iOS 平台。嗯,這意味著什麼呢?這意味著發展這個小東西的語言是 C 語言,而不是 Java, Objective-C 抑或是 Swift。所以我們需要一個 Cross Compiler,也就是俗稱的交叉編譯環境來編譯這個程式碼。

其實 Xcode 編譯出來的 iOS App 也屬於交叉編譯的範疇。

然而,這個交叉編譯環境竟然只有 Windows 平台的!其實,好像除了 GCC 之外,好用的交叉編譯環境都是 Windows 下面的。估計很多玩嵌入式的同學應該都知道,現在業界用比較多的也就是 Keil 和 IAR 系列了。而及其不幸的是,兩者都是 Windows 特供的,沒有 macOS 或 Linux 版本。

為什麼 Windows 會讓我這麼不爽呢?因為平常為了更好的提高工作效率,除了不得不使用的行業應用軟體必須要跑在 Windows 下的時候,我們只用 Mac 不用 Windows。所以,我們基本上沒有閒置和富裕的 Windows 主機,不!是壓根就沒有,沒有什麼「基本沒有」一說。

而在伺服器端,更不要跟我說什麼 Windows Server 雲端雲端的。身為一個 macOS 和 Ubuntu 的腦殘用戶,我是不可能在 Bare metal 上跑一個 Windows Server 的。伺服器我們只跑 Linux,別的沒興趣。

那麼問題來了,我們有一套自動化編譯系統,也就是大家所熟知的CI 體系(Continuous integration),用的是Atlassian 的全家桶:Bitbucket、Bamboo、JIRA 還有Confluence 什麼的,全部跑在Linux 平台的Docker 虛擬化容器中。

現在我們想把這個小東西也自動化編譯器來,以便更好地把人力釋放出來,也方便未來追蹤和管理每一次 Release 的內容。而第一個要解決的問題就是:我們沒有 Windows 的伺服器。

既然現在虛擬化這麼流行,那我們就利用現有的 Ubuntu 伺服器虛擬化一個 Windows 好啦,走起!

啥是 KVM

KVM 的全名是:Kernel-based Virtual Machine,簡單一句話概括,就是一個基於 Linux 核心的虛擬化管理系統。

從 Linux 核心 2.6.20 版本開始就已經整合了這個功能。簡單理解 Docker 是在應用層的虛擬化,而 KVM 是在系統層的虛擬化。

差別就是,Docker 虛擬化的內容,必須跟 Host 主機共享內核,也就意味著只能跑 Linux 類別系統。

而 KVM 是整個主機虛擬,所以可以安裝不同的作業系統,而不限於 Linux 本身。等我過段時間抽風的時候,看看能不能在 Ubuntu 上虛擬化個 macOS 出來。這樣就不用再再弄個 Mac 主機來自動化編譯 iOS App 了。

安裝 KVM

#我這裡使用的是 Ubuntu 16.04 LTS 版本,考慮長期使用和穩定性,基本上只選 LTS 版本,其他版本差異也不太大,參考著做就好了。

首先是安裝 KVM 相關的套件文件,因為我的伺服器都是命令列,沒有安裝 X 桌面,所以我加了 --no-install-recommends 參數。不然的話它會安裝 virt-viewer 之類的包,而它們的依賴關係中又有 X11 和很多圖形圖像庫,而這些都用不上。但是如果你開啟了桌面系統,那麼也可以不加該參數。

$ sudo apt-get install --no-install-recommends qemu-kvm qemu-utils libvirt-bin virtinst cpu-checker

讓我們來驗證一下是不是一切 OK

$ kvm-ok

INFO: /dev/kvm exists

KVM acceleration can be used

很好,一切順利,我們再來弄個橋接網路。其實這個也不是必須的,看你的使用場景。

KVM 會自己創建一個 virbr0 的橋接網絡,但是這個是一個 NAT 的網絡,沒有辦法跟局域網內的其他主機進行通信,所以還是別偷懶,自己建一個橋接網絡吧。

參考配置如下:

#$ cat /etc/network/interfaces

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

iface lo inet loopback

## The bridged network interface

auto br0

iface br0 inet static

#address 1.2.3.4

netmask 255.255.255.0

#gateway 1.2.3.1

dns-nameservers 1.2.3.1

bridge_ports enp9s0

bridge_stop off

bridge_fd 0

bridge_maxwait 0

重啟網絡,並驗證一下橋接狀態:

#$ sudo systemctl restart networking

$ sudo brctl show

bridge name     bridge id               STP enabled     interfaces

br0             8000.f079593874d9       no              enp9s0

virbr0          8000.525400087ef2       yes             virbr0-nic

OK,一切正常,可以開始建立虛擬主機了。

建立虛擬主機

#KVM 只是完成了第一步,我們還需要建立虛擬主機才可以繼續往下走。

在開始之前,我們要準備好幾個東西:

1.Windows 安裝映像

2.Virtio ISO 和軟碟鏡像

3.VNC 用戶端(macOS 自帶)

我這裡使用的是 Virtio 0.1.126-2 版本。作業系統版本是:Ubuntu 16.04.1 LTS。

一切準備就緒,使用 virt-install 指令來協助建立虛擬機器:

virt-install \

--name win10 \

--memory 2048 \

--vcpus sockets=1,cores=1,threads=2 \

--cdrom=/path/to/windows_10.iso \

--os-variant=win8.1 \

--disk /path/to/win10/win10.qcow2,bus=virtio,size=40 \

--disk /path/to/virtio/virtio-win-0.1.126_amd64.vfd,device=floppy \

#--network bridge=br0,model=virtio \

--graphics vnc,password=Passw0rd,port=5910 \

--hvm \

--virt-type kvm

基本上配置資訊都在上面了,虛擬資訊機配置如下:

#2G 記憶體

1 個 CPU,1 個核,2 個執行緒

1 個 CDROM(Windows 安裝光碟)

40G 硬碟(系統磁碟)

1 軟碟機(Virtio 驅動程式)

在 5910 埠開放一個 VNC 遠端桌面

如果你的指令輸入的正確,應該會得到類似的回饋訊息:

Starting install...

Creating domain...

Domain installation still in progress. Waiting for installation to complete.

簡單來說,就是虛擬機器已經創建好了,但是因為沒有映像介面,所以沒有辦法下一步了。當我們連接了 VNC 以後,就可以繼續往下走了。這個提示只會出現一次,安裝好系統以後,不會有這個啟動等待的狀況。

安裝 Windows 10

#雖然我們在創建虛擬機器的時候,指明了使用 5910 連接埠來提供 VNC 遠端桌面。但是這個連接埠是不能直接存取的,因為它預設綁定在 127.0.0.1 上,也就是只有本地才能存取。我們需要先把遠端的本地端口,映射成本地的端口。

ssh -L 5910:127.0.0.1:5910 server

然後在 macOS 下,⌘ Space 打電話出 Spotlight,然後輸入:

vnc://127.0.0.1:5910

在彈出的視窗中輸入密碼:Passw0rd

在Ubuntu的KVM中設定和安裝Windows作業系統的指南然後就可以愉快的安裝 Windows 系統了,如果不能識別硬碟,需要手動加載一下驅動,選擇 A 盤和對應的 Windows 目錄就可以了。同樣的,如果網卡沒有驅動,也是如法炮製。

###附上已安裝完成的螢幕截圖一張:### ##########

以上是在Ubuntu的KVM中設定和安裝Windows作業系統的指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除