Print this page
Use PREBUILT_ILLUMOS's svccfg-native to stop lockups post-5896/5897

Split Close
Expand all
Collapse all
          --- old/./build_image.sh
          +++ new/./build_image.sh
↓ open down ↓ 48 lines elided ↑ open up ↑
  49   49    BASEDIR=`zfs get -o value -H mountpoint $BASE`
  50   50  fi
  51   51  MKFILEDIR=/tmp
  52   52  WORKDIR=$BASEDIR
  53   53  ROOTDIR=$WORKDIR/root
  54   54  if [[ ! -d $ROOTDIR ]]; then
  55   55    zfs create -o compression=off $BASE/root || fail "zfs create failed"
  56   56  fi
  57   57  SVCCFG_DTD=${ROOTDIR}/usr/share/lib/xml/dtd/service_bundle.dtd.1
  58   58  SVCCFG_REPOSITORY=${ROOTDIR}/etc/svc/repository.db
  59      -SVCCFG=/usr/sbin/svccfg
       59 +#SVCCFG=/usr/sbin/svccfg
       60 +if [[ -f ${PREBUILT_ILLUMOS}/usr/src/cmd/svc/svccfg/svccfg-native ]]; then
       61 +        SVCCFG=${PREBUILT_ILLUMOS}/usr/src/cmd/svc/svccfg/svccfg-native
       62 +else
       63 +        echo "WARNING -- Not using 'native' svccfg, may hang on build."
       64 +        echo "       We recommend a pre-built illumos's svccfg-native."
       65 +        echo "       Set PREBUILT_ILLUMOS in your environment to point"
       66 +        echo "       to a built illumos-omnios repository."
       67 +        SVCCFG=/usr/sbin/svccfg
       68 +fi
  60   69  export WORKDIR ROOTDIR SVCCFG_DTD SVCCFG_REPOSITORY SVCCFG
  61   70  
  62   71  # This was uber-helpful
  63   72  # http://alexeremin.blogspot.com/2008/12/preparing-small-miniroot-with-zfs-and.html
  64   73  
  65   74  PKG=/bin/pkg
  66   75  
  67   76  UNNEEDED_MANIFESTS="application/management/net-snmp.xml
  68   77          application/pkg/pkg-server.xml application/pkg/pkg-mdns.xml
  69   78          system/rmtmpfiles.xml system/mdmonitor.xml
↓ open down ↓ 195 lines elided ↑ open up ↑
 265  274          rm $WORKDIR/vfstab
 266  275          cp $ROOTDIR/lib/svc/seed/global.db $ROOTDIR/etc/svc/repository.db
 267  276  
 268  277          sed -i 's,PASSREQ=YES,PASSREQ=NO,' $ROOTDIR/etc/default/login
 269  278  
 270  279          ${SVCCFG} import ${ROOTDIR}/lib/svc/manifest/milestone/sysconfig.xml
 271  280          for xml in $UNNEEDED_MANIFESTS; do
 272  281                  rm -f ${ROOTDIR}/lib/svc/manifest/$xml && echo " --- tossing $xml"
 273  282          done
 274  283          echo " --- initial manifest import"
 275      -        ${ROOTDIR}/lib/svc/method/manifest-import -f ${ROOTDIR}/etc/svc/repository.db \
      284 +        # See if we can transform manifest-import to use the 'native' svccfg.
      285 +        sed 's/\/usr\/sbin\/svccfg/\$SVCCFG/g' \
      286 +            < ${ROOTDIR}/lib/svc/method/manifest-import \
      287 +            > /tmp/manifest-import.$$
      288 +        chmod 0755 /tmp/manifest-import.$$
      289 +        export SVCCFG
      290 +        /tmp/manifest-import.$$ -f ${ROOTDIR}/etc/svc/repository.db \
 276  291                  -d ${ROOTDIR}/lib/svc/manifest
      292 +        /bin/rm -f /tmp/manifest-import.$$
 277  293  
 278  294          ${SVCCFG} -s 'system/boot-archive' setprop 'start/exec=:true'
 279  295          ${SVCCFG} -s 'system/manifest-import' setprop 'start/exec=:true'
 280  296          ${SVCCFG} -s "system/intrd:default" setprop "general/enabled=false"
 281  297          ${SVCCFG} -s "system/initial-boot" setprop "start/timeout_seconds=600"
 282      -        echo " --- nuetering the manifest import"
      298 +        echo " --- neutering the manifest import"
 283  299          echo "#!/bin/ksh" > ${ROOTDIR}/lib/svc/method/manifest-import
 284  300          echo "exit 0" >> ${ROOTDIR}/lib/svc/method/manifest-import
 285  301          chmod 555 ${ROOTDIR}/lib/svc/method/manifest-import
 286  302          chkpt cull
 287  303          ;;
 288  304  
 289  305          "cull")
 290  306          if [[ -z "$BIGROOT" ]]; then
 291  307                  load_keep_list data/*
 292  308                  while read file
↓ open down ↓ 76 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX