Xen 初學(xué)者指南作者:北南南北
1、什么是Xen
3.2 在Redhat/Fedora 操作平臺上的安裝 3.3 通過Xen的二進制包來安裝(幾乎適用所有的Linux發(fā)行版) 3.4 通過Xen的源碼包編譯安裝(僅供參考)
4.2 查看/boot目錄中xen相關(guān)的配置文件 4.3 禁掉 TLS Libraries 4.4 引導(dǎo)XenLinux的GRUB內(nèi)容
5.12 內(nèi)核模塊存放于 /lib/modules 5.13 xen的配置文件及守護程序的存放位置 5.14 可執(zhí)行命令存放于/usr/sbin 5.2 Xen服務(wù)器的啟動
5.32 通過配置文件來引導(dǎo)虛擬的操作系統(tǒng) 5.33 從終端或控制臺登錄正在運行的虛擬操作系統(tǒng) 5.34 存儲正在運行的虛擬操作系統(tǒng)的狀態(tài)及喚醒虛擬操作系統(tǒng) 5.35 停止正在運行的虛擬操作系統(tǒng)/激活停止的虛擬操作系統(tǒng) 5.36 調(diào)整虛擬平臺/虛擬操作系統(tǒng)的占用內(nèi)存 5.37 關(guān)閉被虛擬的系統(tǒng) 5.38 調(diào)整虛擬平臺及虛擬操作系統(tǒng)的虛擬CPU個數(shù) 5.39 查看虛擬系統(tǒng)運行的狀態(tài)
7、實例應(yīng)用:用Slackware+Xen虛擬Fedora 5.0
8、強制終止正在運行的虛擬操作系統(tǒng)(重要)
虛擬平臺是指能支持運行Xen的真實安裝的操作系統(tǒng); 比如我在Slackware 中安裝了Xen,那Slackware就是虛擬平臺,通過虛擬平臺就可以虛擬其它操作系統(tǒng)了;比如通過Slackware來虛擬Debian、Fedora ... ...
Xen 是一個開放源代碼的para-virtualizing虛擬機(VMM),或“管理程序 ”,是為x86架構(gòu)的機器而設(shè)計的。Xen 可以在一套物理硬件上安全的執(zhí)行多個虛擬機;Xen是基于內(nèi)核的虛擬程序,它和操作平臺結(jié)合的極為密切,所以它占用的資源最少。 什么是虛擬機呢?可能大家知道VMWARE吧,是的,Xen就 是類似這樣的程序,比如我們可以在Fedora 上虛擬安裝和使用Slackware、Debian、Gentoo ... ... 等發(fā)行版。因為Xen是基于內(nèi)核的,相對VMWARE 來說,它占用的系統(tǒng)資源也就是VMWARE的百分之幾左右。Xen是不是更有優(yōu)勢呢?只有您實踐了才知道。這也是我寫本文的最主要原因;
虛擬機的性能更接近真實硬件環(huán)境)
服務(wù)器整合:在虛擬機范圍內(nèi),在一臺物理主機上安裝多個服務(wù)器, 用于演示及故障隔絕;
請參閱: 《Xen v3.0 用戶手冊》
基于Xen的操作系統(tǒng),有多個層,最底層和最高特權(quán)層是 Xen程序本身。Xen 可以管理多個客戶操作系統(tǒng),每個操作系統(tǒng)都能在一個安全的虛擬機中實現(xiàn)。在Xen的術(shù)語中,Domain由Xen控制,以高效的利用CPU的物理資源。每 個客戶操作系統(tǒng)可以管理它自身的應(yīng)用。這種管理包括每個程序在規(guī)定時間內(nèi)的響應(yīng)到執(zhí)行,是通過Xen調(diào)度到虛擬機中實現(xiàn)。 當(dāng)Xen啟動運行后,第一個虛擬的操作系統(tǒng),就是Xen本身, 我們通過xm list,會發(fā)現(xiàn)有一個Domain 0的虛擬機。Domain 0 是其它虛擬主機的管理者和控制者,Domain 0 可以構(gòu)建其它的更多的Domain ,并管理虛擬設(shè)備。它還能執(zhí)行管理任務(wù),比如虛擬機的體眠、喚醒和遷移其它虛擬機。 一個被稱為xend的服務(wù)器進程通過domain 0來管理系統(tǒng),Xend 負責(zé)管理眾多的虛擬主機,并且提供進入這些系統(tǒng)的控制臺。命令經(jīng)一個命令行的工具通過一個HTTP的接口被傳送到xend。
在寫本文時,Xen的當(dāng)前最新版本是xen-3.0.1,它基于的內(nèi)核版本是2.6.12.6的。您可以根據(jù)自己的操作系統(tǒng)的情況來選擇一種安裝方式,適合您的就是最好的;
擁有 GRUB引導(dǎo)的Linux做為安裝平臺,還要編譯工具,比如gcc、binutils 及make和automake等;開發(fā)庫有zlib和python-dev等; 具體明細請參閱: 《Xen v3.0 用戶手冊》 由于Xen用Python 開發(fā)的,所以Python 當(dāng)然也是必不可少的。如果您是新手,我建議您用自己所用的操作系統(tǒng)軟件包管理工具來安裝這些軟件包。
在Fedora/Redhat平臺上安裝比較簡單,您可以通過 yum 來在線安裝Xen和支持Xen的內(nèi)核;因為Fedora/Redhat已經(jīng)提供對Xen的支持了;Fedora/Redhat 提供的Xen內(nèi)核支持比較高;不過就目前我的測試來看好象經(jīng)常會機器重啟,存在的問題可能是桌面環(huán)境造成的,比如GNOME桌面,打開就有重啟的現(xiàn)象,也 可能是Fedora/Redhat提供的Xen內(nèi)有BUG; 安裝Xen及支持Xen的請參考:《Fedora Core 5.0 用 Xen 虛擬Slackware 10.2》 對于Fedora 4.0及Redhat和Fedora 5.0類似;現(xiàn)在Yum的源上都有Xen和支持Xen的內(nèi)核包;
通過Xen的二進制軟件包來安裝,這應(yīng)該是通用的,幾乎適合所有的Linux操作系統(tǒng)。由于二進制所是已經(jīng)編譯好的,我已經(jīng)在Slackware 平臺上用這種方法來安裝,還是成功的。另外etony兄也在Debian上安裝成功; 您應(yīng)該到 http://www./downloads 去下載二進制包,文件名中帶有xen-3.0.1-install字樣的,比如 xen-3.0.1-install-x86_32.tgz,這個軟件包表示適用x86_32位機器的。也就是我們用的普通32位PC機。如果您用的是 64位機器,應(yīng)該下載文件名帶有x86_64字樣的軟件包; 下載好后,就解壓安裝,我們還是以支持x86_32構(gòu)架機器的xen-3.0.1-install-x86_32.tgz為例: [root@localhost ~]# tar zxvf xen-3.0.1-install-x86_32.tgz 判斷是不是安裝好了,請查看/boot目錄,會發(fā)現(xiàn)有很多文件名帶有xen字樣的文件,另外在/lib/moudules中也會發(fā)現(xiàn)有支持xen的內(nèi)核模塊;另外再看一看是否有/etc/xen這個目錄。我想應(yīng)該是有的。
通過Xen的二進制包來安裝,可能有時內(nèi)核不太適應(yīng)我們的需要,這時我們要通過Xen的源碼包來安裝。通過自己編譯來安裝Xen及支持Xen的內(nèi)核;Xen的源碼包,您可以到 http://www./downloads去下載。文件名帶有 xen-3.0.1-src字樣的,比如 xen-3.0.1-src.tgz。
通過Xen的源碼包編譯,其實也沒有什么神秘的。在Xen的源 碼包中提供了一些內(nèi)核補丁和內(nèi)核配置文件等。當(dāng)我們執(zhí)行編譯命令時,首先編譯的是 Xen程序本身,然后是編譯內(nèi)核 。在編譯內(nèi)核時,程序會自動判斷是否有內(nèi)核源碼,xen-3.0.1支持的內(nèi)核是2.6.12.6,如果在xen的解壓目錄下沒有,他就會自動內(nèi)核的官方 站 http://www. 下載 linux-2.6.12.tar.bz2。然后就是自動解壓并為此內(nèi)核打補丁。然后系統(tǒng)會根據(jù)指令要求,然后采用相應(yīng)的內(nèi)核配置文件,或配置內(nèi)核進行編 譯。
第一步:解壓軟件包,查看Xen源碼包所帶的文件; [root@localhost ~]# tar zxvf xen-3.0.1-src.tgz 我們解壓xen-3.0.1-src.tgz 后,進入解壓目錄,會看到以上的文件或文件夾。patches是內(nèi)核的補丁包,linux-2.6-xen-sparse是支持Xen的內(nèi)核目錄樹,值得注意的是內(nèi)核的配置文件就在這個目錄中; [root@localhost xen-3.0.1]# ls linux-2.6-xen-sparse/arch/xen/configs/ 看到上面所列出的內(nèi)核配置文件了吧,我們可能會發(fā)現(xiàn)文件名帶有xen0字樣的和xenU字樣的兩類文件。在這兩類內(nèi)核中,我們大多會修改的內(nèi)核配置文件是運行xen的操作系統(tǒng)的內(nèi)核配置文件,另一個是用于虛擬操作系統(tǒng)的內(nèi)核配置文件; xen0字樣的就是我們一般是用于我們運行xen的操作系統(tǒng)的內(nèi)核 ,而xenU字樣的就是為虛擬操作系統(tǒng)所提供的內(nèi)核。另外還有x86_32和x86_64之分,這表示CPU的架構(gòu)。 比如我們用的是x86架構(gòu)32位的CPU,我們在編譯內(nèi)核的時候就要用到 xen0_defconfig_x86_32 和xenU_defconfig_x86_32 配置文件。 舉個例子:比如我的機器架構(gòu)是x86_32位 的,我安裝xen的操作系統(tǒng)是Slackware,我想在Slackware 虛擬Debian 、Gentoo、Fedora等操作系統(tǒng)。這時編譯虛擬平臺Slackware所用的內(nèi)核的配置文件就是 xen0_defconfig_x86_32 ,而被虛擬平臺(Debian 、Gentoo、Fedora等操作系統(tǒng))所用的內(nèi)核就是 xenU_defconfig_x86_32 。 弄明白內(nèi)核配置文件有何用?我們能明白xen在編譯過程中用了哪些內(nèi)核配置文件,目的是我們在編譯過程中可以根據(jù)自己的需要來修改它,以編譯出適合我們需要的內(nèi)核。 比如我們想讓Slackware 支持xen,并且還要支持NTFS文件系統(tǒng);所以我們就要修改 xen0_defconfig_x86_32這個文件。找出如下一行; # CONFIG_NTFS_FS is not set 改為 CONFIG_NTFS_FS=m 如果您想讓被虛擬的操作系統(tǒng)(Debian 、Gentoo、Fedora等)也支持NTFS文件系統(tǒng),所以要在 xenU_defconfig_x86_32找出如下一行; # CONFIG_NTFS_FS is not set 改為 CONFIG_NTFS_FS=m 第二步:配置內(nèi)核; 這一步有兩種方法,一個是直接修改內(nèi)核配置文件,另一個是內(nèi)核配置界面來配置; 方法一:通過修改內(nèi)核配置文件; Xen所帶的內(nèi)核配置文件位于解壓目錄中的linux-2.6-xen-sparse/arch/xen/configs 。我們前面已經(jīng)提到了相關(guān)配置文件的用途。請仔細看前一步的說明; 方法二:通過內(nèi)核配置界面來配置; [root@localhost xen-3.0.1]# make linux-2.6-xen0-config CONFIGMODE=menuconfig 第三步:編譯和安裝Xen; [root@localhost xen-3.0.1]# make
有的系統(tǒng)需要initrd-XXXX.img或initrd.gz文件才能引導(dǎo)起來,如果您的系統(tǒng)用了支持xen的支持引導(dǎo)不起來,就要創(chuàng)建一個initrd-XXXX.img或initrd.gz的文件;請參考: 《Xen v3.0 用戶手冊》
一般的情況下會在/boot目錄中有兩個與xen相關(guān)的內(nèi)核,有的文件名帶有vmlinuz-XXXX-xen0字樣的,有的帶有vmlinuz-XXXX-xenU字樣的;比如: [root@localhost xen-3.0.1]# ls -la /boot/vmlinuz*xen* 其實就是兩個與xen相關(guān)的內(nèi)核,其它的都是這兩個內(nèi)核文件的 鏈接;也就是vmlinuz-2.6.12.6-xen0和vmlinuz- 2.6.12.6-xenU。vmlinuz-2.6.12.6-xen0是用來引導(dǎo)虛擬平臺的,比如我們在Slackware上安裝Xen,那 Slackware就是虛擬平臺;所以如果要讓Slackware的xen能運行起來,必須用xen相關(guān)的內(nèi)核,也就是vmlinuz- 2.6.12.6-xen0這個內(nèi)核。 而XenU字樣這個內(nèi)核,是用來引導(dǎo)虛擬操作系統(tǒng)用的,我們在以后會提到它。
一旦我們在Linux操作系統(tǒng)安裝好Xen后,這樣的系統(tǒng)應(yīng)該 被稱為XenLinux。如何才能引導(dǎo)擁有Xen的Linux呢?這時我們要用到 GRUB系統(tǒng)引導(dǎo)管理器。我們修改一下GRUB的配置文件menu.lst或grub.conf就行了。此文件位于/boot/grub目錄中;
[root@localhost ~]# df -h
[root@localhost ~]# ls /boot 注意:我們前面已經(jīng)說過了,xen提供了兩個內(nèi)核,一個是虛擬平臺用的,也就是文件名帶有xen0字樣的;另一個帶有xenU字樣的,這是用于引導(dǎo)和支持虛擬操作系統(tǒng)用的。 什么虛擬平臺,比如我們想用Slackware 的Xen虛擬Fedora、Gentoo .... 。那么Slackware就是虛擬平臺,而Fedora、Gentoo... .. 是被虛擬的操作系統(tǒng)。Slackware是一個真實安裝在您的機器上的操作系統(tǒng),它提供的是一個運行xen的環(huán)境。為了讓Slackware能支持xen ,所以必須用于支持Xen的內(nèi)核,也就是在/boot中有xen0字樣的文件。 如果您安裝了Xen,會在/boot中有兩個文件vmlinuz-2.6.12.6-xen0和vmlinuz-2.6.12.6-xenU,
[root@localhost ~]#mv /lib/tls /lib/tls.disabled 禁掉的理由,請查看: 《Xen v3.0 用戶手冊》
title SlackXen 如果有inintrd-2.xxxx-xen.img或initrd.gz之類的文件才能引導(dǎo)起來系統(tǒng),還要加一行;要以/boot中的initrd相關(guān)的文件為準(zhǔn); modules /boot/initrd.gz 有關(guān)GRUB的文檔:《系統(tǒng)引導(dǎo)管理器GRUB,為初學(xué)者指南》 注意:與傳統(tǒng)GRUB的定義有點不同,就是kernel 是用來定義Xen的,而Linux的內(nèi)核及initrd映像是通過module 指令定義的;要仔細看好;
xen安裝后,文件放在什么地方了呢?主要放在以下幾個目錄;
安裝有xen的操作系統(tǒng)下的/boot目錄中,存放xen本身及支持xen的內(nèi)核文件。比如文件名帶有xen0和xenU相關(guān)的文件;
內(nèi)核模塊包括虛擬平臺支持xen的內(nèi)核xen0的模塊,及支持虛擬操作系統(tǒng)所用的xenU的模塊,一般的情況下是在 /lib/modules下有兩個xen相關(guān)的目錄存放。一個是文件夾名帶有xen0字樣的,另一個是xenU字樣的;
一般的情況下,Xen的配置文件存放于/etc/xen目錄。 比如 xend-config.sxp是用于配置網(wǎng)絡(luò)的,不過我們不必更改,用其默認的就能完成我們的需要。xmexample1 xmexample2是兩個示例性的配置文件。我們在配置引導(dǎo)被虛擬的操作系統(tǒng)時,這兩個文件可供參考; Xen的服務(wù)器xend和xendomains啟動腳本,一般 是位于/etc/init.d/目錄中,也就是/etc/init.d/xend ;/etc/init.d/xend負責(zé)啟動xend服務(wù)器,而/etc/init.d/xendomains負責(zé)第一個虛擬的系統(tǒng)及其它的 Domains,也就是Domain 0 。
[root@localhost ~]#ls /usr/sbin/xen*
xend服務(wù)器的啟動/停止/重啟/狀態(tài)查詢,請用下面的命令; [root@localhost ~]# /etc/init.d/xend start 啟動xend,如果 xend沒有運行) 啟動xendomains 服務(wù)器的啟動/停止/重啟/狀態(tài)查詢,請用下面的命令;一般的情況下,xend服務(wù)器啟動了,xendomains也會自動啟動。所以這個只是掌握一下就行了; [root@localhost ~]# /etc/init.d/xend start 啟動xend,如果 xend沒有運行) [root@localhost ~]# /etc/init.d/xendomains start
我們前面提到Xen的可執(zhí)行命令中,我們可能看到了一些以xen開頭的命令,您不妨嘗試一個一個的嘗試一下他們是做什么用的;比如xend是服務(wù)器的開啟運行命令 ... .... 其中xm命令,就是管理Xen的最基本的工具;您可以通過xm --help 來獲得幫助; [root@localhost ~]# /usr/sbin/xm list 列出所有正在運行的虛擬系統(tǒng)(也可以稱為虛擬機);我們可以看 到,一個名為Domain-0的系統(tǒng)正在運行。Domain-0就是Xen本身,也可以稱為虛擬平臺內(nèi)存大小,而Domain-0負責(zé)提供其它虛擬操作系 統(tǒng)的硬件環(huán)境,其它的系統(tǒng)都是基于Domain-0開始的,我們看到他的ID為0就應(yīng)該知道它的權(quán)限是至高無尚的。所占用的內(nèi)存是450M,不過這個是可 以指定的。虛擬的CPU個數(shù)是1個,運行狀態(tài)處于r,也就是run,正在運行中;運行時間是5377秒; 還有一個虛擬系統(tǒng)fc5,他的id是4,占用內(nèi)存256M,虛擬CPU個數(shù)是1個 ... ...
[root@localhost ~]# /usr/sbin/xm create -c 虛擬操作系統(tǒng)的啟動配置文件 比如我們要啟動被虛擬的操作系統(tǒng)Fedora Core 5.0 ,我們要寫一個啟動Fedora的配置文件,比如是fc5vm.cfg。然后就可以通過下面的命令來引導(dǎo)Fedora了; [root@localhost ~]# /usr/sbin/xm create -c fc5vm.cfg
[root@localhost ~]# /usr/sbin/xm console 正在運行的虛擬操作系統(tǒng)的Name或ID; 舉例: [root@localhost ~]# /usr/sbin/xm list
[root@localhost ~]# /usr/sbin/xm save <DomId> <File> 舉例: [root@localhost ~]# /usr/sbin/xm list
[root@localhost ~]# /usr/sbin/xm pause <DomId> 舉例: [root@localhost ~]# /usr/sbin/xm list
我們可以調(diào)整正在運行中的虛擬平臺(Domain-0)所占內(nèi)存大小及虛擬操作系統(tǒng)所占用的內(nèi)存大??; [root@localhost ~]# /usr/sbin/xm mem-set <DomId> <Mem> 舉例: [root@localhost ~]# /usr/sbin/xm list
[root@localhost ~]# /usr/sbin/xm shutdown 虛擬操作系統(tǒng)的Name或DomID 舉例: [root@localhost ~]# /usr/sbin/xm list
[root@localhost ~]# /usr/sbin/xm vcpu-set <DomId> <VCPUs> 舉例: [root@localhost ~]# /usr/sbin/xm list
[root@localhost ~]# xm top
我們虛擬的系統(tǒng)應(yīng)該有一個存儲的地方,也就是文件系統(tǒng)。被虛擬的系統(tǒng)能安裝和運行在哪些文件系統(tǒng)上呢?能安裝和運行在一個實際的物理分區(qū)上,一個映像文件中,或NFS等網(wǎng)絡(luò)文件系統(tǒng)中;
以實際物理硬盤分區(qū)做為虛擬操作系統(tǒng)的文件系統(tǒng),要經(jīng)過硬盤分區(qū),創(chuàng)建文件系統(tǒng)流程; 請參考:《Linux 創(chuàng)建文件系統(tǒng)及掛載文件系統(tǒng)流程詳解》
《Linux 查看磁盤分區(qū)、文件系統(tǒng)、使用情況的命令和相關(guān)工具介紹》
構(gòu)建操作系統(tǒng),目前在一個Linux操作系統(tǒng)中構(gòu)建另一個操作系統(tǒng),主要是通過chroot工具和軟件包提取工具來構(gòu)建?;A(chǔ)的東西還是需要一點的,請參考:《通過chroot 構(gòu)建Linux操作系統(tǒng)概要》 目前在開源社區(qū)中,已經(jīng)有人把一些常用的發(fā)行版的基礎(chǔ)系統(tǒng)做好了。我們能拿過來直接用。呵。。。。。只要有基礎(chǔ)系統(tǒng),我們就能chroot進入,我們就能用相應(yīng)發(fā)行版軟件包管理器來構(gòu)建操作系統(tǒng)了。 操作系統(tǒng)之基礎(chǔ)系統(tǒng)資源: 您可以直接下載您喜歡的操作系統(tǒng),解壓后,然后掛載映像文件,然后把映像文件的內(nèi)容都拷到物理分區(qū)中就好了。不過還得做一點小小的修改,比如您下載系統(tǒng)映像文件中的/etc/fstab等文件。要根據(jù)您的引導(dǎo)的虛擬操作系統(tǒng)中定義的虛擬映射點來改。
如果您的硬盤有一定的空間,就可以把被虛擬的操作系統(tǒng)安裝在硬 盤的實際物理分區(qū)中,當(dāng)然您首先得準(zhǔn)備一個硬盤分區(qū)。然后格式化成Linux的文件系統(tǒng),比如ext3或reiserfs 等;然后是在這個分區(qū)上構(gòu)建您想要虛擬的操作系統(tǒng),最后才是寫虛擬操作系統(tǒng)的引導(dǎo)配置文件,在配置文件中,要用phy:來指定。 比如: disk = ['phy:hda7,sda1,w'] 這行是什么意思呢?就是表示被虛擬的操作系統(tǒng)安裝在/dev/hda3,我們要把hda3硬盤分區(qū)虛擬映射到/dev/sda1,并且是可讀可寫的;在這里要值得注意的是虛擬平臺正在使用中的分區(qū)不能做為是映射點。 比如我在Slackware是位于/dev/hda6的虛擬平臺,也就是真實運行的操作系統(tǒng),我想用它來虛擬位于/dev/hda7分區(qū)的Fedora。所以我不能把/dev/hda6做為hda7的映射點。也就是下面一行是錯誤的: disk = ['phy:hda7,hda6,w'] 如何定義映射點,其實也比較好辦,只要符合Linux設(shè)備的規(guī)則就可以;比如下面的也可以; disk = ['phy:hda7,sda2,w'] 什么是映射點呢?也就是說通過phy定義后,被虛擬的操作系統(tǒng)的位于的真實的物理分區(qū),在虛擬平臺中,被映射到另一個分區(qū);可能這樣說有點不太明白。呵。。。。。。 舉個例子吧:比如我們在Slackware虛擬Fedora ,而Fedora 位于/dev/hda7中。我們在引導(dǎo)Fedora的配置文件中定義Fedora所用的物理分區(qū)被映射到/dev/sda1; disk = ['phy:hda7,sda1,w'] 當(dāng)我們把Fedora引導(dǎo)起來的時候,F(xiàn)edora的文件系統(tǒng)就是用被虛擬后的分區(qū),也就是/dev/sda1。在Fedora中,我們通過df -h 查看到Fedora是位于/dev/sda1。 所以在引導(dǎo)Fedora的配置文件中,還要有一行來指定Fedora的root在哪里,就在/dev/sda1上;因為/dev/hda7已經(jīng)被虛擬到了/dev/sda1。這回明白了吧;
以映像文件做為虛擬操作系統(tǒng)的文件系統(tǒng),這種方法是比較常用。也是比較方便和易于操作的,也就是說被虛擬的操作系統(tǒng)是放在了一個文件中。
[root@localhost ~]# dd if=/dev/zero of=fedora50.img bs=2k seek=2048k count=1 我們可以用dd來創(chuàng)建映像文件,上面的例子是創(chuàng)建了大小為4.1G的體積的,名為fedora50.img的映像文件;您可以調(diào)整上面命令參數(shù)的大小來創(chuàng)建您想要的體積大小的映像文件。
Linux文件系統(tǒng),比如ext3或reiserfs,看自己喜歡吧;您可以用mkfs.ext3或mkfs.reiserfs命令來創(chuàng)建文件系統(tǒng),請參考: [root@localhost ~]# /sbin/mkfs.ext3 fedora50,img 這樣fedora50.img就是ext3文件系統(tǒng)了,你可以用mount -o loop 來掛載使用它,在它上面存儲文件等。 [root@localhost ~]# mkdir /mnt/fedora50 上面的一系列命令執(zhí)行下去后,說明fedora50.img已經(jīng)掛載到了/mnt/fedora目錄中,我們可以向/mnt/fedora中存放文件。這樣就寫到了fedora50.img映像文件中。寫完后,我們可以卸載fedora50.img; [root@localhost ~]# umount /mnt/fedora
在映像文件上構(gòu)建操作系統(tǒng),目前在一個Linux操作系統(tǒng)中構(gòu)建另一個操作系統(tǒng),主要是通過chroot工具和軟件包提取工具來構(gòu)建?;A(chǔ)的東西還是需要一點的,請參考: 目前在開源社區(qū)中,已經(jīng)有人把一些常用的發(fā)行版的基礎(chǔ)系統(tǒng)做好了。我們能拿過來直接用。呵。。。。。只要有基礎(chǔ)系統(tǒng),我們就能chroot進入,我們就能用相應(yīng)發(fā)行版軟件包管理器來構(gòu)建操作系統(tǒng)了。 操作系統(tǒng)之基礎(chǔ)系統(tǒng)資源:
disk = ['file:/opt/vmos/vmos.img,sda1,w', 'file:/opt/vmos/vmos.swap,sda2,w'] 我們還是以實例解說,把裝有vmos.img的映像映射到 /dev/sda1 分區(qū),vmos.img就是虛擬操作系統(tǒng)root存放地。vmos.swap是被虛擬文件系統(tǒng)的交換分區(qū),這個交換分區(qū)也是一個文件,被映射到了 /dev/sda2 。然后通過root= 行來指定虛擬操作系統(tǒng)所處的分區(qū),這個位置就是被虛擬后的分區(qū)。 定義時要注意自己的這些文件存放在哪了?上面的例子表示vmos.img和vmos.swap是存放在/opt/vmos目錄中。要看好了。。
請到: http://
我們把下載下來的Fedora 5 基礎(chǔ)系統(tǒng),存放到/opt/fedora5vm目錄中;然后解壓; [root@localhost ~]# mkdir /opt/fedora5vm
您可以在您的硬盤上創(chuàng)建一個物理分區(qū),如果有空閑的物理分區(qū)可用也行。然后創(chuàng)建一下文件系統(tǒng)。分區(qū)工具用fdisk 工具就行。 分區(qū)工具,請參考:《實例解說 fdisk 使用方法》 比如我們想把Fedora 放在/dev/hda5上,我們可以用mkfs.ext3來格式化/dev/hda5。 [root@localhost ~]# /sbin/mkfs.ext3 /dev/hda5
因為我們已經(jīng)下載了,F(xiàn)edora Core 5的基礎(chǔ)系統(tǒng)的映像文件,也做了解壓。會看到 fedora.fc5.img這個映像文件; 我們把這個映像掛載,然后把它的內(nèi)容復(fù)制到我們剛才創(chuàng)始的文件系統(tǒng)的分區(qū)中,也就是/dev/hda5; [root@localhost ~]# mkdir /mnt/tmp 復(fù)制fedora.fc5.img中的內(nèi)容,到/dev/hda5中; [root@localhost ~]# cp -rp /mnt/tmp/* /mnt/fedora 然后是chroot 到/mnt/fedora目錄中,實際就是操作Fedora 5系統(tǒng),我們要創(chuàng)建Fedora 5的root密碼; [root@localhost ~]# chroot /mnt/fedora/ 然后我們卸載/dev/hda5分區(qū); [root@localhost ~]# umount /dev/hda5
我們在解壓 fedora.fc5.20060401.img.tgz 時看到一個文件fedora.fc5.xen.cfg ,這個就是Fedora 5的引導(dǎo)文件,人家洋人都為我們寫好了。我們只是改一改就能用了; 我們要回到fedora.fc5.xen.cfg的存放目錄/opt/fedora5vm中;復(fù)制fedora.fc5.xen.cfg名為fc5vm.cfg的文件。然后我們把fc5vm.cfg作為被虛擬的Fedora 5的引導(dǎo)文件; [root@localhost ~]# cd /opt/fedora5vm 我們要對fc5vm.cfg做一下修改; 在fc5vm.cfg中,我們會看到如下的內(nèi)容: kernel = "/boot/vmlinuz-2.6-xenU" 首先我們看kernel 這行,這行是定義虛擬操作系統(tǒng)內(nèi)核的,我們要用到我們安裝xen是所安裝的內(nèi)核。要在虛擬平臺/boot目錄中找。比如我用Slackware虛擬 Fedora 。那虛擬平臺就是Slackware。我應(yīng)試在Slackware的/boot中找文件名中包含vmlinuz和xenU字樣的文件。比如我找以的是: [root@localhost ~]# ls -lh /boot/vmlinuz*xenU* 我們看到有類似的三個文件,實際上只有一個,也就是 vmlinuz-2.6.12.6-xenU,其它的都是他的鏈接文件。所以我們在kernel行中指定內(nèi)核時,可以用這三個中的任何一個;比如我們用 vmlinuz-2.6-xenU; memory是指定內(nèi)存大小的,我們設(shè)置被虛擬的Fedora 5的虛擬內(nèi)存大小是 128M; vif = ['mac=aa:00:00:00:00:11'] 用來指定Fedora 5的網(wǎng)卡的物理地址;可以自己定義。 disk這行是用來定義Fedora所處的物理分區(qū)映射點,及 物理交換分區(qū)及映射點的;因為物理分區(qū)是通過phy:來指定的。所以我們得改一改。因為我們已經(jīng)把Fedora放在了/dev/hda5了。另外交換分區(qū) 在哪呢?可以通過swapon -s來查看物理交換分區(qū),要在虛擬平臺中查看;比如我得到的是/dev/hda8是交換分區(qū)。所以disk這行就應(yīng)該這樣寫: disk = ['phy:hda5,sda1,w','phy:hda8,sda2,w'] 不過真實物理分區(qū)的映射點,比如/dev/hda5映射到了 /dev/sda1,交換分區(qū)/dev/hda8映射到了/dev/sda2。映射過后,F(xiàn)edora的root文件系統(tǒng)就用映射后的/dev /sda1。慢慢理解;物理分區(qū)的映射點是可以在Linux系統(tǒng)設(shè)備定義的許可范圍內(nèi)進行。自己嘗試著換一換映射點。如果Fedora的root所處的物 理分區(qū)的映射點改變后,F(xiàn)edora的root=的值也得跟著改變。另外還要改Fedora系統(tǒng)中的/etc/fstab文件; root一行,來指定Fedora的所有的虛擬物理分區(qū)(就是映射點)。映射到哪里了呢?Fedora 安裝到了/dev/hda5,映射后虛擬到了/dev/sda1。所以Fedora系統(tǒng)引導(dǎo)時就尋找/dev/sda1做為文件系統(tǒng)。 所以root這行可寫為: root = "/dev/sda1 ro" 所以我們可以這樣寫Fedora 5的引導(dǎo)配置文件; 第一種:如果是用DHCP來獲取IP: kernel = "/boot/vmlinuz-2.6-xenU" 第二種:如果是指定IP的話: kernel = "/boot/vmlinuz-2.6-xenU" 再舉一例: 比如Fedora 被安裝在了/dev/hda5分區(qū),物理交換分區(qū)為/dev/hda8。通過DHCP獲得IP。我想映射/dev/hda5到/dev/hda5,并且想映射/dev/hda8到/dev/hda8。我們應(yīng)該如何修改一些配置文件呢? Fedora的引導(dǎo)文件內(nèi)容應(yīng)該是: kernel = "/boot/vmlinuz-2.6-xenU" 然后我們應(yīng)該再把裝有Fedora的/dev/hda5分區(qū)掛載,然后修改Fedora系統(tǒng)的/etc/fstab。注意:不是修改虛擬平臺的/etc/fstab。不要弄混了?。。?! 應(yīng)該先掛載Fedora 5所處的分區(qū): [root@localhost ~]# mount /dev/hda5 /mnt/fedora/ 然后修改Fedora 5的/etc/fstab文件,也就是/mnt/fedora/etc/fstab文件:找到如下兩行: /dev/sda1 / ext3 defaults 1 1 改為: /dev/hda5 / ext3 defaults 1 1 接著再umount /mnt/fedora [root@localhost ~]# umount /mnt/fedora
引導(dǎo)運行Fedora 5.0就好辦了,就是用xm 工具來引導(dǎo);首先要確認你的Fedora 5的配置文件放在哪里。比如我是放在了/opt/fedora5vm中。并且文件名為fc5vm.cfg。所以我就可以這樣來引導(dǎo)Fedora 5。 [root@localhost ~]# /usr/sbin/xm create -c /opt/fedora5vm/fc5vm.cfg
modprobe: FATAL: Could not load /lib/modules/2.6.12.6-xenU/modules.dep: 如果出現(xiàn)類似上面的現(xiàn)象,請復(fù)制虛擬平臺的中的/lib/modues/下的2.6.12.6-xenU 到Fedora系統(tǒng)中; 方法是先掛載Fedora 所處的物理分區(qū),然后用cp -rp 來復(fù)制; 首先要關(guān)掉Fedora,然后再復(fù)制; [root@localhost ~]# xm list 以上面虛擬操作系統(tǒng)的ID為準(zhǔn),比如fc5的ID是 2,就要運行如下命令; [root@localhost ~]# xm destroy 2 然后mount 掛載Fedora所處的物理分區(qū)/dev/hda5; [root@localhost ~]# mount /dev/hda5 /mnt/fedora
請到: http://
我們把下載下來的Fedora 5 基礎(chǔ)系統(tǒng),存放到/opt/fedora5vm目錄中;然后解壓; [root@localhost ~]# mkdir /opt/fedora5vm
我們從fedora.fc5.20060401.img.tgz 解壓出來一個fedora.fc5.xen.cfg ,這個就是用來引導(dǎo)Fedora 5的配置文件。我們改一改以適合我們的需要。我們把這個文件復(fù)制為fc5vm.cfg [root@localhost ~]# cp /opt/fedora5vm/fedora.fc5.xen.cfg /opt/fedora5vm/fc5vm.cfg fc5vm.cfg 內(nèi)容如下: kernel = "/boot/vmlinuz-2.6-xenU" 注解: 首先我們看kernel 這行,這行是定義虛擬操作系統(tǒng)內(nèi)核的,我們要用到我們安裝xen是所安裝的內(nèi)核。要在虛擬平臺/boot目錄中找。比如我用Slackware虛擬 Fedora 。那虛擬平臺就是Slackware。我應(yīng)試在Slackware的/boot中找文件名中包含vmlinuz和xenU字樣的文件。比如我找以的是: [root@localhost ~]# ls -lh /boot/vmlinuz*xenU* 我們看到有類似的三個文件,實際上只有一個,也就是 vmlinuz-2.6.12.6-xenU,其它的都是他的鏈接文件。所以我們在kernel行中指定內(nèi)核時,可以用這三個中的任何一個;比如我們用 vmlinuz-2.6-xenU; memory是指定內(nèi)存大小的,我們設(shè)置被虛擬的Fedora 5的虛擬內(nèi)存大小是 128M; vif = ['mac=aa:00:00:00:00:11'] 用來指定Fedora 5的網(wǎng)卡的物理地址;可以自己定義。 disk來定義Fedora 5.0 所用的文件系統(tǒng),因為我們這次用的是映像文件。所以要用file:來指定,F(xiàn)edora 5用的交換分區(qū),也是一個映像文件;所以有: disk = ['file:/opt/fedora5vm/fedora.fc5.img,sda1,w', 'file:/opt/fedora5vm/fedora.swap,sda2,w'] 指定fedora.fc5.img映像文件虛擬映射到/dev /sda1;交換分區(qū)文件fedora.swap映射到了/dev/sda2。映射過后,F(xiàn)edora的root文件系統(tǒng)就用映射后的/dev /sda1。虛擬映射設(shè)備是可以在Linux系統(tǒng)設(shè)備定義的許可范圍內(nèi)進行。自己嘗試著換一換映射點。如果Fedora的虛擬映射設(shè)備變了,我們得改變 Fedora中的/etc/fstab。 root一行,來指定Fedora的root位于哪個映射后的設(shè)備。映射到哪里了呢?Fedora 安裝到了/dev/sda1,映射后虛擬到了/dev/sda1。所以Fedora系統(tǒng)引導(dǎo)時就尋找/dev/sda1做為文件系統(tǒng)。 所以root這行可寫為: root = "/dev/sda1 ro" 所以我們可以這樣寫Fedora 5的引導(dǎo)配置文件; 第一種:如果是用DHCP來獲取IP: kernel = "/boot/vmlinuz-2.6-xenU" 第二種:如果是指定IP的話: kernel = "/boot/vmlinuz-2.6-xenU"
引導(dǎo)運行Fedora 5.0就好辦了,就是用xm 工具來引導(dǎo);首先要確認你的Fedora 5的配置文件放在哪里。比如我們在這個例子中是放在了/opt/fedora5vm中。并且文件名為fc5vm.cfg。所以我就可以這樣來引導(dǎo)Fedora 5。 [root@localhost ~]# /usr/sbin/xm create -c /opt/fedora5vm/fc5vm.cfg
modprobe: FATAL: Could not load /lib/modules/2.6.12.6-xenU/modules.dep: 如果出現(xiàn)類似上面的現(xiàn)象,請復(fù)制虛擬平臺的中的/lib/modues/下的2.6.12.6-xenU 到Fedora系統(tǒng)中; 方法是先掛載Fedora 所處的物理分區(qū),然后用cp -rp 來復(fù)制; 首先要關(guān)掉Fedora,然后再復(fù)制; [root@localhost ~]# xm list 以上面虛擬操作系統(tǒng)的ID為準(zhǔn),比如fc5的ID是 2,就要運行如下命令; [root@localhost ~]# xm destroy 2 然后mount 掛載Fedora所處的物理分區(qū)/dev/hda5; [root@localhost ~]# mount -o loop /opt/fedora5vm/fedora.fc5.img /mnt/fedora 然后再來引導(dǎo)Fedora 5,進入系統(tǒng)后用ifconfig來查看網(wǎng)卡的IP之類的,如果沒有激活,請用下面的命令來加載網(wǎng)卡模塊;在要Fedora中執(zhí)行; [root@fc5_pristine ~]# modprobe xennet
我們會發(fā)現(xiàn)我們下載的Fedora基礎(chǔ)系統(tǒng)的映像文件體積太小。體積小空間就小的了。Fedora 5.0如果只安裝基礎(chǔ)系統(tǒng),倒占用不了多少空間,如果再安裝一個桌面環(huán)境可能會占用大一點的地方。比如安裝GNOME或KDE。 我們可以自己創(chuàng)建一個映像文件,創(chuàng)建好文件系統(tǒng)。然后從我們下載下來的Fedora映像文件中的所有文件,也就是Fedora的基礎(chǔ)系統(tǒng),復(fù)制到我們新創(chuàng)建的映像中。前面已經(jīng)說過創(chuàng)建映像文件的辦法了。這個應(yīng)該好辦吧。 [root@localhost ~]# dd if=/dev/zero of=fc5.img bs=2k seek=2048k count=1 [root@localhost ~]# mkdir /mnt/tmp 注:在/mnt/中創(chuàng)建tmp目錄 然后就是改一改引導(dǎo)Fedora 5的配置文件,注意改一下disk:那行;要到fc5.img指定進去。要仔細看一下fc5所處的目錄;這個應(yīng)該好辦,不多說了;
在xm這個管理工具中,我們把xm destroy 單列出來,就是因為這個工具是極為重要的;有時被虛擬的系統(tǒng)一直退不出去,但由于啟動過程中遇到問題,又不能終止。這時我們要用到這個工具強制被虛擬的系統(tǒng)退出。 [root@localhost ~]# xm list 這時您再用xm list查看,肯定fc5這個Domain已經(jīng)退出。 xm destroy 這個指令還是極為有用的,所以我們單列出來。希望新手弟兄注意一下。
基礎(chǔ)系統(tǒng)安裝好以后,下一步就是其它軟件的安裝。在各個系統(tǒng)都有軟件包管理工具; 在主流發(fā)行版中,都有相應(yīng)的軟件包管理工具,比如Fedora有rpm 和yum 工具;Debian有 apt工具。 或者通過chroot來安裝一些比較重要的軟件包??傊椒ㄌ嗔?; 總之,后續(xù)軟件的補充安裝并不是什么問題;
被虛擬的操作系統(tǒng),我們要把它看成一臺獨立運行的計算機。計算機與計算機之間通過什么訪問來?ssh 或vnc。所以我們要在被虛擬的操作系統(tǒng)上安裝vncserver 和sshd; 如果您虛擬的是Fedora ,我們可以在Fedora中執(zhí)行yum install vnc來安裝vncserver ; #yum install vnc 如果您虛擬的是 Debian ,您可以用apt-get install vncserver 來安裝vncserver ; #apt-get install vncserver 當(dāng)然客戶端也要安裝vncview才行,您要自己在客戶端上安裝vncview; 關(guān)于vnc遠程桌面的訪問,您可以參考這篇:《Fedora Core 5.0 用 Xen 虛擬Slackware 10.2》 另外sshd服務(wù)器,也要安裝openssh 的軟件包;這個也省略不說了,比較簡單,再說目前大多基礎(chǔ)系統(tǒng)已經(jīng)提供這個軟件包了。并且在被虛擬的系統(tǒng)在啟動時,sshd也自動運行了;連接sshd服務(wù)器的命令是; #ssh 用戶名@ip 比如 #ssh root@192.168.1.12
表現(xiàn)如下癥狀; VFS: Cannot open root device "sda8" or unknown-block(2,0) 引導(dǎo)虛擬操作系統(tǒng)的配置文件有問題,主要查看disk:那行和root那行是否用的是一個虛擬映射點。 比如是由于引導(dǎo)Fedora 的配置文件中disk行和root行如下: disk = ['phy:hda5,sda1,w','phy:hda8,sda2,w'] 我們發(fā)現(xiàn)/dev/hda5被虛擬映射到/dev/sda1了。也就是說,被虛擬的操作系統(tǒng)引導(dǎo)運行,它的root應(yīng)該位于/dev/sda1。而在這里定義的卻是/dev/sda8。所以應(yīng)該改為 disk = ['phy:hda5,sda1,w','phy:hda8,sda2,w']
chown: changing ownership of `/tmp/.ICE-unix': Read-only file system 再比較/tmp/xxxx之類的不能寫入,只讀之類的,請用xm destrony 先關(guān)掉被虛擬的操作系統(tǒng)。然后把被虛擬的系統(tǒng)的分區(qū)或映像文件掛載,刪除/tmp目錄中的臨時文件。注意.file是隱藏的。您可以通過ls -la來查看。然后再來刪除; 另外如果一直出現(xiàn)這個錯誤,說明文件系統(tǒng)有問題了,這在ext3的文件系統(tǒng)中是經(jīng)常發(fā)生的。您可以用/sbin/fsck.ext3 工具來修復(fù)文件系統(tǒng)。當(dāng)然您的文件系統(tǒng)不能處于掛載狀態(tài)。應(yīng)該先umout 才能進行; 比如修復(fù)一個分區(qū),應(yīng)該類似如下的命令; [root@localhost ~]# /sbin/fsck.ext3 /dev/hda5 如果中間遇到是否修復(fù)時,按提示的就是y或yes吧; 如果被虛擬的文件系統(tǒng)位于一個映像文件,也是用這種辦法,比如: [root@localhost ~]# /sbin/fsck.ext3 fc5.img
Warning: The nics option is deprecated. Please use an empty vif entry instead: vif = [ '' ] Error: Device 0 (vif) could not be connected. Hotplug scripts not working. 如果出現(xiàn)上面這種錯誤,應(yīng)該看一下配置文件中有沒有 vif=['']的定義; |
|
來自: 敬而遠 > 《計算機操作系統(tǒng)》