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