Sep 072014
 

Latest Tiny PXE Server now handles the client system architecture (BIOS, UEFI x32, UEFI x64, etc …).

This allows one to provide the right boot filename based on the client architecture.

Below Tiny PXE Server will send pxeboot.n12 as boot filename (which will chain to bootmgr) and will indicate 00000\bcd as BCD file in BIOS mode.
If UEFI x64 (00007) is detected, and [arch] section filled in the config.ini, it will send bootx64.efi as boot filename and will indicate 00007\bcd as BCD.

See the [arch] section in the config.ini


[arch]
00006=bootia32.efi
00007=bootx64.efi

Tiny PXE Server

Discuss it here.

 Posted by at 18 h 26 min

  19 Responses to “Tiny PXE Server and UEFI booting”

  1. sorry but this version 18 does not work at all. basic pxe boot failed.

    full of log like this:
    Access violation at address 004C37F7 in module ‘pxesrv.exe’. Read of address 00000008

  2. latest version fixes the bug : Access violation at address 004C37F7 in module ‘pxesrv.exe’. Read of address 00000008

  3. Access violation now. but still failed when using EFI

    vmware bios
    10:33:28 ROOT=D:\
    10:33:28 DHCPd:67 started…
    10:33:28 TFPTd started…
    10:33:32 DHCPd:DISCOVER received, MAC:00-0C-29-C9-9A-28, XID:2AC99A28
    10:33:32 DHCPd:OFFER sent, IP:192.168.11.20, XID:2AC99A28
    10:33:34 DHCPd:REQUEST received, MAC:00-0C-29-C9-9A-28, XID:2AC99A28
    10:33:34 DHCPd:ACK sent, IP:192.168.11.20, XID:2AC99A28
    10:33:34 TFTPd:DoReadFile:ipxe.pxe B:1456 T:0

    this boot is OK

    vmware efi
    10:34:44 ROOT=D:\
    10:34:44 DHCPd:67 started…
    10:34:44 TFPTd started…
    10:34:50 DHCPd:DISCOVER received, MAC:00-0C-29-01-9D-1F, XID:A3A4CA83
    10:34:51 DHCPd:OFFER sent, IP:192.168.11.20, XID:A3A4CA83
    10:34:54 DHCPd:REQUEST received, MAC:00-0C-29-01-9D-1F, XID:A3A4CA83
    10:34:54 DHCPd:ACK sent, IP:192.168.11.20, XID:A3A4CA83

    no TFTP DoReadFile here. strange. boot failed.

    [5592] end
    [5592] start
    [5780] LoadTPDLL
    [5592] analysedata67:start, fromip=0.0.0.0, fromport:68
    [5592] analysedata67: status:1
    [5592] send_dhcpoffer:start
    [5592] makebootp_vend:start
    [5592] makebootp_vend:end
    [5592] send_dhcpoffer:end
    [5592] analysedata67:end
    [5592] analysedata67:start, fromip=0.0.0.0, fromport:68
    [5592] analysedata67: status:3
    [5592] send_dhcpACK:start, ip:192.168.11.20 server:192.168.11.1 proxy:0 arch:00007
    [5592] makebootp_vend:start
    [5592] makebootp_vend:end
    [5592] send_dhcpACK:end
    [5592] analysedata67:end

    since there’s no tftp downloading , can not know whether [arch ] part is working or not.

    don’t know what ‘XID:A3A4CA83’ means. maybe you could put detected arch 00007 in log window

    • I guess you meant ‘no more access violation’, right?

      About UEFI booting, make sure you have the following section in your config.ini :

      [arch]
      00006=bootia32.efi
      00007=bootx64.efi

      However, you are right, I will update the log so that it displays a warning if there is no match for the client arch.

      • sure, it’s ‘no more access violation’.

        and I’m sure the arch section exists in config.ini .

        no need to displays a warning if there is no match for the client arch.
        just display the arch.
        every boot has arch, 00000 or 00006 or 00007 …

  4. now from log it’s clear that arch detection is correct, but thers’s something wrong WITH tftp downloading.

    9:39:43 ROOT=files\
    9:39:43 DHCPd:67 started…
    9:39:43 TFPTd started…
    9:39:55 DHCPd:DISCOVER received, MAC:00-0C-29-01-9D-1F, XID:5D30E337
    9:39:55 DHCPd:OFFER sent, IP:192.168.11.2, XID:5D30E337
    9:39:58 DHCPd:REQUEST received, MAC:00-0C-29-01-9D-1F, XID:5D30E337
    9:39:59 DHCPd:Arch=00007
    9:39:59 DHCPd:ACK sent, IP:192.168.11.2, XID:5D30E337
    no more log

    Boot using UEFI failed. no tftp downloading.
    VMWARE showed this: PXE-E99 Unexpected network error.

    9:40:22 DHCPd:DISCOVER received, MAC:00-0C-29-C9-9A-28, XID:2AC99A28
    9:40:22 DHCPd:OFFER sent, IP:192.168.11.2, XID:2AC99A28
    9:40:24 DHCPd:REQUEST received, MAC:00-0C-29-C9-9A-28, XID:2AC99A28
    9:40:24 DHCPd:Arch=00000
    9:40:24 DHCPd:ACK sent, IP:192.168.11.2, XID:2AC99A28
    9:40:24 TFTPd:DoReadFile:ipxe.pxe B:1456 T:0
    9:40:24 TFTPd:TransferComplete=True (192.168.11.2:2070)
    9:40:29 DHCPd:DISCOVER received, MAC:00-0C-29-C9-9A-28, XID:2060C579
    9:40:29 DHCPd:iPXE user-class detected
    9:40:29 DHCPd:OFFER sent, IP:192.168.11.2, XID:2060C579

    this shows BIOS vmware boots OK

    config.ini

    [arch]
    00007=ipxe.efi
    [dhcp]
    verbose=1

    • Ok we are getting there.

      Some hypothesis :

      1-the vmware uefi client is broken

      2-re do your test but tick the proxydhcp mode (before clicking the online bytton)

      3-re do your test but use opt 66/67 rather than the bootp filename (under extra option) with proxydhcp=off

      4-re do your test but use opt 66/67 rather than the bootp filename (under extra option) with proxydhcp=on

      Also, make sure you tick the bind checkbox.

  5. See about a discussion on the same topic here : Tiny PXE Server and UEFI booting.

    Latest version (sept 20, 2014) fixes a few nasty bugs around uefi booting.

  6. First off for some reason i cannot create a reboot.pro account so forgive me for posting this here as i had this working for a week and then boom it just started stopping after loading menu.ipxe and just sits there ive looked it up and cannot find the same thing found things close just not exact, anyway i love the ease of use in setup and use when it was working. So im trying to boot http with menu.ipxe i followed your quick tutorial at reboot.pro but as i said it now it just stops at that certain point. Im testing in now on hyper v in server 2008r2 with dual nic’s, listed below, dhcp is just on a basic home router atm, no domain or ad just running as a file server atm. Anyway heres a few thing i hope will help get the problem isolated.

    Configuring (net0 00:15:5d:00:ef:0b…ok
    net0 192.168.0.106/255.255.255.0 gw 192.168.0.1
    Nextserver: 192.168.0.253
    Filename: http://192.168.0.253/menu.ipxe
    http://192.168.0.253/menu.ipxe…ok

    and there it hangs forever, i haven’t changed anything in the network, router or server.

    Here’s the config.ini:

    [arch]
    ;will over rule the bootp filename or opt67 if the client arch matches one of the below
    00006=bootia32.efi
    00007=bootx64.efi
    [dhcp]
    ;needed to tell TFTPd where is the root folder
    root=d:\pxesrv\files\
    ;bootp filename as in http://tools.ietf.org/html/rfc951
    filename=ipxe-undionly.kpxe
    filename=ipxe.pxe
    ;alternative bootp filename if request comes from ipxe or gpxe
    altfilename=http://${dhcp-server}/menu.ipxe
    ;start HTTPd
    httpd=1
    binl=0
    start=1
    dnsd=0
    proxydhcp=1
    ;default=1
    bind=1
    tftpd=1 by default
    ;will share (netbios) the root folder as PXE
    smb=0
    will log to log.txt
    log=1
    ;opt1=
    ;opt3=
    ;opt6=
    ;opt28=
    ;opt15=
    ;opt17=
    ;opt43=
    ;opt51=
    ;opt54=
    ;opt67=
    ;opt66=
    ;opt252=
    ;poolstart=
    ;poolsize=
    ;alternative bootp filename if request comes thru proxydhcp (udp:4011)
    ;proxybootfilename=
    ;any extra dhcp options
    ;my gpxe / ipxe dhcp options
    optextra=175.6.1.1.1.8.1.1
    ;the below will be executed when clicking on the online button
    ;cmd=_test.bat
    if log=1, will log to log.txt
    log=1
    verbose=1
    opt1=255.255.255.0
    opt3=192.168.0.1
    opt6=192.168.0.1
    opt43=0.0.0.0
    opt51=86400
    opt54=192.168.0.253
    opt66=PXEClient
    poolstart=192.168.0.254
    poolsize=10
    [web]
    ;default value=80
    ;port=80
    [frmDHCPServer]
    top=16
    left=1391

    my latest log file:

    10/12/2014 21:31:19:712,9:31:19 PM DHCPd:67 started…
    10/12/2014 21:31:19:717,9:31:19 PM DHCPd:4011 started…
    10/12/2014 21:31:19:722,9:31:19 PM TFPTd started…
    10/12/2014 21:31:19:899,9:31:19 PM HTTPd started…
    10/12/2014 21:32:10:295,9:32:10 PM DHCPd:DISCOVER received, MAC:00-15-5D-00-FE-0B, XID:5E00FE0B
    10/12/2014 21:32:10:813,9:32:10 PM DHCPd:OFFER sent, IP:0.0.0.0, XID:5E00FE0B
    10/12/2014 21:32:14:254,9:32:14 PM DHCPd:REQUEST discarded, MAC:00-15-5D-00-FE-0B, XID:5E00FE0B
    10/12/2014 21:32:14:261,9:32:14 PM PDHCPd:REQUEST received, MAC:00-15-5D-00-FE-0B, IP:192.168.0.163, XID:5E00FE0B
    10/12/2014 21:32:14:305,9:32:14 PM DHCPd:Arch=00000
    10/12/2014 21:32:14:312,9:32:14 PM Proxy boot filename empty?
    10/12/2014 21:32:14:319,9:32:14 PM PDHCPd:DHCP_ACK sent, IP:192.168.0.163:68, xid:5E00FE0B
    10/12/2014 21:32:14:377,9:32:14 PM TFTPd:DoReadFile:ipxe-undionly.kpxe B:1456 T:0
    10/12/2014 21:32:14:748,9:32:14 PM TFTPd:TransferComplete=True (192.168.0.163:2070)
    10/12/2014 21:32:16:944,9:32:16 PM DHCPd:DISCOVER received, MAC:00-15-5D-00-FE-0B, XID:4543151
    10/12/2014 21:32:17:306,9:32:17 PM DHCPd:iPXE user-class detected
    10/12/2014 21:32:17:314,9:32:17 PM DHCPd:OFFER sent, IP:0.0.0.0, XID:4543151
    10/12/2014 21:32:17:875,9:32:17 PM DHCPd:DISCOVER received, MAC:00-15-5D-00-FE-0B, XID:4543151
    10/12/2014 21:32:17:979,9:32:17 PM HTTPd:Connect: 192.168.0.106, TID=34536
    10/12/2014 21:32:17:986,9:32:17 PM HTTPd:Client: 192.168.0.106 [GET] /menu.ipxe
    10/12/2014 21:32:17:992,9:32:17 PM HTTPd:Server : Returning /menu.ipxe
    10/12/2014 21:32:17:998,9:32:17 PM HTTPd:DisConnect: TID=34536 <— ??
    10/12/2014 21:32:18:305,9:32:18 PM DHCPd:iPXE user-class detected
    10/12/2014 21:32:18:313,9:32:18 PM DHCPd:OFFER sent, IP:0.0.0.0, XID:4543151
    10/12/2014 21:32:18:319,9:32:18 PM DHCPd:REQUEST discarded, MAC:00-15-5D-00-FE-0B, XID:4543151
    10/12/2014 21:40:34:412,9:40:34 PM DHCPd:REQUEST discarded, MAC:88-CB-87-4A-8C-11, XID:65DA0A0C
    10/12/2014 21:40:57:379,9:40:57 PM TFTPd stopped…
    10/12/2014 21:40:57:385,9:40:57 PM DHCPd:4011 stopped…
    10/12/2014 21:40:57:391,9:40:57 PM DHCPd:67 stopped…
    10/12/2014 21:40:57:396,9:40:57 PM HTTPd stopped…

    and my menu.ipxe:

    # !ipxe
    dhcp net0
    # set boot-url http://${dhcp-server} <———— tried both
    set boot-url http://${next-server} <———— tried both
    #set nfs-server ${next-server}
    # Main Menu
    :start
    menu iPXE's Boot Menu, you know the drill select one!
    item
    item –gap — ————————- Boot ISO's ——————————
    item hbboot Hirens BootCD 15.2 via memdisk
    item mrboot Macrium Reflect v5 via memdisk
    item pwboot Password Unlocker4 via memdisk
    item –gap — —————————— Utilitie's ———————————
    item shell Enter iPXE shell
    item config Configure
    item reboot Reboot
    item
    item exit Exit (boot local disk)
    # Utility Items
    :shell
    echo Type exit to get the back to the menu
    shell
    set menu-timeout 0
    goto start

    :config
    config
    goto start

    :failed
    echo Booting failed, dropping to shell
    goto shell

    :reboot
    reboot

    :exit
    exit
    # Menu Items
    :hbboot
    initrd ${boot-url}/hbbootcd.iso
    kernel ${boot-url}/memdisk iso raw|| goto failed
    boot || goto failed
    goto start

    :mrboot
    initrd ${boot-url}/rescuex64.iso
    kernel ${boot-url}/memdisk iso raw|| goto failed
    boot || goto failed
    goto start

    :pwboot
    initrd ${boot-url}/pwunlock4.iso
    kernel ${boot-url}/memdisk iso raw|| goto failed
    boot || goto failed
    goto start

    I have tried moving menu.ipxe and ipxe-undionly.kpxe to the root folder d:\pxesrv i tried putting them in both the root and the files directory to no avail, im hoping its something silly i just over looked any help would be greatly appreciated and Thanks in advance for any assistance.

  7. filename is set twice in your config.ini .
    and there are some ; missing in front of commented out lines.

    but this is not the issue since the logfile seems to indicate that everything goes fine : ipxe is loaded, then comes the menu.

    i suspect your ipxe file is corrupted and therefore not loaded by ipxe.
    why is there a space « # !ipxe » here when it should be « #!ipxe » ?

  8. Im still quite a n00b to ipxe, but i have removed the double filename and all extra spaces after the # and added ; to all commented out lines after comparing it to the config.sample from the original pxesrv.zip file, also I copied and pasted from the old menu.ipxe file its contents and tighted it up after finding spaces in places they should not be and pasted it into a new good working ipxe file, but still had issues so it looks like after creating a new menu.ipxe it seems to be working, yay, so thanks for pointing me in the right direction as it was a corrupt menu.ipxe file and the issues you listed above, so one last question if i could? Is there a way to change the background image i found this buried on a site about ipxe menu settings but it didn’t work when added to the menu.ipxe file does it get entered into a different config file maybe or ? its… menu background /logo/ct.png ..and again thanks alot for all your help.

  9. I have mixed feelings; I appreciate your effort but your software ends up creating lot of frustration.
    Please do not take my comment as an attack; it just pretend to be an honest feedback

    The problems are many; Acces violations, Configuration inconsistencies, cumbersome interface, missing DHCP options, lack of docummentation, no HTTP server, no FTP server, highly unreliable NFS Server.

    I run Tiny PXE under windows 7 64 bits, your software is only distributed as a 32 Bit exe, I do not know if this creates some of the described problems (Access Violation). Thanks Z

    • No hard feelings 🙂

      http server is there.
      nfs server is not mine but included in the zip file as an option.
      ftp server : i could add it, just aks 😉
      missing dhcp options? just ask…

      bugs? please report (screenshot, use case, etc).

      Make sure you use the latest version.

      Regards,
      Erwan

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)