Print this page
2675 EOF itutools

*** 21,54 **** # # Copyright 2010 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # utility to pack and unpack a boot/root archive # both ufs and hsfs (iso9660) format archives are unpacked # only ufs archives are generated # # usage: pack <archive> <root> # unpack <archive> <root> - # packmedia <solaris_image> <root> - # unpackmedia <solaris_image> <root> # # Where <root> is the directory to unpack to and will be cleaned out # if it exists. # - # In the case of (un)packmedia, the image is packed or unpacked to/from - # Solaris media and all the things that don't go into the ramdisk image - # are (un)cpio'd as well - # usage() { printf "usage: root_archive pack <archive> <root>\n" printf " root_archive unpack <archive> <root>\n" - printf " root_archive packmedia <solaris_image> <root>\n" - printf " root_archive unpackmedia <solaris_image> <root>\n" exit 1 } cleanup() { --- 21,47 ---- # # Copyright 2010 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # + # Copyright 2012 Nexenta Systems, Inc. All rights reserved. # utility to pack and unpack a boot/root archive # both ufs and hsfs (iso9660) format archives are unpacked # only ufs archives are generated # # usage: pack <archive> <root> # unpack <archive> <root> # # Where <root> is the directory to unpack to and will be cleaned out # if it exists. # usage() { printf "usage: root_archive pack <archive> <root>\n" printf " root_archive unpack <archive> <root>\n" exit 1 } cleanup() {
*** 63,625 **** fi rm -f "$TMR.gz" rm -f /tmp/flist$$ } - preload_Gnome() - { - MEDIA="$1" - MINIROOT="$2" - - - ( - # Prepopulate the gconf database. This needs to be done and - # done first for several reasons. 1) Archiving out the gnome - # libraries and binaries causes the gconftool-2 to not run - # appropriately at boot time. 2) The binaries and libraries - # needed to run this are big and thus we want to archive - # them separately. 3) Having schemas prepopluated in the - # miniroot means faster boot times. - # - - cd "$MINIROOT" - HOME="./tmp/root" - export HOME - umask 0022 - mumble=.tmp_proto/root/etc/gconf/gconf.xml.defaults - GCONF_CONFIG_SOURCE="xml:merged:$MINIROOT/$mumble" - export GCONF_CONFIG_SOURCE - SCHEMADIR="$MINIROOT/.tmp_proto/root/etc/gconf/schemas" - export SCHEMADIR - /usr/bin/gconftool-2 --makefile-install-rule \ - $SCHEMADIR/*.schemas >/dev/null 2>&1 - echo ' - xml:readwrite:/tmp/root/.gconf - xml:readonly:/etc/gconf/gconf.xml.defaults - ' > /"$MINIROOT"/.tmp_proto/root/etc/gconf/2/path - ) - } - - archive_Gnome() - { - MEDIA="$1" - MINIROOT="$2" - - RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` - RELEASE=`basename "$RELEASE"` - CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" - - # Create the gnome archive - # - ( - # usr/share gnome stuff - cd "$MINIROOT" - find usr/share/GConf usr/share/application-registry \ - usr/share/autostart usr/share/dtds \ - usr/share/emacs usr/share/gnome usr/share/gnome-2.0 \ - usr/share/gnome-background-properties \ - usr/share/gtk-engines usr/share/gui-install \ - usr/share/icon-naming-utils usr/share/control-center \ - usr/share/icons usr/share/locale usr/share/metacity \ - usr/share/mime usr/share/mime-info usr/share/pixmaps \ - usr/share/scrollkeeper usr/share/sgml usr/share/themes \ - usr/share/xml \ - -print > /tmp/gnome_share.$$ 2>/dev/null - - if [ ! -f /tmp/gnome_share.$$ ] ; then - echo "/tmp/gnome_share.$$ file list not found." - return - fi - - # usr/lib gnome stuff - - find usr/lib/libgnome*\.so\.* \ - usr/lib/libgst*\.so\.* usr/lib/libgconf*\.so\.* \ - usr/lib/libgdk*\.so\.* usr/lib/libgtk*\.so\.* \ - usr/lib/libglade*\.so\.* usr/lib/libmetacity*\.so\.* \ - usr/lib/libfontconfig*\.so\.* usr/lib/libgmodule*\.so\.* \ - usr/lib/libgobject*\.so\.* usr/lib/libgthread*\.so\.* \ - usr/lib/libpopt*\.so\.* usr/lib/libstartup*\.so\.* \ - usr/lib/libexif*\.so\.* usr/lib/libtiff*\.so\.* \ - usr/lib/libstartup*\.so\.* \ - usr/lib/libexif*\.so\.* usr/lib/libORBit*\.so\.* \ - usr/lib/libmlib*\.so\.* usr/lib/libxsl*\.so\.* \ - usr/lib/libpango*\.so\.* usr/lib/libpng*\.so\.* \ - usr/lib/liboil*\.so\.* usr/lib/libbonobo*\.so\.* \ - usr/lib/libart*\.so\.* usr/lib/libcairo*\.so\.* \ - usr/lib/libjpeg*\.so\.* \ - usr/lib/libpolkit*\.so\.* \ - -print | egrep -v '\.so\.[0]$' > \ - /tmp/gnome_lib.$$ 2>/dev/null - - find usr/lib/nautilus usr/lib/pango usr/lib/iconv \ - usr/lib/metacity-dialog usr/lib/window-manager-settings \ - usr/lib/bonobo-2.0 usr/lib/bononbo usr/lib/gtk-2.0 \ - usr/lib/GConf usr/lib/bonobo-activation-server \ - usr/lib/python2.4 usr/lib/gstreamer-0.10 \ - usr/lib/gconf-sanity-check-2 usr/lib/gconfd \ - usr/lib/gnome-vfs-2.0 usr/lib/dbus-daemon \ - usr/lib/gnome-vfs-daemon usr/lib/gnome-settings-daemon \ - usr/lib/gnome_segv2 usr/lib/orbit-2.0 \ - usr/lib/libmlib \ - print > /tmp/gnome_libdir.$$ 2>/dev/null - - if [ ! -f /tmp/gnome_lib.$$ -a ! -f gnome_libdir.$$ ] ; then - echo "/tmp/gnome_lib.$$ file list not found." - return - fi - - # /usr/sfw gnome stuff - find usr/sfw/bin usr/sfw/include usr/sfw/share usr/sfw/src \ - -print > /tmp/gnome_sfw.$$ 2>/dev/null - - if [ ! -f /tmp/gnome_sfw.$$ ] ; then - echo "/tmp/gnome_sfw.$$ file list not found." - return - fi - - # gnome app binaries usr/bin - find usr/bin/gnome* usr/bin/gui-install usr/bin/bonobo* \ - usr/bin/gtk-* usr/bin/fax* usr/bin/gdk* usr/bin/gif2tiff \ - usr/bin/install-lan \ - usr/bin/metacity* usr/bin/gst-* usr/bin/gconftool-2 \ - usr/bin/pango* usr/bin/desktop* usr/bin/djpeg \ - usr/bin/notify-send usr/bin/oil-bugreport \ - usr/bin/bmp2tiff usr/bin/thembus-theme-applier \ - usr/bin/thumbnail usr/lib/update-* \ - usr/bin/ras2tiff usr/bin/raw2tiff usr/bin/rdjpgcom \ - usr/bin/thumbnail usr/bin/dbus* \ - usr/bin/tiff* usr/bin/rgb2ycbcr \ - usr/bin/fc-cache usr/bin/fc-list \ - -print > /tmp/gnome_bin.$$ 2>/dev/null - - if [ ! -f /tmp/gnome_bin.$$ ] ; then - echo "/tmp/gnome_bin.$$ file list not found." - return - fi - - # Cat all the files together and create the gnome archive - # - - cat /tmp/gnome_libdir.$$ /tmp/gnome_lib.$$ \ - /tmp/gnome_share.$$ /tmp/gnome_sfw.$$ /tmp/gnome_bin.$$ \ - > /tmp/gnome.$$ - - if [ ! -f /tmp/gnome.$$ ] ; then - echo "/tmp/gnome.$$ file not found." - return - fi - # Save off this file in the miniroot for use later - # when unpacking. Clean up old cruft if there. - # - - if [ -f .tmp_proto/gnome_saved ]; then - rm -f .tmp_proto/gnome_saved - fi - - cp /tmp/gnome.$$ .tmp_proto/gnome_saved - - # Create gnome archive - # - - cpio -ocmPuB < /tmp/gnome.$$ 2>/dev/null | bzip2 > \ - "$CPIO_DIR/gnome.cpio.bz2" - - # Remove files from miniroot that are in archive. - # Create symlinks for files in archive - - rm -rf `cat /tmp/gnome_share.$$` - - for i in `cat /tmp/gnome_share.$$` - do - ln -s /tmp/root/$i $i 2>/dev/null - done - - rm -rf `cat /tmp/gnome_lib.$$` - for i in `cat /tmp/gnome_lib.$$` - do - ln -s /tmp/root/$i $i 2>/dev/null - done - - rm -rf `cat /tmp/gnome_libdir.$$` - for i in `cat /tmp/gnome_libdir.$$` - do - ln -s /tmp/root/$i $i 2>/dev/null - done - - rm -rf `cat /tmp/gnome_sfw.$$` - for i in `cat /tmp/gnome_sfw.$$` - do - ln -s /tmp/root/$i $i 2>/dev/null - done - - rm -rf `cat /tmp/gnome_bin.$$` - for i in `cat /tmp/gnome_bin.$$` - do - ln -s /tmp/root/$i $i 2>/dev/null - done - rm -f /tmp/gnome_share.$$ - rm -f /tmp/gnome_lib.$$ - rm -f /tmp/gnome_libdir.$$ - rm -f /tmp/gnome_bin.$$ - ) - } - - archive_JavaGUI() - { - MEDIA="$1" - MINIROOT="$2" - - RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` - RELEASE=`basename "$RELEASE"` - - CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" - - # Archive the java wizard components that are only used in the - # non developer express path. - # - ( - # path is usr/lib/install/data - cd "$MINIROOT" - find usr/lib/install/data/wizards \ - -print > /tmp/java_ui.$$ 2>/dev/null - - if [ ! -f /tmp/java_ui.$$ ] ; then - echo "/tmp/java_ui.$$ file list not found." - return - fi - - cpio -ocmPuB < /tmp/java_ui.$$ 2>/dev/null | bzip2 > \ - "$CPIO_DIR/javaui.cpio.bz2" - - rm -rf `cat /tmp/java_ui.$$` - ln -s /tmp/root/usr/lib/install/data/wizards \ - usr/lib/install/data/wizards 2>/dev/null - - rm -f /tmp/java_ui.$$ - - ) - } - - archive_Misc() - { - MEDIA="$1" - MINIROOT="$2" - - RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` - RELEASE=`basename "$RELEASE"` - - CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" - - # Archive misc stuff that is needed by non devex installer - # - ( - # usr/lib stuff - cd "$MINIROOT" - find usr/lib/lp -print > /tmp/lp.$$ 2>/dev/null - if [ ! -f /tmp/lp.$$ ] ; then - echo "/tmp/lp.$$ file list not found." - return - fi - - cpio -ocmPuB < /tmp/lp.$$ 2>/dev/null | bzip2 > \ - "$CPIO_DIR/lpmisc.cpio.bz2" - - rm -rf `cat /tmp/lp.$$` - ln -s /tmp/root/usr/lib/lp usr/lib/lp 2>/dev/null - - rm -f /tmp/lp.$$ - ) - - } - - archive_Perl() - { - MEDIA="$1" - MINIROOT="$2" - - RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` - RELEASE=`basename "$RELEASE"` - - CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" - - # Archive perl, it is only needed by gnome gui. - # - ( - # in usr - cd "$MINIROOT" - find usr/perl5 -print > /tmp/perl.$$ 2>/dev/null - - if [ ! -f /tmp/perl.$$ ] ; then - echo "/tmp/perl.$$ file list not found." - return - fi - cpio -ocmPuB < /tmp/perl.$$ 2>/dev/null | bzip2 > \ - "$CPIO_DIR/perl.cpio.bz2" - - rm -rf `cat /tmp/perl.$$` 2>/dev/null - ln -s /tmp/root/usr/perl5 usr/perl5 2>/dev/null - - rm -f /tmp/perl.$$ - ) - } - archive_X() - { - MEDIA="$1" - MINIROOT="$2" - - RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` - RELEASE=`basename "$RELEASE"` - - CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" - - # create the graphics and non-graphics X archive - # - ( - cd "$MINIROOT" - find usr/openwin usr/dt usr/X11 -print 2> /dev/null |\ - cpio -ocmPuB 2> /dev/null | bzip2 > "$CPIO_DIR/X.cpio.bz2" - - find usr/openwin/bin/mkfontdir \ - usr/openwin/lib/installalias \ - usr/openwin/server/lib/libfont.so.1 \ - usr/openwin/server/lib/libtypesclr.so.0 \ - -print | cpio -ocmPuB 2> /dev/null | bzip2 > \ - "$CPIO_DIR/X_small.cpio.bz2" - - rm -rf usr/dt usr/openwin usr/X11 - ln -s /tmp/root/usr/dt usr/dt - ln -s /tmp/root/usr/openwin usr/openwin - ln -s /tmp/root/usr/X11 usr/X11 - ) - } - - archive_lu() - { - MEDIA="$1" - MINIROOT="$2" - - RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` - RELEASE=`basename "$RELEASE"` - - CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" - - ( - cd "$MINIROOT" - find usr/lib/install usr/snadm usr/sbin usr/lib/locale \ - boot/grub boot/solaris/bootenv.rc \ - tmp/root/boot/grub tmp/root/boot/solaris/bootenv.rc \ - 2> /dev/null | cpio -ocmPuB 2> /dev/null | bzip2 \ - > "$CPIO_DIR"/lu.cpio.bz2 - ls platform > "$CPIO_DIR/lu.platforms" - ) - } - - cleanout_pkgdata() - { - rm -Rf tmp/root/var/sadm/install tmp/root/var/sadm/pkg - } - - packmedia() - { - MEDIA="$1" - MINIROOT="$2" - - RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` - RELEASE=`basename "$RELEASE"` - ARCHIVES="X X_small perl lpmisc javaui gnome" - - mkdir -p "$MEDIA/$RELEASE/Tools/Boot" - - if [ -d "$MINIROOT/platform/i86pc" ] ; then - mkdir -p "$MEDIA/boot/amd64" - mkdir -p "$MEDIA/boot/platform/i86pc/kernel" - mkdir -p "$MEDIA/boot/platform/i86pc/kernel/amd64" - mkdir -p "$MEDIA/boot/platform/i86xpv/kernel" - mkdir -p "$MEDIA/boot/platform/i86xpv/kernel/amd64" - cp "$MINIROOT/platform/i86pc/multiboot" "$MEDIA/boot" - cp "$MINIROOT/platform/i86pc/kernel/unix" \ - "$MEDIA/boot/platform/i86pc/kernel/unix" - cp "$MINIROOT/platform/i86pc/kernel/amd64/unix" \ - "$MEDIA/boot/platform/i86pc/kernel/amd64/unix" - cp "$MINIROOT/platform/i86xpv/kernel/unix" \ - "$MEDIA/boot/platform/i86xpv/kernel/unix" - cp "$MINIROOT/platform/i86xpv/kernel/amd64/unix" \ - "$MEDIA/boot/platform/i86xpv/kernel/amd64/unix" - ( - cd "$MEDIA/$RELEASE/Tools/Boot" - ln -sf ../../../boot/x86.miniroot - ln -sf ../../../boot/multiboot - ln -sf ../../../boot/platform/i86pc/kernel/unix - ln -sf ../../../boot/platform/i86pc/kernel/amd64/unix - ln -sf ../../../boot/platform/i86xpv/kernel/unix - ln -sf ../../../boot/platform/i86xpv/kernel/amd64/unix - ln -sf ../../../boot/grub/pxegrub - ) - fi - - if [ -d "$MINIROOT/platform/sun4u" ] ; then - mkdir -p "$MEDIA/boot" - dd if="$MINIROOT/platform/sun4u/lib/fs/hsfs/bootblk" \ - of="$MEDIA/boot/hsfs.bootblock" \ - bs=1b oseek=1 count=15 conv=sync 2> /dev/null - fi - - for arch in sun4u sun4v ; do - if [ -d "$MINIROOT/platform/$arch" ] ; then - archdir="$MEDIA/$RELEASE/Tools/Boot/platform/$arch" - mkdir -p $archdir - ln -sf ../../../../../boot/sparc.miniroot \ - "$archdir/boot_archive" - cp "$MINIROOT/usr/platform/$arch/lib/fs/nfs/inetboot" \ - "$archdir" - cp "$MINIROOT/platform/$arch/wanboot" \ - "$archdir" - mkdir -p "$MEDIA/platform/$arch" - ln -sf ../../boot/sparc.miniroot \ - "$MEDIA/platform/$arch/boot_archive" - ln -sf ../../$RELEASE/Tools/Boot/platform/$arch/wanboot \ - "$MEDIA/platform/$arch/wanboot" - fi - done - - # archive package databases to conserve memory - # - ( - cd "$MINIROOT" - find tmp/root/var/sadm/install tmp/root/var/sadm/pkg -print | \ - cpio -ocmPuB 2> /dev/null | bzip2 > \ - "$MEDIA/$RELEASE/Tools/Boot/pkg_db.cpio.bz2" - - cleanout_pkgdata - ) - - archive_lu "$MEDIA" "$MINIROOT" - - archive_X "$MEDIA" "$MINIROOT" - - # Take out the gnome and java parts of the installer from - # the miniroot. These are not required to boot the system - # and start the installers. - - if [ -d "$MINIROOT/platform/i86pc" ] ; then - preload_Gnome "$MEDIA" "$MINIROOT" - archive_Gnome "$MEDIA" "$MINIROOT" - archive_JavaGUI "$MEDIA" "$MINIROOT" - archive_Misc "$MEDIA" "$MINIROOT" - archive_Perl "$MEDIA" "$MINIROOT" - pack "$MEDIA/boot/amd64/x86.miniroot" - - # Now that the 64-bit archives & miniroot have been created, - # restore the files from archives and save the 64-bit - # archives. Strip the 64-bit objects and create the - # 32-bit archives and miniroot - - unpackmedia "$MEDIA" "$MINIROOT" - cleanout_pkgdata - mkdir -p "$MEDIA/$RELEASE/Tools/Boot/amd64" - for i in $ARCHIVES; do - mv "$MEDIA/$RELEASE/Tools/Boot/${i}.cpio.bz2" \ - "$MEDIA/$RELEASE/Tools/Boot/amd64" - done - if [ -z "$STRIP_AMD64" ]; then - strip_amd64 - fi - - archive_X "$MEDIA" "$MINIROOT" - archive_Gnome "$MEDIA" "$MINIROOT" - archive_JavaGUI "$MEDIA" "$MINIROOT" - archive_Perl "$MEDIA" "$MINIROOT" - archive_Misc "$MEDIA" "$MINIROOT" - fi - - # copy the install menu to menu.lst so we have a menu - # on the install media - # - if [ -f "$MINIROOT/boot/grub/install_menu" ] ; then - cp $MINIROOT/boot/grub/install_menu \ - $MEDIA/boot/grub/menu.lst - fi - - # - # jumpstart utilities in usr/sbin/install.d - # - if [ -d "$MINIROOT/usr/sbin/install.d" ] ; then - ( - cd ${MINIROOT} - find usr/sbin/install.d/chkprobe \ - -print | cpio -ocmPuB 2> /dev/null | bzip2 > \ - ${MEDIA}/${RELEASE}/Tools/Boot/usr_sbin_install_d.cpio.bz2 - ) - fi - } - - unarchive_X() - { - MEDIA="$1" - UNPACKED_ROOT="$2" - - RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` - RELEASE=`basename "$RELEASE"` - - CPIO_DIR="$MEDIA/$RELEASE/Tools/Boot" - - # unpack X - # - ( - cd "$UNPACKED_ROOT" - rm -rf usr/dt usr/openwin usr/X11 - bzcat "$CPIO_DIR/X.cpio.bz2" | cpio -icdmu 2> /dev/null - ) - } - - unpackmedia() - { - MEDIA="$1" - UNPACKED_ROOT="$2" - - RELEASE=`/bin/ls -d "$MEDIA/Solaris_"*` - RELEASE=`basename "$RELEASE"` - - unarchive_X "$MEDIA" "$UNPACKED_ROOT" - - # unpack package databases - # - ( - cd "$UNPACKED_ROOT" - bzcat "$MEDIA/$RELEASE/Tools/Boot/pkg_db.cpio.bz2" | - cpio -icdmu 2> /dev/null - - if [ -d "$MINIROOT/platform/i86pc" ] ; then - - # unpack gnome, perl, java and misc - # Remove symlinks left from unpacking x86.miniroot - # so that unpacking subsequent archives will populate - # appropriately. - # - rm -rf usr/perl5 - rm -rf usr/lib/install/data/wizards - rm -rf usr/lib/lp - - # Gnome list saved off from packmedia - for i in `cat .tmp_proto/gnome_saved` - do - rm -rf $i - done - - bzcat "$MEDIA/$RELEASE/Tools/Boot/gnome.cpio.bz2" | - cpio -icdmu 2>/dev/null - bzcat "$MEDIA/$RELEASE/Tools/Boot/javaui.cpio.bz2" | - cpio -icdmu 2>/dev/null - bzcat "$MEDIA/$RELEASE/Tools/Boot/lpmisc.cpio.bz2" | - cpio -icdmu 2>/dev/null - bzcat "$MEDIA/$RELEASE/Tools/Boot/perl.cpio.bz2" | - cpio -icdmu 2>/dev/null - fi - ) - } - do_unpack() { ( cd $MNT find . -print | cpio -pdum "$UNPACKED_ROOT" 2> /dev/null --- 56,65 ----
*** 881,923 **** fi if [ "`dirname $UNPACKED_ROOT`" = . ] ; then UNPACKED_ROOT="$BASE/$UNPACKED_ROOT" fi - - MEDIA="$MR" - trap cleanup EXIT # always unpack into a fresh root case $1 in ! unpack|unpackmedia) rm -rf "$UNPACKED_ROOT" mkdir -p "$UNPACKED_ROOT" ;; esac [ -d "$UNPACKED_ROOT" ] || usage case $1 in - packmedia) - packmedia "$MEDIA" "$UNPACKED_ROOT" - if [ -d "$UNPACKED_ROOT/kernel/drv/sparcv9" ] ; then - pack "$MEDIA/boot/sparc.miniroot" - else - pack "$MEDIA/boot/x86.miniroot" - fi - - ;; - unpackmedia) - if [ -f "$MEDIA/boot/sparc.miniroot" ] ; then - unpack "$MEDIA/boot/sparc.miniroot" - else - unpack "$MEDIA/boot/x86.miniroot" - unpack "$MEDIA/boot/amd64/x86.miniroot" - fi - unpackmedia "$MEDIA" "$UNPACKED_ROOT" - ;; pack) pack "$MR" ;; unpack) unpack "$MR" ;; *) usage --- 321,342 ---- fi if [ "`dirname $UNPACKED_ROOT`" = . ] ; then UNPACKED_ROOT="$BASE/$UNPACKED_ROOT" fi trap cleanup EXIT # always unpack into a fresh root case $1 in ! unpack) rm -rf "$UNPACKED_ROOT" mkdir -p "$UNPACKED_ROOT" ;; esac [ -d "$UNPACKED_ROOT" ] || usage case $1 in pack) pack "$MR" ;; unpack) unpack "$MR" ;; *) usage