设为首页 收藏本站
查看: 1358|回复: 0

[经验分享] Xen的源码安装及dom0,domU的设置

[复制链接]

尚未签到

发表于 2015-4-13 14:15:00 | 显示全部楼层 |阅读模式
  Xen作为一种应用广泛的虚拟机方案,无论是在工业还是教育领域都发挥着巨大的作用。Xen不仅有其引以为豪的Paravirtualization实现,还有基于硬件支持的HVM实现。对于Xen,Ubuntu中有现成的解决方案,只要通过一些apt-get install(ubuntu-xen-desktop, xen-hypervisor-4.1-amd64, xen-tools, xen-utils)命令即可傻瓜式安装。但实际中,我们出于种种原因(比如源中的版本不够新,或是加了自己的补丁等等),还是倾向于自己DIY。
  本文的环境为VirtualBox 4.2.6 + Xen 4.1.2 + Ubuntu 12.04(64位)。
  一、编译安装Xen
  1. 编译Xen之前需要装一些软件
  # apt-get install bcc bin86 gawk bridge-utils iproute libcurl3 libcurl4-openssl-dev bzip2 module-init-tools transfig tgif texinfo texlive-latex-base texlive-latex-recommended texlive-fonts-extra texlive-fonts-recommended pciutils-dev mercurial build-essential make gcc libc6-dev zlib1g-dev python python-dev python-twisted libncurses5-dev patch libvncserver-dev libsdl-dev libjpeg62-dev iasl libbz2-dev e2fslibs-dev git-core uuid-dev ocaml ocaml-findlib libx11-dev libc6-xen gcc-multilib xz-utils
  注意有些不是必须的。如果编译的是Xen 4.2,先运行configure可以知道缺了什么。
  2. 点击这里下载Xen的源码包,根据README编译安装:
  # tar zxvf xen-4.1.2.tar.gz
  # cd xen-4.1.2
  # make world
  # make install
  如果是要在另一台机子上部署的用make dist。
  编译过程中会通过git或hg从网上下源码,所以要确保网络连通(如果是通过代理上网参考  http://www.iyunv.com/Linux/2013-02/79334.htm )。
  3. 对于Xen的管理工具,Xen 4.1后的趋势是xl逐渐替代xm。用哪个可以在配置文件中设置:
  /etc/default/xen
TOOLSTACK="xm"
  4.  设置启动服务
  # update-rc.d xencommons defaults 19 18
# update-rc.d xend defaults 20 21
# update-rc.d xendomains defaults 21 20
# update-rc.d xen-watchdog defaults 22 23
  和启动模块,在/etc/modules中添加:
  xen-evtchn
xen-gntdev
xen-netback
xen-blkback
xenfs
blktap
  5. 安装xen-tools
  从这里下载xen-tools 4.3.1源码,解压后运行:
  # make install
  该工具包含xen-create-image等工具,它使得domU的创建更加方便。
  
  二、编译安装dom0
  1. 面向Xen开发者的kernel源码主要有Konrad和Jeremy两个版本,当然它们中的改动也会被merge到Torvalad的mainline当中。这里以Jeremy版本为例:
  
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen
  $ cd linux-2.6-xen
  $ git checkout -b xen/next-2.6.32 origin/xen/next-2.6.32
  进行kernel的编译配置:
  
# make oldconfig
  
# make menuconfig
  加上Xen的编译选项(参考这里或这里),接下来就是编译安装了:
  # make
  # make modules_install
  # make install
  默认是会生成initrd.img的,如果没有的话就要用mkinitramfs手动生成了。
  2. 设置grub
  假设前面编译好的image文件为vmlinuz-2.6.32.57和initrd.img-2.6.32.57,在/etc/grub.d/40_custom中加入:
  menuentry "Xen - Linux 2.6.32.57" {
    insmod ext2
    set root='(hd0,msdos1)'
    multiboot /boot/xen.gz dummy=dummy
    module /boot/vmlinuz-2.6.32.57 dummy=dummy root=UUID=323d1960-8f62-4bb4-9b92-81e7c835cb07 ro dom0_mem=512M nomodeset
    module /boot/initrd.img-2.6.32.57
}
  注意系统会根据/etc/grub.d/中的文件生成/boot/grub/grub.cfg,而/etc/default/grub用于设置其默认选项,timeout等参数。
  重启,长按shift调出grub菜单,选刚才新加的那项,进入dom0。

  
下面开始创建domU。
  
  三、安装domU
  1. 创建guest的逻辑卷
  # apt-get install lvm2
  由于lvm无法在正在使用的分区上创建逻辑卷,所以首先在Virtualbox中创建虚拟盘(DOC参考下载)。
  免费下载地址在 http://linux.iyunv.com/
  用户名与密码都是www.iyunv.com
  具体下载目录在 /2013年资料/2月/14日/Xen的源码安装及dom0,domU的设置
  --------------------------------------------------------------
  设置完后重新进入系统,假设新加的虚拟盘名为/dev/sdb。在其上生成文件系统:
  # mkfs -t ext3 /dev/sdb
  接着创建physical volume和volumn group(名为vg0):
  
# pvcreate /dev/sdb
  # vgcreate vg0 /dev/sdb
  如果用xen-create-image的话就不用手动用lvcreate创建logical volumn。
  如果要重新创建可以先删掉原来的:
  
# lvremove /dev/vg0/xxxx
  
  
  2. 安装domU的kernel,生成配置文件
  比如创建名为mylucid的domU,用刚才创建的名为vg0的volumn group,使用pygrub(domU用单独的grub):
  
# xen-create-image --hostname=mylucid --dist=lucid --lvm=vg0 --mirror=http://cn.archive.Ubuntu.com/ubuntu --role=udev --force --verbose --pygrub --dhcp
  
中途需要从网络下载,完了就会生成/etc/xen/mylucid.cfg。
  
  
3. 设置网络
  不是必须的,目的是让虚拟机中的系统能够访问外部网络。参考下面的网络设置部分:
  
http://wiki.xen.org/wiki/Xen_Beginners_Guide#Creating_a_Debian_PV_.28Paravirtualized.29_Guest
  http://wiki.xen.org/wiki/Xen_Beginners_Guide
  
  
  4. 启动guest
  # xm list,应该会出现类似于:
  root@jzj-laptop:/home/jzj# xm list
Name                                        ID  Mem VCPUs      State  Time(s)
Domain-0                                    0  1896    1    r-----    97.6
  
  可能出现的问题:
  1) ImportError: libxenctrl.so.4.0: cannot open shared object file: No such file or directory
  在64位环境中,Xen编译生成了libxenctrl.so.4.0,并把它放到/usr/lib64中,为了让系统能找到它,需要在/etc/ld.so.conf.d/libc.conf中加入
  /usr/lib64
  然后
  # ldconfig
  2) can't find module xxxx
  Xen的管理工具里很多是python写的,而Ubuntu中默认是不将/usr/lib/python2.7/site-packages放入module搜索路径的。比较简便的方法是在.bashrc中加
  export PYTHONPATH=/usr/lib/python2.7/site-packages
  3)Error: Unable to connect to xend: No such file or directory. Is xend running?
  可以试试重新启动xend:
  # xend restart
  当然很多情况可能导致这个问题,版本不对或是设置不对等等。
  现在可以启动guest了:
  # xm create -f /etc/xen/mylucid.cfg -c
  用xen-create-image给出的密码即可登录root。

  ctrl+]可退出console,回到console可用:
  # xm console mylucid
  关闭guest:
  # xm shutdown mylucid

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56724-1-1.html 上篇帖子: xen二进制安装 下篇帖子: Xen学习——原理要点归纳总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表