xref: /minix/releasetools/release.functions (revision 83133719)
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