1.1 --- a/README.txt Sun May 30 19:47:11 2010 +0200
1.2 +++ b/README.txt Thu May 26 23:55:42 2011 +0200
1.3 @@ -42,7 +42,8 @@
1.4 * Removed specific apt- and dpkg-related scripts, replacing them with the
1.5 general -do scripts.
1.6 * Added --root options to certain scripts in order to support normal chroot
1.7 - installations.
1.8 + installations. Added --dev option for bind mounting of /dev in normal
1.9 + chroot installations.
1.10 * Added support for UML instance construction from distribution
1.11 installations, along with networking support and a uml-net script.
1.12
1.13 @@ -223,6 +224,29 @@
1.14 otherwise, this can potentially damage the main operating system installation
1.15 on your computer.
1.16
1.17 +Using the Host's Device Filesystem
1.18 +----------------------------------
1.19 +
1.20 +In root mode, the /dev filesystem on the host can be mounted by using the
1.21 +--dev option with user-do:
1.22 +
1.23 +sudo user-do --root --dev
1.24 +
1.25 +Note that care must be taken not to delete the contents of this directory
1.26 +within the installation while the above command is running.
1.27 +
1.28 +Enabling Audio in Root Mode
1.29 +---------------------------
1.30 +
1.31 +Together with the --root and --dev options, audio can be enabled for
1.32 +applications within an installation by adding users to the audio group in
1.33 +/etc/group. In addition, it may be necessary to run an audio manager daemon
1.34 +depending on the system used to manage the audio on the host.
1.35 +
1.36 +For example, the artsd package may need installing in order to make the
1.37 +corresponding artsdsp program available to applications within the package
1.38 +manager.
1.39 +
1.40 Constructing UML Instances
1.41 --------------------------
1.42
2.1 --- a/uml-do Sun May 30 19:47:11 2010 +0200
2.2 +++ b/uml-do Thu May 26 23:55:42 2011 +0200
2.3 @@ -11,15 +11,15 @@
2.4 exit 1
2.5 fi
2.6
2.7 -if [[ ! $1 ]]; then
2.8 +if [ ! "$1" ]; then
2.9 echo "$0 <memory>"
2.10 exit 1
2.11 fi
2.12
2.13 -export IMAGE=$UMLROOT/rootfs
2.14 -export SWAPIMAGE=$UMLROOT/swap
2.15 -export UML_MEMORY=$1
2.16 -export THIS_DIR=`dirname $0`
2.17 +export IMAGE="$UMLROOT/rootfs"
2.18 +export SWAPIMAGE="$UMLROOT/swap"
2.19 +export UML_MEMORY="$1"
2.20 +export THIS_DIR="`dirname $0`"
2.21
2.22 # Discard the memory argument.
2.23
2.24 @@ -27,12 +27,12 @@
2.25
2.26 # Test for networking.
2.27
2.28 -if [[ $1 == '--net' ]]; then
2.29 +if [ "$1" == '--net' ]; then
2.30 export UML_NETWORKING="$NETDEVICE=tuntap,$TUNDEVICE,fe:fd:0:0:0:1,$HOSTADDRESS"
2.31 - xhost +$GUESTADDRESS
2.32 + xhost +"$GUESTADDRESS"
2.33 shift 1
2.34 fi
2.35
2.36 # Now we start the virtual machine...
2.37
2.38 -$THIS_DIR/linux ubd0=$IMAGE ubd1=$SWAPIMAGE mem=$UML_MEMORY $UML_NETWORKING $*
2.39 +"$THIS_DIR/linux" ubd0="$IMAGE" ubd1="$SWAPIMAGE" mem="$UML_MEMORY" "$UML_NETWORKING" $*
3.1 --- a/uml-net Sun May 30 19:47:11 2010 +0200
3.2 +++ b/uml-net Thu May 26 23:55:42 2011 +0200
3.3 @@ -11,18 +11,18 @@
3.4 exit 1
3.5 fi
3.6
3.7 -if [[ $1 == "--start" ]]; then
3.8 +if [ "$1" == "--start" ]; then
3.9 chgrp adm /dev/net/tun
3.10 - tunctl -u $2 -t $TUNDEVICE
3.11 - ifconfig $TUNDEVICE $HOSTADDRESS up
3.12 + tunctl -u "$2" -t "$TUNDEVICE"
3.13 + ifconfig "$TUNDEVICE" "$HOSTADDRESS" up
3.14 bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
3.15 - iptables -t nat -I POSTROUTING -o $NETDEVICE -j MASQUERADE
3.16 - iptables -I FORWARD -i $TUNDEVICE -j ACCEPT
3.17 - iptables -I FORWARD -o $TUNDEVICE -j ACCEPT
3.18 + iptables -t nat -I POSTROUTING -o "$NETDEVICE" -j MASQUERADE
3.19 + iptables -I FORWARD -i "$TUNDEVICE" -j ACCEPT
3.20 + iptables -I FORWARD -o "$TUNDEVICE" -j ACCEPT
3.21
3.22 -elif [[ $1 == "--stop" ]]; then
3.23 +elif [ "$1" == "--stop" ]; then
3.24 iptables -t nat -D POSTROUTING 1
3.25 iptables -D FORWARD 1
3.26 iptables -D FORWARD 1
3.27 - tunctl -d $TUNDEVICE
3.28 + tunctl -d "$TUNDEVICE"
3.29 fi
4.1 --- a/uml-postsetupfs Sun May 30 19:47:11 2010 +0200
4.2 +++ b/uml-postsetupfs Thu May 26 23:55:42 2011 +0200
4.3 @@ -12,33 +12,33 @@
4.4 fi
4.5
4.6 # Ensure that images have been set up.
4.7 -if [ ! -e $UMLROOT ]; then
4.8 +if [ ! -e "$UMLROOT" ]; then
4.9 echo "No UML instances set up at $UMLROOT."
4.10 exit 1
4.11 fi
4.12
4.13 -export IMAGE=$UMLROOT/rootfs
4.14 +export IMAGE="$UMLROOT/rootfs"
4.15
4.16 -if [ ! -e $IMAGE ]; then
4.17 +if [ ! -e "$IMAGE" ]; then
4.18 echo "No image set up at $IMAGE."
4.19 exit 1
4.20 fi
4.21
4.22 -export IMAGEDIR=$UMLROOT/rootfsdir
4.23 +export IMAGEDIR="$UMLROOT/rootfsdir"
4.24
4.25 -if [ ! -e $IMAGEDIR ]; then
4.26 - mkdir $IMAGEDIR
4.27 +if [ ! -e "$IMAGEDIR" ]; then
4.28 + mkdir "$IMAGEDIR"
4.29 fi
4.30
4.31 echo "Initialising device files..."
4.32 -chroot $PACKAGEROOT /bin/bash -c 'mount -t proc proc /proc; cd /dev; ./MAKEDEV generic; umount /proc'
4.33 +chroot "$PACKAGEROOT" /bin/bash -c 'mount -t proc proc /proc; cd /dev; ./MAKEDEV generic; umount /proc'
4.34
4.35 echo "Accessing the image..."
4.36 -mount -o loop $IMAGE $IMAGEDIR || exit 1
4.37 +mount -o loop "$IMAGE" "$IMAGEDIR" || exit 1
4.38
4.39 echo "Copying the filesystem into the image..."
4.40 -cp -a $PACKAGEROOT/* $IMAGEDIR
4.41 +cp -a "$PACKAGEROOT/"* "$IMAGEDIR"
4.42
4.43 echo "Unmounting the image..."
4.44 -umount $IMAGEDIR
4.45 -rmdir $IMAGEDIR
4.46 +umount "$IMAGEDIR"
4.47 +rmdir "$IMAGEDIR"
5.1 --- a/uml-setupdev Sun May 30 19:47:11 2010 +0200
5.2 +++ b/uml-setupdev Thu May 26 23:55:42 2011 +0200
5.3 @@ -17,9 +17,9 @@
5.4 for ((i=0; i<8; i++))
5.5 do
5.6 let=$(echo $i|tr '0-7' 'a-z')
5.7 - mknod $PACKAGEROOT/dev/ubd$let b 98 $[16 * $i]
5.8 + mknod "$PACKAGEROOT/dev/ubd$let" b 98 $[16 * $i]
5.9 for ((p=1; p<=16; p++)) do
5.10 - mknod $PACKAGEROOT/dev/ubd$let$p b 98 $[16 * $i + $p]
5.11 + mknod "$PACKAGEROOT/dev/ubd$let$p" b 98 $[16 * $i + $p]
5.12 done
5.13 done
5.14 else
6.1 --- a/uml-setupfs Sun May 30 19:47:11 2010 +0200
6.2 +++ b/uml-setupfs Thu May 26 23:55:42 2011 +0200
6.3 @@ -12,7 +12,7 @@
6.4 fi
6.5
6.6 # Ensure arguments have been provided.
6.7 -if [[ ! $1 || ! $2 ]]; then
6.8 +if [[ ! "$1" || ! "$2" ]]; then
6.9 echo "$0 <root-filesystem-size-in-GB> <swap-size-in-MB>"
6.10 exit 1
6.11 fi
6.12 @@ -20,18 +20,18 @@
6.13 # Make the UML instance directory if not already present.
6.14
6.15 echo "Making the UML instance directory at $UMLROOT..."
6.16 -if [ ! -e $UMLROOT ]; then
6.17 - mkdir $UMLROOT
6.18 +if [ ! -e "$UMLROOT" ]; then
6.19 + mkdir "$UMLROOT"
6.20 fi
6.21
6.22 -export IMAGE=$UMLROOT/rootfs
6.23 -export IMAGESIZE=$1
6.24 -export SWAPIMAGE=$UMLROOT/swap
6.25 -export SWAPSIZE=$2
6.26 +export IMAGE="$UMLROOT/rootfs"
6.27 +export IMAGESIZE="$1"
6.28 +export SWAPIMAGE="$UMLROOT/swap"
6.29 +export SWAPSIZE="$2"
6.30
6.31 echo "Making the filesystem with size ${IMAGESIZE}GB..."
6.32 -dd if=/dev/zero of=$IMAGE bs=1024 count=1 seek=$((${IMAGESIZE}*1024*1024-1024))
6.33 -mkfs.ext3 $IMAGE
6.34 +dd if=/dev/zero of="$IMAGE" bs=1024 count=1 seek=$((${IMAGESIZE}*1024*1024-1024))
6.35 +mkfs.ext3 "$IMAGE"
6.36
6.37 echo "Making the swap file with size ${SWAPSIZE}MB..."
6.38 -dd if=/dev/zero of=$SWAPIMAGE bs=1M count=$SWAPSIZE
6.39 +dd if=/dev/zero of="$SWAPIMAGE" bs=1M count="$SWAPSIZE"
7.1 --- a/user-do Sun May 30 19:47:11 2010 +0200
7.2 +++ b/user-do Thu May 26 23:55:42 2011 +0200
7.3 @@ -1,5 +1,5 @@
7.4 #!/bin/bash
7.5 -# Usage: user-enter [ --root ] [ <command and options> ]
7.6 +# Usage: user-do [ --root [ --dev ] ] [ <command and options> ]
7.7
7.8 # Configuration:
7.9 if [ -e userinstall-defaults ]; then
7.10 @@ -11,13 +11,28 @@
7.11 exit 1
7.12 fi
7.13
7.14 -if [[ $1 == '--root' ]]; then
7.15 +if [[ "$1" == '--root' ]]; then
7.16 shift 1
7.17 - mount -o bind /proc $PACKAGEROOT/proc
7.18 - mount -o bind /sys $PACKAGEROOT/sys
7.19 - chroot $PACKAGEROOT $*
7.20 - umount $PACKAGEROOT/proc
7.21 - umount $PACKAGEROOT/sys
7.22 + mount -o bind /proc "$PACKAGEROOT/proc"
7.23 + mount -o bind /sys "$PACKAGEROOT/sys"
7.24 + if [[ "$1" == '--dev' ]]; then
7.25 + shift 1
7.26 + if [ -e "$PACKAGEROOT/dev.orig" ]; then
7.27 + echo "Devices may already be defined for the installation."
7.28 + else
7.29 + mv "$PACKAGEROOT/dev" "$PACKAGEROOT/dev.orig"
7.30 + mkdir "$PACKAGEROOT/dev"
7.31 + mount -o bind /dev "$PACKAGEROOT/dev"
7.32 + fi
7.33 + fi
7.34 + chroot "$PACKAGEROOT" $*
7.35 + umount "$PACKAGEROOT/proc"
7.36 + umount "$PACKAGEROOT/sys"
7.37 + if [ -e "$PACKAGEROOT/dev.orig" ]; then
7.38 + umount "$PACKAGEROOT/dev"
7.39 + rmdir "$PACKAGEROOT/dev"
7.40 + mv "$PACKAGEROOT/dev.orig" "$PACKAGEROOT/dev"
7.41 + fi
7.42 else
7.43 - fakeroot fakechroot $FAKECHROOT_OPTIONS chroot $PACKAGEROOT $*
7.44 + fakeroot fakechroot $FAKECHROOT_OPTIONS chroot "$PACKAGEROOT" $*
7.45 fi
8.1 --- a/user-path Sun May 30 19:47:11 2010 +0200
8.2 +++ b/user-path Thu May 26 23:55:42 2011 +0200
8.3 @@ -11,4 +11,4 @@
8.4 exit 1
8.5 fi
8.6
8.7 -echo $PACKAGEROOT/$1
8.8 +echo "$PACKAGEROOT/$1"
9.1 --- a/user-postsetup Sun May 30 19:47:11 2010 +0200
9.2 +++ b/user-postsetup Thu May 26 23:55:42 2011 +0200
9.3 @@ -1,5 +1,5 @@
9.4 #!/bin/bash
9.5 -# Usage: user-postsetup [ --root ] [ <country> ]
9.6 +# Usage: user-postsetup [ --root [ --dev ] ] [ <country> ]
9.7
9.8 # Configuration:
9.9 if [ -e userinstall-defaults ]; then
9.10 @@ -11,51 +11,51 @@
9.11 exit 1
9.12 fi
9.13
9.14 -if [[ $1 && $1 == '--root' ]]; then
9.15 +if [[ "$1" && "$1" == '--root' ]]; then
9.16 export AS_ROOT=' --root'
9.17 - export COUNTRY=$2
9.18 -else
9.19 - export COUNTRY=$1
9.20 + shift 1
9.21 fi
9.22
9.23 -export THIS_DIR=`dirname $0`
9.24 +export COUNTRY="$1"
9.25 +
9.26 +export THIS_DIR="`dirname $0`"
9.27
9.28 echo "Copying host DNS configuration..."
9.29 -cp /etc/resolv.conf $PACKAGEROOT/etc/
9.30 +cp /etc/resolv.conf "$PACKAGEROOT/etc/"
9.31
9.32 echo "Copying filesystems configuration..."
9.33 -cp /etc/fstab $PACKAGEROOT/etc/
9.34 +cp /etc/fstab "$PACKAGEROOT/etc/"
9.35
9.36 echo "Copying network configuration..."
9.37 -cp /etc/hosts $PACKAGEROOT/etc/
9.38 -cp /etc/network/interfaces $PACKAGEROOT/etc/network/
9.39 +cp /etc/hosts "$PACKAGEROOT/etc/"
9.40 +cp /etc/network/interfaces "$PACKAGEROOT/etc/network/"
9.41
9.42 echo "Copying package repository configuration..."
9.43 -if [[ $USERINSTALL_CODENAME == $DISTRIB_CODENAME ]]; then
9.44 - cp /etc/apt/sources.list $PACKAGEROOT/etc/apt/
9.45 -elif [ -e $USERINSTALL_CODENAME/sources.list ]; then
9.46 - cp $USERINSTALL_CODENAME/sources.list $PACKAGEROOT/etc/apt/
9.47 +if [ "$USERINSTALL_CODENAME" == "$DISTRIB_CODENAME" ]; then
9.48 + cp /etc/apt/sources.list "$PACKAGEROOT/etc/apt/"
9.49 +elif [ -e "$USERINSTALL_CODENAME/sources.list" ]; then
9.50 + cp "$USERINSTALL_CODENAME/sources.list" "$PACKAGEROOT/etc/apt/"
9.51 else
9.52 echo "Attempting to generate a repository definition for $USERINSTALL_CODENAME."
9.53 - $THIS_DIR/user-makesources $PACKAGEROOT/etc/apt/sources.list $COUNTRY
9.54 + "$THIS_DIR/user-makesources" "$PACKAGEROOT/etc/apt/sources.list" "$COUNTRY"
9.55 fi
9.56
9.57 -if [[ $AS_ROOT ]]; then
9.58 +if [ "$AS_ROOT" ]; then
9.59 echo "Mounting filesystems..."
9.60 - $THIS_DIR/user-do$AS_ROOT mount -t proc proc /proc
9.61 + "$THIS_DIR/user-do$AS_ROOT" mount -t proc proc /proc
9.62 fi
9.63
9.64 echo "Updating package details and upgrading..."
9.65 -$THIS_DIR/user-do$AS_ROOT apt-get update
9.66 -$THIS_DIR/user-do$AS_ROOT apt-get upgrade
9.67 +"$THIS_DIR/user-do$AS_ROOT" apt-get update
9.68 +"$THIS_DIR/user-do$AS_ROOT" apt-get upgrade
9.69
9.70 -if [[ $AS_ROOT ]]; then
9.71 +if [ "$AS_ROOT" ]; then
9.72 echo "Configuring a root installation..."
9.73 - $THIS_DIR/user-do$AS_ROOT apt-get install locales console-data
9.74 - $THIS_DIR/user-do$AS_ROOT dpkg-reconfigure locales
9.75 - $THIS_DIR/user-do$AS_ROOT dpkg-reconfigure tzdata
9.76 - $THIS_DIR/user-do$AS_ROOT dpkg-reconfigure console-data
9.77 + "$THIS_DIR/user-do$AS_ROOT" apt-get install locales console-data
9.78 + "$THIS_DIR/user-do$AS_ROOT" dpkg-reconfigure locales
9.79 + "$THIS_DIR/user-do$AS_ROOT" dpkg-reconfigure tzdata
9.80 + "$THIS_DIR/user-do$AS_ROOT" dpkg-reconfigure console-data
9.81
9.82 echo "Unmounting filesystems..."
9.83 - $THIS_DIR/user-do$AS_ROOT umount /proc
9.84 + "$THIS_DIR/user-do$AS_ROOT" umount /proc
9.85 fi
10.1 --- a/user-setup Sun May 30 19:47:11 2010 +0200
10.2 +++ b/user-setup Thu May 26 23:55:42 2011 +0200
10.3 @@ -11,7 +11,7 @@
10.4 exit 1
10.5 fi
10.6
10.7 -if [[ $1 == "--help" ]]; then
10.8 +if [ "$1" == "--help" ]; then
10.9 echo "Usage: user-setup [ --root ] [ <mirror> ]"
10.10 echo
10.11 echo "Examples:"
10.12 @@ -23,18 +23,18 @@
10.13 exit 1
10.14 fi
10.15
10.16 -if [[ $1 && $1 == '--root' ]]; then
10.17 +if [[ "$1" && "$1" == '--root' ]]; then
10.18 export AS_ROOT=' --root'
10.19 - export MIRROR=$2
10.20 + export MIRROR="$2"
10.21 else
10.22 - export MIRROR=$1
10.23 + export MIRROR="$1"
10.24 fi
10.25
10.26 -if [[ $AS_ROOT ]]; then
10.27 - debootstrap --include=gnupg,$KEYRING $USERINSTALL_CODENAME $PACKAGEROOT $MIRROR
10.28 +if [ "$AS_ROOT" ]; then
10.29 + debootstrap --include="gnupg,$KEYRING" "$USERINSTALL_CODENAME" "$PACKAGEROOT" "$MIRROR"
10.30 else
10.31 - fakeroot fakechroot $FAKECHROOT_OPTIONS debootstrap --variant=fakechroot --include=gnupg,$KEYRING \
10.32 - $USERINSTALL_CODENAME $PACKAGEROOT $MIRROR
10.33 + fakeroot fakechroot $FAKECHROOT_OPTIONS debootstrap --variant=fakechroot --include="gnupg,$KEYRING" \
10.34 + "$USERINSTALL_CODENAME" "$PACKAGEROOT" "$MIRROR"
10.35 fi
10.36
10.37 echo
11.1 --- a/user-to-uml Sun May 30 19:47:11 2010 +0200
11.2 +++ b/user-to-uml Thu May 26 23:55:42 2011 +0200
11.3 @@ -13,35 +13,35 @@
11.4
11.5 echo "Removing any linked /dev entry..."
11.6 if [ -h "$PACKAGEROOT/dev" ]; then
11.7 - rm $PACKAGEROOT/dev
11.8 - mkdir $PACKAGEROOT/dev
11.9 + rm "$PACKAGEROOT/dev"
11.10 + mkdir "$PACKAGEROOT/dev"
11.11 fi
11.12
11.13 cp /dev/MAKEDEV $PACKAGEROOT/dev
11.14
11.15 echo "Removing any linked /proc entry..."
11.16 if [ -h "$PACKAGEROOT/proc" ]; then
11.17 - rm $PACKAGEROOT/proc
11.18 - mkdir $PACKAGEROOT/proc
11.19 + rm "$PACKAGEROOT/proc"
11.20 + mkdir "$PACKAGEROOT/proc"
11.21 fi
11.22
11.23 echo "Using a special fstab..."
11.24 if [ -e "$PACKAGEROOT/etc/fstab" ]; then
11.25 if [ ! -e "$PACKAGEROOT/etc/fstab.orig" ]; then
11.26 - mv $PACKAGEROOT/etc/fstab $PACKAGEROOT/etc/fstab.orig
11.27 + mv "$PACKAGEROOT/etc/fstab" "$PACKAGEROOT/etc/fstab.orig"
11.28 fi
11.29 fi
11.30 -cp `dirname $0`/UML/fstab $PACKAGEROOT/etc/fstab
11.31 +cp "`dirname $0`/UML/fstab" "$PACKAGEROOT/etc/fstab"
11.32
11.33 # Tweak the inittab to only use tty0 and add it to securetty.
11.34 echo "Reconfiguring the console settings..."
11.35 if [ ! -e "$PACKAGEROOT/etc/inittab.orig" ]; then
11.36 - cp $PACKAGEROOT/etc/inittab $PACKAGEROOT/etc/inittab.orig
11.37 - grep -v "getty" $PACKAGEROOT/etc/inittab.orig > $PACKAGEROOT/etc/inittab
11.38 - echo "# We launch just one console for UML:" >> $PACKAGEROOT/etc/inittab
11.39 - echo "c0:1235:respawn:/sbin/getty 38400 tty0 linux" >> $PACKAGEROOT/etc/inittab
11.40 + cp "$PACKAGEROOT/etc/inittab" "$PACKAGEROOT/etc/inittab.orig"
11.41 + grep -v "getty" "$PACKAGEROOT/etc/inittab.orig" > "$PACKAGEROOT/etc/inittab"
11.42 + echo "# We launch just one console for UML:" >> "$PACKAGEROOT/etc/inittab"
11.43 + echo "c0:1235:respawn:/sbin/getty 38400 tty0 linux" >> "$PACKAGEROOT/etc/inittab"
11.44
11.45 - echo "# UML modification: use tty0 or vc/0" >> $PACKAGEROOT/etc/securetty
11.46 - echo "tty0" >> $PACKAGEROOT/etc/securetty
11.47 - echo "vc/0" >> $PACKAGEROOT/etc/securetty
11.48 + echo "# UML modification: use tty0 or vc/0" >> "$PACKAGEROOT/etc/securetty"
11.49 + echo "tty0" >> "$PACKAGEROOT/etc/securetty"
11.50 + echo "vc/0" >> "$PACKAGEROOT/etc/securetty"
11.51 fi
12.1 --- a/userinstall-defaults Sun May 30 19:47:11 2010 +0200
12.2 +++ b/userinstall-defaults Thu May 26 23:55:42 2011 +0200
12.3 @@ -16,5 +16,5 @@
12.4
12.5 # Configuration details for building and using a personal package manager.
12.6
12.7 -export PACKAGEROOT=$HOME/.userinstall
12.8 +export PACKAGEROOT="$HOME/.userinstall"
12.9 export KEYRING=$(echo $USERINSTALL_ID | tr '[:upper:]' '[:lower:]')-keyring
13.1 --- a/userinstall-defaults-uml Sun May 30 19:47:11 2010 +0200
13.2 +++ b/userinstall-defaults-uml Thu May 26 23:55:42 2011 +0200
13.3 @@ -12,7 +12,7 @@
13.4
13.5 # Configuration details for building a UML instance.
13.6
13.7 -export UMLROOT=$HOME/.userinstall-uml
13.8 +export UMLROOT="$HOME/.userinstall-uml"
13.9
13.10 # Optional settings.
13.11 # Guest: the address used inside the UML instance