Makefile.bootfloppy revision 1.5
1# $NetBSD: Makefile.bootfloppy,v 1.5 2002/04/11 12:17:15 lukem Exp $ 2 3.include <bsd.own.mk> 4.include "${_SRC_TOP_}/distrib/Makefile.inc" 5 6# needs the following set: 7# IMAGE image name 8# KERNELDIR where kernel is grabbed from 9# KERNEL kernel name 10# DISKSIZE size of image in 0.5K blocks 11 12FSTMP= ustar.tmp 13MDEC= ${DESTDIR}/usr/mdec 14BOOTCODE?= ${MDEC}/biosboot.sym 15#BOOTCODE= ${MDEC}/biosboot_com0.sym # Serial output 16 17CLEANFILES+= netbsd boot ustar.tmp ${METAFILE} ${IMAGE} ${IMAGE}.tmp 18 19realall: ${IMAGE} 20 21${IMAGE}: netbsd boot 22 if test "${METAFILE}" != ""; then \ 23 touch ${METAFILE}; \ 24 fi 25 ${PAX} -wvf ${FSTMP} boot ${METAFILE} 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 -b 17 -v -f ${BOOTCODE} ${IMAGE}.tmp 35 # XXXDISTRIB 36 @ls -l ${FSTMP} | (read mode links uid gid size junk; \ 37 dksize=$$((${DISKSIZE} * 512 - 8 * 1024)); \ 38 disks=$$(($$size / $$dksize + 1)); \ 39 if test $$size -gt $$dksize; then \ 40 bytes=$$(($$size - $$dksize)); \ 41 echo "Image is $$bytes ($$(($$bytes / 1024))K) too big\ 42 to fit on one disk."; \ 43 exit 1; \ 44 else \ 45 dd seek=$$(($${size} / 512 + 15)) count=1 \ 46 if=/dev/zero of=${IMAGE}.tmp; \ 47 fi; \ 48 echo; \ 49 bytes=$$(($$dksize * $$disks - $$size)); \ 50 if test "${PAD}" = "yes"; then \ 51 size=$$(($$size + 8 * 1024)); \ 52 echo "Padding image with $$bytes bytes from $$size"; \ 53 sectors=$$(($$bytes / 512)); \ 54 ssize=$$(($$size / 512)); \ 55 dd if=/dev/zero bs=512 seek=$${ssize} of=${IMAGE}.tmp \ 56 count=$${sectors}; \ 57 else \ 58 echo "There are $$bytes ($$(($$bytes / 1024))K) bytes\ 59 free on disk $$disks."; \ 60 fi; \ 61 ) 62 mv -f ${IMAGE}.tmp ${IMAGE} 63 64# Let the kernel on the diskette be called "netbsd" although 65# it is compressed. This is because the boot code will search 66# for "netbsd" first, and calling it "netbsd" instead of "netbsd.gz" 67# we avoid scanning all the diskettes before reading the file. 68 69KERNELOBJDIR!= cd ${.CURDIR}/../${KERNELDIR} && ${PRINTOBJDIR} 70 71netbsd: ${KERNELOBJDIR}/${KERNEL} 72 rm -f netbsd 73 cp ${KERNELOBJDIR}/${KERNEL} netbsd 74 75# This is "cheating", just so that we have the available 76# space at the start of the tar file. Installboot will overwrite 77# the start of the bootcode with the tail end of the "real", aligned 78# second-stage boot loader when it is run (which is quite a bit shorter 79# than the entire ${BOOTCODE} file, even when symbols are removed. 80# (the first 15*512 bytes are put into the first 8K filesystem block, 81# around the disklabel) 82 83boot: ${BOOTCODE} 84 rm -f boot 85 cp ${BOOTCODE} boot 86 ${STRIP} boot 87 88release: check_RELEASEDIR 89 -mkdir -p ${RELEASEDIR}/installation/floppy 90 cp -p ${IMAGE} ${RELEASEDIR}/installation/floppy 91 92clean cleandir distclean: 93 rm -rf empty 94 95.include <bsd.prog.mk> 96