Xen 3.3.0 + Gentoo 安装成功

作者:Hily 原始链接:http://hily.me/blog/2008/10/xen-gentoo-installation/
版权声明:可以转载,转载时务必以超链接形式标明文章原始出处作者信息版权声明

花了一天一夜,总算在 Gentoo 上装好 Xen 3.3.0,虽然还有些瑕疵。

Xen 的安装

安装过程基本是照着 Gentoo 的这篇安装指南进行的:《Configuring Gentoo with Xen》

之前已经在 Gentoo 上装了很多软件包,基本上已经把它打造成一个可以日常使用桌面环境了。也正因为装了太多东西,所以在 make -e world 时花了将近 12 小时,中间因为错误中断了 4 个小时。一共是 600 多个包,在开了 ccache 情况下编译。(机器配置: AMD Althon 64 X2 + 4G DDR2)

有手册的引导,Xen 的安装还是相当容易的,不过手册上仍然会遗漏一些细节:

  • 如果你装好的 Xen 不能正常启动,提示:

    Panic on CPU 0:

    IO-APIC : timer doesn't work!

    或者卡在 “qc timeout”、“failed to IDENTIFY” 类似这种消息:

    scsi0 : sata_sil

    sata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)

    sata1.00: qc timeout (cmd 0xec)

    sata1.00: failed to IDENTIFY (I/O error, err_mask=0x4)

    时,那么可以参考一下我的 grub.conf:

    kernel /boot/xen.gz noapic
    module /boot/kernel-2.6.18-xen0 root=/dev/md2 console=tty1 pci=noacpi

  • 在建立好一个 domU 的配置文件后,需要按照把 stage3 安装包解压到配置中指定的 root 分区中,否则会出现类似如下的错误:

    VFS: Mounted root (ext2 filesystem) readonly.
    Freeing unused kernel memory: 136k freed
    Warning: unable to open an initial console.
    Kernel panic - not syncing: No init found. Try passing init= option to kernel.

  • 在配置文件中需要加上一行:

    extra = "TERM=xterm xencons=tty console=tty1"

    否则你会发现 domU 启动到一定阶段后会停滞不动的假死现象:

    kjournald starting. Commit interval 5 seconds
    EXT3-fs: mounted filesystem with ordered data mode.
    VFS: Mounted root (ext3 filesystem) readonly.
    Freeing unused kernel memory: 136k freed
    (以下不再输出)

以下是我安装 Xen 时使用的配置文件:

kernel = "/mnt/data/xen/kernel/kernel-2.6.18-xen"
memory = 512
name = "gentoo"
disk = ['phy:vg/xen-guest-root,sda1,w']
root = "/dev/sda1 ro"
extra = "TERM=xterm xencons=tty console=tty1"

驱动的问题

安装好 Xen 后,有一些驱动还需要重新编译,主要是声卡和显卡。

  • 编译声卡驱动前需要把 /usr/src/linux 链接指向 Xen 源码树所在目录,我的是 /usr/src/linux-2.6.18-xen-r12,否则会出现以下错误:

    * Found kernel source directory:
    * /usr/src/linux
    * Could not detect kernel version.
    * Please ensure that /usr/src/linux points to a complete set of Linux sources.

    另外如果在 make 时指定了 O 参数(参考以上提到的手册),那么最直接的办法是在不带 O 的情况下重新编译一下内核。不然,就需要把 /usr/src/linux 指向到 ~/build/dom0,同时还要修改 Makefile 文件,加入内核版本号。

  • 我的显卡芯片是 NVIDIA,在 emerge nvidia-drivers 时,会出现以下提示:

    The kernel you are installing for is a Xen kernel!

    The NVIDIA driver does not currently work on Xen kernels. If
    you are using a stock distribution kernel, please install
    a variant of this kernel without Xen support; if this is a
    custom kernel, please install a standard Linux kernel. Then
    try installing the NVIDIA kernel module again.

    *** Failed Xen sanity check. Bailing out! ***

    接着就编译出错了。

    有人说在 emerge nvidia-drivers 前加上 IGNORE_XEN_PRESENCE=1 可以解决问题。经我尝试也是编译失败,只是没有出现以上 WARNING。

    目前 NVIDIA 还没有推出针对 Xen 的驱动,在以后一段时间内也不会:

    Thank you for contacting NVIDIA Customer Care.
    Unfortunately there are still no firm plans to work under Xen.
    Sorry I can't provide a schedule for this.
    Let me know if any more questions.

    Best regards,

    Mike
    NVIDIA Customer Care

    于是,可怜的我就只能在 20 寸宽屏显示器上使用 1280x1024 的 VGA 模式(理想分辨率为 1680x1050)。

还好 Xen 主要是在服务器上应用的,对于桌面客户来说,倒是可以考虑用更为易用的 KVM

-- EOF --

发表一下您的高见

If you have any question, or for the language problem, please fell free to leave a comment or just contact me with email: hilyjiang [At] Gmail.