教學環境還是一樣比較好,所以,這幾年來,鳥哥都是用虛擬機器教學。既然如此,那就大家一起來建立好所需要的環境吧!
訓練課程與自學的環境不太一樣,訓練課程的 Linux 作業系統環境中,主要是由鳥哥預先幫大家規劃好的環境來讓大家做許多的練習, 等到第 15 章的時候,再讓大家自己搭建一個環境,期待在期末的時候大家都具有自己建立好屬於自己的 Linux 作業系統的環境。不過,在訓練過程中, 還是期望大家先取得已經預先安裝好的虛擬化系統,這樣在學習上面比較不會有太大的問題。 所以,如果老師/同學們沒有辦法取得 gocloud 環境時,可以使用底下的 virtualbox 的虛擬化軟體來搭建你的 Linux 虛擬機器線上環境喔!
訓練課程的主要內容大致上是透過一個名為 Gocloud 的商業軟體來達成的,該軟體在教學與實機線上作業上面相當有幫助! 不過考量到許多大專院校或者經費較不足的教育者來說,要達成這樣的環境確實有點難度。因此,鳥哥也使用 VirtualBox 的環境來讓大家建立訓練環境。 只是這個訓練環境與實際操作比較不同,因此硬碟的檔名是 /dev/sda 而不是虛擬加速的 /dev/vda,因此在許多的偵測腳本上面, 結果會有些許問題~這部份得要請大家多多見諒。
鳥哥這裡都假設大家已經有操作 windows 作業系統的經驗,因此底下主要是以 windows 作業系統的基礎環境來說明如何建置一個虛擬化的訓練系統。 如果你已經具有 Linux 虛擬化的技術,請直接使用 Linux 底下的 qemu-img 指令,將光碟所附的作業系統磁碟檔案 (img) 直接轉成 qcow2 後, 就可以透過 Linux 的 KVM 搭配 libvirt 與 qemu 軟體,直接掛載該硬碟就能開始作業。如果你只有 windows 或者是 MAC 作業系統, 那就使用底下介紹的 virtual box 來處理我們的上課環境吧。
如果您是計算機中心的管理夥伴,而且需要替老師們建置好這個 Linux 作業系統的教學環境時,無須進行多重作業系統的規劃, 只要將 virtualbox 安裝妥當,並且將硬碟 img 放置好,同時依據底下的流程建置好整個 virtual box 啟動虛擬機器的流程, 那就可以直接將你的 windows 系統做完還原硬碟,那同學們就可以在開機後直接使用了。當然,你的 images 就得要放置在沒有被還原的其他分割槽才行呢!
另外,本文最新版本可以到底下的連結查閱喔:
VirtualBox 是甲骨文公司依據 GPL 授權所發布的虛擬化軟體,所以你可以自由的從網路上面下載最新的軟體來安裝。 VirtualBox 的官網在底下的連結:
請依據你的作業系統環境來選擇要下載的軟體。在這裡先針對虛擬化系統的專有名詞做個簡單的解釋:
以我們這個訓練教材的目的來說,我們是想在 windows 系統上面虛擬化 Linux 系統,因此 host 就是 windows 作業系統, VM 內的 guest OS 才是 Linux 作業系統之意。所以,當你要下載 Virtualbox 時,務必請選擇正確的 host 版本 (在這個案例中,就是下載 host 為 windows 的版本之意。)
目前的 CentOS 7 已經不支援 32 位元的硬體環境,但是許多的虛擬化系統還是僅支援 32 位元而已~好在 Virtualbox 是有支援 64 位元的, 只是,你的硬體主機 BIOS 就得要啟動許多支援虛擬化的功能才行!設定好 BIOS 的虛擬化支援也很簡單,重新開機,進入 BIOS 之後, 記得進入進階模式,然後選擇 CPU 有關的設定,選擇有『虛擬化』支援的項目即可~底下是鳥哥所擁有的電腦中的一個 BIOS 設定示意圖:
附帶一提,如果未來你的這部主機想要支援硬體的 PCI passthrough 功能,那麼那個 VT-d 的功能也來放行一下! 不過,在我們這個訓練教材中,底下的設定為非必備就是了。
在 BIOS 的設定結束之後,請拿出書籍附上的 DVD ,將裡面的檔案暫時通通複製到你的 D 槽 (假設你的 D 槽容量夠大), 基本上,該 DVD 應該會有底下的軟體才對:
這樣事前準備工作就完成了!
雙擊兩下 VirtualBox 軟體檔案,就可以進入安裝畫面,其實近期以來的軟體都做得很棒,只要一直下一步即可! 唯一要注意的是,因為 Virtualbox 會有安裝一塊虛擬網卡到你的 windows 系統上,在實做出該虛擬網卡時, 你的網路很可能會被暫時的中斷,因此記得在處理安裝時,這點需要特別留意!也就是說,不要有類似 ssh 的軟體同時在運作, 否則斷線很困擾的!
底下為依序的流程截圖,沒啥大不了,就一直下一步就對了!
上面的圖示當然要按『是』才能安裝妥當!不要按錯了!
安裝完畢之後,啟動 virtualbox 就有點像底下的圖示:
安裝完畢後,再來按下『新增』,我們來建立一部虛擬機器囉!
上面這個步驟很重要,請選擇正確的虛擬機器硬碟檔~說穿了,就是從 DVD 複製過來的檔案就是了。如果你未來想要重複操作這個訓練系統, 請自行將檔案複製多份,出錯就將硬碟換掉或者將硬碟複製即可。全部做完後,就像底下這樣了:
然後按下設定值,先來優化一下 CPU 的設定如下:
預設只用一顆 CPU,那你的系統會跑得慢吞吞~所以,這個 CPU 的優化也是很重要的!再來調整一下其他的設定值吧! 包括顯示功能,如下所示:
最終也得要注意一下網路,因為我們的練習環境在最後可能會跟其他用戶及 server 互相溝通,因此最好能夠使用橋接界面。 整個網路設定有點像底下這樣:
最終完成的圖示會有點像底下這樣,然後按下『啟動』,就可以取得你的 Linux 訓練教材的環境了!接下來就請前往 unit01 開始用功吧!
假設你已經具有 Linux Server,並且你的 BIOS 也已經設定好了虛擬化的支援,此時你只需要安裝 libvirtd 這個服務, 同時加上 qemu-kvm 這個軟體,以及 qemu-img 這個軟體,就可以開始進行你的訓練機器的設置了,並不需要動到實體機器! 這樣操作系統會跟訓練教材書籍內容一模一樣,跟著教材做也會比較順暢。
如果你手邊有一部支援虛擬化的主機沒有在使用,那就直接從網路上下載 CentOS 7 的 DVD,然後跟著鳥站的文章教學, 使用支援 GUI 的伺服器安裝方式,安裝完畢之後,也立刻就能夠使用 Linux KVM 的虛擬化軟體了!
如果你還是不知道怎麼啟動虛擬化,那麼請到實體機器上面去觀察下列的資料,有的話那就表示可以進行虛擬化作業了!
# 檢查一下 CPU 有沒有支援虛擬化的功能!如果找不到 vmx 的話,請到 BIOS 進行調整。 [root@study ~]# cat /proc/cpuinfo | grep vmx flags : fpu vme de pse tsc msr pae ... vmx smx ... cqm_occup_llc # 要確認 libvirtd 是有啟動的狀態才行! [root@study ~]# systemctl status libvirtd ● libvirtd.service - Virtualization daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2017-09-28 12:09:04 CST; 1h 42min ago Docs: man:libvirtd(8) http://libvirt.org Main PID: 2250 (libvirtd) CGroup: /system.slice/libvirtd.service └─2250 /usr/sbin/libvirtd # 確認 virsh list 程式是可行的 [root@study ~]# virsh list Id Name State ---------------------------------------------------- # 檢查已經安裝了 qemu-img 以及 qemu-kvm 等軟體! [root@study ~]# rpm -q qemu-img qemu-kvm qemu-img-1.5.3-105.el7_2.7.x86_64 qemu-kvm-1.5.3-105.el7_2.7.x86_64
假設書籍的 DVD 附上的硬碟檔案你已經放置到 /home/vbirdlinux 目錄下,接下來你得要先轉換硬碟格式才行。因為 DVD 裡面的資料主要是給 VirtualBox 使用的, 因此你得要先將該格式轉成 KVM 可以讀取的 qcow2 才行。處理的方式其實非常簡單!
[root@study ~]# cd /home/vbirdlinux [root@study vbirdlinux]# ll -rw-rw-r-- 1 root root 3984753152 Sep 28 13:44 linux_os_train_class.vdi [root@study vbirdlinux]# qemu-img convert -O qcow2 linux_os_train_class.vdi linux_os_train_class.qcow2 -p (100.00/100%) [root@study vbirdlinux]# ll -rw-r--r-- 1 root root 3964010496 Sep 28 14:02 linux_os_train_class.qcow2 -rw-rw-r-- 1 root root 3984753152 Sep 28 13:44 linux_os_train_class.vdi [root@study vbirdlinux]# qemu-img info linux_os_train_class.qcow2 image: linux_os_train_class.qcow2 file format: qcow2 virtual size: 40G (42949672960 bytes) disk size: 7.0G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false
上面的 linux_os_train_class.qcow2 就是課程提供的上課用硬碟,這個硬碟最好不要更動到!如果硬碟出錯的話,就可以透過這個硬碟來重新處理。 而為了加快硬碟處理的速度,其實我們可以透過 qemu-img 提供的 backing_file 功能進行處理。假設讓這顆硬碟檔名變成 linux_os_train_class.qcow2.raw 之後, 我們可以增加一個快照 (backing_file) 的檔案,兩個檔案的內容會一摸一樣,但是容量差很多!
[root@study vbirdlinux]# linux_os_train_class.qcow2 linux_os_train_class.qcow2.raw [root@study vbirdlinux]# qemu-img create -f qcow2 -o backing_file=linux_os_train_class.qcow2.raw \ > linux_os_train_class.qcow2 Formatting 'linux_os_train_class.qcow2', fmt=qcow2 size=42949672960 backing_file='linux_os_train_class.qcow2.raw' encryption=off cluster_size=65536 lazy_refcounts=off [root@study vbirdlinux]# ll -rw-r--r-- 1 root root 197632 Sep 28 14:08 linux_os_train_class.qcow2 -rw-r--r-- 1 root root 3964010496 Sep 28 14:02 linux_os_train_class.qcow2.raw -rw-rw-r-- 1 root root 3984753152 Sep 28 13:44 linux_os_train_class.vdi [root@study vbirdlinux]# qemu-img info linux_os_train_class.qcow2 image: linux_os_train_class.qcow2 file format: qcow2 virtual size: 40G (42949672960 bytes) disk size: 196K cluster_size: 65536 backing file: linux_os_train_class.qcow2.raw Format specific information: compat: 1.1 lazy refcounts: false
接下來請打開 "linux_os_train_class.xml" 這個檔案,因為我們放置檔案的位置與相關的設定與鳥哥當初的設定並不相同, 所以這裡得要修改一下才可以!
[root@study vbirdlinux]# ll -rw-rw-r-- 1 root root 2577 Sep 28 14:11 linux_os_train_class.xml [root@study vbirdlinux]# vim linux_os_train_class.xml <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> <name>vm_linux</name> <memory>2097152</memory> <currentMemory>2097152</currentMemory> <vcpu>4</vcpu> <cpu mode='host-passthrough'> <arch>x86_64</arch> <model>SandyBridge</model> <vendor>Intel</vendor> <topology sockets='1' cores='4' threads='2'/> </cpu> <os> <type arch='x86_64'>hvm</type> <boot dev='cdrom'/> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none' io='native' copy_on_read='off' /> <source file="/home/vbirdlinux/linux_os_train_class.qcow2"/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <disk type='file' device='cdrom'> <source file=''/> <target dev='hdc' bus='ide'/> <readonly/> </disk> <interface type='bridge'> <mac address='52:54:00:11:11:33'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target port='0'/> </console> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <graphics type='spice' port='5701' autoport='no' listen='0.0.0.0'> <image compression='auto_glz' /> <jpeg compression='auto' /> <zlib compression='auto' /> <playback compression='on' /> <streaming mode='all' /> </graphics> <graphics type='vnc' port='5901' autoport='no' listen='0.0.0.0'> <image compression='auto_glz' /> <jpeg compression='auto' /> <zlib compression='auto' /> <playback compression='on' /> <streaming mode='all' /> </graphics> <video> <model type='qxl' vram='32768' heads='1'/> <acceleration accel3d='yes' accel2d='yes'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <sound model='ich6'/> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </memballoon> </devices> </domain>
我這裡假設你的 KVM host 已經安裝好了橋接設備,亦即是 br0 這一個橋接界面,如果你輸入 ifconfig 發現到僅有 virbr0 的時候, 請將上述的橋接器改成 virbr0 即可!再來就是鳥哥同時啟動 spice 與 vnc 兩個界面,預設埠口如上所示, 如果你不想要使用上述的埠口,那就請自行改掉該埠口即可。 此外,如果想要在外頭連線到這個系統,那麼最好加上密碼才好! 我這邊預設是沒有加密碼的,如果要加密碼,那請修改這一行:
[root@study vbirdlinux]# vim linux_os_train_class.xml <graphics type='spice' port='5701' autoport='no' listen='0.0.0.0' passwd="your_passwd">
如果一切都準備妥當,這時請啟動虛擬機器:
[root@study vbirdlinux]# virsh create linux_os_train_class.xml Domain vm_linux created from linux_os_train_class.xml [root@study vbirdlinux]# virsh list Id Name State ---------------------------------------------------- 2 vm_linux running [root@study vbirdlinux]# netstat -tlunp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 7134/qemu-kvm tcp 0 0 0.0.0.0:5701 0.0.0.0:* LISTEN 7134/qemu-kvm
此時,只要在 Linux 的圖形界面上面啟動 remove-viewer ,然後輸入『 spice://localhost:5701 』即可取得圖形畫面。 如果你是使用外部的 IP 時,那請放行防火牆,之後在 remove viewer 軟體輸入『 spice://your_kvm_host_ip:5701 』即可取得上課用的環境教材!