/usr/share/migration-assistant/ma-script-utils is in ubiquity 2.10.16.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226  | #!/bin/sh
. /usr/share/debconf/confmodule
newns () {
	[ "$OS_PROBER_NEWNS" ] || exec /usr/lib/os-prober/newns "$0" "$@"
}
error () {
    logger -t migration-assistant "error: $@"
}
log () {
    logger -t migration-assistant "info: $@"
}
ostype=""
set_os_type () {
# Rather than test for every distro possible in the shortname, we test
# the bootloader type for 'linux.'  This *should* be fine as we're only
# working with user's home directories.
    if [ ${1##*:} = "linux" ]; then
	ostype="linux"
	return 0
    fi
    
    case `LC_ALL=C expr match "$1" '.*:.*:\(.*\):.*'` in
	"Windows" )
	ostype="windowsxp"
        return 0
	;;
        Windows[0-9] )
        ostype="windowsxp"
        return 0
        ;;
	"Windows9xMe" )
	ostype="windows9x"
        return 0
	;;
	"MacOSX" )
	ostype="macosx"
        return 0
	;;
    *)
    echo "Unknown ostype from $1" 1>&2
    return 1
    ;;
    esac
}
mountpoint="/mnt/migrationassistant"
unmount_os() {
    # If we didn't mount the device ourselves, don't unmount it.
    [ "$mountpoint" = "/mnt/migrationassistant" ] || return 0
    unmount_previously_run=
    device="$1"
    if [ -f /etc/mtab ]; then
        MTAB=/etc/mtab
    else
        MTAB=/proc/mounts
    fi
    while :; do
        failed=
        
	ISMOUNTED=
	if [ "$device" ]; then
		ISMOUNTED=$(grep "^$device " $MTAB) || ISMOUNTED=
	else
		ISMOUNTED=$(grep " $mountpoint " $MTAB) || ISMOUNTED=
	fi
        if [ -z "$ISMOUNTED" ]; then
	        break
        fi
        HOME=$(grep " $mountpoint/home " $MTAB) || HOME=
        if [ "$HOME" ]; then
            umount "$mountpoint/home" || failed="$mountpoint/home"
        fi
        if [ -z "$failed" ]; then
            if [ -z "$device" ]; then
                umount $mountpoint || failed="$mountpoint"
            else
                umount $device || failed="$device"
            fi
        fi
        if [ -z "$failed" ]; then
            break
        fi
        # lets try waiting briefly once before we completely give up on
        # unmounting the partition and dump the problem on the user.
        if [ -z "$unmount_previously_run" ]; then
            unmount_previously_run=1
            sleep 15
            continue
        fi
        db_reset migration-assistant/failed-unmount
        db_subst migration-assistant/failed-unmount MOUNTED "$failed"
        db_input critical migration-assistant/failed-unmount || true
        db_go || exit 10
        db_get migration-assistant/failed-unmount
        [ "$RET" = true ] || exit 10
    done
}
mount_os () {
    ostype="$1"
    device="$2"
    if [ "$1" = "linux" ]; then
        mkdir -p $mountpoint
        unmount_os $device
        if ! mount $device $mountpoint; then
            error "Failed to mount $device"
            exit 1
        fi
        if [ -f "$mountpoint/etc/fstab" ]; then
            while read uuid mp rest; do
                echo "$uuid" | grep -q '^#' && continue
                if [ "$mp" != "/home" ]; then
                    continue
                fi
                devname=
                if [ -n "${uuid#*=}" ]; then
                    if [ "${uuid%=*}" = "UUID" ]; then
                        devname="/dev/disk/by-uuid/${uuid#*=}"
                    elif [ "${uuid%=*}" = "LABEL" ]; then
                        devname="/dev/disk/by-label/${uuid#*=}"
                    fi
                fi
                if [ -n "$devname" ]; then
                    uuid=$(readlink -e "$devname") || uuid=
                    if [ -z "$uuid"]; then
                        error "$devname does not exist."
                        return 1
                    fi
                else
                    error "couldn't understand $uuid."
                    return 1
                fi
                
                if [ ! -e "$uuid" ]; then
                    # This happens when the IDE driver in the old OS
                    # doesn't match the driver in the installer.  The old
                    # /home might be mounted on /dev/hda3 which could now
                    # be /dev/sda3 or something entirely different.  Since
                    # there's no way to determine what the device is
                    # without the old kernel loaded, we fail gracefully so
                    # that we can continue to the next OS.
                    error "$uuid does not exist."
                    return 1
                fi
                if ! mount $uuid "$mountpoint/home"; then
                    unmount_os "$uuid"
                    if ! mount $uuid "$mountpoint/home"; then
                        error "failed to mount $uuid"
                        return 1
                    fi
                fi
                break
            done < "$mountpoint/etc/fstab"
        fi
    elif [ "$1" = "windowsxp" ]; then
        # Since we don't have to worry about separate partitions making up the
        # whole system in Windows (yet), we can allow already mounted
        # partitions.  This may fix some corner cases.  At any rate, it's
        # required for Wubi to function properly.
        mnt=$(grep "$device" /proc/mounts | head -n1 | cut -d " " -f 2)
        [ -z "$mnt" ] && [ -f /etc/mtab ] && mnt=$(grep "$device" /etc/mtab | head -n1 | cut -d " " -f 2)
        [ -n "$mnt" ] && mountpoint=$mnt && return 0
        mkdir -p $mountpoint
        unmount_os $device
        if ! mount -t ntfs $device $mountpoint -o umask=0022,nls=utf8 3>&-; then
            log "Mounting $device to $mountpoint with NTFS failed."
            if ! mount -t vfat $device $mountpoint -o umask=0022,utf8; then
                log "Mounting $device to $mountpoint with VFAT failed."
                return 1
            fi
        fi
    fi
}
ROOT=/target
add_user() {
    local username
    local fullname
    local password
    username="$1"
    fullname="$2"
    password="$3"
    chroot=chroot
# Taken from user-setup/user-setup-apply
	# Add the user
	if [ -x $ROOT/usr/sbin/adduser ]; then
		$chroot $ROOT adduser --disabled-password --gecos \
		"$fullname" "$username" >/dev/null || true
	else
		$chroot $ROOT useradd -c "$fullname" -m "$username" >/dev/null || true
	fi
	# Set the password
	$chroot $ROOT chpasswd <<EOF
$username:$password
EOF
	# Add the user to groups
	if [ -n "$username" ]; then
		db_get passwd/user-default-groups
		for group in $RET; do
			log $chroot $ROOT adduser "$USER" $group >/dev/null 2>&1 || true
		done
	fi
}
# vim:ai:et:sts=4:tw=80:sw=4:
 |