How to build NetBSD DomU on Linux
Why build NetBSD DomU on Linux ?
It is easy to do.
It could be very practical - in daily use or just for evaluating the last NetBSD.
There are many situations peoples need this.
If you still (or plan to) use or to customize your NetBSD DomU this script is a easy way to get a current or release (stable) NetBSD installation CD (iso image), install sets for different installation types (by DOS, PXE network boot, floppies etc) and a full distribution tree for your production server Xen DomU.
why build your own NetBSD XEN DOMU ?
The official XEN_DOMU build from NetBSD is not suitable for bigger server installations - but NetBSD is a very perfect server operating system.
This distribution includes a specialized NetBSD kernel (XEN3_DOMU_NIELS) - optimized for high load servers and many users on the DomU.
You can further edit the kernel config if you want to suite more of your special needs.
build netbsd easy
This script is a easy way to take a look into the latest NetBSD for peoples wich are new to netbsd or to build you own current or release (stable) NetBSD Xen DomU server distribution.
This script should be usable under (m)any linux or other unix os.
A lot of peoples runs a linux host within their network to provide and distribute many different open source distributions and builds for different machines. Most Xen hosts (Dom0) are linux based currently and many Xen admins provides a shared / automated pool of DomU installations and distributions from their Xen Dom0 to their DomUs.
This script makes it easy to get and handle NetBSD for Xen installations and updates too.
configuration
This script should work out of the box with default configuration.
However, if you want to change config options feel free to do it in the config section of the script.
customize your netbsd XEN DOMU kernel
You can customize your XEN DOMU kernel if you want.
For this just uncomment these two lines before you run the script build-NetBSD-domU.iso.sh:
## uncomment the following two lines in case you will make your own kernel config $EDITOR ~/netbsd/XEN3_DOMU_NIELS $EDITOR ~/netbsd/XEN2_DOMU_NIELS
i want no i386 netbsd (cross building)?
No prob, just change the ./build.sh machine option MARCH (default is i386) to your target arch or machine as required.(not tested yet, sorry)
running the script
You should be on a shell (root is not necessary).
Download [javascript:void(0);/*1297163288231*/ build-NetBSD-domU.iso.sh] and / or Copy this script "netbsd-build.sh" - i.e. to somewhere within your home directory.
Just run it by
sh
The script creates a directory netbsd within your current home directory.
The whole build would be done under this directory.
#!/bin/sh ## # build-NetBSD-domU.iso.sh -- build a complete, current and, or any # NetBSD distribution and a ready to use install CD/DVD image, the # is know to work on Linux/*BSD :) # # features: # - includes GENERIC netbsd kernel # - includes a customized XEN DOMU kernel # - optimized XEN DOMU for high load internet servers # - includes or excludes X11 # # (expected to run under each linux distribution and, or most unixes) # # Author: Niels Dettenbach <nd@syndicat.com>, http://dettenbach.de # v1.0rc2, Licensed under the GPL # Modified: Balwinder S Dheeman <bdheeman@gmail.com> http://werc.homelinux.net # v1.0rc3, Refined the code, Updated mirrors list ## --- Local Configuration (Edit, if needed) # target path of the netbsd build #build within home directory (~/NetBSD-domU/) BUILDPATH=$HOME # select editor, if you want to further edit and, or review the kernel # confiuration files, or comment the following line out ;) #MEDITOR=${EDITOR:="nano"} # select a CVS host CVSHOST=anoncvs.NetBSD.org # Master, IPv6 #CVSHOST=anoncvs.be.NetBSD.org # Belgium #CVSHOST=anoncvs.fr.NetBSD.org # France, IPv6 #CVSHOST=anoncvs.de.NetBSD.org # Germany, IPv6 #CVSHOST=anoncvs.jp.NetBSD.org # Japan #CVSHOST=anoncvs.ro.NetBSD.org # Romania #CVSHOST=anoncvs.se.NetBSD.org # Sweden #CVSHOST=anoncvs4.us.NetBSD.org # US, IPv6 # target machine MARCH=i386 # select NetBSD release, change this to select a particular netbsd # release or branch builds a stable NetBSD 4.0 (latest stable) #RELEASE=netbsd-4-0-RELEASE # Latest in 4.0 #RELEASE=netbsd-4-0-1-RELEASE # Oct 14, 2008 #RELEASE=netbsd-5-0-RELEASE # Latest in 5.0 #RELEASE=netbsd-5-0-1-RELEASE # Aug 02, 2009 RELEASE=netbsd-5-0-2-RELEASE # Feb 12, 2010 # NetBSD current (devel branch) #RELEASE=. if [ 0 -eq 1 ]; then ## --- Main Code (MODIFY, ONLY IF YOU KNOW WHAT YOU'RE DOING) echo "==> Preparing builddir $BUILDPATH/NetBSD-domU..." mkdir -p $BUILDPATH/NetBSD-domU cd $BUILDPATH/NetBSD-domU mkdir -p kernel obj release src tools xsrc # get extra kernel config for XEN DOMU internet servers cd $BUILDPATH/NetBSD-domU/kernel if [ ! -f XEN2_DOMU_NIELS ]; then echo "==> Downloading kernel/XEN2_DOMU_NIELS..." wget http://www.syndicat.com/pub/netbsd/kernel/XEN2_DOMU_NIELS fi if [ ! -f XEN3_DOMU_NIELS ]; then echo "==> Downloading kernel/XEN3_DOMU_NIELS..." wget http://www.syndicat.com/pub/netbsd/kernel/XEN3_DOMU_NIELS fi if [ -n "$MEDITOR" ]; then $MEDITOR $BUILDPATH/NetBSD-domU/kernel/XEN2_DOMU_NIELS $MEDITOR $BUILDPATH/NetBSD-domU/kernel/XEN3_DOMU_NIELS fi # cvs checkpout the current cvs sources cd $BUILDPATH/NetBSD-domU export CVSROOT=anoncvs@$CVSHOST:/cvsroot export CVS_RSH=ssh if [ ! -d src/CVS ]; then echo "==> Checking out src..." cvs co -r $RELEASE -P src || exit $? else echo "==> Updating src..." cd src && cvs up -Pd || exit $? fi if [ ! -d xsrc/CVS ]; then echo "==> Checking out xsrc..." cvs co -r $RELEASE -P xsrc || exit $? else echo "==> Updating out xsrc..." cd xsrc && cvs up -Pd || exit $? fi # link in custom kernel config echo "==> Symlinking kernel/XEN[23]_DOMU_NIELS..." cd $BUILDPATH/NetBSD-domU ln -fs $BUILDPATH/NetBSD-domU/kernel/XEN2_DOMU_NIELS \ $BUILDPATH/NetBSD-domU/src/sys/arch/$MARCH/conf/ ln -fs $BUILDPATH/NetBSD-domU/kernel/XEN3_DOMU_NIELS \ $BUILDPATH/NetBSD-domU/src/sys/arch/$MARCH/conf/ # run build.sh, see $BUILDPATH/NetBSD-domU/src/BUILDING for details about # all the nice build.sh options echo "==> Running src/build.sh..." cd $BUILDPATH/NetBSD-domU/src sh build.sh -m $MARCH -O ../obj -T ../tools -X ../xsrc/ -R ../release -j2 -U \ -u -r tools kernel=XEN3_DOMU_NIELS release releasekernel=XEN3_DOMU_NIELS \ iso-image || exit $? fi # show all generated kernels echo "==> Listing generated kernels..." cd $BUILDPATH/NetBSD-domU/release/$MARCH/binary/kernel/ pwd && ls -alh # show all generated sets echo "==> Listing generated insatll sets..." cd $BUILDPATH/NetBSD-domU/release/$MARCH/binary/sets/ pwd && ls -alh # show the install CD images echo "==> Listing generated CD images (iso)..." cd $BUILDPATH/NetBSD-domU/release/$MARCH/installation/cdrom pwd && ls -alh cd $BUILDPATH/NetBSD-domU/release/iso pwd && ls -alh # that's all echo "==> Congratulations!" echo "Burn a CD-ROM or boot from ISO and have fun with NetBSD-dom0 and domU!" echo "Install notes $BUILDPATH/NetBSD-domU/release/$MARCH/INSTALL.\*"
If the script does his job as expected you should see something like:
-r--r--r-- 1 niels users 165M 23. Sep 13:13 i386cd.iso
This is your NetBSD installation ISO image - burn it to a CD or use it within virtualisation (Xen, VMware, Virtualbox etc.) or mount it locally (as a virtual cdrom) by:
mount -o loop /home/'your username'/netbsd/release/iso/i386cd.iso /mnt/cdrom
weblinks
- Download the script build-NetBSD-domU.iso.sh
- http://www.dettenbach.de - the autor of this script. Please feel free to contact me (Niels Dettenbach) by email nd@syndicat.com .