Mijn aanpak met 8.1-RELEASE heb ik gebruik gemaakt van wat 'vieze trucjes' die nullfs dingen en chroot.Bouwen in een jail heb ik niet voor elkaar gekregen omdat mdconfig i386 (32bit) niet overweg kan met een amd64 (64bit) /dev/mdctl handle. Verder kan 'stock' nanobsd.sh ook niet cross-builden en maakt wat vervelende aannamems van de architecture van het systeem waar het op draait. Ik maak dus de ports en het OS in de chroot en doe de instalatie in het 'master' os. master# svn checkout http://svn.wirelessleiden.nl/svn/code/iris/trunk/nanobsd /root/nanobsd master# mkdir -p /usr/local/jail/i386 master# csup -h cvsup.nl.freebsd.org /usr/share/examples/cvsup/standard-supfile master# cd /usr/src master# make buildworld TARGET=i386 master# make installworld TARGET=i386 DESTDIR=/usr/local/jail/i386 master# kldload nullfs master# mkdir -p /usr/local/jail/i386/usr/ports ; mount_nullfs /usr/ports /usr/local/jail/i386/usr/ports master# mkdir -p /usr/local/jail/i386/usr/obj ; mount_nullfs /usr/obj /usr/local/jail/i386/usr/obj master# mkdir -p /usr/local/jail/i386/root/nanobsd ; mount_nullfs /root/nanobsd /usr/local/jail/i386/root/nanobsd master# chroot /usr/local/jail/i386/ jail# setenv UNAME_m i386 jail# setenv UNAME_m i386 jail# /root/nanobsd/tools/package-build.sh jail# patch -d /usr/src/sys/dev/usb -i /root/nanobsd/misc/patches/usbdevs.patch jail# patch -d /usr/src/sys/dev/usb/net -i /root/nanobsd/misc/patches/if_udav.c.patch jail# sh /usr/src/tools/tools/nanobsd/nanobsd.sh -c /root/nanobsd/cfg/nanobsd.wleiden Tip: This build will fail ones it tries to play around with memory disks, this actually means we are ready for the next step. jail# exit master# setenv CFG_ROOT_PASSWORD `dd if=/dev/random bs=10k count=10 | tr -cd '[a-zA-Z0-9]' | cut -c -15` master# echo $CFG_ROOT_PASSWORD master# sh /usr/src/tools/tools/nanobsd/nanobsd.sh -c /root/nanobsd/cfg/nanobsd.wleiden master# ls -alh /usr/obj/nanobsd.wleiden/_.disk.* References: - Patches are needed for the USB devices we use, but who are not in a stock 8.1-RELEASE-p2. - Oficial node image building page http://www.wirelessleiden.nl/projects/nodefactory/wiki/NanoBSD - Trick the ports building architecture using UNAME_* http://lists.freebsd.org/pipermail/freebsd-arch/2009-January/008857.html