diff --git a/xCAT/postscripts/enablekdump b/xCAT/postscripts/enablekdump
index f8092c8e6..9736d7c96 100755
--- a/xCAT/postscripts/enablekdump
+++ b/xCAT/postscripts/enablekdump
@@ -25,7 +25,7 @@ for i in `/bin/cat /proc/cmdline`; do
         MACX=`/sbin/ip link show $ETHX | /bin/grep ether | /bin/awk '{print $2}'`
         break
     elif [ "$KEY" = "BOOTIF" ]; then
-        MACX=`/bin/echo $i | /bin/awk -F= '{print $2}'`
+        MACX=`/bin/echo $i | /bin/awk -F= '{print $2}'|sed -e s/^01-// -e s/-/:/g`
         ETHX=`/sbin/ifconfig | /bin/grep -i $MACX | /bin/awk '{print $1}'`
         break
     fi
@@ -101,7 +101,11 @@ if [ ! -z "$DUMP" ]; then
 	if (pmatch $OSVER "sles*") || (pmatch $OSVER "suse*") || [ -f /etc/SuSE-release ]; then
             if (pmatch $OSVER "*10*"); then
                 #run mkinitrd to generater the kdump-init base
-                /sbin/mkinitrd -m "nfs nfs be2net e1000e ibmveth igb firmware_class tg3 e1000"
+                if (pmatch $ARCH "x86*"); then
+                    /sbin/mkinitrd -m "nfs tg3 bnx2 bnx2x e1000 e1000e igb mlx_en be2net af_packet firmware_class"
+                else
+                    /sbin/mkinitrd -m "nfs be2net e1000e ibmveth igb firmware_class tg3 e1000"
+                fi
                 /bin/mkdir -p /var/tmp/tempinit
                 cd /boot/
                 KDUMPINIT=`ls initrd-*-kdump`
@@ -111,28 +115,44 @@ if [ ! -z "$DUMP" ]; then
                 /bin/zcat ${KDUMPINIT} | /bin/cpio -id
                 /bin/rm -f ${KDUMPINIT}
                 mkdir -p ./var/lib/dhcpcd/
-                /bin/cp -r /lib/* ./lib/
-                /bin/cp "/sbin/ifconfig" "./bin/"
-                /bin/cp "/usr/bin/clear" "./bin/"
-                /bin/cp "/bin/touch" "./bin/"
-                /bin/cp "/bin/grep" "./bin/"
-                /bin/cp "/sbin/dhcpcd" "./bin/"
-                /bin/cp "/sbin/ip" "./bin/"
-                /bin/cp "/bin/awk" "./bin/"
-                /bin/cp "/bin/makedumpfile" "./bin/"
+                mkdir -p ./lib/udev/devices/
+                /bin/cp -r /lib/udev/devices/* ./lib/udev/devices/
+                for file in "/sbin/ifconfig /usr/bin/clear /bin/touch /bin/grep /sbin/dhcpcd /sbin/ip /bin/awk /bin/makedumpfile"
+                do
+                    for line in `ldd $file`
+                    do
+                        if [ ${line:0:1} = "/"  ]; then
+                            line=`echo $line | grep -v :`
+                            if [ $line ];then
+                                if [ ! -e .$line ];then
+                                    /bin/cp -L  $line .$line
+                                fi
+                            fi
+                        fi
+                    done
+                    /bin/cp $file "./bin/" 
+                 done
 
                 #modify the original init to support dump to an nfs server
                 cat > ./bin/dumpfile << EOF
 #!/bin/bash
 if [ -e /proc/vmcore ];then
     /bin/touch /var/lib/dhcpcd/dhcpcd-$ETHX.info
-    /bin/dhcpcd $ETHX
-    while ! /bin/ifconfig | /bin/grep inet; do
-        echo -e "Failed to acquire address, retrying"
-        /bin/sleep 2
+    for i in 1 2 3 4 5 6 7 8 9 10
+    do
         /bin/dhcpcd $ETHX
+        /bin/sleep 2
+        temp=\`/bin/ifconfig | /bin/grep inet\`
+        if [ -n "\$temp" ]; then
+            break
+        fi
+        echo -e "Failed to acquire address, retrying"
     done
 
+    if [ -z "\$temp" ];then
+        exit
+    fi
+
     HOSTNAME=`hostname`
 
     /bin/mkdir /mnt