39 BUILDNUM=${VERSION//r/}
40 if [[ ${SRCDIR:0:1} != "/" ]]; then
41 SRCDIR=`pwd`/$SRCDIR
42 fi
43 if [[ -z "${1}" ]]; then
44 echo "$0 <zfs pool> [checkpoint]"
45 exit 1
46 else
47 BASE=${1}
48 shift
49 BASEDIR=`zfs get -o value -H mountpoint $BASE`
50 fi
51 MKFILEDIR=/tmp
52 WORKDIR=$BASEDIR
53 ROOTDIR=$WORKDIR/root
54 if [[ ! -d $ROOTDIR ]]; then
55 zfs create -o compression=off $BASE/root || fail "zfs create failed"
56 fi
57 SVCCFG_DTD=${ROOTDIR}/usr/share/lib/xml/dtd/service_bundle.dtd.1
58 SVCCFG_REPOSITORY=${ROOTDIR}/etc/svc/repository.db
59 SVCCFG=/usr/sbin/svccfg
60 export WORKDIR ROOTDIR SVCCFG_DTD SVCCFG_REPOSITORY SVCCFG
61
62 # This was uber-helpful
63 # http://alexeremin.blogspot.com/2008/12/preparing-small-miniroot-with-zfs-and.html
64
65 PKG=/bin/pkg
66
67 UNNEEDED_MANIFESTS="application/management/net-snmp.xml
68 application/pkg/pkg-server.xml application/pkg/pkg-mdns.xml
69 system/rmtmpfiles.xml system/mdmonitor.xml
70 system/fm/notify-params.xml system/device/allocate.xml
71 system/device/devices-audio.xml system/auditd.xml
72 system/metasync.xml system/pkgserv.xml system/fcoe_initiator.xml
73 system/metainit.xml system/zonestat.xml
74 system/cron.xml system/rbac.xml system/sac.xml
75 system/auditset.xml system/hotplug.xml
76 system/wusb.xml system/zones.xml
77 system/intrd.xml system/coreadm.xml
78 system/extended-accounting.xml
79 system/scheduler.xml
255 chkpt fixup
256 ;;
257
258 "fixup")
259
260 echo "Fixing up install root"
261 (cp $ROOTDIR/etc/vfstab $WORKDIR/vfstab && \
262 awk '{if($3!="/"){print;}}' $WORKDIR/vfstab > $ROOTDIR/etc/vfstab && \
263 echo "/devices/ramdisk:a - / ufs - no nologging" >> $ROOTDIR/etc/vfstab) || \
264 fail "vfstab / updated"
265 rm $WORKDIR/vfstab
266 cp $ROOTDIR/lib/svc/seed/global.db $ROOTDIR/etc/svc/repository.db
267
268 sed -i 's,PASSREQ=YES,PASSREQ=NO,' $ROOTDIR/etc/default/login
269
270 ${SVCCFG} import ${ROOTDIR}/lib/svc/manifest/milestone/sysconfig.xml
271 for xml in $UNNEEDED_MANIFESTS; do
272 rm -f ${ROOTDIR}/lib/svc/manifest/$xml && echo " --- tossing $xml"
273 done
274 echo " --- initial manifest import"
275 ${ROOTDIR}/lib/svc/method/manifest-import -f ${ROOTDIR}/etc/svc/repository.db \
276 -d ${ROOTDIR}/lib/svc/manifest
277
278 ${SVCCFG} -s 'system/boot-archive' setprop 'start/exec=:true'
279 ${SVCCFG} -s 'system/manifest-import' setprop 'start/exec=:true'
280 ${SVCCFG} -s "system/intrd:default" setprop "general/enabled=false"
281 ${SVCCFG} -s "system/initial-boot" setprop "start/timeout_seconds=600"
282 echo " --- nuetering the manifest import"
283 echo "#!/bin/ksh" > ${ROOTDIR}/lib/svc/method/manifest-import
284 echo "exit 0" >> ${ROOTDIR}/lib/svc/method/manifest-import
285 chmod 555 ${ROOTDIR}/lib/svc/method/manifest-import
286 chkpt cull
287 ;;
288
289 "cull")
290 if [[ -z "$BIGROOT" ]]; then
291 load_keep_list data/*
292 while read file
293 do
294 if [[ -n "$file" && \
295 ${keep_list[$file]} == "" && \
296 -e "$ROOTDIR/$file" && \
297 ! -d $ROOTDIR/$file ]] ; then
298 rm -f $ROOTDIR/$file
299 fi
300 done < <(cd $ROOTDIR && find ./ | cut -c3-)
301 for path in $RMRF ; do
302 rm -rf ${ROOTDIR}$path && echo " -- tossing $path"
|
39 BUILDNUM=${VERSION//r/}
40 if [[ ${SRCDIR:0:1} != "/" ]]; then
41 SRCDIR=`pwd`/$SRCDIR
42 fi
43 if [[ -z "${1}" ]]; then
44 echo "$0 <zfs pool> [checkpoint]"
45 exit 1
46 else
47 BASE=${1}
48 shift
49 BASEDIR=`zfs get -o value -H mountpoint $BASE`
50 fi
51 MKFILEDIR=/tmp
52 WORKDIR=$BASEDIR
53 ROOTDIR=$WORKDIR/root
54 if [[ ! -d $ROOTDIR ]]; then
55 zfs create -o compression=off $BASE/root || fail "zfs create failed"
56 fi
57 SVCCFG_DTD=${ROOTDIR}/usr/share/lib/xml/dtd/service_bundle.dtd.1
58 SVCCFG_REPOSITORY=${ROOTDIR}/etc/svc/repository.db
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
69 export WORKDIR ROOTDIR SVCCFG_DTD SVCCFG_REPOSITORY SVCCFG
70
71 # This was uber-helpful
72 # http://alexeremin.blogspot.com/2008/12/preparing-small-miniroot-with-zfs-and.html
73
74 PKG=/bin/pkg
75
76 UNNEEDED_MANIFESTS="application/management/net-snmp.xml
77 application/pkg/pkg-server.xml application/pkg/pkg-mdns.xml
78 system/rmtmpfiles.xml system/mdmonitor.xml
79 system/fm/notify-params.xml system/device/allocate.xml
80 system/device/devices-audio.xml system/auditd.xml
81 system/metasync.xml system/pkgserv.xml system/fcoe_initiator.xml
82 system/metainit.xml system/zonestat.xml
83 system/cron.xml system/rbac.xml system/sac.xml
84 system/auditset.xml system/hotplug.xml
85 system/wusb.xml system/zones.xml
86 system/intrd.xml system/coreadm.xml
87 system/extended-accounting.xml
88 system/scheduler.xml
264 chkpt fixup
265 ;;
266
267 "fixup")
268
269 echo "Fixing up install root"
270 (cp $ROOTDIR/etc/vfstab $WORKDIR/vfstab && \
271 awk '{if($3!="/"){print;}}' $WORKDIR/vfstab > $ROOTDIR/etc/vfstab && \
272 echo "/devices/ramdisk:a - / ufs - no nologging" >> $ROOTDIR/etc/vfstab) || \
273 fail "vfstab / updated"
274 rm $WORKDIR/vfstab
275 cp $ROOTDIR/lib/svc/seed/global.db $ROOTDIR/etc/svc/repository.db
276
277 sed -i 's,PASSREQ=YES,PASSREQ=NO,' $ROOTDIR/etc/default/login
278
279 ${SVCCFG} import ${ROOTDIR}/lib/svc/manifest/milestone/sysconfig.xml
280 for xml in $UNNEEDED_MANIFESTS; do
281 rm -f ${ROOTDIR}/lib/svc/manifest/$xml && echo " --- tossing $xml"
282 done
283 echo " --- initial manifest import"
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 \
291 -d ${ROOTDIR}/lib/svc/manifest
292 /bin/rm -f /tmp/manifest-import.$$
293
294 ${SVCCFG} -s 'system/boot-archive' setprop 'start/exec=:true'
295 ${SVCCFG} -s 'system/manifest-import' setprop 'start/exec=:true'
296 ${SVCCFG} -s "system/intrd:default" setprop "general/enabled=false"
297 ${SVCCFG} -s "system/initial-boot" setprop "start/timeout_seconds=600"
298 echo " --- neutering the manifest import"
299 echo "#!/bin/ksh" > ${ROOTDIR}/lib/svc/method/manifest-import
300 echo "exit 0" >> ${ROOTDIR}/lib/svc/method/manifest-import
301 chmod 555 ${ROOTDIR}/lib/svc/method/manifest-import
302 chkpt cull
303 ;;
304
305 "cull")
306 if [[ -z "$BIGROOT" ]]; then
307 load_keep_list data/*
308 while read file
309 do
310 if [[ -n "$file" && \
311 ${keep_list[$file]} == "" && \
312 -e "$ROOTDIR/$file" && \
313 ! -d $ROOTDIR/$file ]] ; then
314 rm -f $ROOTDIR/$file
315 fi
316 done < <(cd $ROOTDIR && find ./ | cut -c3-)
317 for path in $RMRF ; do
318 rm -rf ${ROOTDIR}$path && echo " -- tossing $path"
|