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