1 2851 jongkis #!/bin/ksh -p 2 0 stevel # 3 0 stevel # CDDL HEADER START 4 0 stevel # 5 0 stevel # The contents of this file are subject to the terms of the 6 1777 setje # Common Development and Distribution License (the "License"). 7 1777 setje # You may not use this file except in compliance with the License. 8 0 stevel # 9 0 stevel # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 0 stevel # or http://www.opensolaris.org/os/licensing. 11 0 stevel # See the License for the specific language governing permissions 12 0 stevel # and limitations under the License. 13 0 stevel # 14 0 stevel # When distributing Covered Code, include this CDDL HEADER in each 15 0 stevel # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 0 stevel # If applicable, add the following below this CDDL HEADER, with the 17 0 stevel # fields enclosed by brackets "[]" replaced with your own identifying 18 0 stevel # information: Portions Copyright [yyyy] [name of copyright owner] 19 0 stevel # 20 0 stevel # CDDL HEADER END 21 0 stevel # 22 0 stevel 23 8715 Jan # Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24 0 stevel # Use is subject to license terms. 25 0 stevel # 26 0 stevel 27 0 stevel # utility to pack and unpack a boot/root archive 28 0 stevel # both ufs and hsfs (iso9660) format archives are unpacked 29 0 stevel # only ufs archives are generated 30 0 stevel # 31 0 stevel # usage: pack <archive> <root> 32 0 stevel # unpack <archive> <root> 33 0 stevel # packmedia <solaris_image> <root> 34 0 stevel # unpackmedia <solaris_image> <root> 35 0 stevel # 36 0 stevel # Where <root> is the directory to unpack to and will be cleaned out 37 0 stevel # if it exists. 38 0 stevel # 39 0 stevel # In the case of (un)packmedia, the image is packed or unpacked to/from 40 0 stevel # Solaris media and all the things that don't go into the ramdisk image 41 0 stevel # are (un)cpio'd as well 42 1777 setje # 43 0 stevel 44 0 stevel usage() 45 0 stevel { 46 0 stevel printf "usage: root_archive pack <archive> <root>\n" 47 0 stevel printf " root_archive unpack <archive> <root>\n" 48 0 stevel printf " root_archive packmedia <solaris_image> <root>\n" 49 0 stevel printf " root_archive unpackmedia <solaris_image> <root>\n" 50 10159 Jerry exit 1 51 0 stevel } 52 0 stevel 53 2334 setje cleanup() 54 2334 setje { 55 2334 setje if [ -d $MNT ] ; then 56 2334 setje umount $MNT 2> /dev/null 57 2334 setje rmdir $MNT 58 2334 setje fi 59 2334 setje 60 2851 jongkis lofiadm -d "$TMR" 2>/dev/null 61 5648 setje if [ "$REALTHING" != true ] ; then 62 5648 setje rm -f "$TMR" 63 5648 setje fi 64 5648 setje rm -f "$TMR.gz" 65 7563 Prasad rm -f /tmp/flist$$ 66 2334 setje } 67 2334 setje 68 5822 jhd preload_Gnome() 69 4889 sjelinek { 70 4889 sjelinek MEDIA="$1" 71 4889 sjelinek MINIROOT="$2" 72 4889 sjelinek 73 4889 sjelinek 74 4889 sjelinek ( 75 4889 sjelinek # Prepopulate the gconf database. This needs to be done and 76 4889 sjelinek # done first for several reasons. 1) Archiving out the gnome 77 4889 sjelinek # libraries and binaries causes the gconftool-2 to not run 78 4889 sjelinek # appropriately at boot time. 2) The binaries and libraries 79 4889 sjelinek # needed to run this are big and thus we want to archive 80 4889 sjelinek # them separately. 3) Having schemas prepopluated in the 81 4889 sjelinek # miniroot means faster boot times. 82 4889 sjelinek # 83 4889 sjelinek 84 4889 sjelinek cd "$MINIROOT" 85 4889 sjelinek HOME="./tmp/root" 86 4889 sjelinek export HOME 87 4889 sjelinek umask 0022 88 5648 setje mumble=.tmp_proto/root/etc/gconf/gconf.xml.defaults 89 5648 setje GCONF_CONFIG_SOURCE="xml:merged:$MINIROOT/$mumble" 90 4889 sjelinek export GCONF_CONFIG_SOURCE 91 4889 sjelinek SCHEMADIR="$MINIROOT/.tmp_proto/root/etc/gconf/schemas" 92 4889 sjelinek export SCHEMADIR 93 5648 setje /usr/bin/gconftool-2 --makefile-install-rule \ 94 5648 setje $SCHEMADIR/*.schemas >/dev/null 2>&1 95 5571 sjelinek echo ' 96 5571 sjelinek xml:readwrite:/tmp/root/.gconf 97 5571 sjelinek xml:readonly:/etc/gconf/gconf.xml.defaults 98 5571 sjelinek ' > /"$MINIROOT"/.tmp_proto/root/etc/gconf/2/path 99 5822 jhd ) 100 5822 jhd } 101 5571 sjelinek 102 5822 jhd archive_Gnome() 103 5822 jhd { 104 5822 jhd MEDIA="$1" 105 5822 jhd MINIROOT="$2" 106 5822 jhd 107 5822 jhd RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` 108 5822 jhd RELEASE=`basename "$RELEASE"` 109 5822 jhd CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" 110 5822 jhd 111 5822 jhd # Create the gnome archive 112 5822 jhd # 113 5822 jhd ( 114 4889 sjelinek # usr/share gnome stuff 115 4889 sjelinek cd "$MINIROOT" 116 4889 sjelinek find usr/share/GConf usr/share/application-registry \ 117 10418 Dan usr/share/autostart usr/share/dtds \ 118 4889 sjelinek usr/share/emacs usr/share/gnome usr/share/gnome-2.0 \ 119 4889 sjelinek usr/share/gnome-background-properties \ 120 4889 sjelinek usr/share/gtk-engines usr/share/gui-install \ 121 4889 sjelinek usr/share/icon-naming-utils usr/share/control-center \ 122 4889 sjelinek usr/share/icons usr/share/locale usr/share/metacity \ 123 4889 sjelinek usr/share/mime usr/share/mime-info usr/share/pixmaps \ 124 4889 sjelinek usr/share/scrollkeeper usr/share/sgml usr/share/themes \ 125 4889 sjelinek usr/share/xml \ 126 4889 sjelinek -print > /tmp/gnome_share.$$ 2>/dev/null 127 4889 sjelinek 128 4889 sjelinek if [ ! -f /tmp/gnome_share.$$ ] ; then 129 4889 sjelinek echo "/tmp/gnome_share.$$ file list not found." 130 5648 setje return 131 4889 sjelinek fi 132 4889 sjelinek 133 4889 sjelinek # usr/lib gnome stuff 134 4889 sjelinek 135 4889 sjelinek find usr/lib/libgnome*\.so\.* \ 136 4889 sjelinek usr/lib/libgst*\.so\.* usr/lib/libgconf*\.so\.* \ 137 4889 sjelinek usr/lib/libgdk*\.so\.* usr/lib/libgtk*\.so\.* \ 138 4889 sjelinek usr/lib/libglade*\.so\.* usr/lib/libmetacity*\.so\.* \ 139 4889 sjelinek usr/lib/libfontconfig*\.so\.* usr/lib/libgmodule*\.so\.* \ 140 4889 sjelinek usr/lib/libgobject*\.so\.* usr/lib/libgthread*\.so\.* \ 141 4889 sjelinek usr/lib/libpopt*\.so\.* usr/lib/libstartup*\.so\.* \ 142 4889 sjelinek usr/lib/libexif*\.so\.* usr/lib/libtiff*\.so\.* \ 143 10418 Dan usr/lib/libstartup*\.so\.* \ 144 4889 sjelinek usr/lib/libexif*\.so\.* usr/lib/libORBit*\.so\.* \ 145 4889 sjelinek usr/lib/libmlib*\.so\.* usr/lib/libxsl*\.so\.* \ 146 4889 sjelinek usr/lib/libpango*\.so\.* usr/lib/libpng*\.so\.* \ 147 4889 sjelinek usr/lib/liboil*\.so\.* usr/lib/libbonobo*\.so\.* \ 148 4889 sjelinek usr/lib/libart*\.so\.* usr/lib/libcairo*\.so\.* \ 149 4889 sjelinek usr/lib/libjpeg*\.so\.* \ 150 4889 sjelinek usr/lib/libpolkit*\.so\.* \ 151 4889 sjelinek -print | egrep -v '\.so\.[0]$' > \ 152 4889 sjelinek /tmp/gnome_lib.$$ 2>/dev/null 153 4889 sjelinek 154 4889 sjelinek find usr/lib/nautilus usr/lib/pango usr/lib/iconv \ 155 4889 sjelinek usr/lib/metacity-dialog usr/lib/window-manager-settings \ 156 4889 sjelinek usr/lib/bonobo-2.0 usr/lib/bononbo usr/lib/gtk-2.0 \ 157 4889 sjelinek usr/lib/GConf usr/lib/bonobo-activation-server \ 158 4889 sjelinek usr/lib/python2.4 usr/lib/gstreamer-0.10 \ 159 4889 sjelinek usr/lib/gconf-sanity-check-2 usr/lib/gconfd \ 160 4889 sjelinek usr/lib/gnome-vfs-2.0 usr/lib/dbus-daemon \ 161 4889 sjelinek usr/lib/gnome-vfs-daemon usr/lib/gnome-settings-daemon \ 162 4889 sjelinek usr/lib/gnome_segv2 usr/lib/orbit-2.0 \ 163 4889 sjelinek usr/lib/libmlib \ 164 4889 sjelinek print > /tmp/gnome_libdir.$$ 2>/dev/null 165 4889 sjelinek 166 4889 sjelinek if [ ! -f /tmp/gnome_lib.$$ -a ! -f gnome_libdir.$$ ] ; then 167 4889 sjelinek echo "/tmp/gnome_lib.$$ file list not found." 168 4889 sjelinek return 169 4889 sjelinek fi 170 4889 sjelinek 171 4889 sjelinek # /usr/sfw gnome stuff 172 4889 sjelinek find usr/sfw/bin usr/sfw/include usr/sfw/share usr/sfw/src \ 173 4889 sjelinek -print > /tmp/gnome_sfw.$$ 2>/dev/null 174 4889 sjelinek 175 4889 sjelinek if [ ! -f /tmp/gnome_sfw.$$ ] ; then 176 4889 sjelinek echo "/tmp/gnome_sfw.$$ file list not found." 177 4889 sjelinek return 178 4889 sjelinek fi 179 4889 sjelinek 180 4889 sjelinek # gnome app binaries usr/bin 181 4889 sjelinek find usr/bin/gnome* usr/bin/gui-install usr/bin/bonobo* \ 182 4889 sjelinek usr/bin/gtk-* usr/bin/fax* usr/bin/gdk* usr/bin/gif2tiff \ 183 4889 sjelinek usr/bin/install-lan \ 184 4889 sjelinek usr/bin/metacity* usr/bin/gst-* usr/bin/gconftool-2 \ 185 4889 sjelinek usr/bin/pango* usr/bin/desktop* usr/bin/djpeg \ 186 4889 sjelinek usr/bin/notify-send usr/bin/oil-bugreport \ 187 4889 sjelinek usr/bin/bmp2tiff usr/bin/thembus-theme-applier \ 188 4889 sjelinek usr/bin/thumbnail usr/lib/update-* \ 189 4889 sjelinek usr/bin/ras2tiff usr/bin/raw2tiff usr/bin/rdjpgcom \ 190 4889 sjelinek usr/bin/thumbnail usr/bin/dbus* \ 191 4889 sjelinek usr/bin/tiff* usr/bin/rgb2ycbcr \ 192 4889 sjelinek usr/bin/fc-cache usr/bin/fc-list \ 193 4889 sjelinek -print > /tmp/gnome_bin.$$ 2>/dev/null 194 4889 sjelinek 195 4889 sjelinek if [ ! -f /tmp/gnome_bin.$$ ] ; then 196 4889 sjelinek echo "/tmp/gnome_bin.$$ file list not found." 197 5648 setje return 198 4889 sjelinek fi 199 4889 sjelinek 200 4889 sjelinek # Cat all the files together and create the gnome archive 201 4889 sjelinek # 202 4889 sjelinek 203 4889 sjelinek cat /tmp/gnome_libdir.$$ /tmp/gnome_lib.$$ \ 204 4889 sjelinek /tmp/gnome_share.$$ /tmp/gnome_sfw.$$ /tmp/gnome_bin.$$ \ 205 4889 sjelinek > /tmp/gnome.$$ 206 4889 sjelinek 207 4889 sjelinek if [ ! -f /tmp/gnome.$$ ] ; then 208 4889 sjelinek echo "/tmp/gnome.$$ file not found." 209 4889 sjelinek return 210 4889 sjelinek fi 211 4889 sjelinek # Save off this file in the miniroot for use later 212 4889 sjelinek # when unpacking. Clean up old cruft if there. 213 4889 sjelinek # 214 4889 sjelinek 215 4889 sjelinek if [ -f .tmp_proto/gnome_saved ]; then 216 4889 sjelinek rm -f .tmp_proto/gnome_saved 217 4889 sjelinek fi 218 4889 sjelinek 219 4889 sjelinek cp /tmp/gnome.$$ .tmp_proto/gnome_saved 220 4889 sjelinek 221 4889 sjelinek # Create gnome archive 222 4889 sjelinek # 223 4889 sjelinek 224 4889 sjelinek cpio -ocmPuB < /tmp/gnome.$$ 2>/dev/null | bzip2 > \ 225 4889 sjelinek "$CPIO_DIR/gnome.cpio.bz2" 226 4889 sjelinek 227 5648 setje # Remove files from miniroot that are in archive. 228 4889 sjelinek # Create symlinks for files in archive 229 4889 sjelinek 230 4889 sjelinek rm -rf `cat /tmp/gnome_share.$$` 231 4889 sjelinek 232 4889 sjelinek for i in `cat /tmp/gnome_share.$$` 233 5648 setje do 234 4889 sjelinek ln -s /tmp/root/$i $i 2>/dev/null 235 4889 sjelinek done 236 4889 sjelinek 237 4889 sjelinek rm -rf `cat /tmp/gnome_lib.$$` 238 4889 sjelinek for i in `cat /tmp/gnome_lib.$$` 239 4889 sjelinek do 240 4889 sjelinek ln -s /tmp/root/$i $i 2>/dev/null 241 4889 sjelinek done 242 4889 sjelinek 243 4889 sjelinek rm -rf `cat /tmp/gnome_libdir.$$` 244 4889 sjelinek for i in `cat /tmp/gnome_libdir.$$` 245 5648 setje do 246 4889 sjelinek ln -s /tmp/root/$i $i 2>/dev/null 247 4889 sjelinek done 248 4889 sjelinek 249 4889 sjelinek rm -rf `cat /tmp/gnome_sfw.$$` 250 4889 sjelinek for i in `cat /tmp/gnome_sfw.$$` 251 5648 setje do 252 4889 sjelinek ln -s /tmp/root/$i $i 2>/dev/null 253 4889 sjelinek done 254 4889 sjelinek 255 4889 sjelinek rm -rf `cat /tmp/gnome_bin.$$` 256 4889 sjelinek for i in `cat /tmp/gnome_bin.$$` 257 5648 setje do 258 4889 sjelinek ln -s /tmp/root/$i $i 2>/dev/null 259 4889 sjelinek done 260 4889 sjelinek rm -f /tmp/gnome_share.$$ 261 4889 sjelinek rm -f /tmp/gnome_lib.$$ 262 4889 sjelinek rm -f /tmp/gnome_libdir.$$ 263 4889 sjelinek rm -f /tmp/gnome_bin.$$ 264 4889 sjelinek ) 265 4889 sjelinek } 266 4889 sjelinek 267 4889 sjelinek archive_JavaGUI() 268 4889 sjelinek { 269 4889 sjelinek MEDIA="$1" 270 4889 sjelinek MINIROOT="$2" 271 4889 sjelinek 272 4889 sjelinek RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` 273 4889 sjelinek RELEASE=`basename "$RELEASE"` 274 4889 sjelinek 275 5648 setje CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" 276 4889 sjelinek 277 4889 sjelinek # Archive the java wizard components that are only used in the 278 4889 sjelinek # non developer express path. 279 4889 sjelinek # 280 4889 sjelinek ( 281 4889 sjelinek # path is usr/lib/install/data 282 4889 sjelinek cd "$MINIROOT" 283 4889 sjelinek find usr/lib/install/data/wizards \ 284 4889 sjelinek -print > /tmp/java_ui.$$ 2>/dev/null 285 4889 sjelinek 286 4889 sjelinek if [ ! -f /tmp/java_ui.$$ ] ; then 287 4889 sjelinek echo "/tmp/java_ui.$$ file list not found." 288 5648 setje return 289 4889 sjelinek fi 290 4889 sjelinek 291 4889 sjelinek cpio -ocmPuB < /tmp/java_ui.$$ 2>/dev/null | bzip2 > \ 292 4889 sjelinek "$CPIO_DIR/javaui.cpio.bz2" 293 4889 sjelinek 294 4889 sjelinek rm -rf `cat /tmp/java_ui.$$` 295 5648 setje ln -s /tmp/root/usr/lib/install/data/wizards \ 296 5648 setje usr/lib/install/data/wizards 2>/dev/null 297 4889 sjelinek 298 4889 sjelinek rm -f /tmp/java_ui.$$ 299 4889 sjelinek 300 4889 sjelinek ) 301 4889 sjelinek } 302 4889 sjelinek 303 4889 sjelinek archive_Misc() 304 4889 sjelinek { 305 4889 sjelinek MEDIA="$1" 306 4889 sjelinek MINIROOT="$2" 307 4889 sjelinek 308 4889 sjelinek RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` 309 4889 sjelinek RELEASE=`basename "$RELEASE"` 310 4889 sjelinek 311 5648 setje CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" 312 4889 sjelinek 313 4889 sjelinek # Archive misc stuff that is needed by non devex installer 314 4889 sjelinek # 315 4889 sjelinek ( 316 4889 sjelinek # usr/lib stuff 317 4889 sjelinek cd "$MINIROOT" 318 4889 sjelinek find usr/lib/lp -print > /tmp/lp.$$ 2>/dev/null 319 4889 sjelinek if [ ! -f /tmp/lp.$$ ] ; then 320 4889 sjelinek echo "/tmp/lp.$$ file list not found." 321 5648 setje return 322 4889 sjelinek fi 323 4889 sjelinek 324 4889 sjelinek cpio -ocmPuB < /tmp/lp.$$ 2>/dev/null | bzip2 > \ 325 4889 sjelinek "$CPIO_DIR/lpmisc.cpio.bz2" 326 4889 sjelinek 327 4889 sjelinek rm -rf `cat /tmp/lp.$$` 328 4889 sjelinek ln -s /tmp/root/usr/lib/lp usr/lib/lp 2>/dev/null 329 4889 sjelinek 330 4889 sjelinek rm -f /tmp/lp.$$ 331 4889 sjelinek ) 332 4889 sjelinek 333 4889 sjelinek } 334 4889 sjelinek 335 4889 sjelinek archive_Perl() 336 4889 sjelinek { 337 4889 sjelinek MEDIA="$1" 338 4889 sjelinek MINIROOT="$2" 339 4889 sjelinek 340 4889 sjelinek RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` 341 4889 sjelinek RELEASE=`basename "$RELEASE"` 342 4889 sjelinek 343 5648 setje CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" 344 4889 sjelinek 345 4889 sjelinek # Archive perl, it is only needed by gnome gui. 346 4889 sjelinek # 347 4889 sjelinek ( 348 4889 sjelinek # in usr 349 4889 sjelinek cd "$MINIROOT" 350 4889 sjelinek find usr/perl5 -print > /tmp/perl.$$ 2>/dev/null 351 4889 sjelinek 352 4889 sjelinek if [ ! -f /tmp/perl.$$ ] ; then 353 4889 sjelinek echo "/tmp/perl.$$ file list not found." 354 5648 setje return 355 4889 sjelinek fi 356 4889 sjelinek cpio -ocmPuB < /tmp/perl.$$ 2>/dev/null | bzip2 > \ 357 4889 sjelinek "$CPIO_DIR/perl.cpio.bz2" 358 4889 sjelinek 359 4889 sjelinek rm -rf `cat /tmp/perl.$$` 2>/dev/null 360 5571 sjelinek ln -s /tmp/root/usr/perl5 usr/perl5 2>/dev/null 361 4889 sjelinek 362 4889 sjelinek rm -f /tmp/perl.$$ 363 4889 sjelinek ) 364 4889 sjelinek } 365 1777 setje archive_X() 366 0 stevel { 367 1777 setje MEDIA="$1" 368 1777 setje MINIROOT="$2" 369 0 stevel 370 1777 setje RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` 371 1777 setje RELEASE=`basename "$RELEASE"` 372 0 stevel 373 5648 setje CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" 374 0 stevel 375 0 stevel # create the graphics and non-graphics X archive 376 0 stevel # 377 2851 jongkis ( 378 4889 sjelinek cd "$MINIROOT" 379 4889 sjelinek find usr/openwin usr/dt usr/X11 -print 2> /dev/null |\ 380 2851 jongkis cpio -ocmPuB 2> /dev/null | bzip2 > "$CPIO_DIR/X.cpio.bz2" 381 0 stevel 382 4889 sjelinek find usr/openwin/bin/mkfontdir \ 383 4889 sjelinek usr/openwin/lib/installalias \ 384 4889 sjelinek usr/openwin/server/lib/libfont.so.1 \ 385 4889 sjelinek usr/openwin/server/lib/libtypesclr.so.0 \ 386 2851 jongkis -print | cpio -ocmPuB 2> /dev/null | bzip2 > \ 387 2851 jongkis "$CPIO_DIR/X_small.cpio.bz2" 388 0 stevel 389 4889 sjelinek rm -rf usr/dt usr/openwin usr/X11 390 4889 sjelinek ln -s /tmp/root/usr/dt usr/dt 391 4889 sjelinek ln -s /tmp/root/usr/openwin usr/openwin 392 4889 sjelinek ln -s /tmp/root/usr/X11 usr/X11 393 2851 jongkis ) 394 1777 setje } 395 1777 setje 396 5648 setje archive_lu() 397 5648 setje { 398 5648 setje MEDIA="$1" 399 5648 setje MINIROOT="$2" 400 5648 setje 401 5648 setje RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` 402 5648 setje RELEASE=`basename "$RELEASE"` 403 5648 setje 404 5648 setje CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" 405 5648 setje 406 5648 setje ( 407 5648 setje cd "$MINIROOT" 408 9931 Sreedhar find usr/lib/install usr/snadm usr/sbin usr/lib/locale \ 409 7563 Prasad boot/grub boot/solaris/bootenv.rc \ 410 7563 Prasad tmp/root/boot/grub tmp/root/boot/solaris/bootenv.rc \ 411 7563 Prasad 2> /dev/null | cpio -ocmPuB 2> /dev/null | bzip2 \ 412 7563 Prasad > "$CPIO_DIR"/lu.cpio.bz2 413 5648 setje ls platform > "$CPIO_DIR/lu.platforms" 414 5648 setje ) 415 7563 Prasad } 416 7563 Prasad 417 7563 Prasad cleanout_pkgdata() 418 7563 Prasad { 419 7563 Prasad rm -Rf tmp/root/var/sadm/install tmp/root/var/sadm/pkg 420 5648 setje } 421 5648 setje 422 1777 setje packmedia() 423 1777 setje { 424 1777 setje MEDIA="$1" 425 1777 setje MINIROOT="$2" 426 1777 setje 427 1777 setje RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` 428 1777 setje RELEASE=`basename "$RELEASE"` 429 5822 jhd ARCHIVES="X X_small perl lpmisc javaui gnome" 430 1777 setje 431 1777 setje mkdir -p "$MEDIA/$RELEASE/Tools/Boot" 432 5648 setje 433 5648 setje if [ -d "$MINIROOT/platform/i86pc" ] ; then 434 5648 setje mkdir -p "$MEDIA/boot/amd64" 435 5648 setje mkdir -p "$MEDIA/boot/platform/i86pc/kernel" 436 5648 setje mkdir -p "$MEDIA/boot/platform/i86pc/kernel/amd64" 437 5648 setje mkdir -p "$MEDIA/boot/platform/i86xpv/kernel" 438 5648 setje mkdir -p "$MEDIA/boot/platform/i86xpv/kernel/amd64" 439 5648 setje cp "$MINIROOT/platform/i86pc/multiboot" "$MEDIA/boot" 440 5648 setje cp "$MINIROOT/platform/i86pc/kernel/unix" \ 441 5648 setje "$MEDIA/boot/platform/i86pc/kernel/unix" 442 5648 setje cp "$MINIROOT/platform/i86pc/kernel/amd64/unix" \ 443 5648 setje "$MEDIA/boot/platform/i86pc/kernel/amd64/unix" 444 5648 setje cp "$MINIROOT/platform/i86xpv/kernel/unix" \ 445 5648 setje "$MEDIA/boot/platform/i86xpv/kernel/unix" 446 5648 setje cp "$MINIROOT/platform/i86xpv/kernel/amd64/unix" \ 447 5648 setje "$MEDIA/boot/platform/i86xpv/kernel/amd64/unix" 448 5648 setje ( 449 5648 setje cd "$MEDIA/$RELEASE/Tools/Boot" 450 5648 setje ln -sf ../../../boot/x86.miniroot 451 5648 setje ln -sf ../../../boot/multiboot 452 5648 setje ln -sf ../../../boot/platform/i86pc/kernel/unix 453 5648 setje ln -sf ../../../boot/platform/i86pc/kernel/amd64/unix 454 5648 setje ln -sf ../../../boot/platform/i86xpv/kernel/unix 455 5648 setje ln -sf ../../../boot/platform/i86xpv/kernel/amd64/unix 456 5648 setje ln -sf ../../../boot/grub/pxegrub 457 5648 setje ) 458 5648 setje fi 459 5648 setje 460 5648 setje if [ -d "$MINIROOT/platform/sun4u" ] ; then 461 5648 setje mkdir -p "$MEDIA/boot" 462 6319 jg dd if="$MINIROOT/platform/sun4u/lib/fs/hsfs/bootblk" \ 463 5648 setje of="$MEDIA/boot/hsfs.bootblock" \ 464 5648 setje bs=1b oseek=1 count=15 conv=sync 2> /dev/null 465 5648 setje fi 466 5648 setje 467 5648 setje for arch in sun4u sun4v ; do 468 5648 setje if [ -d "$MINIROOT/platform/$arch" ] ; then 469 5648 setje archdir="$MEDIA/$RELEASE/Tools/Boot/platform/$arch" 470 5648 setje mkdir -p $archdir 471 5648 setje ln -sf ../../../../../boot/sparc.miniroot \ 472 5648 setje "$archdir/boot_archive" 473 5648 setje cp "$MINIROOT/usr/platform/$arch/lib/fs/nfs/inetboot" \ 474 5648 setje "$archdir" 475 5648 setje cp "$MINIROOT/platform/$arch/wanboot" \ 476 5648 setje "$archdir" 477 5648 setje mkdir -p "$MEDIA/platform/$arch" 478 5648 setje ln -sf ../../boot/sparc.miniroot \ 479 5648 setje "$MEDIA/platform/$arch/boot_archive" 480 8144 Jerry ln -sf ../../$RELEASE/Tools/Boot/platform/$arch/wanboot \ 481 8144 Jerry "$MEDIA/platform/$arch/wanboot" 482 5648 setje fi 483 5648 setje done 484 1777 setje 485 1777 setje # archive package databases to conserve memory 486 1777 setje # 487 2851 jongkis ( 488 2851 jongkis cd "$MINIROOT" 489 2851 jongkis find tmp/root/var/sadm/install tmp/root/var/sadm/pkg -print | \ 490 2851 jongkis cpio -ocmPuB 2> /dev/null | bzip2 > \ 491 2851 jongkis "$MEDIA/$RELEASE/Tools/Boot/pkg_db.cpio.bz2" 492 7563 Prasad 493 7563 Prasad cleanout_pkgdata 494 2851 jongkis ) 495 5648 setje 496 7563 Prasad archive_lu "$MEDIA" "$MINIROOT" 497 2595 setje 498 2595 setje archive_X "$MEDIA" "$MINIROOT" 499 4889 sjelinek 500 4889 sjelinek # Take out the gnome and java parts of the installer from 501 4889 sjelinek # the miniroot. These are not required to boot the system 502 4889 sjelinek # and start the installers. 503 0 stevel 504 5648 setje if [ -d "$MINIROOT/platform/i86pc" ] ; then 505 5822 jhd preload_Gnome "$MEDIA" "$MINIROOT" 506 5648 setje archive_Gnome "$MEDIA" "$MINIROOT" 507 5648 setje archive_JavaGUI "$MEDIA" "$MINIROOT" 508 5648 setje archive_Misc "$MEDIA" "$MINIROOT" 509 5648 setje archive_Perl "$MEDIA" "$MINIROOT" 510 10159 Jerry pack "$MEDIA/boot/amd64/x86.miniroot" 511 5822 jhd 512 5822 jhd # Now that the 64-bit archives & miniroot have been created, 513 5822 jhd # restore the files from archives and save the 64-bit 514 5822 jhd # archives. Strip the 64-bit objects and create the 515 5822 jhd # 32-bit archives and miniroot 516 5822 jhd 517 5822 jhd unpackmedia "$MEDIA" "$MINIROOT" 518 7563 Prasad cleanout_pkgdata 519 5822 jhd mkdir -p "$MEDIA/$RELEASE/Tools/Boot/amd64" 520 5822 jhd for i in $ARCHIVES; do 521 5822 jhd mv "$MEDIA/$RELEASE/Tools/Boot/${i}.cpio.bz2" \ 522 5822 jhd "$MEDIA/$RELEASE/Tools/Boot/amd64" 523 5822 jhd done 524 5822 jhd if [ -z "$STRIP_AMD64" ]; then 525 5822 jhd strip_amd64 526 5822 jhd fi 527 5822 jhd 528 5822 jhd archive_X "$MEDIA" "$MINIROOT" 529 5822 jhd archive_Gnome "$MEDIA" "$MINIROOT" 530 5822 jhd archive_JavaGUI "$MEDIA" "$MINIROOT" 531 5822 jhd archive_Perl "$MEDIA" "$MINIROOT" 532 5822 jhd archive_Misc "$MEDIA" "$MINIROOT" 533 5648 setje fi 534 1821 setje 535 1821 setje # copy the install menu to menu.lst so we have a menu 536 1821 setje # on the install media 537 1821 setje # 538 5648 setje if [ -f "$MINIROOT/boot/grub/install_menu" ] ; then 539 5648 setje cp $MINIROOT/boot/grub/install_menu \ 540 5648 setje $MEDIA/boot/grub/menu.lst 541 1821 setje fi 542 7204 jg 543 7204 jg # 544 7204 jg # jumpstart utilities in usr/sbin/install.d 545 7204 jg # 546 7204 jg if [ -d "$MINIROOT/usr/sbin/install.d" ] ; then 547 7204 jg ( 548 7204 jg cd ${MINIROOT} 549 7204 jg find usr/sbin/install.d/chkprobe \ 550 7204 jg -print | cpio -ocmPuB 2> /dev/null | bzip2 > \ 551 7204 jg ${MEDIA}/${RELEASE}/Tools/Boot/usr_sbin_install_d.cpio.bz2 552 7204 jg ) 553 7204 jg fi 554 1777 setje } 555 0 stevel 556 1777 setje unarchive_X() 557 1777 setje { 558 1777 setje MEDIA="$1" 559 1777 setje UNPACKED_ROOT="$2" 560 1777 setje 561 1777 setje RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` 562 1777 setje RELEASE=`basename "$RELEASE"` 563 1777 setje 564 5648 setje CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" 565 1777 setje 566 1777 setje # unpack X 567 1777 setje # 568 2851 jongkis ( 569 4889 sjelinek cd "$UNPACKED_ROOT" 570 4889 sjelinek rm -rf usr/dt usr/openwin usr/X11 571 2851 jongkis bzcat "$CPIO_DIR/X.cpio.bz2" | cpio -icdmu 2> /dev/null 572 2851 jongkis ) 573 0 stevel } 574 0 stevel 575 0 stevel unpackmedia() 576 1777 setje { 577 1777 setje MEDIA="$1" 578 1777 setje UNPACKED_ROOT="$2" 579 0 stevel 580 1777 setje RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` 581 1777 setje RELEASE=`basename "$RELEASE"` 582 0 stevel 583 1777 setje unarchive_X "$MEDIA" "$UNPACKED_ROOT" 584 0 stevel 585 0 stevel # unpack package databases 586 0 stevel # 587 2851 jongkis ( 588 2851 jongkis cd "$UNPACKED_ROOT" 589 2851 jongkis bzcat "$MEDIA/$RELEASE/Tools/Boot/pkg_db.cpio.bz2" | 590 2851 jongkis cpio -icdmu 2> /dev/null 591 4889 sjelinek 592 8715 Jan if [ -d "$MINIROOT/platform/i86pc" ] ; then 593 4889 sjelinek 594 8715 Jan # unpack gnome, perl, java and misc 595 8715 Jan # Remove symlinks left from unpacking x86.miniroot 596 8715 Jan # so that unpacking subsequent archives will populate 597 8715 Jan # appropriately. 598 8715 Jan # 599 8715 Jan rm -rf usr/perl5 600 8715 Jan rm -rf usr/lib/install/data/wizards 601 8715 Jan rm -rf usr/lib/lp 602 8715 Jan 603 8715 Jan # Gnome list saved off from packmedia 604 8715 Jan for i in `cat .tmp_proto/gnome_saved` 605 8715 Jan do 606 8715 Jan rm -rf $i 607 8715 Jan done 608 8715 Jan 609 8715 Jan bzcat "$MEDIA/$RELEASE/Tools/Boot/gnome.cpio.bz2" | 610 8715 Jan cpio -icdmu 2>/dev/null 611 8715 Jan bzcat "$MEDIA/$RELEASE/Tools/Boot/javaui.cpio.bz2" | 612 8715 Jan cpio -icdmu 2>/dev/null 613 8715 Jan bzcat "$MEDIA/$RELEASE/Tools/Boot/lpmisc.cpio.bz2" | 614 8715 Jan cpio -icdmu 2>/dev/null 615 8715 Jan bzcat "$MEDIA/$RELEASE/Tools/Boot/perl.cpio.bz2" | 616 8715 Jan cpio -icdmu 2>/dev/null 617 8715 Jan fi 618 2851 jongkis ) 619 0 stevel } 620 0 stevel 621 0 stevel do_unpack() 622 0 stevel { 623 2851 jongkis ( 624 2851 jongkis cd $MNT 625 2851 jongkis find . -print | cpio -pdum "$UNPACKED_ROOT" 2> /dev/null 626 2851 jongkis ) 627 10159 Jerry # increase the chances the unmount will succeed 628 10159 Jerry umount -f $MNT 629 0 stevel } 630 0 stevel 631 0 stevel unpack() 632 0 stevel { 633 10159 Jerry MR=$1 634 1777 setje if [ ! -f "$MR" ] ; then 635 10159 Jerry printf "$MR: not found\n" 636 0 stevel usage 637 0 stevel fi 638 0 stevel 639 7563 Prasad if [ `uname -i` = i86pc ] ; then 640 5648 setje gzcat "$MR" > $TMR 641 5648 setje else 642 5648 setje REALTHING=true ; export REALTHING 643 5648 setje TMR="$MR" 644 5648 setje fi 645 0 stevel 646 2334 setje LOFIDEV=`/usr/sbin/lofiadm -a $TMR` 647 0 stevel if [ $? != 0 ] ; then 648 0 stevel echo lofi plumb failed 649 0 stevel exit 2 650 0 stevel fi 651 0 stevel 652 1777 setje mkdir -p $MNT 653 0 stevel 654 2334 setje FSTYP=`fstyp $LOFIDEV` 655 0 stevel 656 1777 setje if [ "$FSTYP" = ufs ] ; then 657 2334 setje /usr/sbin/mount -o ro,nologging $LOFIDEV $MNT 658 0 stevel do_unpack 659 1777 setje elif [ "$FSTYP" = hsfs ] ; then 660 2334 setje /usr/sbin/mount -F hsfs -o ro $LOFIDEV $MNT 661 0 stevel do_unpack 662 0 stevel else 663 0 stevel printf "invalid root archive\n" 664 0 stevel fi 665 0 stevel 666 5648 setje 667 0 stevel rmdir $MNT 668 2851 jongkis lofiadm -d $TMR ; LOFIDEV= 669 5648 setje if [ "$REALTHING" != true ] ; then 670 5648 setje rm $TMR 671 5648 setje fi 672 5648 setje } 673 5648 setje 674 5648 setje compress() 675 5648 setje { 676 5648 setje SRC=$1 677 5648 setje DST=$2 678 5648 setje 679 5648 setje ( 680 5648 setje cd $SRC 681 5648 setje filelist=`find .` 682 5648 setje 683 5648 setje for file in $filelist ; do 684 5648 setje 685 5648 setje file=`echo $file | sed s#^./##` 686 5648 setje 687 5648 setje # copy all files over to preserve hard links 688 5648 setje # 689 5648 setje echo $file | cpio -pdum $DST 2> /dev/null 690 5648 setje 691 5648 setje if [ -f $file ] && [ -s $file ] && [ ! -h $file ] ; then 692 5648 setje fiocompress -mc $file $DST/$file & 693 5648 setje fi 694 5648 setje 695 5648 setje done 696 5648 setje 697 7563 Prasad wait `pgrep fiocompress` 698 7563 Prasad 699 5648 setje # now re-copy a couple of uncompressed files 700 5648 setje 701 7563 Prasad if [ -d "$SRC/platform/i86pc" ] ; then 702 7563 Prasad find `cat boot/solaris/filelist.ramdisk` -type file \ 703 7563 Prasad -print 2> /dev/null > /tmp/flist$$ 704 7563 Prasad find usr/kernel -type file -print 2> /dev/null \ 705 7563 Prasad >> /tmp/flist$$ 706 7563 Prasad # some of the files are replaced with links into 707 7563 Prasad # tmp/root on the miniroot, so find the backing files 708 7563 Prasad # from there as well and add them to the list ti 709 7563 Prasad # be copied uncompressed 710 7563 Prasad ( 711 7563 Prasad cd $SRC/tmp/root 712 7563 Prasad find `cat ../../boot/solaris/filelist.ramdisk` \ 713 7563 Prasad -type file -print 2> /dev/null | \ 714 7563 Prasad sed 's#^#tmp/root/#' >> /tmp/flist$$ 715 7563 Prasad ) 716 7563 Prasad flist=`cat /tmp/flist$$` 717 7563 Prasad ( 718 7563 Prasad cd $DST 719 7563 Prasad rm -f $flist 720 7563 Prasad ) 721 7563 Prasad for file in $flist ; do 722 7563 Prasad echo $file | cpio -pdum $DST 2> /dev/null 723 7563 Prasad done 724 7563 Prasad else 725 7563 Prasad find kernel platform -name unix | \ 726 7563 Prasad cpio -pdum $DST 2> /dev/null 727 7563 Prasad find kernel platform -name genunix | cpio -pdum $DST \ 728 7563 Prasad 2> /dev/null 729 7563 Prasad find kernel platform -name platmod | cpio -pdum $DST \ 730 7563 Prasad 2> /dev/null 731 7563 Prasad find `find kernel platform -name cpu` | \ 732 7563 Prasad cpio -pdum $DST 2> /dev/null 733 7563 Prasad find `find kernel platform -name kmdb\*` | \ 734 7563 Prasad cpio -pdum $DST 2> /dev/null 735 7563 Prasad find kernel/misc/sparcv9/ctf kernel/fs/sparcv9/dcfs \ 736 7563 Prasad kernel/misc/ctf kernel/fs/dcfs \ 737 7563 Prasad etc/system etc/name_to_major etc/path_to_inst \ 738 10661 Xun etc/name_to_sysnum etc/driver_aliases \ 739 10661 Xun etc/driver_classes etc/minor_perm | \ 740 10661 Xun cpio -pdum $DST 2> /dev/null 741 7563 Prasad fi 742 5648 setje ) 743 5648 setje } 744 5648 setje 745 5648 setje root_is_ramdisk() 746 5648 setje { 747 5648 setje grep -v "set root_is_ramdisk=" "$UNPACKED_ROOT"/etc/system | \ 748 5648 setje grep -v "set ramdisk_size=" > /tmp/system.$$ 749 5648 setje cat /tmp/system.$$ > "$UNPACKED_ROOT"/etc/system 750 5648 setje rm /tmp/system.$$ 751 5648 setje 752 5648 setje echo set root_is_ramdisk=1 >> "$UNPACKED_ROOT"/etc/system 753 5648 setje echo set ramdisk_size=$1 >> "$UNPACKED_ROOT"/etc/system 754 0 stevel } 755 0 stevel 756 0 stevel pack() 757 0 stevel { 758 10159 Jerry MR="$1" 759 10159 Jerry [ -d "$UNPACKED_ROOT" ] || usage 760 0 stevel 761 7563 Prasad # always compress if fiocompress exists 762 5648 setje # 763 7563 Prasad if [ -x /usr/sbin/fiocompress ] ; then 764 5648 setje COMPRESS=true 765 5648 setje fi 766 5648 setje 767 2511 jongkis # Estimate image size and add %10 overhead for ufs stuff. 768 2511 jongkis # Note, we can't use du here in case $UNPACKED_ROOT is on a filesystem, 769 2511 jongkis # e.g. zfs, in which the disk usage is less than the sum of the file 770 5648 setje # sizes. The nawk code 771 2511 jongkis # 772 2511 jongkis # {t += ($7 % 1024) ? (int($7 / 1024) + 1) * 1024 : $7} 773 2511 jongkis # 774 2511 jongkis # below rounds up the size of a file/directory, in bytes, to the 775 2511 jongkis # next multiple of 1024. This mimics the behavior of ufs especially 776 2511 jongkis # with directories. This results in a total size that's slightly 777 2511 jongkis # bigger than if du was called on a ufs directory. 778 5648 setje # 779 5648 setje # if the operation in turn is compressing the files the amount 780 5648 setje # of typical shrinkage is used to come up with a useful archive 781 5648 setje # size 782 2511 jongkis size=$(find "$UNPACKED_ROOT" -ls | nawk ' 783 2511 jongkis {t += ($7 % 1024) ? (int($7 / 1024) + 1) * 1024 : $7} 784 2511 jongkis END {print int(t * 1.10 / 1024)}') 785 5648 setje if [ "$COMPRESS" = true ] ; then 786 7563 Prasad size=`echo $size | nawk '{s = $1} END {print int(s * 0.6)}'` 787 5648 setje fi 788 0 stevel 789 2334 setje /usr/sbin/mkfile ${size}k "$TMR" 790 2334 setje 791 2334 setje LOFIDEV=`/usr/sbin/lofiadm -a "$TMR"` 792 0 stevel if [ $? != 0 ] ; then 793 0 stevel echo lofi plumb failed 794 0 stevel exit 2 795 0 stevel fi 796 0 stevel 797 2334 setje RLOFIDEV=`echo $LOFIDEV | sed s/lofi/rlofi/` 798 5648 setje newfs $RLOFIDEV < /dev/null 2> /dev/null 799 1777 setje mkdir -p $MNT 800 5648 setje mount -o nologging $LOFIDEV $MNT 801 1777 setje rmdir $MNT/lost+found 802 5648 setje 803 5648 setje if [ -d "$UNPACKED_ROOT/kernel/drv/sparcv9" ] ; then 804 5648 setje root_is_ramdisk $size 805 5648 setje fi 806 5648 setje 807 2851 jongkis ( 808 2851 jongkis cd "$UNPACKED_ROOT" 809 5648 setje if [ "$COMPRESS" = true ] ; then 810 5648 setje compress . $MNT 811 5648 setje else 812 5648 setje find . -print | cpio -pdum $MNT 2> /dev/null 813 5648 setje fi 814 2851 jongkis ) 815 0 stevel lockfs -f $MNT 816 0 stevel umount $MNT 817 0 stevel rmdir $MNT 818 5648 setje 819 5648 setje if [ -d "$UNPACKED_ROOT/kernel/drv/sparcv9" ] ; then 820 5648 setje "$UNPACKED_ROOT/usr/sbin/installboot" \ 821 6319 jg "$UNPACKED_ROOT/platform/sun4u/lib/fs/ufs/bootblk" \ 822 5648 setje $RLOFIDEV 823 5648 setje fi 824 5648 setje 825 2334 setje lofiadm -d $LOFIDEV 826 2851 jongkis LOFIDEV= 827 0 stevel 828 2334 setje rm -f "$TMR.gz" 829 5648 setje 830 5648 setje if [ -d "$UNPACKED_ROOT/kernel/drv/sparcv9" ] ; then 831 5648 setje mv "$TMR" "$MR" 832 5648 setje else 833 5648 setje gzip -f "$TMR" 834 5648 setje mv "$TMR.gz" "$MR" 835 5648 setje fi 836 5648 setje 837 1777 setje chmod a+r "$MR" 838 0 stevel } 839 0 stevel 840 5716 setje strip_amd64() 841 5716 setje { 842 5716 setje find "$UNPACKED_ROOT" -name amd64 -type directory | xargs rm -rf 843 5716 setje } 844 5716 setje 845 0 stevel # main 846 0 stevel # 847 2334 setje 848 2334 setje EXTRA_SPACE=0 849 2851 jongkis STRIP_AMD64= 850 5648 setje COMPRESS= 851 2334 setje 852 5648 setje PATH=/usr/sbin:/usr/bin:/opt/sfw/bin ; export PATH 853 5648 setje 854 5648 setje while getopts s:6c opt ; do 855 2334 setje case $opt in 856 2334 setje s) EXTRA_SPACE="$OPTARG" 857 2334 setje ;; 858 2334 setje 6) STRIP_AMD64=false 859 5648 setje ;; 860 5648 setje c) COMPRESS=true 861 2334 setje ;; 862 2334 setje *) usage 863 2334 setje ;; 864 2334 setje esac 865 2334 setje done 866 2334 setje shift `expr $OPTIND - 1` 867 0 stevel 868 10159 Jerry [ $# == 3 ] || usage 869 0 stevel 870 1777 setje UNPACKED_ROOT="$3" 871 1777 setje BASE="`pwd`" 872 0 stevel MNT=/tmp/mnt$$ 873 2334 setje TMR=/tmp/mr$$ 874 2334 setje LOFIDEV= 875 1777 setje MR="$2" 876 0 stevel 877 10159 Jerry # sanity check 878 10159 Jerry [ "$UNPACKED_ROOT" != "/" ] || usage 879 10159 Jerry 880 0 stevel if [ "`dirname $MR`" = . ] ; then 881 1777 setje MR="$BASE/$MR" 882 0 stevel fi 883 0 stevel if [ "`dirname $UNPACKED_ROOT`" = . ] ; then 884 1777 setje UNPACKED_ROOT="$BASE/$UNPACKED_ROOT" 885 0 stevel fi 886 2334 setje 887 5648 setje 888 5648 setje MEDIA="$MR" 889 5648 setje 890 2334 setje trap cleanup EXIT 891 0 stevel 892 10159 Jerry # always unpack into a fresh root 893 10159 Jerry case $1 in 894 10159 Jerry unpack|unpackmedia) 895 10159 Jerry rm -rf "$UNPACKED_ROOT" 896 10159 Jerry mkdir -p "$UNPACKED_ROOT" 897 10159 Jerry ;; 898 10159 Jerry esac 899 10159 Jerry [ -d "$UNPACKED_ROOT" ] || usage 900 10159 Jerry 901 0 stevel case $1 in 902 0 stevel packmedia) 903 10159 Jerry packmedia "$MEDIA" "$UNPACKED_ROOT" 904 1777 setje if [ -d "$UNPACKED_ROOT/kernel/drv/sparcv9" ] ; then 905 10159 Jerry pack "$MEDIA/boot/sparc.miniroot" 906 1777 setje else 907 10159 Jerry pack "$MEDIA/boot/x86.miniroot" 908 5648 setje fi 909 5716 setje 910 5648 setje ;; 911 0 stevel unpackmedia) 912 5648 setje if [ -f "$MEDIA/boot/sparc.miniroot" ] ; then 913 10159 Jerry unpack "$MEDIA/boot/sparc.miniroot" 914 1777 setje else 915 10159 Jerry unpack "$MEDIA/boot/x86.miniroot" 916 10159 Jerry unpack "$MEDIA/boot/amd64/x86.miniroot" 917 5648 setje fi 918 5648 setje unpackmedia "$MEDIA" "$UNPACKED_ROOT" 919 5648 setje ;; 920 10159 Jerry pack) pack "$MR" 921 5648 setje ;; 922 10159 Jerry unpack) unpack "$MR" 923 5648 setje ;; 924 5648 setje *) usage 925 5648 setje ;; 926 0 stevel esac 927