From 58d0e64bf4aa04619f140febcaf47e1a906a9b5c Mon Sep 17 00:00:00 2001 From: hpa Date: Sun, 26 Sep 1999 07:24:26 +0000 Subject: [PATCH] Work on getting PXELINUX to work on PXE boot PROMs derived from the Intel PXE 2.0 PDK, which is apparently just as buggy as its predecessor, but has *different* bugs... --- pxelinux.asm | 26 +++++++++++++++++++------- pxelinux.doc | 5 ++++- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/pxelinux.asm b/pxelinux.asm index 0d83b36..34dfd8d 100644 --- a/pxelinux.asm +++ b/pxelinux.asm @@ -35,6 +35,7 @@ ; max_cmd_len equ 255 ; Must be odd; 255 is the kernel limit FILENAME_MAX equ 32 ; Including final null; should be a power of 2 +LOG_FILENAME_MAX equ 5 ; log2(FILENAME_MAX) REBOOT_TIME equ 5*60 ; If failure, time until full reset HIGHMEM_MAX equ 038000000h ; Highest address for an initrd HIGHMEM_SLOP equ 128*1024 ; Avoid this much memory near the top @@ -413,8 +414,13 @@ _start1: cmp dword [es:bx], 'PXEN' jne no_pxe cmp word [es:bx+4], 'V+' - jne no_pxe + je have_pxenv +no_pxe: mov si,err_nopxe + call writestr + jmp kaboom + +have_pxenv: mov si,found_pxenv call writestr @@ -426,13 +432,15 @@ _start1: cmp word [es:bx+6], 0201h ; API version 2.1 or higher jb old_api + mov si,bx + mov ax,es les bx,[es:bx+26h] ; !PXE structure pointer cmp dword [es:bx],'!PXE' je have_pxe -no_pxe: mov si,err_nopxe - call writestr - jmp kaboom + ; Nope, !PXE structure missing despite API 2.1+ + mov bx,si + mov es,ax old_api: ; Need to use a PXENV+ structure mov si,using_pxenv_msg @@ -482,6 +490,10 @@ query_bootp: mov ax,0DEADh ; Something bogus mov si,err_pxefailed call writestr call writehex4 + mov al, ' ' + call writechr + mov ax,[pxe_bootp_query_pkt.status] + call writehex4 call crlf .pxe_ok: mov si,myipaddr_msg @@ -865,7 +877,7 @@ pc_fkey1: xor cx,cx call getline ; Get filename to display pop si pop di - shl di,4 ; Multiply number by 16 + shl di,LOG_FILENAME_MAX ; Convert to offset add di,FKeyName call mangle_name ; Mangle file name jmp short parse_config_3 @@ -1053,7 +1065,7 @@ func_key: shr ax,8 show_help: ; AX = func key # (0 = F1, 9 = F10) mov cl,al - shl ax,4 ; Convert to x16 + shl ax,LOG_FILENAME_MAX ; Convert to offset mov bx,1 shl bx,cl and bx,[FKeyMap] @@ -3365,7 +3377,7 @@ err_bootsec db 'Invalid or corrupt boot sector image.', 13, 10, 0 err_a20 db 13, 10, 'A20 gate not responding!', 13, 10, 0 err_bootfailed db 13, 10, 'Boot failed: press a key to retry, or wait for reset...', 13, 10, 0 bailmsg equ err_bootfailed -err_nopxe db 'Cannot find !PXE structure, I want my mommy!' ,13, 10, 0 +err_nopxe db "No !PXE or PXENV+ API found; we're dead...", 13, 10, 0 err_pxefailed db 'PXE API call failed, error ', 0 err_udpinit db 'Failed to initialize UDP stack', 13, 10, 0 err_oldtftp db 'TFTP server does not support the tsize option', 13, 10, 0 diff --git a/pxelinux.doc b/pxelinux.doc index bdf1863..b444bee 100644 --- a/pxelinux.doc +++ b/pxelinux.doc @@ -107,7 +107,7 @@ with onboard Ethernet and "Intel LANDesk(R) Service Agent II version 0.99c", using ISC dhcpd 2.0. Unfortunately, this particular version of Intel LANDesk Service Agent -II seems to have a rather serious bug: it requests the TFTP "blksize" +II seems to have a rather serious bug : it requests the TFTP "blksize" option, but will be mortally confused if this option is actually accepted! There are two possible workarounds for this bug: @@ -126,6 +126,7 @@ accepted! There are two possible workarounds for this bug: 2. Add the following DHCP option: + THIS IS AN ILLEGAL OPTION - FIX THIS SECTION "option vendor-encapsulated-options 08:00:00:01:7f:00:00:01 ;" That line is not supposed to be necessary, and in fact makes @@ -134,6 +135,8 @@ accepted! There are two possible workarounds for this bug: boot PROM doesn't request the "blksize" option if it has already failed an MTFTP transfer, and thus the bug is avoided. +It appears this bug was fixed in version 0.99h. + ++++ SOME NOTES ++++ -- 2.7.4