Index: vm-install-0.5.15/src/vminstall/VMPXE.py
===================================================================
--- vm-install-0.5.15.orig/src/vminstall/VMPXE.py
+++ vm-install-0.5.15/src/vminstall/VMPXE.py
@@ -64,7 +64,7 @@ def getServAddr(options):
         line1 = lines[0]
         words = line1.split()
         bridge = words[0]
-        
+
     log.debug("getServAddr: bridge: %s " % (bridge))
     udhcp_result=commands.getstatusoutput(udhcpc_command +
                                " -i " + bridge +
@@ -89,6 +89,7 @@ class VMPXE(VMLinux):
     global kernel_list
     global initrd_list
     global pxe_label
+    global tftp_flag
 
     def __init__(self):
         self.__initialized = True
@@ -96,6 +97,12 @@ class VMPXE(VMLinux):
     pxe_label=''
     kernel_list={}
     initrd_list={}
+    if os.path.exists('/usr/bin/tftp'):
+        tftp_flag = True
+    elif os.path.exists('/usr/bin/atftp'):
+        tftp_flag = False
+    else:
+        tftp_flag = None
 
     def _getMediaRoots(self, root, _open=open):
         """Network install sources may be composed of multiple CDs.  YaST lists
@@ -180,13 +187,17 @@ class VMPXE(VMLinux):
         return (None, None)
 
     def getPXEconfigFromPXEserver(self, options):
+        if tftp_flag is None:
+            raise PXEError(PXEError.E_NO_TFTP)
         try:
             servaddr=getServAddr(options)
         except Exception, e:
             raise e
         os.chdir(vminstall.paths.imagedir)
-        commandstr="tftp "+servaddr+" -c get pxelinux.cfg/default"
-        #commandstr="atftp -g -r pxelinux.cfg/default -l default 147.2.207.153" #for test
+        if tftp_flag is True:
+            commandstr="tftp "+servaddr+" -c get pxelinux.cfg/default"
+        else:
+            commandstr="atftp -g -r pxelinux.cfg/default -l default " + servaddr
         cfgfilename="default"
         getpxeres=commands.getstatusoutput(commandstr)
         if not tftp_success(getpxeres) or not os.path.exists(cfgfilename):
@@ -235,8 +246,10 @@ class VMPXE(VMLinux):
             raise PXEError(PXEError.E_NO_KERNEL)
         log.debug('k/i: %s, %s'% (kernel_list[options.pxe_label], initrd_list[options.pxe_label]))
         for i in [kernel_list[options.pxe_label], initrd_list[options.pxe_label]]:
-            cmd="tftp "+servaddr+" -c get "+ i + " " + os.path.basename(i)+ "." + str(os.getpid())
-            #cmd="tftp 147.2.207.153 -c get "+ i #for test 
+            if tftp_flag is True:
+                cmd="tftp "+servaddr+" -c get "+ i + " " + os.path.basename(i)+ "." + str(os.getpid())
+            else:
+                cmd="atftp -g -r " + i + " -l " + os.path.basename(i) + "." + str(os.getpid()) + " " + servaddr
             dlres[i]=commands.getstatusoutput(cmd)
             if not tftp_success (dlres[i]):
                 success=0
@@ -293,7 +306,8 @@ class VMPXE(VMLinux):
         XML file."""
         ay = guest.options.os_settings
         if not ay or ay.startswith('ftp://') or ay.startswith('tftp://') or \
-                     ay.startswith('http://') or ay.startswith('nfs://'):
+                     ay.startswith('http://') or ay.startswith('nfs://') or \
+                     ay.startswith('atftp://'):
             pass
         else:
             (fd, tmpdisk) = tempfile.mkstemp(prefix='autoyast.')
@@ -361,7 +375,8 @@ class VMPXE(VMLinux):
         ay = options.os_settings
         if ay:
             if ay.startswith('ftp://') or ay.startswith('tftp://') or \
-               ay.startswith('http://') or ay.startswith('nfs://'):
+               ay.startswith('http://') or ay.startswith('nfs://') or \
+               ay.startswith('atftp://'):
                 pxeargs += ' autoyast=%s' % (ay,)
             else:
                 ay_vdev = autoyast_vdev
Index: vm-install-0.5.15/src/vminstall/msg.py
===================================================================
--- vm-install-0.5.15.orig/src/vminstall/msg.py
+++ vm-install-0.5.15/src/vminstall/msg.py
@@ -282,6 +282,7 @@ pxe_no_pxe_server = _("Can't reach the p
 pxe_no_config = _("Can't get the pxelinux.cfg/default file from the pxe server.")
 pxe_no_kernel = _("Can't download the kernel and initrd from the server.")
 pxe_kernel_warn = _("This kernel image may not be a paravirtualized xen kernel required for installation, Continue?")
+pxe_no_tftp = _("Paravirtualized PXE booting requires the use of tftp or atftp.  Please install one of these packages.")
 
 # Network
 nic_e100 = _("Fully Virtualized Intel e100")
Index: vm-install-0.5.15/src/vminstall/exceptions.py
===================================================================
--- vm-install-0.5.15.orig/src/vminstall/exceptions.py
+++ vm-install-0.5.15/src/vminstall/exceptions.py
@@ -215,12 +215,14 @@ class PXEError(Error):
         msg.pxe_no_pxe_server,
         msg.pxe_no_config,
         msg.pxe_no_kernel,
-        msg.pxe_kernel_warn)
+        msg.pxe_kernel_warn,
+        msg.pxe_no_tftp)
     (E_NO_SERVER,
      E_NO_CONFIG,
      E_NO_KERNEL,
-     E_KERNEL_WARN
-     ) = range(4)
+     E_KERNEL_WARN,
+     E_NO_TFTP
+     ) = range(5)
 
     def __init__(self, err, details=None):
         Error.__init__(self, err, title=self.titles[err], details=details)
