1 2make_hdimage() 3{ 4 dd if=$TMPDISKUSR of=usrimage bs=$BS count=$USRBLOCKS 5 6 rootsize=`stat -f %z rootimage` 7 usrsize=`stat -f %z usrimage` 8 9 rootsects=`expr $rootsize / 512` 10 usrsects=`expr $usrsize / 512` 11 12 # installboot -m needs at least 1KB 13 dd < /dev/zero >tmpimage count=2 14 partition -fm tmpimage 2 81:$rootsects* 0:0 81:$usrsects 15 installboot_nbsd -m tmpimage /usr/mdec/mbr 16 dd < tmpimage > subpart count=1 17 18 primsects=`expr 1 + $rootsects + $usrsects` 19 cyl=`expr '(' $primsects ')' / $secs + 1` 20 padsects=`expr $cyl \* $secs - 1 - $primsects` 21 22 { dd < /dev/zero count=1 23 cat subpart 24 cat rootimage 25 cat usrimage 26 dd < /dev/zero count=$padsects 27 } > hdimage 28 partition -m hdimage 81:`expr $primsects + $padsects`* 29 installboot_nbsd -m hdimage /usr/mdec/mbr 30} 31 32retrieve() 33{ 34 dir=$1 35 list=`pwd`/$2 36 URLS="" 37 echo "Retrieving packages form $PACKAGEURL" 38 ( 39 cd $dir || exit 1 40 SUMMARY=pkg_summary 41 rm -f pkg_summary* || true 42 fetch $PACKAGEURL/$SUMMARY.bz2 43 bzip2 -d $SUMMARY.bz2 44 cat $list | while read name 45 do pkgname="`fgrep PKGNAME=${name} $SUMMARY | sed 's/PKGNAME=//g'`" 46 if [ `echo $pkgname | wc -w` -ne 1 ] 47 then echo " *** Could not resolve $name (not found or too many matches: $pkgname) ***" 48 echo Matches: 49 echo $pkgname 50 exit 1 51 else echo Getting $pkgname 52 fetch -r ${PACKAGEURL}/${pkgname}.tgz 53 fi 54 echo -n "." 55 done 56 ) 57 echo done 58} 59 60cd_root_changes() 61{ 62cat >$CDFILES/boot.cfg <<END_BOOT_CFG 63banner=Welcome to the MINIX 3 installation CD 64banner================================================================================ 65banner= 66menu=Regular MINIX 3:multiboot /kernel bootcd=1 cdproberoot=1 rootdevname=ram disable=inet 67menu=Regular MINIX 3 (with AHCI):multiboot /kernel bootcd=1 cdproberoot=1 rootdevname=ram disable=inet ahci=yes 68menu=Edit menu option:edit 69menu=Drop to boot prompt:prompt 70clear=1 71timeout=10 72default=1 73load=/mod01_ds 74load=/mod02_rs 75load=/mod03_pm 76load=/mod04_sched 77load=/mod05_vfs 78load=/mod06_memory 79load=/mod07_tty 80load=/mod08_mfs 81load=/mod09_vm 82load=/mod10_pfs 83load=/mod11_init 84# This space intentionally left blank - leave to appease bootloader! 85# This space intentionally left blank - leave to appease bootloader! 86# This space intentionally left blank - leave to appease bootloader! 87# This space intentionally left blank - leave to appease bootloader! 88# This space intentionally left blank - leave to appease bootloader! 89# This space intentionally left blank - leave to appease bootloader! 90# This space intentionally left blank - leave to appease bootloader! 91# This space intentionally left blank - leave to appease bootloader! 92# This space intentionally left blank - leave to appease bootloader! 93# This space intentionally left blank - leave to appease bootloader! 94# This space intentionally left blank - leave to appease bootloader! 95# This space intentionally left blank - leave to appease bootloader! 96# This space intentionally left blank - leave to appease bootloader! 97# This space intentionally left blank - leave to appease bootloader! 98# This space intentionally left blank - leave to appease bootloader! 99# This space intentionally left blank - leave to appease bootloader! 100# This space intentionally left blank - leave to appease bootloader! 101# This space intentionally left blank - leave to appease bootloader! 102END_BOOT_CFG 103} 104 105copy_local_packages() 106{ 107 if [ -d $PACKAGEDIR -a -f $PACKAGELIST -a $PACKAGES -ne 0 ] 108 then 109 index=pkg_summary 110 indexpath=$PACKAGEDIR/.index 111 112 if [ ! -d $indexpath ] 113 then mkdir $indexpath 114 fi 115 if [ ! -d $indexpath ] 116 then echo "Couldn't create $indexpath." 117 exit 1 118 fi 119 120 echo "" >$PACKAGEDIR/All/$index 121 122 echo " * Transfering $PACKAGEDIR to $RELEASEPACKAGE" 123 for pkgprefix in `cat $PACKAGELIST` 124 do realfn="`echo $PACKAGEDIR/All/${pkgprefix}*.tgz`" 125 if [ -f "$realfn" ] 126 then 127 # Copy package and create package's index 128 ( 129 p="`basename $realfn`" 130 cd $PACKAGEDIR/All 131 cp $p $RELEASEPACKAGE/ 132 133 indexname=$indexpath/$p.$index 134 pkg_info -X $p >$indexname 135 136 if [ ! -f $indexname ] 137 then echo Missing $indexname. 138 exit 1 139 fi 140 141 if [ "`wc -l <$indexname`" -lt 3 ] 142 then $indexname is too short. 143 rm $indexname 144 exit 1 145 fi 146 147 cat $indexname >>$PACKAGEDIR/All/$index 148 ) 149 else 150 echo "Can't find $pkgprefix Missing." 151 fi 152 done 153 154 bzip2 -f $PACKAGEDIR/All/$index 155 cp $PACKAGEDIR/All/$index.bz2 $RELEASEPACKAGE/ 156 fi 157} 158 159fitfs() 160{ 161 path="$1" 162 ramdisk="$2" 163 extra_inodes="$3" 164 extra_zones="$4" 165 mbsdefault="$5" 166 167 # Determine number of inodes 168 inodes=`find $path | egrep -v ^$path/usr | wc -l` 169 inodes="`expr $inodes + $extra_inodes`" 170 171 # Determine number of data zones 172 zonekbs=`du -ks $path | cut -d' ' -f1` 173 zonekbsignore=0 174 [ ! -d $path/usr ] || zonekbsignore=`du -ks $path/usr | cut -d" " -f1` 175 zones="`expr \( $zonekbs - $zonekbsignore \) / \( $BS / 1024 \) + $extra_zones`" 176 177 # Determine file system size 178 BSBITS="`expr $BS \* 8`" 179 imap_blocks="`expr \( $inodes + $BSBITS - 1 \) / $BSBITS`" 180 inode_blocks="`expr \( $inodes \* 64 + $BS - 1 \) / $BS`" 181 zmap_blocks="`expr \( $zones + $BSBITS - 1 \) / $BSBITS`" 182 blocks="`expr 1 + 1 + $imap_blocks + $zmap_blocks + $inode_blocks + $zones`" 183 kbs="`expr $blocks \* \( $BS / 1024 \)`" 184 185 # Apply default if higher 186 if [ -n "$mbsdefault" ] 187 then 188 kbsdefault="`expr $mbsdefault \* 1024`" 189 if [ "$kbs" -lt "$kbsdefault" ] 190 then kbs=$kbsdefault 191 else echo "warning: ${mbsdefault}mb is too small, using ${kbs}kb" 192 fi 193 fi 194 195 # Create a filesystem on the target ramdisk 196 ramdisk $kbs $ramdisk 197 mkfs.mfs -B $BS -i $inodes $ramdisk 198} 199