Finally, the Syslinux 6.00 release is out. This release includes support for booting from EFI, both from disk-based media and over the network via PXE. Thanks to everyone who has been testing this out. There are some EFI bugs that I'm aware of, * booting Linux kernels without CONFIG_RELOCATABLE doesn't work * 64-bit syslinux.efi cannot boot 32-bit kernels and vice versa * displaying of Fn files messes up the console Please do test out the release and report any regressions. I'm particularly interested to hear about any problems with the BIOS code, which will be a result of introducing the 'firmware' abstraction that allows the BIOS and EFI backends to coexist. Shortlog from 5.11-pre2 (the last 5.xx branch merged) is below, -- Chandramouli Narayanan (12): core: Remove unused argument to init() efi: Actually return a character in efi_getchar() efi: Add Auxiliary Data Vector support core, efi: Return new pointer in realloc() efi: Turn off debugging support by default ansi: Improve EFI console support module: Define __{ctors,dtors}_end symbols core: Rename DEBUG macro to avoid gnu-efi library conflict Debug prints to core/fs/fs.c and core/fs/fat.c have been added. efi: Reworked EFI boot loader on several fronts. efi: Fix the screen setup for Graphics Output Protocol efi, vesa: Fix vesa initialization and video mode resolution Matt Fleming (131): core: Add firmware backend support com32: Provide a language standard version Move the list of MINLIBOBJS to mk/lib.mk so that we can include it in efi/Makefile. core: Do not use -mregparm efi: Add UEFI firmware backend core: Rebuild core objects for EFI disk: Add .disk_init() to firmware struct efi: Disk I/O support EFI: Implement malloc with {Allocate/Free}Pool() com32: Add firmware backend support to ansicon elflink: Don't statically initialise core_module.base_addr ldlinux: Initialise 'p' before using it. com32: Delete duplicate ipappend.c firmware: Don't include disk.h firmware: Add .get_config_file_name firmware: Add .get_serial_console_info com32: Remove __constructor tag from __syslinux_get_shuffer_size() firmware: Move firmware code into core/bios.c firmware: Add .ipappend_strings function pointer linux: Move linux_header definition to header com32: Move initramfs_size() into header file ldlinux: Handle multiple arguments to initrd firmware: Add EFI linux boot support efi: Delete efi/wrapper in spotless make target Merge branch 'linux-boot' into for-hpa/elflink/firmware firmware, diskio: Create struct disk_private firmware: Fix assorted compiler warnings efi: Zero e_hdr_pe32p before use Merge remote-tracking branch 'mfleming/elflink' into for-hpa/elflink/firmware core: Change numIPAppends data type Merge remote-tracking branch 'mfleming/elflink' into for-hpa/elflink/firmware efi, ansi: Improve console handling even further (e.g. scrolling support) module: Consolidate lots of 32/64-bit code Create derivative-specific files Merge branch 'elflink' into for-hpa/elflink/firmware efi: We don't need two memory_map() functions efi: Update the correct copy of hdr rosh: Update default make target Add per-firmware object directory support efi: Delete unused variables efi: Add support for UGA devices efi: Forward declare 'struct screen_info' Makefile: Only provide one make rule for each directory efi: Fix warning about discarding const qualifier com32.h: Fix MK_PTR() for 64-bit initvesa.c: Delete unused variables (set but not used) and cleanup screencpy.c: Delete unused variables and cleanup i915resolution.c: cast to 64-bit sized ptr vesa: Change the prototype of __vesacon_init() Merge branch 'cleanup' into for-hpa/elflink/firmware Merge tag 'syslinux-5.00-pre9' into for-hpa/elflink/firmware NEWS, version: Now working on the 6.00 release libinstaller: Fixup merge botch Makefile: Correct the location of Makefile.private Makefile: Correct version.mk path efi: Add 'strip' make target and don't installer wrapper Makefile: Change default object directory Makefile.private: Update for new per-firmware object directories Makefile: Every invocation of make needs access to syslinux.mk Makefile: Add upload targets to $(private-targets) efi: Fill out writechr() implementation efi: Pass correct pointer to BS->CreateEvent() efi: Return a sensible error code to the firmware... efi: Set the current working directory on startup Merge tag 'syslinux-5.00-pre10' into for-hpa/elflink/firmware Makefile: Move Makefile.private inclusion to change default target efi: Consume unprocessed user input before loading ldlinux.c32 sys/vesa: Modularise common vesa code firmware: Move memory operations into firmware firmware: Make disk->private an opaque type mk: Add -fPIC for x86_64 to embedded.mk efi: Add a simple script to find gnu-efi files efi: Add /usr/lib32 to the list of possible gnu-efi paths efi: Add -mno-red-zone to CFLAGS efi: Delete bash-isms from find-gnu-efi.sh Merge tag 'syslinux-5.00' into firmware com32: Fix merge botch sys/vesa: Include screencpy.o in $LIBVESA_OBJS vesa: Correct screencpy() prototype efi: Delete EFI handover protocol check mk/embedded.mk: Don't use -mregparm in core vesa: Make __vesacon_i915resolution() a stub under EFI Merge branch 'elflink' into firmware efi: Fix screen clearing and cursor position efi: Fix handling of "extended" keys efi: Enable/disable cursor like the BIOS code efi: Set display attributes before writing output efi: Lookup the Unicode encoding when writing characters efi: Greatly simplify the EFI Scan Code handling Revert "vesa: Correct screencpy() prototype" Merge tag 'syslinux-5.01' into firmware Merge tag 'syslinux-5.10-pre2' into for-hpa/elflink/firmware efi: Fix build with gnu-efi >= 3.0s Merge remote-tracking branch 'zytor/elflink' into for-hpa/elflink/firmware efi: Add network support efi: Lookup which file system we were loaded from efi: Fill out MS-DOS header relocs field Merge branch 'msdos-hdr' into for-hpa/elflink/firmware ldlinux: use platform filename extension efi: strip debug info from syslinux.so efi: shrink the size of syslinux.efi efi: install ldlinux.{e32,e64} txt: always rebuild necessary directories Merge tag 'syslinux-5.11-pre2' into firmware mk: reinstate -mregparm for BIOS efi: Mark global BIOS-only symbols as __weak efi: Turn on symbol export whitelist ansi: partially revert 937f816addb214ca4c8c1ce977e0357eafa8c617 version: We're now in 2013 NEWS: Add entry for EFI network support load_linux: return a non-void value to fix compiler warning com32: add prototype for get_derivative_info() firmware: correct the get_cursor() argument types ipappend: delete .ipappend_strings() bios: fix definition of 'bios_free_mem' isolinux: use parenthesis to clarify operator precedence isolinux: fix type declarations ldlinux: fix definition of 'Hidden' efi: include <string.h> for memcpy() efi: include <string.h> for memcpy()/memset() efi: cast to avoid compiler warning efi: don't compare integers of different signs efi: cast third argument to HandleProtocol() efi: forward declare 'struct semaphore' efi: fix prototype of efi_erase() efi: fix comparison between signed and unsigned types efi: fix a bunch of casting to different size warnings, efi: provide prototype for load_env32() efi: return a value from sem_down() mk: stop complaining about unused parameters efi: delete unused varaibles Shao Miller (1): efi: Fix a memory map buffer release chandramouli narayanan (13): Patches here support 32bit and 64bit environment. This patch implements the setjmp/longjmp, memcpy, memmove, memset and mempcpy functions as appropriate for the architecture. The code came from klibc. com32/lib has i386 and x86_64 sub directories implementing the code. Architecture dependency in LZO data compression library in subdirectory core/lzo/ is taken care to be able to build fo i386 for x86_64. EFI boot loader in efi_boot_linux() now supports booting i386 and x86_64 linux kernels. Main x86_64 changes are in a) setting up high part of EFI system table and memmap b) loader signature c) setting up jump vector to hand off to kernel. The ELF module load and the utility library routines fully support lookup, resolution and relocation of symbols for both ELF32 and ELF64 environments. With this, syslinux.efi built for i386 and x86_64 can load the respective native command modules dynamically. The architecture dependent files are split into respective subdirectories (com32/lib/sys/module/i386 & com32/lib/sys/module/x86_64) for the build environment to pick. This is a giant patch that splits the linker scripts for libraries, modules and executables into the architecture-dependent scripts to facilitate building syslinux modules/executables for i386 and x86_64 environments. The x86_64 linker scripts are derived from the earlier i386 counterparts. The make files have undergone changes to support both i386 and x86_64 platforms. Pertinent changes are sprinkled through *.mk and Makefile in the syslinux tree. This patch implements architecture-dependent code in memdisk to support for i386 and x86_64. The memcpy, memset and memmove routines originated from klibc. The assembler directive in memdump/code16.h is fixed for x86_64 build. Archicture-dependent get_cpuid in sysdump/cpuid is fixed. Console input initiated by com32 modules and sample programs hang on both i386 and x86_64. The issue is traced to the implementation of get_key() underlying firmware. For stdin file descriptor, the console read finally resolves to __rawcon_read() implemented in com32/lib/sys/rawcon_read.c. This file is firmware-dependent and currently has only BIOS-specific code As a temporary fix, in EFI, __rawcon_read() is implemented using getchar(). The implementation of getchar() in EFI is guided by the firmware structure that points to efi_getchar(). With this temporary fix, com32 command modules that wait on console input work. efi_getchar() should wait for the event before reading keystroke. On an efi64 platform, it didn't work without wait. It needs further debugging to ascertain the fix. This is the first cut checkin for GOP supporting the menu subsystem. For the initial cut, all of vesa code is dropped into vesa/efi with code buildable for EFI with a build option. There is VESA only code that is in the efi subdirectory as well that should go away eventually. Other files not dependent on EFI or not relevant to EFI need to be removed as well (e.g. i915resolution.c). -- Matt Fleming, Intel Open Source Technology Center
On 06/20/2013 01:01 PM, Matt Fleming wrote:> Finally, the Syslinux 6.00 release is out. This release includes support > for booting from EFI, both from disk-based media and over the network > via PXE. Thanks to everyone who has been testing this out. > > There are some EFI bugs that I'm aware of, > > * booting Linux kernels without CONFIG_RELOCATABLE doesn't work > * 64-bit syslinux.efi cannot boot 32-bit kernels and vice versa > * displaying of Fn files messes up the console > > Please do test out the release and report any regressions. I'm > particularly interested to hear about any problems with the BIOS code, > which will be a result of introducing the 'firmware' abstraction that > allows the BIOS and EFI backends to coexist. > > Shortlog from 5.11-pre2 (the last 5.xx branch merged) is below, >Huge thanks to Matt for driving this project, and to Mouli for doing the initial work on this! -hpa
On 06/20/2013 05:01 PM, Matt Fleming wrote:> Finally, the Syslinux 6.00 release is out. This release includes support > for booting from EFI, both from disk-based media and over the network > via PXE. Thanks to everyone who has been testing this out. > > There are some EFI bugs that I'm aware of, > > * booting Linux kernels without CONFIG_RELOCATABLE doesn't work > * 64-bit syslinux.efi cannot boot 32-bit kernels and vice versa > * displaying of Fn files messes up the console > > Please do test out the release and report any regressions. I'm > particularly interested to hear about any problems with the BIOS code, > which will be a result of introducing the 'firmware' abstraction that > allows the BIOS and EFI backends to coexist. >Hello, First thanks for doing this release finally, congratulations to the Syslinux Team :) In BIOS mode, looks like there is something wrong with CONFIG directive (at least on SYSLINUX and ISOLINUX). After executing it with an existent (or non existent) file, system cursor changes the default color from white to gray, and nothing more happens. If serial console is enabled, nothing more appears here. This is always reproducible from a cfg file or directly from boot: prompt. No errors messages. Tested building from source, but also happens using binaries provided in the tarball. Running on QEMU 1.4.2/1.5.0 with or without KVM enabled. Have a nice day! -- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 555 bytes Desc: OpenPGP digital signature URL: <http://www.zytor.com/pipermail/syslinux/attachments/20130620/29aa3519/attachment.sig>
Am 20.06.2013 22:01, schrieb Matt Fleming:> * 64-bit syslinux.efi cannot boot 32-bit kernels and vice versaAny ideas on how long this might take to implement? AFAIK, most modern computers with EFI can use only 64-bit EFI, so it would not be possible to boot a 32-bit OS (namely a live cd) on them with Syslinux. Thanks, Andreas
On Fri, 21 Jun, at 04:04:49PM, Andreas Heinlein wrote:> Am 20.06.2013 22:01, schrieb Matt Fleming: > > * 64-bit syslinux.efi cannot boot 32-bit kernels and vice versa > Any ideas on how long this might take to implement? AFAIK, most > modern computers with EFI can use only 64-bit EFI, so it would not > be possible to boot a 32-bit OS (namely a live cd) on them with > Syslinux.It shouldn't be too difficult. I've got half a patch together already. -- Matt Fleming, Intel Open Source Technology Center
Matt Fleming <matt at console-pimps.org> writes:> Please do test out the release and report any regressions.Unfortunately, I can't make it under Debian wheezy + experimental gnu-efi (ie. 3.0u+debian-1): $ make installer [...] make[3]: Entering directory `/home/wferi/syslinux/syslinux-6.00/efi32/efi' gcc -I/usr/include/efi -I/usr/include/efi/ia32 -DEFI_FUNCTION_WRAPPER -fPIC -fshort-wchar -ffreestanding -Wall -I/home/wferi/syslinux/syslinux-6.00/com32/include -I/home/wferi/syslinux/syslinux-6.00/com32/include/sys -I/home/wferi/syslinux/syslinux-6.00/core/include -I/home/wferi/syslinux/syslinux-6.00/core/ -m32 -march=i386 -I/home/wferi/syslinux/syslinux-6.00/com32/lib/ -I/home/wferi/syslinux/syslinux-6.00/com32/libutil/include -std=gnu99 -DELF_DEBUG -DSYSLINUX_EFI -I/home/wferi/syslinux/syslinux-6.00/efi32 -W -Wall -Wstrict-prototypes -D__COM32__ -mno-red-zone -DLDLINUX=\"ldlinux.e32\" -fvisibility=hidden -Wno-unused-parameter -c -o adv.o /home/wferi/syslinux/syslinux-6.00/efi/adv.c In file included from /usr/include/efi/efi.h:45:0, from /home/wferi/syslinux/syslinux-6.00/efi/efi.h:22, from /home/wferi/syslinux/syslinux-6.00/efi/adv.h:4, from /home/wferi/syslinux/syslinux-6.00/efi/adv.c:28: /usr/include/efi/efiapi.h:663:5: warning: function declaration isn?t a prototype [-Wstrict-prototypes] [lots of similar warnings elided] gcc -I/usr/include/efi -I/usr/include/efi/ia32 -DEFI_FUNCTION_WRAPPER -fPIC -fshort-wchar -ffreestanding -Wall -I/home/wferi/syslinux/syslinux-6.00/com32/include -I/home/wferi/syslinux/syslinux-6.00/com32/include/sys -I/home/wferi/syslinux/syslinux-6.00/core/include -I/home/wferi/syslinux/syslinux-6.00/core/ -m32 -march=i386 -I/home/wferi/syslinux/syslinux-6.00/com32/lib/ -I/home/wferi/syslinux/syslinux-6.00/com32/libutil/include -std=gnu99 -DELF_DEBUG -DSYSLINUX_EFI -I/home/wferi/syslinux/syslinux-6.00/efi32 -W -Wall -Wstrict-prototypes -D__COM32__ -mno-red-zone -DLDLINUX=\"ldlinux.e32\" -fvisibility=hidden -Wno-unused-parameter -c -o vesa.o /home/wferi/syslinux/syslinux-6.00/efi/vesa.c In file included from /usr/include/efi/efi.h:45:0, from /home/wferi/syslinux/syslinux-6.00/efi/efi.h:22, from /home/wferi/syslinux/syslinux-6.00/efi/vesa.c:36: /usr/include/efi/efiapi.h:663:5: warning: function declaration isn?t a prototype [-Wstrict-prototypes] make[3]: *** No rule to make target `/home/wferi/syslinux/syslinux-6.00/efi32/core/codepage.o', needed by `syslinux.so'. Stop. make[3]: Leaving directory `/home/wferi/syslinux/syslinux-6.00/efi32/efi' make[2]: *** [installer] Error 2 make[2]: Leaving directory `/home/wferi/syslinux/syslinux-6.00/efi32' make[1]: *** [efi32] Error 2 make[1]: Leaving directory `/home/wferi/syslinux/syslinux-6.00' make: *** [installer] Error 2 What do I miss? -- Thanks, Feri.
On Sat, 22 Jun, at 05:24:21PM, Ferenc Wagner wrote:> Matt Fleming <matt at console-pimps.org> writes: > > > Please do test out the release and report any regressions. > > Unfortunately, I can't make it under Debian wheezy + experimental > gnu-efi (ie. 3.0u+debian-1): > > $ make installer[...]> make[3]: *** No rule to make target `/home/wferi/syslinux/syslinux-6.00/efi32/core/codepage.o', needed by `syslinux.so'. Stop.Thanks for the report, I can reproduce this. I'll commit a fix for this shortly. -- Matt Fleming, Intel Open Source Technology Center
Gerardo Exequiel Pozzi
2013-Jun-24 15:51 UTC
[syslinux] [6.01-pre1] [BIOS] config.c32 broken (Was: Syslinux 6.00 released)
On 06/20/2013 11:47 PM, Gerardo Exequiel Pozzi wrote:> On 06/20/2013 05:01 PM, Matt Fleming wrote: >> Finally, the Syslinux 6.00 release is out. This release includes support >> for booting from EFI, both from disk-based media and over the network >> via PXE. Thanks to everyone who has been testing this out. >> >> There are some EFI bugs that I'm aware of, >> >> * booting Linux kernels without CONFIG_RELOCATABLE doesn't work >> * 64-bit syslinux.efi cannot boot 32-bit kernels and vice versa >> * displaying of Fn files messes up the console >> >> Please do test out the release and report any regressions. I'm >> particularly interested to hear about any problems with the BIOS code, >> which will be a result of introducing the 'firmware' abstraction that >> allows the BIOS and EFI backends to coexist. >> > > Hello, > > First thanks for doing this release finally, congratulations to the > Syslinux Team :) > > > In BIOS mode, looks like there is something wrong with CONFIG directive > (at least on SYSLINUX and ISOLINUX). After executing it with an existent > (or non existent) file, system cursor changes the default color from > white to gray, and nothing more happens. If serial console is enabled, > nothing more appears here. > This is always reproducible from a cfg file or directly from boot: > prompt. No errors messages. > > Tested building from source, but also happens using binaries provided in > the tarball. > Running on QEMU 1.4.2/1.5.0 with or without KVM enabled. > > > Have a nice day! >Just as remember, looks like was ignored. Adding more info: Now tested with 6.01-pre1 and also fails. Note that executing it without any arguments help message is show. Thanks for your time. -- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 555 bytes Desc: OpenPGP digital signature URL: <http://www.zytor.com/pipermail/syslinux/attachments/20130624/accd8ec4/attachment.sig>
Hallo, Matt, Du meintest am 20.06.13:> Finally, the Syslinux 6.00 release is out. This release includes > support for booting from EFI, both from disk-based media and over the > network via PXE. Thanks to everyone who has been testing this out.> There are some EFI bugs that I'm aware of,> * booting Linux kernels without CONFIG_RELOCATABLE doesn't work > * 64-bit syslinux.efi cannot boot 32-bit kernels and vice versa > * displaying of Fn files messes up the consoleCompiling for/on a 32 bit slackware machine crashes with the famous last words -------------- cite on --------- make[3]: Entering directory `/tmp/syslinux-6.00/efi32/sample' make[3]: Nothing to be done for `all'. make[3]: Leaving directory `/tmp/syslinux-6.00/efi32/sample' make -r -C efi SRC="/tmp/syslinux-6.00/efi" OBJ="/tmp/syslinux-6.00/efi32/efi" \ -f /tmp/syslinux-6.00/efi/Makefile all make[3]: Entering directory `/tmp/syslinux-6.00/efi32/efi' gcc -I/usr/include/efi -I/usr/include/efi/ia32 -DEFI_FUNCTION_WRAPPER -fPIC -fshort-wchar -ffreestanding -Wall -I/tmp/syslinux-6.00/com32/include -I/tmp/syslinux-6.00/com32/include/sys -I/tmp/syslinux-6.00/core/include -I/tmp/syslinux-6.00/core/ -m32 -march=i386 -I/tmp/syslinux-6.00/com32/lib/ -I/tmp/syslinux-6.00/com32/libutil/include -std=gnu99 -DELF_DEBUG -DSYSLINUX_EFI -I/tmp/syslinux-6.00/efi32 -W -Wall -Wstrict-prototypes -D__COM32__ -mno-red-zone -DLDLINUX=\"ldlinux.e32\" -fvisibility=hidden -Wno-unused-parameter -c -o mem.o /tmp/syslinux-6.00/efi/mem.c In file included from /usr/include/efi/efi.h:45:0, from /tmp/syslinux-6.00/efi/efi.h:22, from /tmp/syslinux-6.00/efi/mem.c:3: /usr/include/efi/efiapi.h:663:5: warning: function declaration isn't a prototype [-Wstrict-prototypes] In file included from /tmp/syslinux-6.00/efi/mem.c:3:0: /tmp/syslinux-6.00/efi/efi.h:33:5: error: unknown type name 'EFI_SERVICE_BINDING' make[3]: *** [mem.o] Error 1 make[3]: Leaving directory `/tmp/syslinux-6.00/efi32/efi' make[2]: *** [efi] Error 2 make[2]: Leaving directory `/tmp/syslinux-6.00/efi32' make[1]: *** [efi32] Error 2 make[1]: Leaving directory `/tmp/syslinux-6.00' make: *** [all] Error 2 -------------- cite off --------- Compiling syslinux-5.10 has worked without such problems. For 6.00 I had to install "gnu-efi": <ftp://ftp.gwdg.de/pub/misc/slackware/slackware-current/slackware/l/gnu-efi-3.0s-i486-1.txz> or a similar mirror. Where is the problem: on the syslinux side or on the slackware side? Or somewhere else? Viele Gruesse! Helmut
On Mon, 24 Jun, at 06:27:00PM, Helmut Hullen wrote:> In file included from /tmp/syslinux-6.00/efi/mem.c:3:0: > /tmp/syslinux-6.00/efi/efi.h:33:5: error: unknown type name 'EFI_SERVICE_BINDING'[...]> Where is the problem: on the syslinux side or on the slackware side? Or > somewhere else?You need a newer version of gnu-efi, gnu-efi 3.0u, which is the release containing the EFI_SERVICE_BINDING definition. -- Matt Fleming, Intel Open Source Technology Center