From 8f9087b8d19d29163a7c8a2cc622a9ae93d6da60 Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Tue, 16 Aug 2005 12:09:20 +0000 Subject: [PATCH] Added support for creating CDs with harddisk emulation --- tools/release.sh | 89 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 86 insertions(+), 3 deletions(-) diff --git a/tools/release.sh b/tools/release.sh index bda71f68e..65e381904 100755 --- a/tools/release.sh +++ b/tools/release.sh @@ -1,5 +1,55 @@ #!/bin/sh +make_hdimage() +{ + dd if=$TMPDISK of=usrimage bs=$BS count=$USRBLOCKS + + rootsize=`stat -size rootimage` + usrsize=`stat -size usrimage` + + rootsects=`expr $rootsize / 512` + usrsects=`expr $usrsize / 512` + + # installboot -m needs at least 1KB + dd < /dev/zero >tmpimage count=2 + partition -fm tmpimage 2 81:$rootsects* 0:0 81:$usrsects + installboot -m tmpimage /usr/mdec/masterboot + dd < tmpimage > subpart count=1 + + primsects=`expr 1 + $rootsects + $usrsects` + cyl=`expr '(' $primsects ')' / 32 / 64 + 1` + padsects=`expr $cyl \* 32 \* 64 - 1 - $primsects` + + { dd < /dev/zero count=1 + cat subpart + cat rootimage + cat usrimage + dd < /dev/zero count=$padsects + } > hdimage + partition -m hdimage 81:`expr $primsects + $padsects`* + installboot -m hdimage /usr/mdec/masterboot +} + +hdemu_root_changes() +{ + $RELEASEDIR/usr/bin/installboot -d $RAM \ + $RELEASEDIR/usr/mdec/bootblock boot/boot + echo \ +'label=BIOS +bootcd=2 +disable=inet +bios_remap_first=1 +ramimagedev=c0d7p0s0 +save' | $RELEASEDIR/usr/bin/edparams $RAM + + echo \ +'root=/dev/c0d7p0s0 +usr=/dev/c0d7p0s2 +usr_roflag="-r"' > $RELEASEDIR/etc/fstab +} + +HDEMU=1 + COPYITEMS="usr/bin bin usr/lib" RELEASEDIR=/usr/r/release IMAGE=cdfdimage @@ -13,6 +63,21 @@ USRMB=150 USRBLOCKS="`expr $USRMB \* 1024 \* 1024 / $BS`" ROOTMB=2 ROOTBLOCKS="`expr $ROOTMB \* 1024 \* 1024 / $BS`" + +HDEMU=0 + +while getopts "h?" c +do + case "$c" in + \?) + echo "Usage: $0 [-h]" >&2 + exit 1 + ;; + h) + HDEMU=1 + esac +done + echo "Note: this script wants to do cvs operations, so it's necessary" echo "to have \$CVSROOT set and cvs login done." echo "" @@ -69,6 +134,9 @@ echo " * Chroot build" chroot $RELEASEDIR '/bin/sh -x /usr/src/tools/chrootmake.sh' || exit 1 echo " * Chroot build done" cp issue.install $RELEASEDIR/etc/issue + +if [ "$HDEMU" -ne 0 ]; then hdemu_root_changes; fi + umount $TMPDISK || exit umount $RAM || exit dd if=$RAM of=$ROOTIMAGE bs=$BS count=$ROOTBLOCKS @@ -78,7 +146,22 @@ make image || exit 1 sh mkboot cdfdboot cp $IMAGE $CDFILES/bootflp.img cp release/cd/* $CDFILES -writeisofs -l MINIX -b $IMAGE $CDFILES $ISO || exit 1 -echo "Appending Minix root and usr filesystem" -( cat $ISO $ROOTIMAGE ; dd if=$TMPDISK bs=$BS count=$USRBLOCKS ) | gzip -9 >$ISOGZ || exit 1 + +h_opt= +bootimage=$IMAGE +if [ "$HDEMU" -ne 0 ]; then + make_hdimage + h_opt='-h' + bootimage=hdimage +fi +writeisofs -l MINIX -b $bootimage $h_opt $CDFILES $ISO || exit 1 + +if [ "$HDEMU" -eq 0 ] +then + echo "Appending Minix root and usr filesystem" + ( cat $ISO $ROOTIMAGE ; dd if=$TMPDISK bs=$BS count=$USRBLOCKS ) | + gzip -9 >$ISOGZ || exit 1 +else + gzip -9 $ISO +fi ls -al $ISOGZ -- 2.44.0