[[PageOutline]]
{{{
#!html
實作一: Xen 單機安裝與基本操作
}}}
= 【前言】 =
* '''__操作說明:__'''
* 桌面的 '''Web Broswer''' 為瀏覽器,'''終端機''' 用來輸入課程中的指令
* 黑底白字部份為'''指令''' ($ 為命令提示字元, $ 之後才是指令) (# 為root 的命令提示字元)
{{{
$ gedit /etc/hosts
$ sudo gedit /etc/hosts
$ su root
# aptitude update
[Ctrl+D]
$
}}}
* 第1個指令為 使用 '''''gedit''''' 指令來編輯 hosts 這個文件 (也可以使用 vim 來編輯)
* 第2個指令的 '''''sudo''''' 為轉換成 root 管理者身份來編輯此文件 (因 hosts 文件的權限只有 root 能修改)
* 第3個指令的 '''''su root''''' 切換 root 身份
* 第4個指令的 為在 root 身份下執行 aptitude update (# 為 root 的提示字元)
* 第5個為熱鍵
* [Ctrl+D] -> 結束,[Ctrl+C] -> 中斷
* 再這邊則跳出 root 身分 (回到 clouder 身份)
* 白底黑字為'''文件內容''',文件內容前面有數字則為'''行數''' (下面為 /etc/hosts 文件的第1行)
{{{
#!sh
1 127.0.0.1 localhost
}}}
* 文中的 '''X''' 和 '''Y''' 請自行更換成合適的值
* IP: 192.168.1.'''X''' -> 192.168.1.'''200'''
* MAC: 00:16:XX:XX:XX:XX -> 00:16:03:AB:BA:01
* '''__台中硬體清單:__'''
||CPU|| Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
||!NorthBridge|| Intel Corporation 82G33/G31 Express Integrated Graphics Controller
||!SouthBridge|| Intel Corporation 82801G (ICH7 Family)
||Memory|| 1GB
||Storage|| 160GB
||Video Card|| NVIDIA !GeForce 9800GT 1GB
||Ethernet Controller(1)|| Intel Corporation 82571EB Gigabit Ethernet Controller
||Ethernet Controller(2)|| Realtek RTL-8110SC/8169SC Gigabit Ethernet
||
* '''__軟體清單:__'''
|| OS || Debian GNU/Linux 5.0.3 (lenny) ||
|| Kernel (support Xen) || 2.6.26-amd64 ||
|| Xen || 3.2 ||
|| NVIDIA_Driver || Linux x64 (AMD64/EM64T) Ver.190.42 ||
* '''__指令說明:__'''
|| '''''xm''''' || Xen Manager (透過 xm 來管理 xend) ||
|| '''''xm list''''' || 察看目前有幾台 VM ||
|| '''''xm create''''' [VM_conf] || 開啟 VM (後面須接 VM 的設定檔) ||
|| '''''xm destroy''''' [VM_ID|VM_Name] || 關閉 VM (後面須接 VM 的 id 或 名稱) ||
|| '''''xen-create-image''''' || 產生 Guest/VM Image 的工具 ||
----
= 【Step 0: 流程】 =
* 本教學方便學員,儘量使用官方提供的 Xen 相關套件來安裝 (Debian 目前維護的 Xen 版本為 3.2),若是想用最新版的 Xen-3.4.1 可以參考[http://trac.nchc.org.tw/grid/wiki/Reading/XenP/single 此篇]改用 source 檔安裝
* 用'''套件'''安裝的__優點:__ 1.方便快速 2.不需考慮軟體相依性,系統會自動幫你安裝相依的套件。__缺點:__可能不是最新的軟體版本
* 從'''source'''安裝的__優點:__ 1.了解軟體的安裝邏輯 2.可以安裝最新的版本。__缺點:__得自行解決軟體的相依性問題
{{{
#!graphviz
digraph finite_state_machine {
rankdir=LR;
ranksep=0.3;
size="11,8";
node[shape=box,width=3.0];
"4.安裝 xen image 製作工具" -> "5.產生 VM 的 Image" -> "6.開啟 VM" -> "7.使用 VM 圖形管理介面";
"1.安裝 Xen 和 Xen-patched Kernel" -> "2.編輯 Xend 設定檔和開機選單" -> "3.檢查 Xen 是否正常運作";
}
}}}
----
= 【Step 1: 安裝 Xen 和 Xen-patched Kernel】 =
* Debian 提供一個簡單的整合套件,只需用 '''''aptitude install''''' 指令安裝 __xen-linux-system-2.6.26-2-xen-amd64套件 __,即可自動安裝好 Xen-3.2 Hypervisior
{{{
$ sudo aptitude update
$ sudo aptitude -y install xen-linux-system-2.6.26-2-xen-amd64 python-xml
}}}
----
= 【Step 2: 編輯Xend 設定檔 & 開機選單】 =
* 上個步驟已安裝好 Xen 和 Kernel,此步驟使用 '''''vim''''' 或 '''''gedit''''' 指令來編輯 xend 的設定檔 /etc/xen/xend-config.sxp (Xen 的設定檔都再 /etc/xen 路徑下)
{{{
$ sudo su
# echo xen.independent_wallclock=1 >> /etc/sysctl.conf
# echo loop max_loop=100 > /etc/modules
# echo xenblktap >> /etc/modules
# ln -s /usr/lib/xen-3.2-1/bin/tapdisk /usr/sbin
[CTRL+D]
$ sudo gedit /etc/xen/xend-config.sxp
( 也可使用vim,如 $ sudo vim /etc/xen/xend-config.sxp )
}}}
{{{
#!sh
58 (xend-http-server yes)
59 (xend-unix-server yes)
60 (xend-tcp-xmlrpc-server yes)
62 (xend-relocation-server yes)
64 (xend-unix-path /var/lib/xend/xend-socket)
70 (xen-tcp-xmlrpc-server-port 8006)
80 (xend-port 8000)
84 (xend-relocation-port 8002)
91 (xend-address localhost)
109 (xend-relocation-hosts-allow '')
/*** 台中:netdev=eth1 新竹:netdev=eth0 ***/
128 (network-script 'network-bridge netdev=eth0')
139 #(network-script network-dummy)
}}}
* 若是為'''台中電腦教室'''必須做下面指令,新竹電腦教室則不用
{{{
$ sudo gedit /boot/grub/menu.lst
125 module /boot/vmlinuz-2.6.26-2-xen-amd64 root=/dev/sda1 ro console=tty0 mem=950M
}}}
* 編輯完 xend & 開機選單後,現在重新開機,選擇剛開安裝的 Xen & Kernel 開機
{{{
$ sync ; sudo reboot
}}}
* 若是為'''新竹電腦教室'''必須做下面指令,台中電腦教室則不用
{{{
$ su root
# export LANG=C ; cd
# ./xen_video1.sh /*** 一路 Yes 到底 ***/
# ./xen_video2.sh
}}}
----
= 【Step 3: 檢查 Xen 是否正常運作】 =
* Ubuntu 預設開機變會自動啟動 xend,我們使用 '''''ps -aux | grep xend''''' 來檢查 xend 是否正常運作
{{{
$ ps -aux | grep xend
}}}
* 再使用 '''''xm list''''',檢查是否有 domain 0 (xm 是 Xen manager 的解稱,我們使用 xm 來控制 xend,xm 指令的用法可以參考 '''''xm help''''')
{{{
$ sudo xm list
$ sudo xm help
}}}
* 檢查網路設備是否存在 (於此案例我們使用 bridge 方式,可以檢查 eth1 和 peth1 是否存在)
{{{
$ sudo ifconfig
eth1 Link encap:Ethernet HWaddr 00:1a:4d:9f:ea:f8
inet addr:X.X.X.X Bcast:140.110.138.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:821 errors:0 dropped:0 overruns:0 frame:0
TX packets:106 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:64586 (63.0 KiB) TX bytes:11348 (11.0 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:560 (560.0 B) TX bytes:560 (560.0 B)
peth1 Link encap:Ethernet HWaddr 00:1a:4d:9f:ea:f8
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3694 errors:0 dropped:0 overruns:0 frame:0
TX packets:2142 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:311184 (303.8 KiB) TX bytes:759489 (741.6 KiB)
Interrupt:21 Base address:0xe000
}}}
* Xen 提供三種網路連接方式:
1. Bridge Networking (於此案例,我們使用 Bridge,簡單來說就是讓 VM 和 Host 都再同一個網域,讓 VM 可接收 dhcp server 發的 IP)
{{{
#!sh
(network-script network-bridge)
(vif-script vif-bridge)
}}}
2. Two-way Routed Network
{{{
#!sh
(network-script network-route)
(vif-script vif-route)
}}}
3. Routed Networking with NAT
{{{
#!sh
(network-script network-nat)
(vif-script vif-nat)
}}}
----
= 【Step 4: 安裝 xen image 製作工具】 =
* 使用 '''''aptitude install''''' 安裝 xen-tools (xen-tools 可以協助我們產生VM的印象檔)
{{{
$ sudo aptitude -y install xen-tools
}}}
* 修改 xen-tools 的設定檔 (設定檔位置 /etc/xen-tools)
{{{
$ cd /etc/xen-tools
$ sudo gedit xen-tools.conf
}}}
{{{
#!sh
45 dir = /home
128 size = 1Gb
133 dist = lenny
163 gateway = 192.168.1.254
164 netmask = 255.255.255.0
165 broadcast = 192.168.1.255
187 passwd = 1
214 mirror = http://free.nchc.org.tw/debian
257 serial_device = hvc0
274 output = /home/domains
}}}
----
= 【Step 5: 產生 VM 的 Image】 =
* 使用 xen-tools 提供的指令 '''''xen-create-image''''' 產生一個名為 vm01 虛擬機器的印象檔 (若沒指定 dist ,預設則為 debian etch)
{{{
$ sudo mkdir /home/domains
$ sudo xen-create-image --hostname=vm01 --ip=192.168.1.X --mac=00:16:00:00:00:XX
(若是有中途取消操作,先 umount /tmp/XXXXXX ,
再重新下指令 $ sudo xen-create-image --hostname=vm01 --ip=192.168.1.X --mac=00:16:00:00:00:XX --force )
}}}
* 產生完的印象檔 & 設定檔會放在 '''/home/domains''' 內
{{{
$ ls /home/domains
}}}
* 查看 vm01 的設定檔
{{{
$ sudo gedit /home/domains/vm01.cfg
}}}
----
= 【Step 6: 開啟 VM】 =
* 接下來我們使用此 vm01 的設定檔來開啟一個虛擬機器 (使用 '''''xm create''''' 指令根據設定檔來開啟虛擬機器)
{{{
$ cd /home/domains
$ sudo xm create vm01.cfg /*** 若是想 create 虛擬機器後自動登入,可在最後加上 -c 這個參數 ***/
}}}
* 檢查此 vm01 是否正常開啟
{{{
$ sudo xm list
}}}
* 如何登入此虛擬機器呢 (使用 '''''xm console [VM_Name|VM_ID]''''')
{{{
$ sudo xm console vm01
# adduser clouder
# aptitude -y install udev ntpdate
# cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime
# ntpdate time.nist.gov
# echo xen.independent_wallclock=1 >> /etc/sysctl.conf
}}}
* 如何登出 vm01 呢 (跳出鍵 '''''CTRL+]''''')
{{{
CTRL + ]
}}}
* 關閉虛擬機器 (使用 '''''xm console''''')
{{{
$ sudo xm list
$ sudo xm destroy vm01
$ sudo xm list
}}}
----
= 【補充: 使用 VM 圖形管理介面】 =
* 若是不習慣用指令,可使用圖形管理介面來控制虛擬機器 (有兩套可以使用 virt-manager 和 convirt)
* virt-manager
{{{
$ sudo aptitude -y install virt-manager
$ sudo virt-manager
}}}
* convirt
{{{
$ cd
$ wget --no-cache http://www.convirture.com/repos/convirture_packaging_pub_key
$ sudo apt-key add convirture_packaging_pub_key
$ cd /etc/apt/sources.list.d
$ sudo wget --no-cache http://www.convirture.com/repos/definitions/debian/5.x/convirt.list
$ sudo aptitude update
$ sudo aptitude install -y convirt
$ su
# convirt
}}}
----
= 【補充: 安裝 Windows Guest (使用 HVM 模式)】 =
* 檢查硬體(CPU)是否支援
{{{
// Intel CPU
grep --color vmx /proc/cpuinfo
// AMD CPU
grep --color svm /proc/cpuinfo
}}}
* 檢查 BIOS 是否 enabled (有些主機板預設會 disable)
* 製作 Windows Image
{{{
// 放到光碟到光碟機,製作 iso 檔
$ cd /home/domains
$ sudo dd if=/dev/cdrom of=windows7.iso
}}}
* 製作虛擬機器的 Image
{{{
$ sudo dd if=/dev/zero of=xenwin.img bs=1024k seek=10000 count=0
}}}
* 編輯設定檔
{{{
$ sudo gedit xenwin.cfg
}}}
{{{
#!sh
import os, re
arch = os.uname()[4]
if re.search('64', arch):
arch_libdir = 'lib64'
else:
arch_libdir = 'lib'
kernel = "/usr/lib/xen-3.2-1/boot/hvmloader"
builder='hvm'
memory = 1024
# Should be at least 2KB per MB of domain memory, plus a few MB per vcpu.
shadow_memory = 8
name = "xenwin"
vif = [ 'type=ioemu, bridge=eth0' ]
acpi = 1
apic = 1
disk = [ 'file:/home/domains/xenwin.img,hda,w', 'file:/home/domains/windows.iso,hdc:cdrom,r' ]
device_model = '/usr/lib/xen-3.2-1/bin/qemu-dm'
#-----------------------------------------------------------------------------
# boot on floppy (a), hard disk (c) or CD-ROM (d)
# default: hard disk, cd-rom, floppy
boot="dc"
sdl=0
vnc=1
vncconsole=1
vncpasswd=''
serial='pty'
usbdevice='tablet'
}}}
* 啟動 xenwin
{{{
$ sduo xm create xenwin.cfg
}}}
----
= 【討論 & 休息】 =
* 回顧:
1. Xen Hypervisior 的安裝
2. Xen 設定檔的位置和參數
3. 如何產生一個 VM Image (使用 xen-create-image )
4. 使用 xm 管理指令來管理 VM
* 休息前,請記得將 VM 關掉
{{{
$ sudo xm destroy vm01
}}}
[[BR]]
[[BR]]