Skip to content

Error Generate PXE boot.php #725

@Gauthier-L

Description

@Gauthier-L

PXE Boot Menu Missing - Direct Login Redirect Issue

Environment

  • FOG Version: Latest development
  • Previous Working Version: 1.5.9

Problem

The interactive PXE boot menu from v1.5.9 has been replaced with a simple timeout prompt that redirects directly to login. Users can no longer access utilities like memtest, registration, or system info without authentication.

Expected Behavior (v1.5.9)

Interactive menu with options:

  • Boot from hard disk (default)
  • Run Memtest86+
  • Host Registration
  • Deploy Image
  • Join Multicast Session
  • Client System Information

Current Behavior

  • Without PXE authentication: Shows Booting... (Press ESC to access the menu) → Direct login redirect
  • With PXE authentication enabled: Machine boots directly to hard disk without showing any prompt or ESC option

Code Comparison

Current version:

#!ipxe
set fog-ip [REDACTED]
set fog-webroot fog
set boot-url http://${fog-ip}/${fog-webroot}
set setmacto ${net0/mac}
set storage-ip [REDACTED]
set keymap us
set arch ${buildarch}
iseq ${arch} i386 && cpuid --ext 29 && set arch x86_64 ||
iseq ${platform} efi && set key 0x1b || set key 0x1b
iseq ${platform} efi && set keyName ESC || set keyName Escape
prompt --key ${key} --timeout 10000 Booting... (Press ${keyName} to access the menu) && goto menuAccess || exit 0
:menuAccess
login
params
param mac0 ${net0/mac}
param arch ${arch}
param platform ${platform}
param username ${username}
param password ${password}
param menuaccess 1
param debug 1
param sysuuid ${uuid}
isset ${net1/mac} && param mac1 ${net1/mac} || goto bootme
isset ${net2/mac} && param mac2 ${net2/mac} || goto bootme
:bootme
chain -ar http://[REDACTED]/fog/service/ipxe/boot.php##params

Working v1.5.9:

#!ipxe
set fog-ip [REDACTED]
set fog-webroot fog
set boot-url http://${fog-ip}/${fog-webroot}
cpuid --ext 29 && set arch x86_64 || set arch i386
goto get_console
:console_set
colour --rgb 0x00567a 1 ||
colour --rgb 0x00567a 2 ||
colour --rgb 0x00567a 4 ||
cpair --foreground 7 --background 2 2 ||
goto MENU
:alt_console
cpair --background 0 1 ||
cpair --background 1 2 ||
goto MENU
:get_console
console --picture http://[REDACTED]/fog/service/ipxe/bg.png --left 100 --right 80 && goto console_set || goto alt_console
:MENU
menu
colour --rgb 0xff0000 0 ||
cpair --foreground 1 1 ||
cpair --foreground 0 3 ||
cpair --foreground 4 4 ||
item --gap Host is NOT registered!
item --gap -- -------------------------------------
item fog.local Boot from hard disk
item fog.memtest Run Memtest86+
item fog.reginput Perform Full Host Registration and Inventory
item fog.reg Quick Registration and Inventory
item fog.deployimage Deploy Image
item fog.multijoin Join Multicast Session
item fog.sysinfo Client System Information (Compatibility)
choose --default fog.local --timeout 3000 target && goto ${target}
:fog.local
sanboot --no-describe --drive 0x80 || goto MENU
:fog.memtest
kernel memdisk initrd=memtest.bin iso raw
initrd memtest.bin
boot || goto MENU
:fog.reginput
kernel bzImage32 loglevel=4 initrd=init_32.xz root=/dev/ram0 rw ramdisk_size=275000 web=http://[REDACTED]/fog/ consoleblank=0 rootfstype=ext4 storage=[REDACTED]:/images/ storageip=[REDACTED] nvme_core.default_ps_max_latency_us=0 loglevel=4 mode=manreg
imgfetch init_32.xz
boot || goto MENU
:fog.reg
kernel bzImage32 loglevel=4 initrd=init_32.xz root=/dev/ram0 rw ramdisk_size=275000 web=http://[REDACTED]/fog/ consoleblank=0 rootfstype=ext4 storage=[REDACTED]:/images/ storageip=[REDACTED] nvme_core.default_ps_max_latency_us=0 loglevel=4 mode=autoreg
imgfetch init_32.xz
boot || goto MENU
:fog.deployimage
login
params
param mac0 ${net0/mac}
param arch ${arch}
param username ${username}
param password ${password}
param qihost 1
isset ${net1/mac} && param mac1 ${net1/mac} || goto bootme
isset ${net2/mac} && param mac2 ${net2/mac} || goto bootme
param sysuuid ${uuid}
:fog.multijoin
login
params
param mac0 ${net0/mac}
param arch ${arch}
param username ${username}
param password ${password}
param sessionJoin 1
isset ${net1/mac} && param mac1 ${net1/mac} || goto bootme
isset ${net2/mac} && param mac2 ${net2/mac} || goto bootme
param sysuuid ${uuid}
:fog.sysinfo
kernel bzImage32 loglevel=4 initrd=init_32.xz root=/dev/ram0 rw ramdisk_size=275000 web=http://[REDACTED]/fog/ consoleblank=0 rootfstype=ext4 storage=[REDACTED]:/images/ storageip=[REDACTED] nvme_core.default_ps_max_latency_us=0 loglevel=4 mode=sysinfo
imgfetch init_32.xz
boot || goto MENU
:bootme
chain -ar http://[REDACTED]/fog/service/ipxe/boot.php##params ||
goto MENU
autoboot

Impact

  • Critical: With PXE authentication enabled, no access to FOG functionality at all (direct hard disk boot)
  • No self-service registration for unregistered hosts
  • Lost access to memtest and system utilities
  • Poor user experience

File: /fog/service/ipxe/boot.php

Edit

  • The problem occurs specifically with older computers using UEFI boot. When I disable "Hide Menu", the menu displays correctly, but the keyboard is not functional. The FOG server has up-to-date kernel and init files, and /tftpboot has been freshly compiled. When switching to legacy boot mode, the keyboard works properly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions