# Makefile for building a OpenBSD diskless boot image default: openbsd.kernel KERNELDIR = DISKLESS KERNEL = $(KERNELDIR)/bsd BSDRD = bsd.rd BSDRDURL = ftp://ftp.openbsd.org/pub/OpenBSD/`uname -r`/i386/bsd.rd BINDVER = 9.5.0-P1 BIND = bind-$(BINDVER) BINDTGZ = $(BIND).tar.gz BINDURL = ftp://ftp.isc.org/isc/bind9/$(BINDVER)/$(BINDTGZ) NSLOOKUP = $(BIND)/bin/dig/nslookup DHCPVER = 3.0.7 DHCP = dhcp-$(DHCPVER) DHCPTGZ = $(DHCP).tar.gz DHCPURL = ftp://ftp.isc.org/isc/dhcp/$(DHCPTGZ) DHCLIENT = $(DHCP)/work.openbsd/client/dhclient RAMDISKSIZE = 20480 # Build the kernel $(KERNEL): kernel.config config -b $(KERNELDIR) -s /sys kernel.config cd $(KERNELDIR) ; make depend ; make # Compile elfrdsetroot elfrdsetroot: /usr/src/distrib/common/elfrdsetroot.c gcc -Wall -o $@ $? # Steal crunched executables from bsd.rd crunchbin: elfrdsetroot mkdir -p bsdrdfs.d if [ ! -f bsd.rd ]; then wget -nv $(BSDRDURL) ; fi ./elfrdsetroot -x bsd.rd >bsdrdfs sudo vnconfig -c svnd0 bsdrdfs sudo mount /dev/svnd0a bsdrdfs.d cp bsdrdfs.d/bin/sh crunchbin sudo umount `pwd`/bsdrdfs.d sudo vnconfig -u svnd0 rmdir bsdrdfs.d # Build ISC bind package $(NSLOOKUP): if [ ! -f $(BINDTGZ) ]; then wget -nv $(BINDURL) ; fi tar xzf $(BINDTGZ) cd $(BIND) ; ./configure --disable-threads --disable-ipv6 --disable-linux-caps \ --without-openssl --without-libtool --without-kame --without-idn --without-libiconv \ --without-idnlib ; make LDFLAGS=-static strip $@ # Build ISC DHCP package $(DHCLIENT): if [ ! -f $(DHCPTGZ) ]; then wget -nv $(DHCPURL) ; fi tar xzf $(DHCPTGZ) cd $(DHCP) ; ./configure ; make strip $@ # Build the root file system image miniroot: crunchbin $(NSLOOKUP) $(DHCLIENT) disklabel.proto fstab init.c motd populate.sh rc dd if=/dev/zero of=miniroot bs=512 count=$(RAMDISKSIZE) sudo vnconfig -c svnd0 miniroot sudo disklabel -R -r svnd0 disklabel.proto sudo newfs svnd0c mkdir miniroot.d sudo mount /dev/svnd0c `pwd`/miniroot.d sudo ./populate.sh DST=`pwd`/miniroot.d NSLOOKUP=$(NSLOOKUP) DHCLIENT=$(DHCLIENT) df -h `pwd`/miniroot.d sudo umount `pwd`/miniroot.d sudo vnconfig -u svnd0 # Merge kernel and root file system image openbsd.kernel: $(KERNEL) miniroot elfrdsetroot cp $(KERNEL) bsd ./elfrdsetroot bsd