xref: /minix3/releasetools/release.functions (revision f14fb602092e015ff630df58e17c2a9cd57d29b3)
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		else	echo Getting $pkgname
49			fetch -r ${PACKAGEURL}/${pkgname}.tgz
50		fi
51		echo -n "."
52	done
53	)
54	echo done
55}
56
57cd_root_changes()
58{
59cat >$CDFILES/boot.cfg <<END_BOOT_CFG
60banner=Welcome to the MINIX 3 installation CD
61banner================================================================================
62banner=
63menu=Regular MINIX 3:multiboot /kernel bootcd=1 cdproberoot=1 rootdevname=ram disable=inet
64menu=Regular MINIX 3 (with AHCI):multiboot /kernel bootcd=1 cdproberoot=1 rootdevname=ram disable=inet ahci=yes
65menu=Edit menu option:edit
66menu=Drop to boot prompt:prompt
67clear=1
68timeout=10
69default=1
70load=/mod01_ds
71load=/mod02_rs
72load=/mod03_pm
73load=/mod04_sched
74load=/mod05_vfs
75load=/mod06_memory
76load=/mod07_log
77load=/mod08_tty
78load=/mod09_mfs
79load=/mod10_vm
80load=/mod11_pfs
81load=/mod12_init
82# This space intentionally left blank - leave to appease bootloader!
83# This space intentionally left blank - leave to appease bootloader!
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!
100END_BOOT_CFG
101}
102
103
104hdemu_root_changes()
105{
106	$RELEASEDIR/usr/sbin/installboot_nbsd $TMPDISKROOT \
107		$RELEASEDIR/usr/mdec/bootxx_minixfs3
108
109cat >$RELEASEMNTDIR/boot.cfg <<END_BOOT_CFG
110menu=Regular MINIX 3:load_mods /boot/minix_default/mod*;multiboot /boot/minix_default/kernel bootcd=2 disable=inet bios_wini=yes bios_remap_first=1 ramimagedev=c0d7p0s0
111menu=Edit menu option:edit
112menu=Drop to boot prompt:prompt
113clear=1
114timeout=10
115default=1
116END_BOOT_CFG
117}
118
119usb_root_changes()
120{
121	$RELEASEDIR/usr/sbin/installboot_nbsd $TMPDISKROOT \
122		$RELEASEDIR/usr/mdec/bootxx_minixfs3
123	echo \
124cat >$RELEASEMNTDIR/boot.cfg <<END_BOOT_CFG
125menu=Regular MINIX 3:load_mods /boot/minix_default/mod*;multiboot /boot/minix_default/kernel bios_wini=yes bios_remap_first=1 rootdevname=c0d7p0s0
126menu=Edit menu option:edit
127menu=Drop to boot prompt:prompt
128clear=1
129timeout=10
130default=1
131END_BOOT_CFG
132}
133
134copy_local_packages()
135{
136	if [ -d $PACKAGEDIR -a -f $PACKAGELIST -a $PACKAGES -ne 0 ]
137	then
138		index=pkg_summary
139		indexpath=$PACKAGEDIR/.index
140
141		if [ ! -d $indexpath ]
142		then	mkdir $indexpath
143		fi
144		if [ ! -d $indexpath ]
145		then	echo "Couldn't create $indexpath."
146			exit 1
147		fi
148
149		echo "" >$PACKAGEDIR/All/$index
150
151	        echo " * Transfering $PACKAGEDIR to $RELEASEPACKAGE"
152	        for pkgprefix in `cat $PACKAGELIST`
153	        do	realfn="`echo $PACKAGEDIR/All/${pkgprefix}*.tgz`"
154			if [ -f "$realfn" ]
155	               then
156			  # Copy package and create package's index
157			  (
158			      p="`basename $realfn`"
159			      cd $PACKAGEDIR/All
160			      cp $p $RELEASEPACKAGE/
161
162			      indexname=$indexpath/$p.$index
163			      pkg_info -X $p >$indexname
164
165			      if [ ! -f $indexname ]
166			      then	echo Missing $indexname.
167				  exit 1
168			      fi
169
170			      if [ "`wc -l $indexname`" -lt 3 ]
171			      then	$indexname is too short.
172				  rm $indexname
173				  exit 1
174			      fi
175
176			      cat $indexname >>$PACKAGEDIR/All/$index
177			  )
178	               else
179	                  echo "Can't find $pkgprefix Missing."
180	               fi
181	        done
182
183		bzip2 -f $PACKAGEDIR/All/$index
184		cp $PACKAGEDIR/All/$index.bz2 $RELEASEPACKAGE/
185	fi
186}
187
188fitfs()
189{
190	path="$1"
191	ramdisk="$2"
192	extra_inodes="$3"
193	extra_zones="$4"
194	mbsdefault="$5"
195
196	# Determine number of inodes
197	inodes=`find $path | egrep -v ^$path/usr | wc -l`
198	inodes="`expr $inodes + $extra_inodes`"
199
200	# Determine number of data zones
201	zonekbs=`du -ks $path | cut -d'	' -f1`
202	zonekbsignore=0
203	[ ! -d $path/usr ] || zonekbsignore=`du -ks $path/usr | cut -d"	" -f1`
204	zones="`expr \( $zonekbs - $zonekbsignore \) / \( $BS / 1024 \) + $extra_zones`"
205
206	# Determine file system size
207	BSBITS="`expr $BS \* 8`"
208	imap_blocks="`expr \( $inodes + $BSBITS - 1 \) / $BSBITS`"
209	inode_blocks="`expr \( $inodes \* 64 + $BS - 1 \) / $BS`"
210	zmap_blocks="`expr \( $zones + $BSBITS - 1 \) / $BSBITS`"
211	blocks="`expr 1 + 1 + $imap_blocks + $zmap_blocks + $inode_blocks + $zones`"
212	kbs="`expr $blocks \* \( $BS / 1024 \)`"
213
214	# Apply default if higher
215	if [ -n "$mbsdefault" ]
216	then
217		kbsdefault="`expr $mbsdefault \* 1024`"
218		if [ "$kbs" -lt "$kbsdefault" ]
219		then kbs=$kbsdefault
220		else echo "warning: ${mbsdefault}mb is too small, using ${kbs}kb"
221		fi
222	fi
223
224	# Create a filesystem on the target ramdisk
225	ramdisk $kbs $ramdisk
226	mkfs.mfs -B $BS -i $inodes $ramdisk
227}
228