1# $MirOS: src/distrib/tools/Makefile,v 1.46 2014/01/04 20:24:59 tg Exp $ 2 3all: sundsklbl 4 5.include <bsd.own.mk> 6 7.if ${MACHINE_ARCH} == "i386" 8all: i386_chain 9.endif 10 11CHAINSECTOR?= 24 12.if defined(SERIALSPEED) 13CDROM?= cdrom${SERIALSPEED}.iso 14.endif 15CDROM?= cdrom${OSrev}.iso 16DSTTOPDIR?= /var/www/htdocs/v${OSrev} 17 18CPPFLAGS+= -DCHAINSECTOR=${CHAINSECTOR} 19 20depend: 21prereq: 22 23clean: .PHONY 24 -rm -f i386_chain sundsklbl *.o eltorito.loo ${CDROM}* 25 -rm -rf cddir 26 27cleandir: .PHONY clean 28 29i386_chain: i386_chain.o 30 ld -o $@ --oformat binary -Ttext 0 $> 31 32sundsklbl: sundsklbl.c 33 cd ${.CURDIR} && ${MAKE} -f ${.SYSMK}/bsd.prog.mk \ 34 PROG=$@ NOMAN=Yes EXPERIMENTAL=Yes 35 36CDROM_OPTS+= applicationid=NetBSD_makefs 37CDROM_OPTS+= bootimage=i386\;eltorito.loo 38CDROM_OPTS+= no-emul-boot 39CDROM_OPTS+= label=MirOS~v${OSrev}~BSD~manifold-boot~CD 40CDROM_OPTS+= no-trailing-padding 41CDROM_OPTS+= preparer=MirBSD_and_its_contributors 42CDROM_OPTS+= publisher=Copyright_\<c\>_2002=2014_The_MirOS_Project 43CDROM_OPTS+= rockridge 44CDROM_OPTS+= rr-squash 45CDROM_OPTS+= volumeid=$$(uname -sl | tr -- '- \#' :_):i386\;sparc:Setup 46#CDROM_OPTS+= v=1 47 48makecdimage: .PHONY 49 -rm -rf cddir ${CDROM}* 50 dd if=/dev/arandom bs=2048 count=1 of=eltorito.loo 2>&- # El Torito 51 mkdir -p cddir/{boot/grub,v${OSrev}/{i386,sparc}} 52 for arch in i386 sparc; do \ 53 for file in ${DSTTOPDIR}/$$arch/{*boot*,bsd.rd,*mbr*}; do \ 54 [[ -e $$file ]] || continue; \ 55 install -m644 $$file cddir/v${OSrev}/$$arch/; \ 56 done; \ 57 mv cddir/v${OSrev}/$$arch/boot cddir/b_$$arch.ldr; \ 58 done 59 cp cddir/b_sparc.ldr cddir/v${OSrev}/sparc/boot.net 60 # fix path to default kernel file in second-stage boot loader 61 set -A dump -- $$(dd if=cddir/b_sparc.ldr bs=4 count=64 | \ 62 hexdump -ve '1/1 "%02X"' | sed 's/\(........\)/ \1/g'); i=0; \ 63 while (( i < 64 )); do [[ $${dump[i++]} = 2035560? ]] && break; done; \ 64 if [[ $$i = 64 || $${dump[i-1]} != 20355601 ]]; then \ 65 print -u2 found invalid or no patch field version; exit 1; \ 66 fi; ofs=$$((#0x$${dump[i+1]})); \ 67 print -n v${OSrev}/sparc/bsd.rd\\0 | \ 68 dd of=cddir/b_sparc.ldr bs=1 seek=$$ofs conv=notrunc 69 ln cddir/v${OSrev}/sparc/bsd.rd cddir/vmunix # for kicks 70 cp ${.CURDIR}/../common/00-README cddir/ 71.if defined(SERIALSPEED) 72 sed \ 73 -e 's!^boot .*$$!boot /v${OSrev}/i386/bsd.rd!' \ 74 -e 's/@SPEED@/${SERIALSPEED}/g' \ 75 ${.CURDIR}/boot.cfg.serial >cddir/boot.cfg 76.else 77 cat ${.CURDIR}/../common/boot.cfg.i386 >cddir/boot.cfg 78.endif 79 cat ${.CURDIR}/../baselive/boot.cfg.dual >>cddir/boot.cfg 80 cp ${.CURDIR}/../common/extra/loopback.cfg cddir/boot/grub/ 81.if defined(WAIT) 82 @print === press RETURN; read x 83.endif 84 makefs -t cd9660 -o "$$(print -r -- ${CDROM_OPTS} | tr ' ~' ', ')" \ 85 ${CDROM} cddir 86 # pad the ISO with ]0;256K] NUL bytes, ie. for 87 # a geometry of 16 heads, 32 sectors per track 88 dd if=/dev/zero count=1 bs=$$((# (512 * 32 * 16) - \ 89 ($$(stat -f %z ${CDROM}) % (512 * 32 * 16)) )) 2>&- >>${CDROM} 90 getextent_cd9660 -f ${CDROM} b_i386.ldr | \ 91 ${MKSH} ${BSDSRCDIR}/usr.sbin/installboot/bxinst.i386 -B 11 | \ 92 dd of=${CDROM} conv=notrunc bs=2048 seek=$$(getextent_cd9660 \ 93 -f ${CDROM} -b '$$BootImage$$') 2>/dev/null 94 getextent_cd9660 -f ${CDROM} b_i386.ldr | \ 95 ${MKSH} ${BSDSRCDIR}/usr.sbin/installboot/bxinst.i386 -A -S 2 | \ 96 dd of=${CDROM} conv=notrunc bs=512 seek=${CHAINSECTOR} 2>/dev/null 97 getextent_cd9660 -f ${CDROM} b_sparc.ldr | \ 98 ${MKSH} ${BSDSRCDIR}/usr.sbin/installboot/bxinst.sparc \ 99 -g $$((#$$(stat -f %z ${CDROM}) / (512 * 32 * 16))):16:32 \ 100 -0 ${CHAINSECTOR} -S 2 | \ 101 dd of=${CDROM} conv=notrunc 2>/dev/null 102 103.include <bsd.obj.mk> 104