iPXE discussion forum
iPXE with SCCM Chaining - Printable Version

+- iPXE discussion forum (https://forum.ipxe.org)
+-- Forum: iPXE user forums (/forumdisplay.php?fid=1)
+--- Forum: General (/forumdisplay.php?fid=2)
+--- Thread: iPXE with SCCM Chaining (/showthread.php?tid=3733)



iPXE with SCCM Chaining - bshogeman - 2012-08-07 14:47

Changing the DHCP scope settings, booting iPXE and loading a script from a HTTP server all are no problem.. But now chaining SCCM..

Script used in php:
<?php
header ( "Content-type: text/plain" );
echo "#!gpxe\n\n";
echo "isset \${ip} || dhcp || echo DHCP failed\n";
echo "prompt --key 0x02 --timeout 2000 Press Ctrl-B for the iPXE command line... && shell ||\n";
echo "imgfree\n";
echo "set next-server 172.20.52.1\n";
echo "echo Asset: \${asset} Serial: \${serial}.\n";
echo "cpuid --ext 29 && set arch x64 || set arch x86\n";
echo "chain boot\\\${arch}\wdsnbp.com\n";
echo "boot\n";
echo "exit\n";
?>

Just as simple as possible for the moment..
Where it failed is the chain loading. It gives a file not found.
When pressing Ctrl-B and give above command's by hand there is no problem. The F12 prompt from SCCM is shown with all other useless info sccm always gives at the prompt. But from the script it is a problem.
Except when you embed it, then it runs fine as well, but then the webserver don't get the request with the additional strings and the whole point of using ipxe is gone.

What can be the problem?
Why load iPXE in between? I use the script url to pass some variables to a inventory database. Yes this isn't shown in above php script yet but let it work first Smile And at the last point if all works fine add a option to boot a simple freedos image for bios maintanance.


RE: iPXE with SCCM Chaining - robinsmidsrod - 2012-08-08 11:35

I noticed this question was also asked on the mailing-list, please pay attention to the answers given there. http://lists.ipxe.org/pipermail/ipxe-devel/2012-August/001700.html


RE: iPXE with SCCM Chaining - bshogeman - 2012-08-08 13:22

(2012-08-08 11:35)robinsmidsrod Wrote:  Why are you using PHP at all? From what I can see, this is just a static
iPXE script, and might as well be served as a plain text file.

Because I didn't go trough with it when the most simple script didn't boot as supposed. Debugging only come very complex for something that already didn't work in the most simple version.
The url where the script is located is: http://inventory.somehostname.nl/boot.php?hostname=${hostname}&manufacturer=${manufacturer}&product=${product}&mac=${net0/mac}&serial=${serial:uristring}&asset=${asset:uristring}
All strings I want to save in a database. So that is always complete. Even when a pc isn't installed yet or not booting windows correctly.
The advanced version that can select on vlan (ip range) show a prompt or not and check if asset is set and the guid is unique, if not load a freedos image and prompt for these settings.

(2012-08-08 11:35)robinsmidsrod Wrote:  The Microsoft WDS binaries does not use the traditional PXE interface to
fetch files, it uses TFTP explicitly. You also need a TFTP server that
supports that backslash hack, like tftpd-hpa (in Ubuntu).

I've used this URL to ensure WDS is loaded correctly:
chain tftp://${next-server}/%5CBoot%5CPXE%5Cpxeboot.n12
The folder PXE doesn't exist by default. Thats why I used ${arch} to select the folder x64 or x86 where the file is located and do exist by default.
But replacing the slaches is worth trying. The responce that ipxe give has also %5C in it so why not use it in the command in the first place.
So in my case the result is:

echo "chain tftp://\${next-server}/%5CBoot%5C\${arch}%5Cwdsnbp.com\n";

And yes it works! I want a prompt for F12 so I didn't use pxeboot.n12
Also the Auto-Add policy is enabled so I must use Wdsnbp.com
But it works fine now. And because the next-server is the same server where all started it causes no problems.
Microsoft's WDSTFTP Server also does support folders. But you must enable access to them first by modifying the ReadFilter field in the windows register. Use of a wildcard isn't recursively. It doesn't include subfolders.

Thanks for your help and all info. It really helped a lot.
Now test it with a pc that is still unknown in SCCM Smile