文章插圖

文章插圖
是時候聊一下虛擬機了 , 因為我們后面即將聊的 Linux 玩法 , 包括硬盤分區以及在同一塊硬盤上安裝多個 Linux 發行版、在 X86 的實模式下運行 16 位的程序、探索 Grub 和 Linux 純字符模式等等 , 要截圖和錄像的話 , 必須借助于虛擬機 。
說起虛擬機 , 大家都不陌生 。需要使用虛擬機的場景也非常的多 , 對于有志于寫操作系統的同志 , 往往需要一個虛擬機來運行和調試他寫的系統;對于喜歡研究網絡體系結構的朋友 , 往往需要在自己的電腦上虛擬出 N 個系統組成各種各樣的網絡 。(這個需要電腦的配置夠強大才行 , 幸好本人的電腦夠 。)還有些朋友用著 Windows 卻想玩 Linux , 用著 Linux 卻想玩 Windows , 這樣用虛擬機玩起來也比較方便;最后對于在 Linux 環境下解決起來比較困難的一些需求 , 如迅雷、QQ、網銀、支付寶等 , 使用虛擬機安裝一個 Windows 系統 , 也可以非常輕松地搞定 。我自己也經常在 Windows 中用 VMWare , 感覺它功能強大、使用方便 , 運行效率也非常高 。我的博客中有不少內容都是在虛擬機中折騰出來的 。在 Linux 系統下 , 我也用虛擬機 , 這一篇隨筆就向大家展示一下 Linux 中的幾種常見的虛擬機軟件 。
虛擬機的分類很復雜 。什么全虛擬、半虛擬什么的搞得人頭暈 。而且桌面用戶和企業級用戶對虛擬機的期望值是不一樣的 。比如說 , 我可能期望這樣一個虛擬機:
1.它能模擬出一臺完整的個人電腦 , 我可以給它安裝任何我想安裝的操作系統;
2.它要有比較好用的圖形界面 , 模擬出的電腦也要能無障礙運行 Windows 或 Gnome 這樣的圖形系統 , 能打游戲最好;
3.客戶操作系統所用的硬盤就是宿主操作系統中的一個鏡像文件 , 隨時可復制粘貼 , 隨時可打包帶走;
4.最好能模擬出一些本身不存在的硬件 , 像多個網卡什么的 。
很顯然 , VMWare Workstation 就是這樣一個可以完美滿足我要求的桌面用戶最滿意的虛擬機 。我經常使用它來折騰各個 Linux 發行版 , 而且運行流暢 。當然 , 在 Linux 這個開源的世界我們是不該去使用破解版這樣的東西的 。不過不用擔心 , 在 Linux 江湖中 , 還有 VirtualBox、QEMU 這樣的虛擬機軟件可用 。
而企業級用戶呢 , 他們期望的虛擬機可能是這樣的:
1.它不一定能模擬出一臺完整的電腦 , 重點是 CPU、內存、磁盤和網卡 , 重點是能當服務器使用;
2.它的性能一定要好 , 虛擬的 CPU 性能一定要接近物理 CPU , 一定要充分利用物理 CPU 的所有特性 , 為了性能 , 甚至只能安裝經過修改過內核的操作系統;(所謂的半虛擬化技術 。)
3.它隔離性一定要好 , 它的目的是把一臺機器分成 N 臺機器用 , 而管理這 N 臺虛擬機的宿主機要越不占用資源越好 , 客戶機是主 , 宿主機是次;(正如 Xen 這樣 。)
4.由于企業級用戶對性能的追求 , 所以客戶機所用的硬盤可能真是一個獨立的物理硬盤、磁盤陣列、網絡文件系統什么的 , 而不僅僅只是宿主機上的一個鏡像文件;
5.它不一定需要有圖形界面 , 因為使用命令行更容易管理 , 像自動化啊、遠程化啊、批量化啊什么的;
6.更多的企業級高可用性需求 , 像什么熱備份啊、動態遷移啊等等 。
從上面這些期望值可以看出 , 虛擬機領域水很深 , 市場前景也很廣闊 。各個虛擬機廠家把自家產品吹得天花亂墜那也是很常見的 , 因為每一個用戶期望的點都可以大做文章嘛 。所謂臨淵羨魚 , 不如退而結網 , 各種虛擬機看得再過癮 , 也不如自己嘗試一下 。
能模擬不同硬件架構的虛擬機 —— QEMU##
還是老規矩 , 先給出參考資料 , 它的學習資料還在這里: QEMU 的官方文檔。
或者 , 在自己的系統中輸入如下命令查看手冊頁:
man qemu-system-i386man qemu-img等等...QEMU 本身就是一個非常強大的虛擬機 , 甚至可以在 Xen、KVM 這些虛擬機產品中都少不了 QEMU 的身影 。在 QEMU 的官方文檔中也提到 , QEMU 可以利用 Xen、KVM 等技術來加速 。為什么需要加速呢 , 那是因為如果單純使用 QEMU 的時候 , 它里面的 CPU 等硬件都是模擬出來的 , 也就是全虛擬化 , 所以運行速度是肯定趕不上物理硬件的 。它甚至可以模擬不同架構的硬件 , 比如說在使用 Intel X86 的 CPU 的電腦中模擬出一個 ARM 體系的電腦或 MIPS 體系的電腦 , 這樣模擬出的 CPU , 運行速度更加不可能趕上物理 CPU 。使用加速以后呢 , 可以把客戶操作系統的 CPU 指令直接轉發到物理系 CPU , 自然運行效率大增 。QEMU 同時也是一個非常簡單的虛擬機 , 給它一個硬盤鏡像就可以啟動一個虛擬機 , 如果想定制這個虛擬機的配置 , 用什么樣的 CPU 啊、什么樣的顯卡啊、什么樣的網絡配置啊 , 只需要指定相應的命令行參數就可以了 。它支持許多格式的磁盤鏡像 , 包括 VirtualBox 創建的磁盤鏡像文件 。它同時也提供一個創建和管理磁盤鏡像的工具 qemu-img 。QEMU 及其工具所使用的命令行參數 , 直接查看其文檔即可 。
下面開始體驗 。先看看 Ubuntu 軟件源中和 QEMU 有關的包有哪些:
更多linux內核視頻教程文本資料免費獲取后臺私信【內核】 。
上一節展示的 QEMU 是一個強大的虛擬機軟件 , 它可以完全以軟件的形式模擬出一臺完整的電腦所需的所有硬件 , 甚至是模擬出不同架構的硬件 , 在這些虛擬的硬件之上 , 可以安裝完整的操作系統 。QEMU 的運行模式如下圖:
其實 VirtualBox 也是采取的這種內核模塊加速的模式 。我之所以這么說 , 是因為在安裝 VirtualBox 時 , 它會要求安裝 DKMS 。如下圖:
KVM 和 QEMU 是相輔相成的 , QEMU 可以使用 KVM 內核模塊加速 , 而 KVM 需要使用 QEMU 運行虛擬機 。從上圖可以看到 , 如果要使用 Ubuntu 的包管理軟件安裝 KVM , 其實安裝的就是 qemu-kvm 。而 qemu-kvm 并不是一個什么很復雜的軟件包 , 它只包含很少量幾個文件 , 如下圖:
最后 , 虛擬機運行的效果圖如下:
可以這么說 , 如果沒有 VirtualBox 的話 , QEMU+KVM 的組合應該是桌面用戶的首選 。
VirtualBox —— 性能強大的經典架構##
VirtualBox 號稱是目前開源界最強大的虛擬機產品 , 在 Linux 平臺上 , 基本上都被大家選擇為首選的虛擬機軟件 。VirtualBox 的強大不是蓋的 , 畢竟其后臺是超有錢的 Oracle 公司 。VirtualBox 的任性也不是蓋的 , 它硬是沒有使用我前文所述的那些 qemu、kvm、libvirt 等被各個虛擬機使用的開源組件 , 它的前端、后端以及內核加速模塊都是自己開發的 , 唯有遠程桌面所需要的 VNC 大約使用了 libvncserver 。
我在標題中說到 VirutalBox 是使用的經典架構 。所謂經典 , 主要體現在以下幾個方面:
1.虛擬機及虛擬機中的系統(Guest System)仍運行于主操作系統(Host System)之上 , 只是通過主操作系統的內核模塊進行加速;
2.Unix 系統中 Front-End 模式的經典架構 , 在 VirtualBox 中 , VirtualBox 的圖形界面只不過是命令行界面的虛擬機軟件 VBoxManage 的圖形包裝而已 , 同時 , 它還提供 VBoxSDL、VBoxHeadless 等命令行工具 。VBoxHeadless 就可以運行一個不顯示虛擬機桌面的虛擬機 , 如果要顯示桌面 , 可以運行一個遠程桌面連接它 。前后端分離有一個好處 , 就是對于桌面用戶 , 可以使用前端的圖形界面簡化操作 , 而對于企業級用戶 , 可以使用命令行工具構建自動化腳本 , 甚至在系統啟動時自動運行虛擬機 。
我并不是一開始就喜歡上 VirtualBox 的 , 一點小小的插曲差點就讓我錯過了這么好的虛擬機軟件 。本來我剛開始看到在各個 Linux 論壇都將 VirtualBox 放到首位 , 而不是在新聞中鋪天蓋地的 KVM、Xen , 我就覺得 VirutalBox 可能有點不夠專業 , 再加上第一次使用 VirtualBox 時 , 發現它不能完美轉發 Ctrl+Alt+Fx(x=1~12) , 發現它的有些配置不能完全在圖形界面中設置 , 需要手動更改配置文件 , 然后我就放棄了 。直到我掌握的正確的折騰 Linux 的方法論 , 看完了它長達 369 頁的用戶手冊 , 我才真正了解了它的強大 , 并深深愛上了它 。VirtualBox 把右邊的 Ctrl 定義為 Host 鍵 , 要向客戶機發送 Ctrl+Alt+Fx , 只需要按 Host+Fx 就行了 。
首先 , 在 Ubuntu 中安裝 VirutalBox 是非常容易的 , 只需要一個 sudo apt-get install virtualbox 即可 。
安裝完 VirtualBox 后 , 可以考察一下它所遵守的我之前提到的“經典架構” , 命令和運行結果如下圖:
啟動 VirtualBox , 新建虛擬機和安裝操作系統的過程我就不多說了 , 圖形界面很強大 , 一步一步執行準沒錯 。安裝完 WinXP 后 , 運行效果如下圖:
VirtualBox 功能非常強大 , 單憑我這一篇博文是不可能學會的 。好在是我這一個系列一直都是秉承“授人以魚不如授人以漁”的原則 , 一直都是指導折騰 Linux 系統的方法論 , 并貼圖讓沒有親自動手機會的人也對 Linux 系統有一個直觀的感受 , 也一直指出從哪里可以找到相應的學習資料 。用 dpkg -L 命令 , 就可以找出我前面提到的 VirtualBox 自帶的長達369頁的文檔 , 使用 Ubuntu 自帶的 evince 閱讀器閱讀之 , 如下圖:
Xen —— 令人腦洞大開的奇異架構##
在虛擬機領域 , Xen 具有非常高的知名度 , 其名字經常在各類文章中出現 。同時 Xen 也具有非常高的難度 , 別說玩轉 , 就算僅僅只是理解它 , 都不是那么容易 。之所以如此 , 那是因為 Xen 采用了和我前面介紹的那幾個虛擬機完全不同的架構 。在這里 , 我稱之為令人腦洞大開的奇異架構 。
在經典的虛擬機架構中 , 虛擬機軟件運行于 Host System 之中 , 而 Guest System 運行于虛擬機軟件之中 。為了提高 Guest System 的運行速度 , 虛擬機軟件一般會在 Host System 中使用內核模塊開一個洞 , 將 Guest System 的運行指令直接映射到物理硬件上 。但是在 Xen 中 , 則根本沒有 Host System 的概念 , 傳說它所有的虛擬機都直接運行于硬件之上 , 虛擬機運行的效率非常的高 , 虛擬機之間的隔離性非常的好 。
當然 , 傳說只是傳說 。我剛開始也是很納悶 , 怎么可能讓所有的虛擬機都直接運行于硬件之上 。后來我終于知道 , 這只是一個噱頭 。虛擬機和硬件之間 , 還是有一個管理層的 , 那就是 Xen Hypervisor , 只不過這個管理層可以做得相當薄 。當然 Xen Hypervisor 的功能畢竟是有限的 , 怎么樣它也比不上一個操作系統 , 因此 , 在 Xen Hypervisor 上運行的虛擬機中 , 有一個虛擬機是具有特權的 , 它稱之為 Domain 0 , 而其它的虛擬機都稱之為 Domain U 。
Xen的架構如下圖:
既然 Domain 0 也是一個虛擬機 , 也是被管理的對象 , 所以可以給它分配很少的資源 , 然后將其余的資源公平地分配到其它的 Domain 。但是很奇怪的是 , 所有的虛擬機管理軟件其實都是運行在這個 Domain 0 中的 。同時 , 如果要連接到其它 Guest System 的控制臺 , 而又不是使用遠程桌面(VNC)的話 , 這些控制臺也是顯示在 Domian 0 中的 。所以說 , 這是一個奇異的架構 , 是一個讓人很不容易理解的架構 。
這種架構桌面用戶不喜歡 , 因為 Host System 變成了 Domain 0 , 本來應該掌控所有資源的主操作系統變成了一個受管理的虛擬機 , 本來用來打游戲、編程、聊天的主戰場受到限制了 , 可能不能完全發揮硬件的性能了 , 還有可能運行不穩定了 , 自然會心里不爽 。(Domain 0確實不能安裝專用顯卡驅動 , 確實會運行不穩定 , 這個后面會講 。)但是企業級用戶喜歡 , 因為所有的 Domain 都是虛擬機 , 所以可以更加公平地分配資源 , 而且由于 Domain U 不再是運行于 Domian 0 里面的軟件 , 而是和 Domain 0 平級的系統 , 這樣即使 Domain 0 崩潰了 , 也不會影響到正在運行的 Domain U 。(真的不會有絲毫影響嗎?我表示懷疑 。)
下面開始在 Ubuntu 系統中體驗 Xen 。使用如下命令可以在 Ubuntu 的軟件源中搜索和 Xen 相關的軟件包以及安裝 Xen Hypervisor:
sudo aptitude search xensudo aptitude install xen-hypervisor-4.4-amd64傳說在舊版本的 Xen Hypervisor 上只能運行經過修改過的 Linux 內核 。但是在目前的版本中不存在該問題 。我機器上的 Ubuntu 14.10 系統不經任何修改 , 就可以當成 Domain 0 中的系統運行 。至于是否讓該系統運行于 Xen Hypervisor 上 , 在啟動時可以選擇 , 如下圖:下面來測試一下 Xen 虛擬機的運行效果 。通過前文的探討 , 可以看出一個虛擬機的運行需要兩個要素:一是一套虛擬的硬件系統 , 二是一個包含了操作系統的磁盤鏡像 。QEMU 虛擬機關于硬件的配置全由命令行指定 , VirtualBox 虛擬機的硬件配置存在于配置文件中 , 而 Xen 呢 , 它也存在于配置文件中 , 這個配置文件要我們自己寫 。至于磁盤鏡像 , 還是復用我之前創建的那個 WinXP.img 吧 , 記住 , 它是 qcow2 格式的 。
先進入我主目錄的 virtual-os 目錄 , ls 看一下 , 里面有我之前創建的 WinXP.img 。然后 , 我們創建一個 WinXP_Xen.hvm 配置文件 , 其內容如下:
builder = "hvm"name = "WinXP_Xen.hvm"memory = 2048vcpus = 2disk = [ '/home/youxia/virtual-os/WinXP.img, qcow2, hda, rw' ]sdl = 1這段配置文件很簡單 , 也很容易懂 。hvm 代表這是一個全虛擬化的虛擬機 , 和全虛擬化相對的是半虛擬化 , 半虛擬化只能運行經過修改的內核 , 但是可以獲得更高的性能 。為該虛擬機分配 2 個 CPU 和 2G 內存 , 并指定硬盤鏡像文件 。最后一個 sdl=1 表示使用 SDL 圖形庫顯示虛擬操作系統的界面 , 如果不想用 SDL , 也可以寫成 vnc=1 , 這樣需要使用 vncviewer 才能連接到虛擬機操作系統的桌面 。至于 Xen 的配置文件怎么寫 , 管理命令怎么用 , 這個必須得有學習資料 。通過 man xl 和 man xl.cfg 查看手冊頁是可以的 , 但是最全面的資料還是在 Xen 的官網 上 。
使用 sudo xl list 命令可以看到系統中只有一個Domain 0在運行 , 然后使用 sudo xl create -c WinXP_Xen.hvm 即可運行一個 Domian U 虛擬機 , 該虛擬機使用 WinXP_Xen.hvm 配置文件 。xl 命令的 -c 選項表示把 Domain U 的控制臺顯示在 Domain 0 中 , 如果不用 -c 選項而使用 -V 選項 , 則創建虛擬機后使用 vncviewer 進行連接 。新建的虛擬機運行起來后 , 再次使用 sudo xl list 命令 , 可以看到除了Domain 0 , 還多了一個名稱為“WinXP_Xen.hvm”的虛擬機 。運行效果如下圖:
【免費手機虛擬機哪個好用 手機虛擬機哪個好用可以玩和平精英】我覺得 , Xen 虛擬機不應該是桌面用戶的首選 , 因為它架構比較奇異不容易理解 , 可能因內核升級而出現不穩定 , 不能充分發揮桌面硬件的性能 , 如不能使用 Nvidia 的顯卡;桌面用戶還是應該首選 VirtualBox 。企業及客戶可以考慮 Xen , 因為它可以提供較好的性能和隔離性 , 企業級用戶不需要桌面用戶那么多的功能 , 所以可以把 Domain 0 做到很薄 , 可以完全不要圖形界面 , 也不用經常升級內核 , 甚至可以選擇一個經過修改優化的內核 , 這樣就可以在一套硬件上運行盡可能多的虛擬機 。
- 磁力連接手機怎么用 手機如何使用磁力連鏈接
- 幾款免費流程圖制作軟件 制作流程圖的免費軟件
- 最干凈的電腦管理軟件免費 最干凈的電腦軟件下載
- 圖片修改軟件app 免費修改圖片的軟件
- 手機怎樣申請qq賬號 怎么注冊qq號
- 手機二維碼識別軟件 手機二維碼識別器
- 相冊視頻制作軟件免費版電腦 視頻相冊制作軟件免費版下載
- 類似紅警的單機游戲 紅色警戒手機版單機有嗎
- 什么軟件可以看全球高考小說 全球高考小說免費閱讀
- 音頻分析軟件手機版 手機音頻分析app
