How to install a NetBSD PV domU on a Debian Squeeze host (Xen 4.0.1)

From Xen

This mini-HOWTO (largely based on this) describes how to install a para virtualised (PV) NetBSD guest (domU) on a Debian GNU/Linux host (dom0). Specifically, we use Debian Squeeze (6.0.6) on Xen4 (4.0.1-5.4) as the dom0 and put NetBSD 6.0 in a domU. Note that, at the time of writing, the latest stable release of NetBSD is 5.1.2 and that 6.0 is so far only released as release candidates, we use 6.0 due to this incompability between Xen 4.0.1 and NetBSD 5.1.2.

Prerequisites

Create storage space

lvcreate -L4G -n domu-netbsd vgroup

Where 4G is the size (4GB) of the new volume named (/dev/vgroup/domu-netbsd) in the volume group 'vgroup'. You probably want to change the volume name to something corresponding to the name of your guest.


Download netbsd-INSTALL_XEN3_DOMU and netbsd-XEN3_DOMU kernels

64bit/amd64

Download and gunzip to where you want to keep your kernels.

wget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-6.0/amd64/binary/kernel/netbsd-INSTALL_XEN3_DOMU.gz
wget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-6.0/amd64/binary/kernel/netbsd-XEN3_DOMU.gz

gunzip netbsd-INSTALL_XEN3_DOMU.gz
gunzip netbsd-XEN3_DOMU.gz

32bit/i386

You probably want the PAE versions, netbsd-INSTALL_XEN3PAE_DOMU and netbsd-XEN3PAE_DOMU, specifically if you get this error

Error: (2, 'Invalid kernel', 'xc_dom_compat_check: guest type xen-3.0-x86_32 not supported by xen kernel, sorry\n')

with the non-PAE ones. Download and gunzip to where you want to keep your kernels.

wget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-6.0/i386/binary/kernel/netbsd-INSTALL_XEN3PAE_DOMU.gz
wget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-6.0/i386/binary/kernel/netbsd-XEN3PAE_DOMU.gz

gunzip netbsd-INSTALL_XEN3PAE_DOMU.gz
gunzip netbsd-XEN3PAE_DOMU.gz

Create /etc/xen/netbsd.cfg

kernel = '/home/user/kernels/netbsd-INSTALL_XEN3_DOMU' # Change this to where you put the kernel from the previous step
memory = '128'
name = 'netbsd'
disk = [ 'phy:/dev/vgroup/domu-netbsd,0x3,w' ]

# The virtual interface
vif = ['bridge=br0']
# where 'br0' is the name of your bridge interface.


Start VM/domU

xm create -c netbsd.cfg

Your system will boot into the NetBSD installer. Example installation at the NetBSD project's site.

At the end of install

If you want to keep the MAC/Ether address given, don't reboot just yet. You'll be brought back to the main install screen, where you must select "e: Utility menu" -> "a: Run /bin/sh", then run 'ifconfig xennet0' and add the address: 00:16:3e:xx:xx:xx (whatever it is, but it need to begin with "00:16:3e") to your vif= line in the /etc/xen/netbsd.cfg at dom0.

vif = ['mac=00:16:3e:xx:xx:xx,bridge=br0']

You can also add the IP adress of the domU within the single quotes with ip=xx.xx.xx.xx.

Now shutdown the domU with 'halt -p'.

Change to regular kernel

Edit /etc/xen/netbsd.cfg, change the first line

kernel = '/home/user/kernels/netbsd-XEN3_DOMU' # Change this to where you put the kernel from the previous step


Start VM/domU again

xm create -c netbsd.cfg


You're now booted into your brand new NetBSD VM!

You'll notice some errors during the bootup, such as "wsconscfg: /dev/ttyEcfg: Device not configured".

To turn this off, edit /etc/ttys and turn off all terminals except "console", like so:


console "/usr/libexec/getty Pc"         vt100   on secure
constty "/usr/libexec/getty Pc"         vt100   off secure
ttyE0   "/usr/libexec/getty Pc"         wsvt25  off secure
ttyE1   "/usr/libexec/getty Pc"         wsvt25  off secure
ttyE2   "/usr/libexec/getty Pc"         wsvt25  off secure
ttyE3   "/usr/libexec/getty Pc"         wsvt25  off secure

...


Also, remove the following line from your domU's /etc/rc.conf:

wscons=YES


Enjoy your new NetBSD box!

See also c33ris2's gentle guide to installing NetBSD in a prgmr DomU (January 2009)