Module Name: src Committed By: christos Date: Sun Feb 3 09:16:25 UTC 2013
Modified Files: src/distrib/utils/embedded: mkimage src/distrib/utils/embedded/conf: beagleboard.conf evbarm.conf rpi.conf usermode.conf Log Message: switch to makefs To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/distrib/utils/embedded/mkimage cvs rdiff -u -r1.4 -r1.5 src/distrib/utils/embedded/conf/beagleboard.conf \ src/distrib/utils/embedded/conf/evbarm.conf cvs rdiff -u -r1.12 -r1.13 src/distrib/utils/embedded/conf/rpi.conf cvs rdiff -u -r1.2 -r1.3 src/distrib/utils/embedded/conf/usermode.conf Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/utils/embedded/mkimage diff -u src/distrib/utils/embedded/mkimage:1.16 src/distrib/utils/embedded/mkimage:1.17 --- src/distrib/utils/embedded/mkimage:1.16 Wed Jan 30 02:40:34 2013 +++ src/distrib/utils/embedded/mkimage Sun Feb 3 04:16:24 2013 @@ -1,10 +1,12 @@ -#! /bin/sh - -# $NetBSD: mkimage,v 1.16 2013/01/30 07:40:34 skrll Exp $ +#!/bin/sh +# $NetBSD: mkimage,v 1.17 2013/02/03 09:16:24 christos Exp $ # -# Copyright (c) 2012 Alistair Crooks <a...@netbsd.org> +# Copyright (c) 2013 The NetBSD Foundation, Inc. # All rights reserved. # +# This code is derived from software contributed to The NetBSD Foundation +# by Christos Zoulas. +# # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: @@ -13,192 +15,58 @@ # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# 3. Neither the name of The NetBSD Foundation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. # -# find next available vnd, from kre -next_avail () -{ - local dev="$1" - local N=$(( ${#dev} + 1 )) - local unit units - - units=$( - sysctl -n hw.disknames | - tr ' ' '\012' | - grep '^'"${dev}"'[0-9]' | - sort -n -k 1.$N ) - - test -z "${units}" && { - test -e "/dev/${dev}0a" || { - echo >&2 "No ${dev}s available!" - return 1 - } - echo "${dev}0" - return - } - - N=0 - for unit in ${units} - do - if [ "${unit}" = "${dev}${N}" ] - then - N=$(( N + 1 )) - else - echo "${dev}${N}" - return - fi - done - - test -e /dev/"${dev}${N}a" || { - echo >&2 "All ${dev}s in use" - return 1 - } +DIR="$(cd "$(dirname "$0")" && pwd)" +PROG="$(basename "$0")" + +src="/usr/src" +release="/usr/obj/evbarm/release" +sets="base comp etc games man misc modules text" +xsets="xbase xcomp xetc xfont xserver" +minfree="10%" +bar="===" - echo "${dev}${N}" +tmp="$(mktemp -d "/tmp/$PROG.XXXXXX")" +mnt="${tmp}/mnt" +mkdir -p "${mnt}/etc" "${mnt}/dev" "${mnt}/boot" +trap "cleanup" 0 1 2 3 15 + +cleanup() { + case "$tmp" in + /tmp/$PROG.*) rm -fr "$tmp";; + esac +} + +getsize() { + set -- $(ls -l $1) + echo $5 } usage() { cat << EOF 1>&2 -Usage: $PROG -h <host-arch> [-S <setsdir>] [-c <custom-files-dir>] [-s <Mb size>] [<image>] +Usage: $PROG -h <host-arch> [-K <kerneldir>] [-S <srcdir>] [-R <releasedir>] [-c <custom-files-dir>] [-s <Mb size>] [<image>] EOF exit 1 } -# Return the filesystem size for an ls -l or tar -xvf list -# Directories and symlinks in tar are 0 size, we assume one block -# (which is too much), we round up by the fragment size the rest. -getfssize() { - local bsize="$1" - local fsize="$2" - - awk -v fsize=${fsize} -v bsize=${bsize} ' - NF >= 9 && $1 != "tar:" { - if ($5 == 0) - tot += bsize; - else - tot += ((int)(($5 + fsize - 1) / fsize)) * fsize; - } - END { - printf("%d\n", tot); - }' -} - -# find the size of the gzipped files in a .tgz archive -# Directories appear as 0, so count them as one block -# and round up files to a fragment. -sizeone() { - if [ ! -f "$1" ] - then - echo "$PROG: Missing set $1" 1>&2 - echo 0 - return; - fi - - case "$1" in - *.tgz|*.tar.gz|*.tbz|*.tar.bz2|*.txz|*.tar.xz) - tar tvzf "$1" | getfssize ${bsize} ${fsize} - ;; - *) - echo 0 - ;; - esac -} - - -# Return the usable filesystem size in bytes, given the total size in bytes, -# and optionally block and fragment sizes -getffssize() { - local bytes="$1" - local barg - local farg - local overhead - - if [ -n "$2" ] - then - barg="-b $2" - if [ -n "$3" ] - then - farg="-f $3" - fi - fi - - overhead=$(newfs -N ${farg} ${barg} -s "${bytes}b" -F /dev/null | - awk '/using/ { - printf("%d\n", substr($6, 1, length($6) - 3) * 1024 * 1024); - }' - ) - echo $(( ${bytes} - ${overhead} )) -} - -# Compute the size of an ffs filesystem that can fit x bytes. -# Instead of duplicating the newfs calculations here we let -# it do the job, using binary search. -makeffssize() { - local bytes=$1 - local bsize=$2 - local fsize=$3 - local max=$(( 2 * ${bytes} )) - local min="${bytes}" - local cur - local res - while true; do - cur="$(( ( ${max} + ${min} ) / 2 ))" - res="$(getffssize "${cur}" ${bsize} ${fsize})" -# echo ${min} ${cur} ${max} ${res} ${bytes} 1>&2 - if [ "${res}" -eq "${bytes}" ] - then - break - elif [ "$(( ${min} + 1 ))" -ge "${max}" ] - then - break - elif [ "${res}" -lt "${bytes}" ] - then - min="${cur}" - elif [ "${res}" -gt "${bytes}" ] - then - max="${cur}" - fi - done - echo "${cur}" -} - -finish() { - cleanup - ${sudo} umount ${mnt} - ${sudo} vnconfig -u ${vnddev} - rm -fr ${mnt} -} - - -DIR="$(dirname "$0")" -PROG="$(basename "$0")" -bar="===" -sudo= -mnt="${TMPDIR:-/tmp}/image.$$" -src="/usr/src" -obj="/usr/obj" - -sets="base comp etc games man misc modules tests text" -xsets="xbase xcomp xetc xfont xserver" - -# Presumable block and fragment size. -bsize=16384 -fsize=2048 -mtob=$(( 1024 * 1024 )) - # First pass for options to get the host -OPTS="S:c:h:s:x" +OPTS="K:R:S:c:h:s:x" while getopts "$OPTS" f do case $f in @@ -220,20 +88,24 @@ fi . "${DIR}/conf/${h}.conf" +selected_sets="$sets" + OPTIND=1 while getopts "$OPTS" f do case $f in - S) setsdir="$OPTARG";; + K) release="$OPTARG";; + R) kerneldir="$OPTARG";; + S) src="$OPTARG";; c) custom="$OPTARG";; h) ;; s) size="$OPTARG";; - x) sets="$sets $xsets";; + x) selected_sets="$sets $xsets";; *) usage;; esac done -trap finish 0 1 2 3 15 +trap cleanup 0 1 2 3 15 shift $(( "$OPTIND" - 1 )) if [ -n "$1" ]; then @@ -242,107 +114,40 @@ if [ -n "$1" ]; then shift fi -# calculate the set bytes -setbytes=0 -echo -n "${bar} computing set sizes (" -b= -for s in ${sets}; do - one="$(sizeone ${setsdir}/${s}.tgz)" - echo -n "$b$s=$(( ${one} / ${mtob} ))MB" - setbytes=$(( ${setbytes} + ${one} )) - b=" " -done -echo "): $(( ${setbytes} / ${mtob} ))MB ${bar}" +. "$DIR/conf/rpi.conf" -# calculate size of custom files -custbytes=0 -if [ -d "${custom}" ]; then - custbytes=$(ls -lR "${custom}" | getfssize ${bsize} ${fsize}) -fi -echo "${bar} computing custom sizes: $(( ${custbytes} / ${mtob} ))MB ${bar}" - -# how many bytes -rawbytes="$(( ${setbytes} + ${custbytes} ))" -echo -n "${bar} computing ffs filesystem size for $(( ${rawbytes} / ${mtob} ))MB: " -ffsbytes="$(makeffssize "${rawbytes}")" -ffsmb=$(( ${ffsbytes} / ${mtob} )) -echo " ${ffsmb}MB ${bar}" - -# total in MB -total=$(( ${ffsmb} + ${overhead} )) -echo "${bar} overhead: ${overhead}MB ${bar}" - -if [ $size -eq 0 ]; then - # auto-size the pkgs fs - newsize=${total} -else - # check that we've been given enough space - if [ ${total} -gt ${size} ]; then - echo "$PROG: Given size is ${size} MB, but we need ${total} MB" >&2 - exit 1 - fi - newsize=${size} -fi - -echo "${bar} making a new ${newsize} MB image in ${image} ${bar}" -dd if=/dev/zero of=${image} bs=1m count=${newsize} conv=sparse - -vnddev=$(next_avail vnd) -echo "${bar} mounting image via vnd ${vnddev} ${bar}" -${sudo} vnconfig ${vnddev} ${image} -${sudo} mkdir -p ${mnt} -make_filesystems - -${sudo} mkdir -p ${mnt}/etc ${mnt}/dev - -echo -n "${bar} installing sets:" -(cd ${mnt} && - for s in ${sets}; do - ss="${setsdir}/${s}.tgz" - if [ -f "${ss}" ]; then - echo -n " ${s}" - ${sudo} tar xpzf "${ss}" - fi - done -) -echo " ${bar}" - -echo "${bar} performing customisations ${bar}" +echo ${bar} configuring sets ${bar} +(echo '/set type=dir uname=root gname=wheel mode=0755' +for i in $selected_sets; do + s="${release}/etc/mtree/set.$i" + [ -f "$s" ] && cat "$s" +done) > "$tmp/selected_sets" make_fstab +customize +populate -${sudo} cat > ${mnt}/etc/rc.conf << EOF -# -# see rc.conf(5) for more information. -# -# Use program=YES to enable program, NO to disable it. program_flags are -# passed to the program on the command line. -# - -# Load the defaults in from /etc/defaults/rc.conf (if it's readable). -# These can be overridden below. -# -if [ -r /etc/defaults/rc.conf ]; then - . /etc/defaults/rc.conf +(cd ${mnt}; mtree -c -k all | mtree -C -k all) >> "$tmp/selected_sets" +if [ -n ${msdosid} ]; then + echo ${bar} Populating msdos filesystem ${bar} + makefs -t msdos -O $((${init} / 2))m -s $((${boot} / 2))m \ + ${image} ${mnt}/boot fi -# If this is not set to YES, the system will drop into single-user mode. -# -rc_configured=YES - -hostname=${h} - -EOF - -customize +echo ${bar} Populating ffs filesystem ${bar} +makefs -t ffs -rx -O $(((${init} + ${boot} + ${swap}) / 2))m \ + -F "$tmp/selected_sets" ${image} "${release}" "${mnt}" -for d in ${specialdirs}; do - ${sudo} mkdir -p ${mnt}/${d} -done - -if [ \( -n "${custom}" \) -a \( -d "${custom}" \) ]; then - echo "${bar} user customisations from files in ${custom} ${bar}" - (cd ${custom} && ${sudo} pax -rwpe . ${mnt}) +if [ -z "$size" ]; then + size=$(getsize ${image}) fi +newsize=$((size / 2 / 1024)) -exit 0 +echo ${bar} Adding label ${bar} +make_label > ${tmp}/label +disklabel -R -F ${image} ${tmp}/label +if [ -n ${msdosid} ]; then + echo ${bar} Running fdisk ${bar} + fdisk -f -u -0 -s ${msdosid}/${init}/${boot} -F ${image} +fi +echo ${bar} Image is ${image} ${bar} Index: src/distrib/utils/embedded/conf/beagleboard.conf diff -u src/distrib/utils/embedded/conf/beagleboard.conf:1.4 src/distrib/utils/embedded/conf/beagleboard.conf:1.5 --- src/distrib/utils/embedded/conf/beagleboard.conf:1.4 Mon Jan 28 04:06:19 2013 +++ src/distrib/utils/embedded/conf/beagleboard.conf Sun Feb 3 04:16:25 2013 @@ -1,4 +1,4 @@ -# $NetBSD: beagleboard.conf,v 1.4 2013/01/28 09:06:19 skrll Exp $ +# $NetBSD: beagleboard.conf,v 1.5 2013/02/03 09:16:25 christos Exp $ # BeagleBoard customization script used by mkimage # board=beagleboard @@ -10,10 +10,8 @@ kerneldir=$src/sys/arch/evbarm/compile/o kernelimg=netbsd.ub loadaddr=81000000 - - -make_filesystems() { - make_filesystems_evbarm +make_label() { + make_label_evbarm } make_fstab() { @@ -22,10 +20,10 @@ make_fstab() { customize() { customize_evbarm - ${sudo} cat >> ${mnt}/etc/rc.conf << EOF + cat >> ${mnt}/etc/rc.conf << EOF mdnsd=YES EOF - ${sudo} cat > ${mnt}/boot/uEnv.txt << EOF + cat > ${mnt}/boot/uEnv.txt << EOF loaduimage=fatload mmc 0 ${loadaddr} ${kernelimg}; bootm ${loadaddr} root=ld0a EOF } Index: src/distrib/utils/embedded/conf/evbarm.conf diff -u src/distrib/utils/embedded/conf/evbarm.conf:1.4 src/distrib/utils/embedded/conf/evbarm.conf:1.5 --- src/distrib/utils/embedded/conf/evbarm.conf:1.4 Mon Jan 28 04:06:19 2013 +++ src/distrib/utils/embedded/conf/evbarm.conf Sun Feb 3 04:16:25 2013 @@ -1,9 +1,8 @@ -# $NetBSD: evbarm.conf,v 1.4 2013/01/28 09:06:19 skrll Exp $ +# $NetBSD: evbarm.conf,v 1.5 2013/02/03 09:16:25 christos Exp $ # evbarm shared config # image=$HOME/${board}.img -setsdir=$obj/evbarm/media/evbarm/binary/sets/ specialdirs="/kern /proc" swap=256 @@ -13,12 +12,8 @@ init=8 size=0 # autocompute msdosid=12 -overhead=$(( ${swap} + ${extra} + ${init} + ${boot} )) - -tmp=/tmp/${board}.disklabel.$$ - -make_filesystems_evbarm() { +make_label_evbarm() { local totalsize=$(( ${newsize} * 1024 * 2 )) local swapsize=$(( ${swap} * 1024 )) local bootsize=$(( ${boot} * 1024 )) @@ -35,7 +30,7 @@ make_filesystems_evbarm() { local spc=2048 local cylinders=$(( ${totalsize} / ${spc} )) - cat > ${tmp} << EOF + cat << EOF type: SCSI disk: STORAGE DEVICE label: fictitious @@ -61,17 +56,10 @@ drivedata: 0 d: ${totalsize} 0 unused 0 0 # e: ${bootsize} ${bootoffset} MSDOS # EOF - ${sudo} disklabel -R ${vnddev} ${tmp} - ${sudo} fdisk -f -u -0 -s ${msdosid}/${bootoffset}/${bootsize} -F ${image} - ${sudo} newfs /dev/r${vnddev}a - ${sudo} newfs_msdos /dev/r${vnddev}e - ${sudo} mount -o async /dev/${vnddev}a ${mnt} - ${sudo} mkdir ${mnt}/boot - ${sudo} mount_msdos /dev/${vnddev}e ${mnt}/boot } make_fstab_evbarm() { - ${sudo} cat > ${mnt}/etc/fstab << EOF + cat > ${mnt}/etc/fstab << EOF # NetBSD /etc/fstab # See /usr/share/examples/fstab/ for more examples. /dev/ld0a / ffs rw,log 1 1 @@ -84,19 +72,14 @@ EOF } customize_evbarm() { - ${sudo} cat >> ${mnt}/etc/rc.conf << EOF + cat >> ${mnt}/etc/rc.conf << EOF sshd=YES dhcpcd=YES EOF - if [ ! -f ${mnt}/dev/MAKEDEV ]; then - echo ${PROG}: Missing ${mnt}/dev/MAKEDEV 1>&2 + if [ ! -f ${release}/dev/MAKEDEV ]; then + echo ${PROG}: Missing ${release}/dev/MAKEDEV 1>&2 exit 1 fi echo "${bar} running MAKEDEV ${bar}" - (cd ${mnt}/dev && ${sudo} sh MAKEDEV all) -} - -cleanup_evbarm() { - rm -f ${tmp} - ${sudo} umount ${mnt}/boot + (cd ${mnt}/dev && sh ${release}/dev/MAKEDEV all) } Index: src/distrib/utils/embedded/conf/rpi.conf diff -u src/distrib/utils/embedded/conf/rpi.conf:1.12 src/distrib/utils/embedded/conf/rpi.conf:1.13 --- src/distrib/utils/embedded/conf/rpi.conf:1.12 Wed Jan 23 17:20:06 2013 +++ src/distrib/utils/embedded/conf/rpi.conf Sun Feb 3 04:16:25 2013 @@ -1,4 +1,4 @@ -# $NetBSD: rpi.conf,v 1.12 2013/01/23 22:20:06 skrll Exp $ +# $NetBSD: rpi.conf,v 1.13 2013/02/03 09:16:25 christos Exp $ # Raspberry Pi customization script used by mkimage # @@ -19,37 +19,39 @@ make_fstab() { make_fstab_evbarm } +make_label() { + make_label_evbarm +} + customize() { customize_evbarm - ${sudo} cat >> ${mnt}/etc/rc.conf << EOF + cat >> ${mnt}/etc/rc.conf << EOF wscons=YES EOF - ${sudo} cat > ${mnt}/boot/cmdline.txt << EOF +} + +populate() { + cat > ${mnt}/boot/cmdline.txt << EOF root=ld0a console=fb #fb=1280x1024 # to select a mode, otherwise try EDID #fb=disable # to disable fb completely EOF - if [ ! -f ${kerneldir}/kernel.img ]; then echo ${PROG}: Missing ${kerneldir}/kernel.img 1>&2 exit 1 fi echo "${bar} installing kernel ${bar}" - ${sudo} cp ${kerneldir}/kernel.img ${mnt}/boot + cp ${kerneldir}/kernel.img ${mnt}/boot echo -n "${bar} installing firmware files:" (cd ${mnt}/boot && for f in ${firmwarefiles}; do echo -n " $f" - ${sudo} cp ${firmwaredir}/${f} . + cp ${firmwaredir}/${f} . done ) echo " ${bar}" } - -cleanup() { - cleanup_evbarm -} Index: src/distrib/utils/embedded/conf/usermode.conf diff -u src/distrib/utils/embedded/conf/usermode.conf:1.2 src/distrib/utils/embedded/conf/usermode.conf:1.3 --- src/distrib/utils/embedded/conf/usermode.conf:1.2 Sun Jan 13 17:08:43 2013 +++ src/distrib/utils/embedded/conf/usermode.conf Sun Feb 3 04:16:25 2013 @@ -1,5 +1,7 @@ -# $NetBSD: usermode.conf,v 1.2 2013/01/13 22:08:43 christos Exp $ +# $NetBSD: usermode.conf,v 1.3 2013/02/03 09:16:25 christos Exp $ # NetBSD/usermode customization script used by mkimage + +# XXX: BROKEN, needs to be converted to makefs custom=custom image=usermode.img overhead=8 # in MB @@ -10,12 +12,12 @@ specialdirs="/kern /proc" usermodedirs="/var.cow /etc.cow /root.cow /pkgs" make_filesystems() { - ${sudo} newfs /dev/r${vnddev}a - ${sudo} mount /dev/${vnddev}a ${mnt} + newfs /dev/r${vnddev}a + mount /dev/${vnddev}a ${mnt} } make_fstab() { -${sudo} cat > ${mnt}/etc/fstab << EOF +cat > ${mnt}/etc/fstab << EOF # NetBSD/usermode /etc/fstab /dev/ld0a / ffs ro 1 1 /dev/ld1a /pkgs ffs ro 1 2 @@ -37,7 +39,7 @@ EOF } customize() { -${sudo} cat >> ${mnt}/etc/rc.conf << EOF +cat >> ${mnt}/etc/rc.conf << EOF # make sure we have the right rw filesystem at boot critical_filesystems_local="/var.cow /var /etc.cow /etc /root.cow /root" @@ -49,26 +51,26 @@ EOF echo "${bar} making extra directories ${bar}" for d in ${usermodedirs}; do - ${sudo} mkdir -p ${mnt}/${d} + mkdir -p ${mnt}/${d} done echo "${bar} customising /var/tmp ${bar}" -${sudo} rm -rf ${mnt}/var/tmp -(cd ${mnt}/var && ${sudo} ln -s /tmp tmp) +rm -rf ${mnt}/var/tmp +(cd ${mnt}/var && ln -s /tmp tmp) # package-related stuff (cat ${mnt}/etc/csh.cshrc;echo "setenv PKG_DBDIR /usr/pkg/.dbdir") > ${tmp} -${sudo} mv ${tmp} ${mnt}/etc/csh.cshrc +mv ${tmp} ${mnt}/etc/csh.cshrc (cat ${mnt}/etc/profile;echo "export PKG_DBDIR=/usr/pkg/.dbdir") > ${tmp} -${sudo} mv ${tmp} ${mnt}/etc/profile +mv ${tmp} ${mnt}/etc/profile (echo "PKG_DBDIR=/usr/pkg/.dbdir") > ${tmp} -${sudo} mv ${tmp} ${mnt}/etc/mk.conf -(cd ${mnt}/usr && ${sudo} ln -s /pkgs/usr/pkg pkg) +mv ${tmp} ${mnt}/etc/mk.conf +(cd ${mnt}/usr && ln -s /pkgs/usr/pkg pkg) # last, customisation stage if [ -d ${custom} ]; then echo "${bar} user customisations from files in ${custom} ${bar}" - (cd ${custom} && ${sudo} pax -rwpe . ${mnt}) + (cd ${custom} && pax -rwpe . ${mnt}) fi df ${mnt}