xref: /minix/releasetools/release.functions (revision e1cdaee1)
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_mib
81load=/mod09_vm
82load=/mod10_pfs
83load=/mod11_mfs
84load=/mod12_init
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!
102# This space intentionally left blank - leave to appease bootloader!
103END_BOOT_CFG
104}
105
106copy_local_packages()
107{
108	if [ -d $PACKAGEDIR -a -f $PACKAGELIST -a $PACKAGES -ne 0 ]
109	then
110		index=pkg_summary
111		indexpath=$PACKAGEDIR/.index
112
113		if [ ! -d $indexpath ]
114		then	mkdir $indexpath
115		fi
116		if [ ! -d $indexpath ]
117		then	echo "Couldn't create $indexpath."
118			exit 1
119		fi
120
121		echo "" >$PACKAGEDIR/All/$index
122
123	        echo " * Transfering $PACKAGEDIR to $RELEASEPACKAGE"
124	        for pkgprefix in `cat $PACKAGELIST`
125	        do	realfn="`echo $PACKAGEDIR/All/${pkgprefix}*.tgz`"
126			if [ -f "$realfn" ]
127	               then
128			  # Copy package and create package's index
129			  (
130			      p="`basename $realfn`"
131			      cd $PACKAGEDIR/All
132			      cp $p $RELEASEPACKAGE/
133
134			      indexname=$indexpath/$p.$index
135			      pkg_info -X $p >$indexname
136
137			      if [ ! -f $indexname ]
138			      then	echo Missing $indexname.
139				  exit 1
140			      fi
141
142			      if [ "`wc -l <$indexname`" -lt 3 ]
143			      then	$indexname is too short.
144				  rm $indexname
145				  exit 1
146			      fi
147
148			      cat $indexname >>$PACKAGEDIR/All/$index
149			  )
150	               else
151	                  echo "Can't find $pkgprefix Missing."
152	               fi
153	        done
154
155		bzip2 -f $PACKAGEDIR/All/$index
156		cp $PACKAGEDIR/All/$index.bz2 $RELEASEPACKAGE/
157	fi
158}
159
160fitfs()
161{
162	path="$1"
163	ramdisk="$2"
164	extra_inodes="$3"
165	extra_zones="$4"
166	mbsdefault="$5"
167
168	# Determine number of inodes
169	inodes=`find $path | egrep -v ^$path/usr | wc -l`
170	inodes="`expr $inodes + $extra_inodes`"
171
172	# Determine number of data zones
173	zonekbs=`du -ks $path | cut -d'	' -f1`
174	zonekbsignore=0
175	[ ! -d $path/usr ] || zonekbsignore=`du -ks $path/usr | cut -d"	" -f1`
176	zones="`expr \( $zonekbs - $zonekbsignore \) / \( $BS / 1024 \) + $extra_zones`"
177
178	# Determine file system size
179	BSBITS="`expr $BS \* 8`"
180	imap_blocks="`expr \( $inodes + $BSBITS - 1 \) / $BSBITS`"
181	inode_blocks="`expr \( $inodes \* 64 + $BS - 1 \) / $BS`"
182	zmap_blocks="`expr \( $zones + $BSBITS - 1 \) / $BSBITS`"
183	blocks="`expr 1 + 1 + $imap_blocks + $zmap_blocks + $inode_blocks + $zones`"
184	kbs="`expr $blocks \* \( $BS / 1024 \)`"
185
186	# Apply default if higher
187	if [ -n "$mbsdefault" ]
188	then
189		kbsdefault="`expr $mbsdefault \* 1024`"
190		if [ "$kbs" -lt "$kbsdefault" ]
191		then kbs=$kbsdefault
192		else echo "warning: ${mbsdefault}mb is too small, using ${kbs}kb"
193		fi
194	fi
195
196	# Create a filesystem on the target ramdisk
197	ramdisk $kbs $ramdisk
198	mkfs.mfs -B $BS -i $inodes $ramdisk
199}
200