编译Xen 3.4 Dom0 using Linux Kernel 2.6.31 on Ubuntu 9.10 (Karmic)

    技术2026-04-01  4

    10月28日,Ubuntu 9.10正式发布,我的镜像是昨天下好的,昨天晚上装上机器,开始做配置。以下操作都是使用root账户进行的,非root账户请使用sudo。

    一、编译 Xen 和 内核

      1.准备工作

          首先,系统没有的包要先打上,如果你是教育网用中科大的更新源很快的。我主要补充的是下面几个包:

    view plain copy to clipboard print ? apt-get install fakeroot build-essential   apt-get install crash kexec-tools makedumpfile   apt-get build-dep linux   apt-get install git-core libncurses5 libncurses5-dev  

     

           然后,准备源码:

              Xen 3.4.1: http://bits.xensource.com/oss-xen/release/3.4.1/xen-3.4.1.tar.gz

              Linux Kernel 2.6.31.5: http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.5.tar.gz

           因为没用Xen提供的2.6.18的内核源码,还要下一个源码补丁:

              xen-patches-2.6.31-7: http://gentoo-xen-kernel.googlecode.com/files/xen-patches-2.6.31-7.tar.bz2

           展开各个包:

     

    view plain copy to clipboard print ? tar zxvf linux-2.6.31.5.tar.gz   mv linux-2.6.31.5 linux-2.6.31.5-xen   tar zxvf xen-3.4.1.tar.gz   mkdir xen-patches   cd xen-patches   tar jxvf xen-patches-2.6.31-7.tar.bz2  

     

           进到linux-2.6.31.5-xen的目录,给代码打上补丁:

     

    view plain copy to clipboard print ? cat ../xen-patches/*.patch1 | patch -p1  

     

      2.编译内核

           准备一个编译配置,我直接copy了之前的 linux-image-2.6.26-2-xen-686_2.6.26-15_i386.deb 的配置,这个包可以在这这里找到:          Kernel: http://packages.debian.org/lenny/i386/linux-image-2.6.26-2-xen-686/download          Modules: http://packages.debian.org/lenny/i386/linux-modules-2.6.26-2-xen-686/download

           不过这个配置有点老,所以直接make会有一些配置问题提出来。之前 make menuconfig 一下比较好。然后就可以编译了:

     

    view plain copy to clipboard print ? make   make vmlinuz   make modules_install  

     

          基本上应该不会报什么错误,不过提醒一下想用 make-kpkg 直接生成 deb 包的同学,想偷懒是不行的哦,make-kpkg 可是会报错的,原因还没有看。第一次编译还是很久的,所以扫雷吧。………………编译好了以后把生成的 vmlinuz 拷贝到 /boot 下面

    ,另起个名字叫 vmlinuz-2.6.31.5-xen。生成initrd:

     

    view plain copy to clipboard print ? mkinitramfs -o /boot/initrd.img-2.6.31.5-xen 2.6.31.5  

     

      3.编译 Xen

            建议先用 xen-3.4.1/tools/check/chk build 和 chk install 检查一下有没有需要的软件包是否齐备,这里需要注意的是 chk install 的时候会报找不到 udevinfo,这个是因为 udevinfo 已经被 udevadm 取代了,创建一个符号链接就好了:

     

    view plain copy to clipboard print ? ln -s /sbin/udevadm /sbin/udevinfo  

     

           check pass 的话就可以编译了,直接 make world 是可以的,不过这个会重新编译一个2.6.18的kernel出来,会耗很多时间,所以这里可以用 make xen 来只生成 xen 的 image。生成的文件在 xen-3.4.1/dist/install/boot 下面,把 xen-3.4.1.gz 复制到 /boot 下面。

    二、安装

        1.糟糕,Grub 升级了!

           这是我折腾了一上午的悲剧。Ubuntu 9.10 使用了1.97版本的Grub,也就是Grub2,新版本虽然又很多有点啊,不过在这里可真是一丑遮百俊了。根据 maillist 里面反应的情况,Grub2 和 Xen 不兼容,引导的时候一定会报“Early fatal page fault at ...”然后死掉,而且目前没有补丁可以解决,于是需要降版本回 GRUB。具体的操作可以参见: http://ubuntuforums.org/showpost.php?p=8071880&postcount=18

        2.配置启动项

     

    view plain copy to clipboard print ? title Xen 3.4.1 / Linux 2.6.31.5       kernel /boot/xen-3.4.1.gz console=vga       module /boot/vmlinuz-2.6.31.5-xen root=<root-location> ro console=tty0       module /boot/initrd.img-2.6.31.5-xen    

     

        3.重启

           不出什么差错的话这个时候应该就可以看看xen起了没有:

     

    view plain copy to clipboard print ? ps -ef | grep xend   xm list    

     

           启动了的话是可以看到xend的进程的。xm list也会显示dom0。至此就搞定了~

    最新回复(0)