diff --git a/SOURCES/0005-Save-Dell-BIOS-chunk-in-PXELINUX.patch b/SOURCES/0005-Save-Dell-BIOS-chunk-in-PXELINUX.patch new file mode 100644 index 0000000..01eea46 --- /dev/null +++ b/SOURCES/0005-Save-Dell-BIOS-chunk-in-PXELINUX.patch @@ -0,0 +1,88 @@ +From e1db3e675ae4ccbeea5de9f4b74a618e42eac1a3 Mon Sep 17 00:00:00 2001 +From: Nick Bertrand +Date: Tue, 31 Jul 2012 19:00:05 -0700 +Subject: [PATCH] Save Dell BIOS chunk in PXELINUX + +Our site has many Dell OptiPlex 790s, all of which are unable to use the +'localboot' PXELINUX option as they either hang at 'Booting from local disk...' +or immediately reboot depending on which SYSLINUX version is used. Many people +have suggested using chain.c32 to chain load the local disk as a workaround, +but this causes problems with Windows 7 BitLocker as it detects the chain load +and forces the user to enter the recovery key. While searching for another +option I determined that the problem seems to stem from the BIOS storing some +information in the memory range 0x47CC-0x47FF, which is overwritten when +PXELINUX loads. I couldn't figure out a clean way to avoid that memory region +as it falls in the middle of the 4.x bss16 region, so I decided to create a +copy of it instead. By copying that information out of the way during PXELINUX +initialization and copying it back before returning control via 'localboot 0', +the computer successfully boots to the local disk. + +Some additional info: + +BIOS revision: A13 +PXE versions: Intel Boot Agent GE v1.3.81, Intel Boot Agent PXE Base Code (PXE-2.1 build 089) +Versions of SYSLINUX affected: 3.83, 4.03, 4.04, 4.05, possibly others +Resulting symptom for localboot option vs SYSLINUX version: + + localboot 0 localboot -1 +3.83 Reboot Reboot +4.03 Reboot Reboot +4.04 Hang Reboot +4.05 Hang Reboot + +This patch does not fix the reboot issue when using 'localboot -1'. I believe +this patch should also help those with OptiPlex 990s, but I don't have one to +test with to confirm. + +Below is a patch against commit 0a0e0e41cad93cd16c323cf16f40264a21eedd6c of +the git.kernel.org/pub/scm/boot/syslinux/syslinux.git repository. + +-- +--- + core/pxelinux.asm | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/core/pxelinux.asm b/core/pxelinux.asm +index e8818a6..b58ed2a 100644 +--- a/core/pxelinux.asm ++++ b/core/pxelinux.asm +@@ -132,6 +132,13 @@ _start1: + mov ds,ax + mov es,ax + ++ ; Copy chunk of memory used by Dell BIOS on OptiPlex 790s ++ ; Allows control to return to PXE Boot Agent for localboot ++ mov esi,47cch ++ mov edi,DellBIOSChunk ++ mov ecx,13 ++ rep movsd ++ + %if 0 ; debugging code only... not intended for production use + ; Clobber the stack segment, to test for specific pathologies + mov di,STACK_BASE +@@ -289,6 +296,14 @@ local_boot: + ; Restore the environment we were called with + pm_call reset_pxe + call cleanup_hardware ++ ++ ; Copy Dell BIOS chunk back into place ++ cld ++ mov esi,DellBIOSChunk ++ mov edi,47cch ++ mov ecx,13 ++ rep movsd ++ + lss sp,[InitStack] + pop gs + pop fs +@@ -564,3 +579,6 @@ IPInfo: + .ServerIP resd 1 + .GatewayIP resd 1 + .Netmask resd 1 ++ ++ section .earlybss ++DellBIOSChunk resd 13 ; 52 bytes to store Dell BIOS chunk +-- +2.5.0 + + diff --git a/SPECS/syslinux.spec b/SPECS/syslinux.spec index 70f591d..88beb5f 100644 --- a/SPECS/syslinux.spec +++ b/SPECS/syslinux.spec @@ -2,7 +2,7 @@ Summary: Simple kernel loader which boots from a FAT filesystem Name: syslinux Version: 4.05 %define tarball_version 4.05 -Release: 12%{?dist} +Release: 13%{?dist} License: GPLv2+ Group: Applications/System URL: http://syslinux.zytor.com/wiki/index.php/The_Syslinux_Project @@ -24,6 +24,7 @@ Patch0006: 0003-Fixes-for-problems-discovered-by-coverity-scan.-8120.patch Patch0007: 0004-Make-some-more-mingw-paths-work.patch Patch0008: 0001-Don-t-use-strict-aliasing-because-not-everything-her.patch Patch0009: 0001-relocs-Move-stop-to-the-end.patch +Patch0010: 0005-Save-Dell-BIOS-chunk-in-PXELINUX.patch %description SYSLINUX is a suite of bootloaders, currently supporting DOS FAT @@ -184,6 +185,10 @@ elif [ -f /boot/extlinux.conf ]; then \ fi %changelog +* Tue May 10 2016 Peter Jones - - 4.05-13 +- Try to work around firmware bugs in the PXE stack. + Resolves: rhbz#1254615 + * Fri Sep 26 2014 Peter Jones - 4.05-12 - Toolchain changes between when this originally got built and 4.05-9 means 4.05-9 - 4.05-11 don't actually work.