xref: /minix3/releasetools/release.functions (revision c5da0dffe22305a208b24ac8ba9b83df0790e856)
17f99f3a2SThomas Veerman
27f99f3a2SThomas Veermanmake_hdimage()
37f99f3a2SThomas Veerman{
47f99f3a2SThomas Veerman	dd if=$TMPDISKUSR of=usrimage bs=$BS count=$USRBLOCKS
57f99f3a2SThomas Veerman
67f99f3a2SThomas Veerman	rootsize=`stat -f %z rootimage`
77f99f3a2SThomas Veerman	usrsize=`stat -f %z usrimage`
87f99f3a2SThomas Veerman
97f99f3a2SThomas Veerman	rootsects=`expr $rootsize / 512`
107f99f3a2SThomas Veerman	usrsects=`expr $usrsize / 512`
117f99f3a2SThomas Veerman
127f99f3a2SThomas Veerman	# installboot -m needs at least 1KB
137f99f3a2SThomas Veerman	dd < /dev/zero >tmpimage count=2
147f99f3a2SThomas Veerman	partition -fm tmpimage 2 81:$rootsects* 0:0 81:$usrsects
157f99f3a2SThomas Veerman	installboot_nbsd -m tmpimage /usr/mdec/mbr
167f99f3a2SThomas Veerman	dd < tmpimage > subpart count=1
177f99f3a2SThomas Veerman
187f99f3a2SThomas Veerman	primsects=`expr 1 + $rootsects + $usrsects`
197f99f3a2SThomas Veerman	cyl=`expr '(' $primsects ')' / $secs + 1`
207f99f3a2SThomas Veerman	padsects=`expr $cyl \* $secs - 1 - $primsects`
217f99f3a2SThomas Veerman
227f99f3a2SThomas Veerman	{ dd < /dev/zero count=1
237f99f3a2SThomas Veerman		cat subpart
247f99f3a2SThomas Veerman		cat rootimage
257f99f3a2SThomas Veerman		cat usrimage
267f99f3a2SThomas Veerman		dd < /dev/zero count=$padsects
277f99f3a2SThomas Veerman	} > hdimage
287f99f3a2SThomas Veerman	partition -m hdimage 81:`expr $primsects + $padsects`*
297f99f3a2SThomas Veerman	installboot_nbsd -m hdimage /usr/mdec/mbr
307f99f3a2SThomas Veerman}
317f99f3a2SThomas Veerman
327f99f3a2SThomas Veermanretrieve()
337f99f3a2SThomas Veerman{
347f99f3a2SThomas Veerman	dir=$1
357f99f3a2SThomas Veerman	list=`pwd`/$2
367f99f3a2SThomas Veerman	URLS=""
377f99f3a2SThomas Veerman	echo "Retrieving packages form $PACKAGEURL"
387f99f3a2SThomas Veerman	(
397f99f3a2SThomas Veerman	cd $dir || exit 1
407f99f3a2SThomas Veerman	SUMMARY=pkg_summary
417f99f3a2SThomas Veerman	rm -f pkg_summary* || true
427f99f3a2SThomas Veerman	fetch $PACKAGEURL/$SUMMARY.bz2
437f99f3a2SThomas Veerman	bzip2 -d $SUMMARY.bz2
447f99f3a2SThomas Veerman	cat $list | while read name
457f99f3a2SThomas Veerman	do	pkgname="`fgrep PKGNAME=${name} $SUMMARY | sed 's/PKGNAME=//g'`"
467f99f3a2SThomas Veerman		if [ `echo $pkgname | wc -w` -ne 1 ]
477f99f3a2SThomas Veerman		then	echo " *** Could not resolve $name (not found or too many matches: $pkgname) ***"
485457987dSBen Gras			echo Matches:
495457987dSBen Gras			echo $pkgname
505457987dSBen Gras			exit 1
517f99f3a2SThomas Veerman		else	echo Getting $pkgname
527f99f3a2SThomas Veerman			fetch -r ${PACKAGEURL}/${pkgname}.tgz
537f99f3a2SThomas Veerman		fi
547f99f3a2SThomas Veerman		echo -n "."
557f99f3a2SThomas Veerman	done
567f99f3a2SThomas Veerman	)
577f99f3a2SThomas Veerman	echo done
587f99f3a2SThomas Veerman}
597f99f3a2SThomas Veerman
607f99f3a2SThomas Veermancd_root_changes()
617f99f3a2SThomas Veerman{
627f99f3a2SThomas Veermancat >$CDFILES/boot.cfg <<END_BOOT_CFG
637f99f3a2SThomas Veermanbanner=Welcome to the MINIX 3 installation CD
647f99f3a2SThomas Veermanbanner================================================================================
657f99f3a2SThomas Veermanbanner=
66*c5da0dffSDavid van Moolenbroekmenu=Regular MINIX 3:multiboot /kernel bootcd=1 cdproberoot=1 rootdevname=ram
67*c5da0dffSDavid van Moolenbroekmenu=Regular MINIX 3 (with AHCI):multiboot /kernel bootcd=1 cdproberoot=1 rootdevname=ram ahci=yes
689733fcdbSDavid van Moolenbroekmenu=Edit menu option:edit
697f99f3a2SThomas Veermanmenu=Drop to boot prompt:prompt
707f99f3a2SThomas Veermanclear=1
717f99f3a2SThomas Veermantimeout=10
727f99f3a2SThomas Veermandefault=1
737f99f3a2SThomas Veermanload=/mod01_ds
747f99f3a2SThomas Veermanload=/mod02_rs
757f99f3a2SThomas Veermanload=/mod03_pm
767f99f3a2SThomas Veermanload=/mod04_sched
777f99f3a2SThomas Veermanload=/mod05_vfs
787f99f3a2SThomas Veermanload=/mod06_memory
7936ac0dbcSDavid van Moolenbroekload=/mod07_tty
80e4e21ee1SDavid van Moolenbroekload=/mod08_mib
8136ac0dbcSDavid van Moolenbroekload=/mod09_vm
8236ac0dbcSDavid van Moolenbroekload=/mod10_pfs
83e4e21ee1SDavid van Moolenbroekload=/mod11_mfs
84e4e21ee1SDavid van Moolenbroekload=/mod12_init
857f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
867f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
877f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
887f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
897f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
907f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
917f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
927f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
937f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
947f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
957f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
967f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
977f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
987f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
997f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
1007f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
1017f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
1027f99f3a2SThomas Veerman# This space intentionally left blank - leave to appease bootloader!
1037f99f3a2SThomas VeermanEND_BOOT_CFG
1047f99f3a2SThomas Veerman}
1057f99f3a2SThomas Veerman
1067f99f3a2SThomas Veermancopy_local_packages()
1077f99f3a2SThomas Veerman{
1087f99f3a2SThomas Veerman	if [ -d $PACKAGEDIR -a -f $PACKAGELIST -a $PACKAGES -ne 0 ]
1097f99f3a2SThomas Veerman	then
1107f99f3a2SThomas Veerman		index=pkg_summary
1117f99f3a2SThomas Veerman		indexpath=$PACKAGEDIR/.index
1127f99f3a2SThomas Veerman
1137f99f3a2SThomas Veerman		if [ ! -d $indexpath ]
1147f99f3a2SThomas Veerman		then	mkdir $indexpath
1157f99f3a2SThomas Veerman		fi
1167f99f3a2SThomas Veerman		if [ ! -d $indexpath ]
1177f99f3a2SThomas Veerman		then	echo "Couldn't create $indexpath."
1187f99f3a2SThomas Veerman			exit 1
1197f99f3a2SThomas Veerman		fi
1207f99f3a2SThomas Veerman
1217f99f3a2SThomas Veerman		echo "" >$PACKAGEDIR/All/$index
1227f99f3a2SThomas Veerman
1237f99f3a2SThomas Veerman	        echo " * Transfering $PACKAGEDIR to $RELEASEPACKAGE"
1247f99f3a2SThomas Veerman	        for pkgprefix in `cat $PACKAGELIST`
1257f99f3a2SThomas Veerman	        do	realfn="`echo $PACKAGEDIR/All/${pkgprefix}*.tgz`"
1267f99f3a2SThomas Veerman			if [ -f "$realfn" ]
1277f99f3a2SThomas Veerman	               then
1287f99f3a2SThomas Veerman			  # Copy package and create package's index
1297f99f3a2SThomas Veerman			  (
1307f99f3a2SThomas Veerman			      p="`basename $realfn`"
1317f99f3a2SThomas Veerman			      cd $PACKAGEDIR/All
1327f99f3a2SThomas Veerman			      cp $p $RELEASEPACKAGE/
1337f99f3a2SThomas Veerman
1347f99f3a2SThomas Veerman			      indexname=$indexpath/$p.$index
1357f99f3a2SThomas Veerman			      pkg_info -X $p >$indexname
1367f99f3a2SThomas Veerman
1377f99f3a2SThomas Veerman			      if [ ! -f $indexname ]
1387f99f3a2SThomas Veerman			      then	echo Missing $indexname.
1397f99f3a2SThomas Veerman				  exit 1
1407f99f3a2SThomas Veerman			      fi
1417f99f3a2SThomas Veerman
14243eceae5SBen Gras			      if [ "`wc -l <$indexname`" -lt 3 ]
1437f99f3a2SThomas Veerman			      then	$indexname is too short.
1447f99f3a2SThomas Veerman				  rm $indexname
1457f99f3a2SThomas Veerman				  exit 1
1467f99f3a2SThomas Veerman			      fi
1477f99f3a2SThomas Veerman
1487f99f3a2SThomas Veerman			      cat $indexname >>$PACKAGEDIR/All/$index
1497f99f3a2SThomas Veerman			  )
1507f99f3a2SThomas Veerman	               else
1517f99f3a2SThomas Veerman	                  echo "Can't find $pkgprefix Missing."
1527f99f3a2SThomas Veerman	               fi
1537f99f3a2SThomas Veerman	        done
1547f99f3a2SThomas Veerman
1557f99f3a2SThomas Veerman		bzip2 -f $PACKAGEDIR/All/$index
1567f99f3a2SThomas Veerman		cp $PACKAGEDIR/All/$index.bz2 $RELEASEPACKAGE/
1577f99f3a2SThomas Veerman	fi
1587f99f3a2SThomas Veerman}
1597f99f3a2SThomas Veerman
1607f99f3a2SThomas Veermanfitfs()
1617f99f3a2SThomas Veerman{
1627f99f3a2SThomas Veerman	path="$1"
1637f99f3a2SThomas Veerman	ramdisk="$2"
1647f99f3a2SThomas Veerman	extra_inodes="$3"
1657f99f3a2SThomas Veerman	extra_zones="$4"
1667f99f3a2SThomas Veerman	mbsdefault="$5"
1677f99f3a2SThomas Veerman
1687f99f3a2SThomas Veerman	# Determine number of inodes
1697f99f3a2SThomas Veerman	inodes=`find $path | egrep -v ^$path/usr | wc -l`
1707f99f3a2SThomas Veerman	inodes="`expr $inodes + $extra_inodes`"
1717f99f3a2SThomas Veerman
1727f99f3a2SThomas Veerman	# Determine number of data zones
1737f99f3a2SThomas Veerman	zonekbs=`du -ks $path | cut -d'	' -f1`
1747f99f3a2SThomas Veerman	zonekbsignore=0
1757f99f3a2SThomas Veerman	[ ! -d $path/usr ] || zonekbsignore=`du -ks $path/usr | cut -d"	" -f1`
1767f99f3a2SThomas Veerman	zones="`expr \( $zonekbs - $zonekbsignore \) / \( $BS / 1024 \) + $extra_zones`"
1777f99f3a2SThomas Veerman
1787f99f3a2SThomas Veerman	# Determine file system size
1797f99f3a2SThomas Veerman	BSBITS="`expr $BS \* 8`"
1807f99f3a2SThomas Veerman	imap_blocks="`expr \( $inodes + $BSBITS - 1 \) / $BSBITS`"
1817f99f3a2SThomas Veerman	inode_blocks="`expr \( $inodes \* 64 + $BS - 1 \) / $BS`"
1827f99f3a2SThomas Veerman	zmap_blocks="`expr \( $zones + $BSBITS - 1 \) / $BSBITS`"
1837f99f3a2SThomas Veerman	blocks="`expr 1 + 1 + $imap_blocks + $zmap_blocks + $inode_blocks + $zones`"
1847f99f3a2SThomas Veerman	kbs="`expr $blocks \* \( $BS / 1024 \)`"
1857f99f3a2SThomas Veerman
1867f99f3a2SThomas Veerman	# Apply default if higher
1877f99f3a2SThomas Veerman	if [ -n "$mbsdefault" ]
1887f99f3a2SThomas Veerman	then
1897f99f3a2SThomas Veerman		kbsdefault="`expr $mbsdefault \* 1024`"
1907f99f3a2SThomas Veerman		if [ "$kbs" -lt "$kbsdefault" ]
1917f99f3a2SThomas Veerman		then kbs=$kbsdefault
1927f99f3a2SThomas Veerman		else echo "warning: ${mbsdefault}mb is too small, using ${kbs}kb"
1937f99f3a2SThomas Veerman		fi
1947f99f3a2SThomas Veerman	fi
1957f99f3a2SThomas Veerman
1967f99f3a2SThomas Veerman	# Create a filesystem on the target ramdisk
1977f99f3a2SThomas Veerman	ramdisk $kbs $ramdisk
1987f99f3a2SThomas Veerman	mkfs.mfs -B $BS -i $inodes $ramdisk
1997f99f3a2SThomas Veerman}
200