OBS User unknown 2009-06-20 01:13:32 +00:00 committed by Git OBS Bridge
parent ce85676f16
commit 4a681b6cfc
14 changed files with 622 additions and 2448 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d4d17102e014d3183a11719896061dc464c3d9a836caaf47b3b57da4ac23b52d
size 1819370

176
syslinux-3.81.diff Normal file
View File

@ -0,0 +1,176 @@
---
add_crc | 57 ++++++++++++++++++++++++++++++++++++++++++++++++
com32/libutil/get_key.c | 4 +++
com32/samples/keytest.c | 4 +++
core/diskstart.inc | 2 +
core/isolinux.asm | 27 ++++++++++++++++++++++
doc/syslinux.txt | 13 +++++-----
6 files changed, 100 insertions(+), 7 deletions(-)
--- /dev/null
+++ b/add_crc
@@ -0,0 +1,57 @@
+#! /usr/bin/perl
+
+use integer;
+
+# for isolinux
+#
+# Ensure checksum over (first sector - 64 bytes) [internally: FirstSecSum]
+# is 0 by adjusting the variable csum_value.
+#
+# Though isolinux checks the integrity with a separate checksum after all
+# data has been loaded this does not help with BIOSes that don't get even
+# the first 2k right. Hence this additional check. :-(
+#
+
+$file = shift;
+$list = "$file";
+$list =~ s/\.bin$/.lsr/;
+
+open F, $list;
+
+while(<F>) {
+ if(/^\s*\d+\s*(\S+)\s*0+\s*(\<\d+\>\s*)?csum_value\s*dd\s*0/) {
+ $ofs = hex $1;
+ }
+}
+close F;
+
+die "oops 1\n" unless $ofs && !($ofs & 3);
+
+# print "$ofs\n";
+
+open F, $file or die "$file: $!\n";
+
+$file_size = -s $file;
+
+sysread F, $buf, $file_size;
+
+close F;
+
+die "oops 1\n" if $file_size != length($buf);
+
+@x = unpack "V512", $buf;
+
+for ($sum = 0, $i = 16; $i < 512; $i++) {
+ $sum += $x[$i];
+}
+
+# printf "0x%08x\n", $sum;
+
+$ns = pack "V", -$sum;
+
+substr($buf, $ofs, 4) = $ns;
+
+open F, ">$file" or die "$file: $!\n";
+
+syswrite F, $buf;
+
--- a/com32/libutil/get_key.c
+++ b/com32/libutil/get_key.c
@@ -42,6 +42,10 @@
#include <getkey.h>
#include <libutil.h>
+#ifndef CLK_TCK
+# define CLK_TCK __sysconf(2)
+#endif
+
struct keycode {
int code;
int seqlen;
--- a/com32/samples/keytest.c
+++ b/com32/samples/keytest.c
@@ -25,6 +25,10 @@
#include <consoles.h> /* Provided by libutil */
#include <getkey.h>
+#ifndef CLK_TCK
+# define CLK_TCK __sysconf(2)
+#endif
+
static void cooked_keys(void)
{
int key;
--- a/core/diskstart.inc
+++ b/core/diskstart.inc
@@ -254,6 +254,8 @@ getlinsec:
add eax,[bsHidden] ; Add partition offset
xor edx,edx ; Zero-extend LBA (eventually allow 64 bits)
+.patch: jmp strict near .jmp
+
.jmp: jmp strict short getlinsec_cbios
;
--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -949,11 +964,17 @@ getlinsec_cdrom:
; INT 13h with retry
xint13: mov byte [RetryCount],retry_count
.try: pushad
+ ; seen buggy bios that overwrites buffer address on error...
+ push dword [dapa + 4]
call int13
+ pop dword [dapa + 4]
jc .error
+.noerror:
add sp,byte 8*4 ; Clean up stack
ret
.error:
+ or ah,ah
+ jz .noerror
mov [DiskError],ah ; Save error code
popad
mov [DiskSys],ax ; Save system call number
@@ -1120,6 +1141,9 @@ all_read:
; (which will be at 16 only for a single-session disk!); from the PVD
; we should be able to find the rest of what we need to know.
;
+ call get_fs_structures
+ jmp get_fs_struct_done
+
get_fs_structures:
mov eax,[bi_pvd]
mov bx,trackbuf
@@ -1187,6 +1211,9 @@ get_fs_structures:
call crlf
%endif
.no_isolinux_dir:
+ ret
+
+get_fs_struct_done:
;
; Locate the configuration file
--- a/doc/syslinux.txt
+++ b/doc/syslinux.txt
@@ -240,7 +240,7 @@ LABEL label
Append nothing. APPEND with a single hyphen as argument in a
LABEL section can be used to override a global APPEND.
- LOCALBOOT type [ISOLINUX, PXELINUX]
+ LOCALBOOT type [ISOLINUX, SYSLINUX, PXELINUX]
On PXELINUX, specifying "LOCALBOOT 0" instead of a "KERNEL"
option means invoking this particular label will cause a local
disk boot instead of booting a kernel.
@@ -254,12 +254,11 @@ LABEL label
UNDI or PXE stacks are, don't worry -- you don't want them,
just specify 0.
- On ISOLINUX, the "type" specifies the local drive number to
- boot from; 0x00 is the primary floppy drive and 0x80 is the
- primary hard drive. The special value -1 causes ISOLINUX to
- report failure to the BIOS, which, on recent BIOSes, should
- mean that the next boot device in the boot sequence should be
- activated.
+ On ISOLINUX and SYSLINUX, the "type" specifies the local drive
+ number to boot from; 0x00 is the primary floppy drive and 0x80 is
+ the primary hard drive. The special value -1 causes them to report
+ failure to the BIOS, which, on recent BIOSes, should mean that the
+ next boot device in the boot sequence should be activated.
INITRD initrd_file
Starting with version 3.71, an initrd can be specified in a

3
syslinux-3.81.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b054d5d5afef71c0b091f9ba604a7e441d7db2750f9d6311345d7e2dc94ac918
size 3083447

101
syslinux-debug.diff Normal file
View File

@ -0,0 +1,101 @@
---
core/isolinux.asm | 33 +++++++++++++++++++++++++++++++++
core/layout.inc | 7 +++++++
core/parsecmd.inc | 8 ++++++++
3 files changed, 48 insertions(+)
--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -20,6 +20,9 @@
; ****************************************************************************
%define IS_ISOLINUX 1
+
+; %define DEBUG_DISKIO
+
%include "head.inc"
;
@@ -964,10 +967,40 @@ getlinsec_cdrom:
; INT 13h with retry
xint13: mov byte [RetryCount],retry_count
.try: pushad
+%ifdef DEBUG_DISKIO
+ pushad
+ mov cx,16
+.zap:
+ lodsb
+ call writehex2
+ mov al,' '
+ call writechr
+ loop .zap
+ mov ah,0
+ int 16h
+ popad
+%endif
; seen buggy bios that overwrites buffer address on error...
push dword [dapa + 4]
call int13
pop dword [dapa + 4]
+%ifdef DEBUG_DISKIO
+ pushad
+ pushf
+ push ax
+ mov al,':'
+ call writechr
+ mov al,' '
+ call writechr
+ pop ax
+ sbb al,al
+ call writehex4
+ call crlf
+ mov ah,0
+ int 16h
+ popf
+ popad
+%endif
jc .error
.noerror:
add sp,byte 8*4 ; Clean up stack
--- a/core/layout.inc
+++ b/core/layout.inc
@@ -56,6 +56,11 @@ RBFG_brainfuck: resb 2048 ; Bigger than
section .bss2 write nobits align=16
+%ifdef IS_ISOLINUX
+ ; Normal bss...
+ section .bss1 write nobits align=16
+%endif
+
section .text exec write progbits align=16
section .bcopyxx exec write progbits align=16
section .data write progbits align=16
@@ -68,8 +73,10 @@ RBFG_brainfuck: resb 2048 ; Bigger than
; the spillover from the last fractional sector load.
section .uibss write nobits align=16
+%ifndef IS_ISOLINUX
; Normal bss...
section .bss1 write nobits align=16
+%endif
; Symbols from linker script
%macro SECINFO 1
--- a/core/parsecmd.inc
+++ b/core/parsecmd.inc
@@ -121,6 +121,14 @@ KbdMap resb 256 ; Keyboard map
FKeyName resb MAX_FKEYS*FILENAME_MAX ; File names for F-key help
KernelCNameLen resw 1 ; Length of unmangled kernel name
InitRDCNameLen resw 1 ; Length of unmangled initrd name
+
+%if IS_ISOLINUX
+%ifdef DEBUG_MESSAGES
+; we need to rearrange memory a bit to make isolinux-debug.bin fit
+ section .bss
+%endif
+%endif
+
%if IS_SYSLINUX
KernelName resb FILENAME_MAX+1 ; Mangled name for kernel
KernelCName resb FILENAME_MAX+2 ; Unmangled kernel name

View File

@ -0,0 +1,39 @@
--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -283,6 +304,9 @@
cmp word [BIOSType],bios_cdrom
jne found_drive ; If so, no spec packet...
+%if 0
+ ; Some BIOSes don't like that call.
+
; Now figure out what we're actually doing
; Note: use passed-in DL value rather than 7Fh because
; at least some BIOSes will get the wrong value otherwise
@@ -303,6 +327,8 @@
call crlf
%endif
+%endif
+
found_drive:
; Alright, we have found the drive. Now, try to find the
; boot file itself. If we have a boot info table, life is
@@ -427,6 +453,9 @@
%endif
jmp all_read ; Jump to main code
+%if 0
+ ; doesn't work anyway, see above
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Start of BrokenAwardHack --- 10-nov-2002 Knut_Petersen@t-online.de
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -618,6 +647,7 @@
mov si,trysbm_msg
call writemsg
jmp .found_drive ; Pray that this works...
+%endif
fatal_error:
mov si,nothing_msg

47
syslinux-eject.diff Normal file
View File

@ -0,0 +1,47 @@
--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -724,7 +761,34 @@
mov [DiskError],ah ; Save error code
popad
mov [DiskSys],ax ; Save system call number
- dec byte [RetryCount]
+
+%if 0
+ ; eject currently not supported - doesn't work anyway with
+ ; most BIOSes
+
+ test byte [gfx_user_note],1
+ jz .noeject
+ cmp byte [RetryCount],4
+ ja .noeject
+ cmp byte [DiskError],0aah ; drive not ready
+ jnz .noeject
+ ; might have been cdrom eject, wait a bit
+ cmp byte [gfx_ok],0
+ jz .noeject
+ push si
+ push di
+ push ax
+ mov si,err_not_ready
+ xor di,di
+ mov al,0
+ call gfx_infobox
+ pop ax
+ pop di
+ pop si
+%endif
+.noeject:
+
+ dec byte [RetryCount]
jz .real_error
push ax
mov al,[RetryCount]
@@ -825,6 +936,8 @@
crlf_msg db CR, LF
null_msg db 0
+err_not_ready db 'CDROM drive not ready.', 0
+
bios_cdrom_str db 'ETCD', 0
%ifndef DEBUG_MESSAGES
bios_cbios_str db 'CHDD', 0

67
syslinux-gfxboot-keyword Normal file
View File

@ -0,0 +1,67 @@
From: Jeff Mahoney <jeffm@suse.com>
Subject: [PATCH] Alias "gfxboot" to "ui gfxboot"
This patch allows older configs using the SUSE implementation of
syslinux + gfxboot to continue to use the "gfxboot" keyword.
It is intentionally undocumented since it should not be used
in new configurations.
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
---
core/keywords | 1 +
core/keywords.inc | 1 +
core/parseconfig.inc | 15 +++++++++++++++
3 files changed, 17 insertions(+)
--- a/core/keywords
+++ b/core/keywords
@@ -6,6 +6,7 @@ initrd
config
default
ui
+gfxboot
display
font
implicit
--- a/core/keywords.inc
+++ b/core/keywords.inc
@@ -90,6 +90,7 @@ keywd_table:
keyword f0, pc_filename, FKeyN(10)
keyword f11, pc_filename, FKeyN(11)
keyword f12, pc_filename, FKeyN(12)
+ keyword gfxboot, pc_gfxboot
%if IS_PXELINUX
keyword ipappend, pc_ipappend
%endif
--- a/core/parseconfig.inc
+++ b/core/parseconfig.inc
@@ -30,6 +30,20 @@ pc_default: cmp ax,[DefaultLevel]
ret
;
+; "gfxboot" command; Shorthand for "ui gfxboot"
+;
+pc_gfxboot:
+ mov ax,2
+ mov [DefaultLevel],ax ; Setup UI mode
+ mov si,gfxboot_cmd
+ mov di,default_cmd
+ call strcpy
+ dec di
+ call getline
+ mov byte [di-1],0 ; null-terminate
+ ret
+
+;
; "ontimeout" command
;
pc_ontimeout: mov di,Ontimeout
@@ -438,6 +452,7 @@ commit_vk:
section .data
vk_overflow_msg db 'Out of memory parsing config file', CR, LF, 0
SerialNotice db 1 ; Only print this once
+gfxboot_cmd db 'gfxboot ', 0
section .bss
alignb 4

View File

@ -0,0 +1,15 @@
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/Makefile
+++ b/Makefile
@@ -56,7 +56,7 @@ BSUBDIRS = codepage core memdisk modules
ITARGET =
IOBJECTS = $(ITARGET) dos/copybs.com \
utils/gethostip utils/isohybrid utils/mkdiskimage \
- mtools/syslinux linux/syslinux extlinux/extlinux
+ mtools/syslinux linux/syslinux extlinux/extlinux utils/isohybrid
ISUBDIRS = libinstaller mtools linux extlinux utils
# Things to install in /usr/bin

View File

@ -0,0 +1,14 @@
---
core/isolinux.asm | 1 +
1 file changed, 1 insertion(+)
--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -1818,6 +1818,7 @@ default_str db 'default', 0
default_len equ ($-default_str)
boot_dir db '/boot' ; /boot/isolinux
isolinux_dir db '/isolinux', 0
+isolinux_dir_space zb 64
config_name db 'isolinux.cfg', 0
err_disk_image db 'Cannot load disk image (invalid file)?', CR, LF, 0

15
syslinux-no-win32 Normal file
View File

@ -0,0 +1,15 @@
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/Makefile
+++ b/Makefile
@@ -66,7 +66,7 @@ INSTALL_SBIN = extlinux/extlinux
# Things to install in /usr/lib/syslinux
INSTALL_AUX = core/pxelinux.0 gpxe/gpxelinux.0 core/isolinux.bin \
core/isolinux-debug.bin \
- dos/syslinux.com dos/copybs.com win32/syslinux.exe \
+ dos/syslinux.com dos/copybs.com \
mbr/*.bin $(MODULES)
INSTALL_AUX_OPT = win32/syslinux.exe

View File

@ -0,0 +1,23 @@
--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -694,10 +724,17 @@
;
getlinsec_cdrom:
mov si,dapa ; Load up the DAPA
- mov [si+4],bx
- mov bx,es
- mov [si+6],bx
mov [si+8],eax
+ ; seems that some BIOSes have problems if the target
+ ; segment is 0 (don't ask); to avoid this, we normalize
+ ; the buffer address here
+ ; -> seen on Acer TravelMate C102Ti
+ mov [si+4],bx
+ and word [si+4],0fh
+ mov ax,es
+ shr bx,4
+ add ax,bx
+ mov [si+6],ax
.loop:
push bp ; Sectors left
cmp bp,[MaxTransfer]

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Tue May 29 23:35:25 CET 2009 - jeffm@suse.com
- Update to 3.81
- Lots of bug fixes
- Support for disk/CD hybrid images
- Integrated gfxboot support
- Added support for deprecated 'gfxboot' param
- Split into 4 packages
-------------------------------------------------------------------
Tue Nov 4 16:57:17 CET 2008 - snwint@suse.de

View File

@ -1,7 +1,7 @@
#
# spec file for package syslinux (Version 3.63)
# spec file for package syslinux (Version 3.81)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -19,21 +19,31 @@
Name: syslinux
ExclusiveArch: %ix86 x86_64
BuildRequires: glibc-devel-32bit libpng-devel nasm netpbm
%ifarch x86_64
BuildRequires: gcc-32bit
BuildRequires: gcc-32bit glibc-32bit glibc-devel-32bit
%else
BuildRequires: glibc glibc-devel libpng-devel nasm netpbm
%endif
BuildRequires: libpng-devel nasm netpbm
Url: http://syslinux.zytor.com/
License: GPL v2 or later
Group: System/Boot
Requires: mtools
AutoReqProv: on
Summary: Boot Loader for Linux
Version: 3.63
Release: 44
Version: 3.81
Release: 1
Source: %{name}-%{version}.tar.bz2
Source1: isolinux-config
Patch: %{name}-%{version}.diff
Patch1: %{name}-no-win32
Patch2: %{name}-nonzero-target-segment-fix.diff
Patch3: %{name}-debug.diff
Patch4: %{name}-disable-broken-code.diff
Patch5: %{name}-eject.diff
Patch6: %{name}-install-isohybrid
Patch7: %{name}-isolinux-path-config
Patch8: %{name}-gfxboot-keyword
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@ -44,38 +54,123 @@ special purpose boot disks.
Authors:
--------
H. Peter Anvin <hpa@zytor.com>
%package devel
License: GPL v2 or later
Summary: Boot Loader for Linux
Group: System/Boot
Requires: syslinux
%description devel
SYSLINUX is a boot loader for the Linux operating system which operates
off an MS-DOS or Windows FAT file system. It is intended to simplify
first-time installation of Linux and for creation of rescue and other
special purpose boot disks.
Authors:
--------
H. Peter Anvin <hpa@zytor.com>
%package extlinux
License: GPL v2 or later
Summary: Boot Loader for Linux
Group: System/Boot
Requires: syslinux
%description extlinux
SYSLINUX is a boot loader for the Linux operating system which operates
off an MS-DOS or Windows FAT file system. It is intended to simplify
first-time installation of Linux and for creation of rescue and other
special purpose boot disks.
Authors:
--------
H. Peter Anvin <hpa@zytor.com>
%package tftpboot
License: GPL v2 or later
Summary: Boot Loader for Linux
Group: System/Boot
Requires: syslinux
%description tftpboot
SYSLINUX is a boot loader for the Linux operating system which operates
off an MS-DOS or Windows FAT file system. It is intended to simplify
first-time installation of Linux and for creation of rescue and other
special purpose boot disks.
Authors:
--------
H. Peter Anvin <hpa@zytor.com>
%prep
%setup -q
%patch
%patch -p1
%patch1 -p1
#%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%build
export CFLAGS="$RPM_OPT_FLAGS"
chmod +x add_crc
make spotless
make clean
make -C core spotless
make
make -C sample tidy
%install
make install-all \
INSTALLROOT=%{buildroot} BINDIR=%{_bindir} SBINDIR=%{_bindir} \
LIBDIR=%{_datadir} INCDIR=%{_includedir} MANDIR=%{_mandir}
install -s -m 755 unix/syslinux $RPM_BUILD_ROOT/%{_bindir}/syslinux-nomtools
INSTALLROOT=%{buildroot} BINDIR=%{_bindir} SBINDIR=%{_sbindir} \
LIBDIR=%{_datadir} DATADIR=%{_datadir} \
INCDIR=%{_includedir} MANDIR=%{_mandir}
TFTPBOOT=/tftpboot EXTLINUXDIR=/boot/extlinux
make -C sample tidy
mkdir -p %{buildroot}/etc
install -m 755 %{_sourcedir}/isolinux-config $RPM_BUILD_ROOT/%{_bindir}
install -m 755 keytab-lilo.pl syslinux2ansi.pl $RPM_BUILD_ROOT/%{_datadir}/syslinux
rm -rf $RPM_BUILD_ROOT/%{_datadir}/syslinux/com32
%files
%defattr(-,root,root)
%doc doc/*.txt
%doc README* NEWS
%doc COPYING NEWS sample doc/*
%doc %{_mandir}/man1/*
%{_bindir}/*
%{_datadir}/syslinux
%{_datadir}/syslinux/*.com
%{_datadir}/syslinux/*.c32
%{_datadir}/syslinux/*.bin
%{_datadir}/syslinux/*.0
%{_datadir}/syslinux/memdisk
%files devel
%{_datadir}/syslinux/com32
%files extlinux
%{_sbindir}/extlinux
/boot/extlinux
%files tftpboot
/tftpboot
%changelog
* Fri May 29 2009 jeffm@suse.com
- Update to 3.81
- Lots of bug fixes
- Support for disk/CD hybrid images
- Integrated gfxboot support
- Added support for deprecated 'gfxboot' param
- Split into 4 packages
* Tue Nov 04 2008 snwint@suse.de
- gfxboot: increase usable mem size to 8MB
* Fri Oct 17 2008 olh@suse.de
@ -336,7 +431,7 @@ rm -rf $RPM_BUILD_ROOT/%{_datadir}/syslinux/com32
- support graphics boot screen
* Sun Jan 14 2001 snwint@suse.de
- new messages for our Driver Update feature
* Wed Jan 10 2001 ro@suse.de
* Tue Jan 09 2001 ro@suse.de
- re-added README.SuSE to diff
* Mon Dec 18 2000 snwint@suse.de
- detect BIOS extended read capability