diff --git a/xCAT-server/share/xcat/netboot/add-on/statelite/rc.localdisk b/xCAT-server/share/xcat/netboot/add-on/statelite/rc.localdisk
new file mode 100644
index 000000000..d6c7883b9
--- /dev/null
+++ b/xCAT-server/share/xcat/netboot/add-on/statelite/rc.localdisk
@@ -0,0 +1,280 @@
+#! /bin/sh
+
+MNTDIR="/sysroot"
+
+PARTLOG=/tmp/partlog
+PARTFILE=/tmp/partition
+SCRIPTFILE=/tmp/partscript
+
+disk=0
+localspace=0
+swapspace=0
+partnum=0
+
+isscript=0
+isformat=0
+
+# Get the xCAT server from kernel parameter
+for i in `cat /proc/cmdline`; do
+ KEY=`echo $i | awk -F= '{print $1}'`
+ if [ x"$KEY" = x"XCAT" ]; then
+ XCATSERVER=`echo $i | awk -F= '{print $2}'`
+ elif [ x"$KEY" = x"PARTITION" ]; then
+ DOPART="yes"
+ fi
+done
+
+if [ x"$DOPART" != x"yes" ]; then
+ # do nothing
+ echo "local disk: do nothing"
+ exit 0
+fi
+
+if [ x$XCATSERVER = x ]; then
+ echo "Error: Cannot find the xCAT server to configure local disk."
+ exit 1
+fi
+
+xCATCmd () {
+# $1 is the xCAT server
+# $2 is the command
+ arch=`uname -m`
+ if [ x$arch = x"ppc64" ]; then
+ echo "\n${2}\n" | /usr/sbin/chroot ${MNTDIR} /usr/bin/openssl s_client -quiet -connect ${1} -rand /bin/nice 2>/dev/null
+ else
+ echo "\n${2}\n" | LD_LIBRARY_PATH=${MNTDIR}/lib64:${MNTDIR}/usr/lib64 ${MNTDIR}/usr/bin/openssl s_client -quiet -connect ${1} -rand /bin/nice 2>/dev/null
+ fi
+}
+
+doconfigure () {
+ # run the configure script
+ if [ $isscript -eq 1 ]; then
+ # run the script
+ chmod +x $SCRIPTFILE
+ $SCRIPTFILE
+ exit 0
+ fi
+
+ if [ x"$enable" != x"yes" ]; then
+ exit 1
+ fi
+ if [ $disk -eq 1 ]; then
+ if [ x"$enablepart" != x"yes" ]; then
+ return
+ fi
+ if [ ! -r $dev ]; then
+ echo "Error: Cannot find the device $dev"
+ exit 1
+ fi
+ if [ ! -r "/sbin/parted" -a ! "/usr/sbin/parted" ]; then
+ echo "Error: Cannot get parted command to do the partitioning for local disk"
+ exit 1
+ fi
+
+ # remove all the partitions on the device
+ # the output of parted -l -s -m should like
+ #BYT;
+ ##/dev/sda:73.4GB:scsi:512:512:msdos:IBM-ESXS ST373455SS;
+ ##1:1049kB:72.3GB:72.3GB:ext4::boot;
+ ##2:72.3GB:73.4GB:1073MB:linux-swap(v1)::;
+
+ `parted -lsm > $PARTLOG`
+ getpart=0
+ while read PLINE
+ do
+ msg=`echo $PLINE | grep 'unrecognised disk label'`
+ if [ x"$msg" != x ]; then
+ devname=`echo $PLINE | awk -F' ' '{print $2}' | sed -e "s/://g"`
+
+ if [ x$devname = x"$dev" ]; then
+ #create the label
+ `parted -s $dev mklabel msdos`
+ fi
+ fi
+ done < $PARTLOG
+
+ `parted -lsm > $PARTLOG`
+
+ partinfo=`parted -lsm`
+ # Verbose message
+ echo "Original partition list"
+ echo $partinfo
+
+ getpart=0
+ while read PLINE
+ do
+ name=`echo $PLINE | awk -F: '{print $1}'`
+ if [ x"$name" = x"BYT;" ]; then
+ if [ $getpart -eq 1 ]; then
+ #getpart=0
+ break
+ fi
+ fi
+ if [ x"$name" = x"$dev" ]; then
+ getpart=1
+ localdisksize=`echo $PLINE | awk -F: '{print $2}'`
+ echo "localdisk: $localdisk - $localdisksize"
+ elif [ $getpart -eq 1 -a x$name != "x" -a x$name != x"Error" ]; then
+ if [ x$clear != x ]; then
+ `parted $dev rm $name >/dev/null`
+ echo "Remove the partion $name"
+ sleep 1
+ else
+ partnum=`expr $partnum + 1`
+ fi
+ fi
+ done < $PARTLOG
+
+ if [ $getpart -eq 0 ]; then
+ echo "Error: Cannot get partition information for $dev"
+ exit 1
+ fi
+
+ # make the partition
+ parts=`echo $parts | sed -e 's/ //g' | sed -e 's/,/ /g'`
+ endpoint=0
+ for part in $parts
+ do
+ if echo $part | grep '-'; then
+ # should be format 10G-20G
+ start=`echo $part |awk -F- '{print $1}'`
+ end=`echo $part |awk -F- '{print $2}'`
+ echo "Create partition $start - $end"
+ `parted -s $dev mkpart primary $start $end > /dev/null`
+ sleep 1
+ else
+ # should be a number which is the percentage of the total
+ # compute the space depend on the size of disk
+ ldsize=`echo $localdisksize | sed "s/\([0-9\.]*\).*/\1/"`
+ ldunit=`echo $localdisksize | sed "s/[0-9\.]*//" | sed "s/\(.\).*/\1/"`
+ partsize=`echo "$ldsize * $part" | bc`
+ partsize=`echo "$partsize / 100" | bc`
+ start=$endpoint$ldunit
+ endpoint=`expr $endpoint + $partsize`
+ end=$endpoint$ldunit
+ echo "Create partition $start - $end: $fstype"
+ `parted -s $dev mkpart primary $start $end > /dev/null`
+ sleep 1
+ fi
+
+ # create the filesystem
+ if [ x$fstype = x ]; then
+ fstype=ext3
+ fi
+ partnum=`expr $partnum + 1`
+ partdev=$dev$partnum
+ echo "Create filesystem $fstype on $partdev"
+ `mke2fs -q $partdev -t $fstype > /dev/null`
+ sleep 1
+ done
+ elif [ $localspace -eq 1 ]; then
+ if [ x$fstype = x ]; then
+ fstype=ext3
+ fi
+ echo "Mount $dev to /.sllocal with $fstype"
+ `mount -t $fstype $dev $MNTDIR/.sllocal`
+ elif [ $swapspace -eq 1 ]; then
+ echo "Create swap on $dev"
+ `mkswap $dev > /dev/null`
+ echo "Enable swap on $dev"
+ `swapon $dev`
+ fi
+}
+
+xCATCmd $XCATSERVER getpartition \
+ | sed -e 's/<[^>]*>//g' \
+ | egrep -v '^ *$' \
+ | egrep -v '^#.*$' \
+ | sed -e 's/^ *//' \
+ > $PARTFILE
+
+MAX_RETRIES=15
+RETRY=0
+while [ ! -s $PARTFILE ]; do
+ # the file is empty, we should retry several times
+ RETRY=$(( $RETRY+1 ))
+ if [ $RETRY -eq $MAX_RETRIES ]; then
+ echo "Error: Cannot get the partition configuration file from xCAT server."
+ exit 1
+ fi
+
+ SLI=$(( $RANDOM%50 ))
+ sleep $SLI
+
+ xCATCmd $XCATSERVER getpartition \
+ | sed -e 's/<[^>]*>//g' \
+ | egrep -v '^ *$' \
+ | sed -e 's/^ *//' \
+ > $PARTFILE
+done
+
+# Parse the argument from the partition file
+while read LINE
+do
+ if [ x$firstline = x ]; then
+ firstline=$LINE
+ # the format of first line should be: type=script|format
+ key=`echo \$firstline |awk -F= '{print \$1}'`
+ if [ x$key != x"type" ]; then
+ echo "Error: Cannot recognize the format of the parition configuration file."
+ exit 1
+ fi
+ value=`echo \$firstline |awk -F= '{print \$2}'`
+ if [ x$value = x"script" ]; then
+ isscript=1
+ elif [ x$value = x"format" ]; then
+ isformat=1
+ fi
+ continue
+ fi
+ if [ $isscript -eq 1 ]; then
+ echo $LINE | sed -e 's/<//g' -e 's/&/&/g' -e 's/"/"/g' -e "s/'/'/g" >> $SCRIPTFILE
+ elif [ $isformat -eq 1 ]; then
+ # parse the attributes for the partition configuration
+ if [ x$LINE = x"[disk]" ]; then
+ doconfigure
+ disk=1
+ partnum=0
+ localspace=0
+ swapspace=0
+ fstype=""
+ dev=""
+ clear=""
+ parts=""
+ elif [ x$LINE = x"[localspace]" ]; then
+ doconfigure
+ disk=0
+ localspace=1
+ swapspace=0
+ dev=""
+ fstype=""
+ elif [ x$LINE = x"[swapspace]" ]; then
+ doconfigure
+ disk=0
+ localspace=0
+ swapspace=1
+ dev=""
+ else
+ key=`echo \$LINE |awk -F= '{print \$1}'`
+ value=`echo \$LINE |awk -F= '{print \$2}'`
+ if [ x$key = x"dev" ]; then
+ dev=$value
+ elif [ x$key = x"clear" ]; then
+ clear=$value
+ elif [ x$key = x"parts" ]; then
+ parts=$value
+ elif [ x$key = x"fstype" ]; then
+ fstype=$value
+ elif [ x$key = x"enable" ]; then
+ enable=$value
+ if [ x$enable != x"yes" ]; then
+ exit 1
+ fi
+ elif [ x$key = x"enablepart" ]; then
+ enablepart=$value
+ fi
+ fi
+ fi
+done < $PARTFILE
+doconfigure
+