I am trying to boot from iPXE to WDS, but i got a bug:
when i use this command to get wdsnbp.com
[undefined=undefined]boot tftp://10.118.0.2/boot\x86\wdsnbp.com[/undefined]
they tell me "Error 0x3d126001."
i use this command at Windows cmd
[undefined=undefined]tftp -i 10.118.0.2 GET Boot\x86\wdsnbp.com[/undefined]
they tell me "Transport success"
why?
i did watch WDS log, found this:
when i use ipxe boot command, WDS log is:
[WDSServer/WDSTFTP] TFTPParse[Request]: OpCode=1, File=/boot\x86\wdsnbp.com, Mode=1, BlkSize=1432, WinSize=1, Timeout=2, TSize=0, MsftWindow=0
and report error:
[WDSServer/WDSTFTP] TFTPConstruct[ERROR]: Code=4(0x4), Desc=`Access violation.`
when i use cmd tftp command, WDS log is:
[WDSServer/WDSTFTP] TFTPParse[Request]: OpCode=1, File=boot\x86\wdsnbp.com, Mode=1, BlkSize=512, WinSize=1, Timeout=2, TSize=0, MsftWindow=0
and success, no error.
i'm so sorry, my english is rusty.
Looking at
http://ipxe.org/err/3d1260 it seems like this issue is related to the TFTP server not accepting the command, which I'm asusming is because the URL is not proper. Try to replace \ with %5C and see how that works.
(2014-04-18 13:21)robinsmidsrod Wrote: [ -> ]Looking at http://ipxe.org/err/3d1260 it seems like this issue is related to the TFTP server not accepting the command, which I'm asusming is because the URL is not proper. Try to replace \ with %5C and see how that works.
thanks, but i think the probleam is WDS not accept "/" to be root, and OpenTFTPServer has no plobleam, so, i modify tftp.c
PHP Code:
static int tftp_send_rrq ( struct tftp_request *tftp ) {
const char *path = tftp->uri->path;
modify to:
PHP Code:
static int tftp_send_rrq ( struct tftp_request *tftp ) {
const char *path = tftp->uri->path + 1;
it works!
(2014-04-19 01:52)BloodFox Wrote: [ -> ]thanks, but i think the probleam is WDS not accept "/" to be root, and OpenTFTPServer has no plobleam, so, i modify tftp.c
I can confirm that this is indeed the case. The preceding forward slash causes this to stop working with WDS.
It seems this has been introduced in the past couple of years, as the commit from 2008 specifies otherwise (I can't find anything more recent and the code has drastically been re-factored since then):
https://git.ipxe.org/ipxe.git/commit/481...80fc60fd06
I had to modify the above to allow any other files to work (as the above will always remove the first character). This code will only remove a character if there is a preceding slash. This format still works with other tftp servers and allows WDS to work.
In tftp.c:
Code:
static int tftp_send_rrq ( struct tftp_request *tftp ) {
const char *path;
if ( strncmp (tftp->uri->path, "/", 1) == 0 ) {
path = tftp->uri->path + 1;
} else {
path = tftp->uri->path;
}
This is obviously a hacky fix, but it allows WDS to work with existing iPXE environments.
(2014-03-27 09:36)BloodFox Wrote: [ -> ]I am trying to boot from iPXE to WDS, but i got a bug:
when i use this command to get wdsnbp.com
[undefined=undefined]boot tftp://10.118.0.2/boot\x86\wdsnbp.com[/undefined]
they tell me "Error 0x3d126001."
i use this command at Windows cmd
[undefined=undefined]tftp -i 10.118.0.2 GET Boot\x86\wdsnbp.com[/undefined]
they tell me "Transport success"
why?
i did watch WDS log, found this:
when i use ipxe boot command, WDS log is:
[WDSServer/WDSTFTP] TFTPParse[Request]: OpCode=1, File=/boot\x86\wdsnbp.com, Mode=1, BlkSize=1432, WinSize=1, Timeout=2, TSize=0, MsftWindow=0
and report error:
[WDSServer/WDSTFTP] TFTPConstruct[ERROR]: Code=4(0x4), Desc=`Access violation.`
when i use cmd tftp command, WDS log is:
[WDSServer/WDSTFTP] TFTPParse[Request]: OpCode=1, File=boot\x86\wdsnbp.com, Mode=1, BlkSize=512, WinSize=1, Timeout=2, TSize=0, MsftWindow=0
and success, no error.
i'm so sorry, my english is rusty.
Hello.
I was just suffering from this TFTP problem with my Windows Server 2012 Essentials. But I've found a solution that has solved it for me, perhaps you can solve yours too by visiting this post:
http://social.technet.microsoft.com/Foru...erversetup
It talks about modification in the registry to allow normal slashes to be used.
Thank you.
When compiling ipxe tag 1.20.1 I have the following error when running (only tested those):
make bin/undionly.kpxe
make bin-x86_64-efi/ipxe.efi
drivers/net/intelvf.c: In function ‘intelvf_mbox_poll’:
drivers/net/intelvf.c:80:13: error: array subscript i is outside array bounds of ‘uint32_t[0]’ {aka ‘unsigned int[]’} [-Werror=array-bounds]
80 | msg->dword[i] = readl ( intel->regs + intel->mbox.mem +
| ~~~~~~~~~~^~~
In file included from drivers/net/intelvf.c:32:
drivers/net/intelvf.h:135:11: note: while referencing ‘dword’
135 | uint32_t dword[0];
| ^~~~~
drivers/net/intelvf.c:98:20: note: defined here ‘msg’
98 | union intelvf_msg msg;
| ^~~
cc1: all warnings being treated as errors
make: *** [Makefile.housekeeping:946: bin/intelvf.o] Error 1