Home | History | Annotate | Line # | Download | only in bootfloppy
Makefile revision 1.16
      1 #	$NetBSD: Makefile,v 1.16 2002/03/30 07:45:33 tsutsui Exp $
      2 
      3 .include <bsd.own.mk>
      4 .include <bsd.kernobj.mk>
      5 
      6 TOP=		${.CURDIR}/..
      7 
      8 .include "${TOP}/Makefile.inc"
      9 
     10 IMAGE=		boot.fs
     11 DISKSIZE=	2880
     12 FSTMP=		ustar.tmp
     13 MDEC=		${DESTDIR}/usr/mdec
     14 BOOT=		ofwboot
     15 
     16 KERNDIR!=	cd ${.CURDIR}/../md-kernel && ${PRINTOBJDIR}
     17 KERN=		${KERNDIR}/netbsd.INSTALL.gz
     18 
     19 CLEANFILES+=	netbsd ${BOOT} ${FSTMP}
     20 
     21 
     22 DISKTYPE=	floppy
     23 
     24 realall: netbsd ${BOOT}
     25 	${PAX} -wvf ${FSTMP} ${BOOT} netbsd
     26 	@echo
     27 	@echo Making disk number one
     28 	rm -rf empty
     29 	mkdir -m 755 empty
     30 	${MAKEFS} -s ${DISKSIZE}b ${IMAGE}.tmp empty
     31 	dd bs=8k seek=1 count=$$((${DISKSIZE} / 16 - 1)) \
     32 	    if=${FSTMP} of=${IMAGE}.tmp
     33 	@echo "installing new bootblocks"
     34 	${MDEC}/installboot -v -b 17 ${BOOT} ${MDEC}/bootxx ${IMAGE}.tmp
     35 	@ls -l ${FSTMP} | (read mode links uid gid size junk; \
     36 		dksize=$$((${DISKSIZE} * 512 - 8 * 1024)); \
     37 		disks=$$(($$size / $$dksize + 1)); \
     38 		if test $$size -gt $$dksize; then \
     39 			bytes=$$(($$size - $$dksize)); \
     40 			echo "Image is $$bytes ($$(($$bytes / 1024))K) too big\
     41 				to fit on one disk."; \
     42 			exit 1; \
     43 		else \
     44 			dd seek=$$(($${size} / 512 + 15)) count=1 \
     45 				if=/dev/zero of=${IMAGE}.tmp; \
     46 		fi; \
     47 		echo; \
     48 		bytes=$$(($$dksize * $$disks - $$size)); \
     49 		if test "${PAD}" = "yes"; then \
     50 			size=$$(($$size + 8 * 1024)); \
     51 			echo "Padding image with $$bytes bytes from $$size"; \
     52 			sectors=$$(($$bytes / 512)); \
     53 			ssize=$$(($$size / 512)); \
     54 			dd if=/dev/zero bs=512 seek=$${ssize} of=${IMAGE}.tmp \
     55 				count=$${sectors}; \
     56 		else \
     57 			echo "There are $$bytes ($$(($$bytes / 1024))K) bytes\
     58 				free on disk $$disks."; \
     59 		fi; \
     60 	)
     61 	mv -f ${IMAGE}.tmp ${IMAGE}
     62 
     63 # Let the kernel on the diskette be called "netbsd" although
     64 # it is compressed.  This is because the boot code will search
     65 # for "netbsd" first, and calling it "netbsd" instead of "netbsd.gz"
     66 # we avoid scanning all the diskettes before reading the file.
     67 
     68 netbsd: ${KERN}
     69 	rm -f netbsd
     70 	cp ${KERN} netbsd
     71 
     72 # This is "cheating", just so that we have the available
     73 # space at the start of the tar file.  Installboot will overwrite
     74 # the start of the bootcode with the tail end of the "real", aligned
     75 # second-stage boot loader when it is run (which is quite a bit shorter
     76 # than the entire ${BOOTCODE} file, even when symbols are removed.
     77 # (the first 15*512 bytes are put into the first 8K filesystem block,
     78 # around the disklabel)
     79 
     80 ${BOOT}: ${MDEC}/${BOOT}
     81 	rm -f ${BOOT}
     82 	cp ${MDEC}/${BOOT} ${BOOT}
     83 
     84 release: check_RELEASEDIR
     85 	-mkdir -p ${RELEASEDIR}/installation/floppy
     86 	cp -p ${IMAGE} ${RELEASEDIR}/installation/floppy
     87 
     88 clean cleandir distclean:
     89 	rm -f *.core ${CLEANFILES} ${IMAGE} ${IMAGE}.tmp
     90 	rm -rf empty
     91 
     92 .include <bsd.obj.mk>
     93 .include <bsd.subdir.mk>
     94