I'm working on a SLES 11.2 autoinstall for one of our products. It is mostly working except for 2 items that I can't figure out.
1) The udev rules for ethernet interfaces is not matching what I specify. In my autoinst.xml I have:

<net-udev config:type="list">
<rule>
<name>eth0</name>
<rule>ID</rule>
<value>0000:01:00.0</value>
</rule><rule>
<name>eth1</name>
<rule>ID</rule>
<value>0000:01:00.1</value>
</rule><rule>
<name>eth2</name>
<rule>ID</rule>
<value>0000:84:00.0</value>
</rule>
<rule>
<name>eth3</name>
<rule>ID</rule>
<value>0000:84:00.1</value>
</rule>
</net-udev>

I can see in y2log-1 that it read in those values:

2013-07-30 09:17:27 <1> linux(3583) [YCP] LanUdevAuto.ycp:140 net-udev rules:[$["name":"eth2", "rule":"ID", "value":"0000:84:00.0"], $["name":"eth3", "rule":"ID", "value":"0000:84:00.1"], $["name":"eth0", "rule":"ID", "value":"0000:01:00.0"], $["name":"eth1", "rule":"ID", "value":"0000:01:00.1"]]

However, once the installation is complete, the interfaces are in the wrong order, and 70-persistent-net.rules looks like this:

# PCI device 0x8086:0x105e (e1000e)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="68:05:ca:14:da:fa", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x10c9 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:c3:37:0d", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"

# PCI device 0x8086:0x10c9 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:c3:37:0c", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x8086:0x105e (e1000e)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="68:05:ca:14:da:fb", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"

So what should have been eth0-eth2 winds up being eth1, eth3, eth0, eth2.

2) I'm getting double entries in /boot/grub/menu.lst, plus extra items in the kernel lines.

autoinst.xml contains:

<bootloader>
<device_map config:type="list">
<device_map_entry>
<firmware>hd0</firmware>
<linux>/dev/sda</linux>
</device_map_entry>
<device_map_entry>
<firmware>hd1</firmware>
<linux>/dev/sdb</linux>
</device_map_entry>
</device_map>
<global>
<activate>true</activate>
<boot_mbr>true</boot_mbr>
<default>SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27</default>
<generic_mbr>false</generic_mbr>
<timeout config:type="integer">10</timeout>
<serial>--unit=0 --speed=115200 --word=8 --parity=no --stop=1</serial>
<terminal>--timeout=10 console serial</terminal>
</global>
<initrd_modules config:type="list">
(bunch of modules...)
</initrd_modules>
<loader_type>grub</loader_type>
<sections config:type="list">
<section>
<append>splash=0 crashkernel=256M-:128M@16M elevator=deadline console=ttyS0,115200n8 console=tty0 showopts</append>
<image>(hd0,0)/vmlinuz</image>
<initial>1</initial>
<initrd>(hd0,0)/initrd</initrd>
<name>SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27</name>
<original_name>linux</original_name>
<root>/dev/sda4</root>
<type>image</type>
<vgamode>0x314</vgamode>
</section>
<section>
<append>showopts ide=nodma apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe splash=0 console=ttyS0,115200n8 console=tty0 </append>
<image>(hd0,0)/vmlinuz</image>
<initrd>(hd0,0)/initrd</initrd>
<name>Failsafe -- SUSE LINUX </name>
<original_name>failsafe</original_name>
<root>/dev/sda4</root>
<type>image</type>
<vgamode>0x314</vgamode>
</section>
</sections>
</bootloader>

After install menu.lst looks like this:

# Modified by YaST2. Last modification on Tue Jul 30 09:31:21 EDT 2013
default 0
timeout 10
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
##YaST - activate
terminal --timeout=10 console serial

###Don't change this comment - YaST2 identifier: Original name: linux###
title SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27 (default)
root (hd0,0)
kernel /vmlinuz-3.0.13-0.27-default root=/dev/sda4 splash=0 crashkernel=256M-:128M@16M elevator=deadline console=ttyS0,115200n8 console=tty0 instmode=cd showopts vga=0x314
initrd /initrd-3.0.13-0.27-default

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27
root (hd0,0)
kernel /vmlinuz-3.0.13-0.27-default root=/dev/sda4 showopts ide=nodma apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe splash=0 console=ttyS0,115200n8 console=tty0 vga=0x314
initrd /initrd-3.0.13-0.27-default

###Don't change this comment - YaST2 identifier: Original name: linux###
title SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27 /boot/vmlinuz
root (hd0,0)
kernel /vmlinuz-3.0.13-0.27-default root=/dev/sda4 splash=0 crashkernel=256M-:128M@16M elevator=deadline console=ttyS0,115200n8 console=tty0 instmode=cd showopts vga=0x314
initrd /initrd-3.0.13-0.27-default

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- SUSE LINUX
root (hd0,0)
kernel /vmlinuz-3.0.13-0.27-default root=/dev/sda4 showopts ide=nodma apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe splash=0 console=ttyS0,115200n8 console=tty0 vga=0x314
initrd /initrd-3.0.13-0.27-default


Note the double entries for each section, plus the 'instmode=cd' tacked on the kernel line for the 'linux' section.

Lastly, I'm using a rules file and merging one of two config-specific xml files with an autoinst_common.xml file. When I do the merge by hand on the command line, the resulting xml file looks correct. Is there an option to make autoyast leave behind a copy of the xml file it used to install like you can when doing it manually ? I want to verify that it matches what I get by hand.

Appreciate any suggestions you guys can offer.