This page is replaced by Xen
Old FreeBSD/Xen port wiki page
The port will only run as a guest (ie. domU) right now, on i386/PAE platforms.
Status
- domU is self-hosting on 8-CURRENT (can compile world + kernel in a VM). Latest sources are CVS/SVN.
- domU support is available for 6.3 and RELENG_6 in project branches:
- 6.3-RELEASE svn://svn.freebsd.org/base/projects/release_6_3_xen/
- RELENG_6 svn://svn.freebsd.org/base/projects/releng_6_xen/
- Xen 3.0.3 and earlier are not currently supported.
- Amazon's EC2 uses 3.0.3.
- Device structure needs to be cleaned up, it's not conformant to newbus.
- SMP support is working.
- amd64 support is planned.
- 3.1 has been tested under vmware and on real hardware with a 32-bit dom0 (one cannot run 32-bit guests with a 64-bit dom0 on xen 3.1)
- 3.2 has been tested on real hardware with both 32-bit and 64-bit dom0
- 3.3 has been tested on real hardware with a 32-bit dom0
TODO
- Substantial cleanup needed - check with Kip Macy or Scott Long for further details if you are interested.
- Device tree:
- Add a newbus nexus for the front-end bus
- Figure out how to get xenstore working in time for the bus scan (get scheduler running)
- Convert drivers to newbus
- XEN kernel conf file cleanup:
- Remove options and devices that don't apply to Xen
- Add xc, xbd, and xn devices, and update /sys/conf/files.i386 appropriately
- Fix blkfront to give sensible unit numbers
Warnings
- If you want to use xen as a development environment you would be well advised to install a 32-bit dom0. The libxc interface that emulates ptrace for gdbserver-xen cannot fetch a 32-bit register set when running on a 64-bit kernel.
- There are problem reports on some systems with the DomU clock not running reliably, giving stalled or sporadic console output and system progress during boot. This is being investigated. Please contact us if you are experiencing this.
Setup
To help get one started a small file-backed disk and some sample configuration files can be found at:
http://www.fsmware.com/xenofreebsd/7.0/download/
Steps I used for installing Xen 3.2 on a recent CentOS:
Install zlib-devel, gcc, libX11-devel, openssl-devel, ncurses-devel, bridge-utils, python-devel.
Install git if it's not already included in the Dom0 install; it's needed by the Xen build.
Fetch mercurial:
wget http://www.selenic.com/mercurial/release/mercurial-1.0.2.tar.gz
Build & install mercurial:
python setup.py config; python setup.py build; python setup.py install
Fetch xen sources:
hg clone http://xenbits.xensource.com/xen-3.2-testing.hg
Build and install the xen kernel, modules, and tools:
cd xen-3.3-testing.hg ; make world && make install
Create new initrd:
mkinitrd /boot/initrd-2.6.18.8-xen.img 2.6.18.8-xen
Update /boot/grub/grub.conf (menu.lst on some systems). A sample entry might look like this:
title Xen (2.6.18.8-xen-3.3) root (hd0,1) kernel /boot/xen-3.3.gz console=com1 com1=115200,8n1 module /boot/vmlinuz-2.6.18.8-xen ro root=/dev/sda2 rhgb console=tty console=ttyS0,115200 module /boot/initrd-2.6.18.8-xen.img
NOTE: Don't use this example verbatim without reviewing the "root" parameters
Updates
For questions about FreeBSD on xen and next steps please contact Kip Macy - he can be reached at kmacy at freebsd.org. There is also a dedicated mailing list: http://lists.freebsd.org/mailman/listinfo/freebsd-xen
Kip Macy is currently working on a RELENG_7 backport.
This entry is referenced by the BSD Research blog.