It has been a big pain for a long-time to install Windows from a Linux environment. I used to run a windows install server and it never worked right for some reason (the install would fail on most servers).
Before getting start be sure to setup your samba share so once you boot into WinPE you can mount the install for whatever Windows you want
path = /tftpboot/images/winstall
guest ok = yes
directory mask = 0775
It's much easier and stable to deploy all OS's using a Linux tftp and dhcpd server:
WinPE Boot with pxelinux
It requires pxelinux 6.04 or higher so I've included that in winpe-libs.tar.gz
#Extract it into your /tftpboot/
tar -zxvf winpe-tftp-root-libs.tar.gz
cp winpe-libs/* /tftpboot/
tar -zxvf winpe-tftp.tar.gz
Edit your /tftpboot/pxelinux.cfg/default
MENU TITLE WinPE
APPEND wimboot initrdfile=../images/winpe/bootmgr,../images/winpe/bcd,../images/winpe/boot.sdi,../images/winpe/boot.wim
#the next step is to make sure you have a samba or windows fileshare with the windows install you want
mkdir -p /tftpboot/images/winstall
#mount and copy the install you want
pxeboot the WinPE image then mount the remote share and install windows from it
If everything was done right you should be able to boot off your NIC, see the pxellinux menu for winpe and boot into it.
Once in WinPE type the following command to mount your install share:
net use z: \\192.168.5.20\winstall
Of course change the IP and "winstall" share name to match what you have on your network.
linux.c32: not a COM32R image this means your pxelinux is probably trying to open an image like Winpe with wimboot and is too old (upgrade to at least pxelinux 6.04. The pxelinux.0 file in the winpe-tftp.tar.gz file is from 6.04 so it will automatically update if you overwrite your pxelinux.0 file