新手安裝Xentoo(Xen+Gentoo)的極速體驗(轉)

worldblog發表於2007-08-10
新手安裝Xentoo(Xen+Gentoo)的極速體驗(轉)[@more@]

  Xen的出現是虛擬化技術的一大突破,作業系統在Xen虛擬機器中執行速度和直接在硬體上執行速度幾乎相當,這在以前是不可能的,下面我們一起來進入這個極速的虛擬世界……

  安裝Xentoo不用深入學習Xen虛擬機器,只須瞭解一下它的執行機制和幾個基本術語就足夠了:

  Xen:

  Xen 是在劍橋大學作為一個研究專案被開發出來的,目前在GPL許可下開源。Xen 被定義為一款 半虛擬化(paravirtualizing) VMM(虛擬機器監視器,Virtual Machine Monitor),這表示,為了呼叫系統管理程式,要有選擇地修改作業系統,然而卻不需要修改作業系統上執行的應用程式。雖然 VMWare 等其他虛擬化系統實現了完全的虛擬化(它們不必修改使用中的作業系統),但它們仍需要進行實時的機器程式碼翻譯,這會影響效能。現在的Xen要為核心打補丁,但是,將來的處理器能支援虛擬化,核心也就不需要打補丁了。比如說,Intel的VT和AMD的Pacifica處理器都將包括這種支援。XenSource公司2005年8月在Intel開發者論壇(IDF)上發表宣告說,它已經利用Intel的VT-Enabled平臺和Xen技術虛擬化了Linux和Windows XP SP 2。

  dom0,domU:

  在Xen中,一個“系統管理程式”(Xen自身被稱為“系統管理程式”,是因為它比客戶OS的系統管理程式碼執行所需的特權級還高。)執行在0環,客戶OS執行在1環,應用程式執行在3環。當系統引導的時候,Xen被裝載到0環的記憶體中。它在1環上啟動修補過的核心,這被稱作是domain 0(domain是指一個執行中的虛擬機器,在其上有一個guest OS在執行)。從這個domain開始,你可以建立和管理更多的domain,這些domains統稱為domain U。目前,修補過的Linux核心2.4和2.6可以作為domain 0,而物理裝置驅動程式只能執行在特權級,也就是domain 0上。

  Gentoo:

  Gentoo Linux 是一個基於原始碼包的 Linux 系統。和已有的商業發行版相比,Gentoo 非常獨特。

  如今的商業 linux 發行版提供了一個幾乎完全自動化的安裝過程。在自動的硬體檢測之後,你只要回答幾個問題,劃分硬碟就可以了。一會功夫,所有的東西就都安裝好了,你只要登陸就行了。

  Gentoo 的安裝過程是基於命令列的,幾乎沒有東西是自動完成的。大部分的設定都是透過使用編輯器手工設定配置檔案完成的,安裝過程會消耗大量的時間。

  Gentoo 的安裝過程可以看做是一次 Linux 的課程。你可以從中學到很多有關係統的知識。大量的步驟都是手工完成的,消耗了很多時間,但從此以後,你可以更好地理解你的 Linux 系統地工作了。

  Gentoo 還使用特定地編譯器選項編譯程式,這些選項可以生成為你的 CPU 定製的最佳化程式碼。

  除此之外,你還可以加入或去掉某些編譯特徵。最終的結果就是一個符合你的需要的最佳化的、個性化的系統。

  Xentoo:

  一個新創的詞,由Xen+Gentoo合成而來,意思是執行於Xen之上的Gentoo,在本文中,代表的是一個解決方案

  那麼,為什麼要有Xentoo?

  由於Gentoo有著上述的諸多優點,深受Linux愛好者喜歡,不過初學者安裝時很容易因為誤操作導致硬碟的資料全軍覆沒,而且還必須邊看手冊邊安裝,因此不少人用VMWare安裝Gentoo,但是VMWare本身效率不高,導致安裝和執行Gentoo時會浪費大量的時間。有一天,Linuxfans們終於忍不住了,說要有Xentoo,於是就有了Xentoo……

  完美安裝Xentoo,主要分3個階段:

  第一階段:安裝Xen和dom0新核心,測試Xen

  1.1、這個安裝經驗主要參考Xen Users' manual,在安裝Xen前必須認真閱讀該文件

  1.2、準備所需軟體:Xen二進位制安裝包:xen-2.0.7-install-x86_32.tgz和Xen原始碼包:xen-2.0.7-src.tgz,以及Xen User's manual文件中+號軟體(安裝執行Xen所需),*號的軟體(編譯Xen所需)(二進位制包裡面包含Xen的執行檔案和修改過的Linux2.4/2.6核心,但這些核心只是基本配置,幾乎所有(網路卡,音效卡,等硬體)驅動都沒有編譯進去.如果想真正體驗Xen,為了使硬體得到正確驅動,應使用原始碼進行編譯安裝)

  以下是Xen User's manual中提到的所需軟體:

  + The iproute2 package.

  + The Linux bridge-utils ()

  + The Linux hotplug system ()

  * Twisted v1.3 或以上 (編譯xen時透過make install-twisted得到)

  * Build tools (gcc v3.2.x or v3.3.x, binutils, GNU make)

  * libcurl 開發庫(libcurl-devel)

  * zlib 開發庫 (zlib-dev)

  * Python 開發庫 v2.2 或以上 ( python-dev)

  * LATEX(用於生成文件)

  **從二進位制包安裝的,解壓後執行install.sh安裝(它會檢測所需軟體是否齊全,否則不會安裝),完成後,跳到1.9

  **以下步驟主要介紹從src安裝(2.4與2.6的安裝方式稍有不同,下面的介紹會同時針對這兩種版本的核心)

  1.3、解壓

  #cd /tmp

  #wget ... s/xen-2.0.7-src.tgz

  #tar -zxvf xen-2.0.7-src.tar.gz

  #cd xen-2.0

  1.4、閱讀xen的makefile(很簡單,就幾十行,主要為了解make做了哪些工作,為下一步修改作準備,如果核心是2.6,這一步可跳過)

  1.5、修改Makefile,(根據需要修改,核心為2.6的可以跳過這一步.Xen-2.0.7目前只支援linux-2.4.30,linux-2.6.11,netbsd-2.0,freebsd-5.3)

  以下是針對我的redhat9,2.4核心的修改

  KERNELS ?= linux-2.6-xen0 linux-2.6-xenU

  改為

  KERNELS ?= linux-2.4-xen0

  xen0為host os - domain 0的核心,而xenU作為guest os - domain U的核心,可以不需要任何硬體驅動程式.

  這裡暫時不編譯xenU,主要是為了節省一些時間,在後面安裝Gentoo的時候直接採用Xen二進位制安裝包中預編譯好的核心.因為我的機器比較慢,編譯一次核心要2、3個小時,各位可以根據自己的實際需要決定是否編譯xenU

  1.6、複製Linux核心原始碼(bz2格式)到xen-2.0目錄內(網速快的可以跳過這一步,Xen會從自動網上下載相應的核心)

  1.7、使用自己的.config檔案編譯核心:(下面主要是以我的2.4.30核心為例,對於2.6核心原理相同,可以根據自己實際情況進行修改)

  1)、Xen核心補丁程式的bug,不修改這個,編譯核心會出錯:(對於2.6核心沒有這個bug,可以跳過這一步)

  修改 linux-2.4.30-xen-sparse/mkbuildtree

  找到cd ${AD}/include/asm-xen 在下面加入:

  ln -sf ../asm-i386/acpi.h

  ln -sf ../asm-i386/cobalt.h

  ln -sf ../asm-i386/e820.h

  ln -sf ../asm-i386/edd.h

  ln -sf ../asm-i386/hc_sl811-hw.h

  ln -sf ../asm-i386/lithium.h

  ln -sf ../asm-i386/pci-direct.h

  ln -sf ../asm-i386/save_state.h

  ln -sf ../asm-i386/sl811-hw.h

  ln -sf ../asm-i386/smpboot.h

  2)、讓Xen自動對核心打補丁,並在補丁完畢中止程式(一定要中止程式,否則Xen會使用它預設的defconfig,這個配置是沒有任何硬體驅動的)

  #make kernels

  輸入完命令後,Xen會自動下載核心原始碼並打補丁,打完補丁,準備make核心的時候(這時螢幕顯示一大堆config資訊),按Ctrl+c中止程式.

  3)、複製現有核心的配置檔案到 linux-2.4.30-xen0

  #cp /boot/config-2.4.30 linux-2.4.30-xen0/.config

  #cd linux-2.4.30-xen0

  #make ARCH=xen oldconfig

  期間會提示新增的有關Xen的選項,全部都選y

  4)、編譯核心

  #make ARCH=xen dep

  #make ARCH=xen modules

  #make ARCH=xen modules_install

  #make ARCH=xen install

  5)、安裝與核心版本對應的modutils(參考 linux-2.4.30-xen0/Documentation/Changes)

  6)、TLS Libraries (這是Xen Users' manual 2.4.3小節中的原文,根據自己實際情況處理)

  Users of the XenLinux 2.6 kernel should disable Thread Local Storage (e.g. by doing a mv /lib/tls /lib/tls.disabled) before attempting to run with a XenLinux kernel2.4. You can always reenable it by restoring the directory to its original location (i.e. mv /lib/tls.disabled /lib/tls).

  The reason for this is that the current TLS implementation uses segmentation in a way that is not permissible under Xen. If TLS is not disabled, an emulation mode is used within Xen which reduces performance substantially.

  We hope that this issue can be resolved by working with Linux distribution vendors to implement a minor backward-compatible change to the TLS library.

  大意是使用2.6核心的使用者需要禁止TLS(執行這個命令 #mv /lib/tls /lib/tls.disabled),否則效能會下降

  **對於2.6的核心,可以根據上述各項原則相應修改後自行配置編譯

  1.8、所有修改就緒,編譯安裝Xen

  Xen還需要用到3個軟體(Twisted Matrix Framework,Python Logging package,iptables),如果機器上沒有的可以用以下命令安裝:

  #cd /tmp/xen-2.0

  #make install-twisted;

  #make install-logging;

  #make install-iptables;

  接下來開始編譯安裝(我沒有latex,所以不編譯doc)

  #make install-xen;

  #make install-tools;

  **注意,這裡不要再執行make kernels或make install-kernels,因為在第7步我們已經手動配置並編譯安裝了被xen修改的新核心

  1.9、修改啟動配置 /boot/grub/grub.conf (以下是針對2.4核心和我的128M記憶體的機器的,Xen大概佔了12M左右,若是2.6核心和更大的記憶體則進行相應修改,強烈推薦使用256或更多的記憶體)

  新增:

  title Xen 2.0 / XenLinux 2.4

  kernel /boot/xen-2.0.gz dom0_mem=53248

  module /boot/vmlinuz-2.4-xen0 root=/dev/hda2 ro console=tty0

  1.10、測試Xen,配置ttylinux

  1)、下載並解壓ttylinux ()

  #cd /tmp

  #wget

  #bzip2 -d ttylinux-xen.bz2

  2)、建立配置檔案: /etc/xen/auto/ttylinux

  內容:

  kernel = "/boot/vmlinuz-2.6-xenU"

  memory = 64

  name = "ttylinux"

  nics = 1

  ip = "1.2.3.4"

  disk = ['file:/tmp/ttylinux-xen,sda1,w']

  root = "/dev/sda1 ro"

  **如果/boot裡面沒有vmlinuz-2.6-xenU或vmlinuz-2.4-xenU,可以從Xen的二進位制安裝包/boot目錄中得到

  3)、重新啟動,進入XenLinux,執行命令,建立domain(就是啟動一個虛擬的ttylinux)

  #xend start

  #xm create /etc/xen/auto/ttylinux -c

  檢視xm的詳細用法:

  #xm help

  如果ttylinux順利啟動進入login介面,且能ping得到,證明第一階段的安裝基本成功了.

  第二階段:安裝domU - Xentoo

  這裡是探討如何把Gentoo作為domU安裝到檔案而不是真實分割槽的方法,不同於HOWTO_Xen_and_Gentoo

  主要參考 ,, - "A. Installing Xen / XenLinux on Debian"

  2.1、

  首先製作硬碟映像檔案(root:4G,boot:32M,swap:256M),若直接安裝到硬碟分割槽,可跳過這一步

  #dd if=/dev/zero of=xentoo-root.image bs=1024k count=4000

  #dd if=/dev/zero of=xentoo-swap.image bs=1024k count=256

  2.2、格式化檔案系統(若直接安裝到硬碟分割槽,則把image檔名改為相應的裝置名)

  #mkfs.ext3 xentoo-root.image

  #mkswap xentoo-swap.image

  2.3、掛裝分割槽到新建的目錄(若直接安裝到硬碟分割槽,則把image檔名改為相應的裝置名,並且mount命令不許要loop引數)

  #mkdir /mnt/gentoo

  #mount -o loop xentoo-root.image /mnt/gentoo

  2.4、下載並解壓stage3()放到gentoo的根也就是/mnt/gentoo (根據自己的CPU下載相應的包)

  #cd /mnt/gentoo

  #wget ... i686-2005.1.tar.bz2

  #tar -xvjpf stage3-i686-2005.1.tar.bz2

  2.5、設定系統環境

  #chroot /mnt/gentoo /bin/bash

  新增DNS:

  echo "nameserver 202.96.128.86" >> /etc/resolv.conf

  echo "domain xenlinux" >> /etc/resolv.conf

  修改root密碼

  #passwd root

  修改/etc/fstab

  /dev/sda1    /    ext3  errors=remount-ro    0    1

  /dev/sda2    none  swap  sw              0    0

  proc        /proc  proc  defaults          0    0

  shm        /dev/shm tmpfs nodev,nosuid,noexec   0    0

  退出

  #exit

  #umount /mnt/gentoo

  2.6、建立xen配置檔案/etc/xen/auto/xentoo (推薦使用256或更多的記憶體)

  kernel = "/boot/vmlinuz-2.6-xenU"

  memory = 64

  name = "xentoo"

  nics = 1

  ip = "192.168.0.3"

  gateway = "192.168.0.1"

  disk = ['file:/mnt/xentoo/xentoo-root-image,sda1,w','file:/mnt/xentoo/xentoo-swap-image,sda2,w']

  root = "/dev/sda1 ro"

  **若直接安裝到硬碟分割槽,則disk那一行改為:

  disk = ['phy:hdaX,sda1,w','phy:hdaY,sda2,w']

  hdaX,hdaY對應你分給Xentoo的root分割槽和swap分割槽

  2.7、啟動Xentoo

  #xend start

  #xm create /etc/xen/auto/xentoo -c

  如無意外即可進入Xentoo登入介面

  上述所有操作相當於Gentoo的安裝進行了以下步驟

  # chroot /mnt/gentoo /bin/bash

  # env-update

  # source /etc/profile

  2.8、在Xentoo中安裝必備軟體

  #emerge --sync        (這裡我用了1h)

  #emerge fvwm        (fvwm最小最快,3h)

  fvwm最快的配置方法:

  #cp /usr/share/fvwm/system.fvwm2rc-sample-95 ~/.fvwm/.fvwm2rc

  安裝與配置Gentoo不屬於本文討論範圍,請根據Gentoo的手冊和自己的需要進行後續安裝

  安裝完後清理垃圾檔案(rm -rf /usr/portage/distfiles/*;rm -rf /var/tmp/*)

  2.9、配置Xwindow

  Xentoo下不能用startx,所以不要著急配置XF86Config,有幾種方法進入X:

  * forward X11 apps through ssh (connect to the domain with ssh -X, run an

  xterm - it should just appear).

  * Run "vncserver" in the guest, connect to it from dom0 (or any other system).

  By playing with your gdm / kdm / xdm config, you can cause the vncserver to

  be started automatically and display the login screen.

  * Run Xnest in dom0, tell apps to connect to that instead of a local Xserver.

  * Run FreeNX server in the domU, connect to it using the free (as in beer)

  client from NoMachine. NX performs well and can do nifty things like

  forwarding sound, printing and local filesystems (if you can figure out how

  to set it up!)

  在這裡,以VNC為例,參考HOWTO Xvnc terminal server進行配置,藉助VNC就能很輕鬆進入圖形介面 :-)

  按照文件配置完,如果直接執行/etc/init.d/xdm restart,還是會出錯,/var/log/xdm.log:

  xf86OpenConsole: Cannot open /dev/tty0 (No such file or directory)

  為什麼呢?噢,原來我沒有裝kdm和gdm,所以只能用xdm了:

  修改/etc/X11/xdm/Xservers:

  :0 local /usr/bin/X

  改為

  :0 local /usr/bin/Xvnc -geometry 800x600 -depth 16

  修改~/.xsession:

  新增

  #!/bin/bash

  exec /usr/bin/fvwm

  重新啟動xdm:

  #/etc/init.d/xinetd restart

  #/etc/init.d/xdm restart

  回到domain0,執行vncviewer,連線到domU即可

  2.10、在Xentoo中編譯新核心要注意的事項

  編譯過程請參考 HOWTO Xen and Gentoo

  編譯完成後,poweroff,回到在dom0中,把新核心複製出來,替換舊核心

  #mount -o loop xentoo-root.image /mnt/gentoo

  #cp /mnt/gentoo/usr/src/linux-2.6.x.y-xen/vmlinuz /boot/vmlinuz-2.6.x.y-xenU

  #umount /mnt/gentoo

  修改/etc/xen/auto/xentoo:

  kernel = "/boot/vmlinuz-2.6.x.y-xenU"

  再次啟動Xentoo即可

  #xm create /etc/xen/auto/xentoo -c

  安裝到這裡基本上大功告成,可以開始享受極速虛擬的Xentoo了……

  需要說明一下,標題所說的極速在安裝Gentoo的時候是體驗不到的,由於Gentoo是基於原始碼的發行版,所以安裝Gentoo是個培養耐心的的過程.我用emerge -p gnome看了一下,需要安裝差不多200個包,超過500M的原始碼,天哪,如果用我的PII400/128M/6.4G編譯的話,可能要花5、6天時間,所以我才安裝最小的fvwm.論執行速度Gentoo倒是比其他發行版快不少,花點時間安裝還是值得的.歡迎交流寶貴意見,作者的伊妹兒:lostfalcon@tom.com,轉載請註明出處.

  第三階段 使Gentoo可以單獨啟動(脫離Xen)

  編譯新核心(emerge gentoo-source),根據自己實際情況進行配置和編譯

  對於直接安裝到硬碟分割槽,修改grub即可

  對於安裝到image檔案,請搜尋相關文件

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-940608/,如需轉載,請註明出處,否則將追究法律責任。

相關文章