This commit is contained in:
parent
4a681b6cfc
commit
aec393448e
14
README.gfxboot
Normal file
14
README.gfxboot
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
gfxboot is now loaded via a COM module. If you used a line like
|
||||||
|
|
||||||
|
gfxboot bootlogo
|
||||||
|
|
||||||
|
before in isolinux.cfg or syslinux.cfg, change this to
|
||||||
|
|
||||||
|
ui gfxboot.com bootlogo
|
||||||
|
|
||||||
|
and add /usr/share/syslinux/gfxboot.com to your boot directory (the one
|
||||||
|
where the config file is).
|
||||||
|
|
||||||
|
This also means that gfxboot now works with other syslinux variants like
|
||||||
|
pxelinux or extlinux, too.
|
||||||
|
|
@ -1,176 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
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
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:b054d5d5afef71c0b091f9ba604a7e441d7db2750f9d6311345d7e2dc94ac918
|
|
||||||
size 3083447
|
|
@ -1,19 +1,5 @@
|
|||||||
From: Jeff Mahoney <jeffm@suse.com>
|
diff --git a/core/keywords b/core/keywords
|
||||||
Subject: [PATCH] Alias "gfxboot" to "ui gfxboot"
|
index c289ae2..b7d4c4b 100644
|
||||||
|
|
||||||
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
|
--- a/core/keywords
|
||||||
+++ b/core/keywords
|
+++ b/core/keywords
|
||||||
@@ -6,6 +6,7 @@ initrd
|
@@ -6,6 +6,7 @@ initrd
|
||||||
@ -24,9 +10,11 @@ Signed-off-by: Jeff Mahoney <jeffm@suse.com>
|
|||||||
display
|
display
|
||||||
font
|
font
|
||||||
implicit
|
implicit
|
||||||
|
diff --git a/core/keywords.inc b/core/keywords.inc
|
||||||
|
index d0f7db3..fc00ad7 100644
|
||||||
--- a/core/keywords.inc
|
--- a/core/keywords.inc
|
||||||
+++ b/core/keywords.inc
|
+++ b/core/keywords.inc
|
||||||
@@ -90,6 +90,7 @@ keywd_table:
|
@@ -91,6 +91,7 @@ keywd_table:
|
||||||
keyword f0, pc_filename, FKeyN(10)
|
keyword f0, pc_filename, FKeyN(10)
|
||||||
keyword f11, pc_filename, FKeyN(11)
|
keyword f11, pc_filename, FKeyN(11)
|
||||||
keyword f12, pc_filename, FKeyN(12)
|
keyword f12, pc_filename, FKeyN(12)
|
||||||
@ -34,13 +22,15 @@ Signed-off-by: Jeff Mahoney <jeffm@suse.com>
|
|||||||
%if IS_PXELINUX
|
%if IS_PXELINUX
|
||||||
keyword ipappend, pc_ipappend
|
keyword ipappend, pc_ipappend
|
||||||
%endif
|
%endif
|
||||||
|
diff --git a/core/parseconfig.inc b/core/parseconfig.inc
|
||||||
|
index 65d71c9..2302536 100644
|
||||||
--- a/core/parseconfig.inc
|
--- a/core/parseconfig.inc
|
||||||
+++ b/core/parseconfig.inc
|
+++ b/core/parseconfig.inc
|
||||||
@@ -30,6 +30,20 @@ pc_default: cmp ax,[DefaultLevel]
|
@@ -30,6 +30,20 @@ pc_default: cmp ax,[DefaultLevel]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;
|
;
|
||||||
+; "gfxboot" command; Shorthand for "ui gfxboot"
|
+; "gfxboot" command; Shorthand for "ui gfxboot.com"
|
||||||
+;
|
+;
|
||||||
+pc_gfxboot:
|
+pc_gfxboot:
|
||||||
+ mov ax,2
|
+ mov ax,2
|
||||||
@ -57,11 +47,11 @@ Signed-off-by: Jeff Mahoney <jeffm@suse.com>
|
|||||||
; "ontimeout" command
|
; "ontimeout" command
|
||||||
;
|
;
|
||||||
pc_ontimeout: mov di,Ontimeout
|
pc_ontimeout: mov di,Ontimeout
|
||||||
@@ -438,6 +452,7 @@ commit_vk:
|
@@ -439,6 +453,7 @@ commit_vk:
|
||||||
section .data
|
section .data
|
||||||
vk_overflow_msg db 'Out of memory parsing config file', CR, LF, 0
|
vk_overflow_msg db 'Out of memory parsing config file', CR, LF, 0
|
||||||
SerialNotice db 1 ; Only print this once
|
SerialNotice db 1 ; Only print this once
|
||||||
+gfxboot_cmd db 'gfxboot ', 0
|
+gfxboot_cmd db 'gfxboot.com ', 0
|
||||||
|
|
||||||
section .bss
|
section .bss
|
||||||
alignb 4
|
alignb 4
|
801
syslinux-3.82-gfxboot.diff
Normal file
801
syslinux-3.82-gfxboot.diff
Normal file
@ -0,0 +1,801 @@
|
|||||||
|
diff --git a/core/abort.inc b/core/abort.inc
|
||||||
|
index 5b16b9d..cc59fa7 100644
|
||||||
|
--- a/core/abort.inc
|
||||||
|
+++ b/core/abort.inc
|
||||||
|
@@ -24,6 +24,10 @@
|
||||||
|
; assumes CS == DS
|
||||||
|
;
|
||||||
|
dot_pause:
|
||||||
|
+ push ax
|
||||||
|
+ mov al,5
|
||||||
|
+ call [comboot_hook]
|
||||||
|
+ pop ax
|
||||||
|
push si
|
||||||
|
mov si,dot_msg
|
||||||
|
call writestr_qchk
|
||||||
|
@@ -63,6 +67,8 @@ abort_check:
|
||||||
|
abort_load:
|
||||||
|
mov bx,error_or_command
|
||||||
|
abort_load_chain:
|
||||||
|
+ mov al,80h
|
||||||
|
+ call [comboot_hook] ; may not return
|
||||||
|
RESET_STACK_AND_SEGS AX
|
||||||
|
call writestr ; Expects SI -> error msg
|
||||||
|
|
||||||
|
diff --git a/core/comboot.inc b/core/comboot.inc
|
||||||
|
index cdba16d..ee3fd77 100644
|
||||||
|
--- a/core/comboot.inc
|
||||||
|
+++ b/core/comboot.inc
|
||||||
|
@@ -96,24 +96,23 @@ is_comboot_image:
|
||||||
|
shl ax,6 ; Kilobytes -> paragraphs
|
||||||
|
mov word [es:02h],ax
|
||||||
|
|
||||||
|
-%ifndef DEPEND
|
||||||
|
-%if real_mode_seg != comboot_seg
|
||||||
|
-%error "This code assumes real_mode_seg == comboot_seg"
|
||||||
|
-%endif
|
||||||
|
-%endif
|
||||||
|
; Copy the command line from high memory
|
||||||
|
+ push word real_mode_seg
|
||||||
|
+ pop ds
|
||||||
|
mov si,cmd_line_here
|
||||||
|
mov cx,125 ; Max cmdline len (minus space and CR)
|
||||||
|
mov di,081h ; Offset in PSP for command line
|
||||||
|
mov al,' ' ; DOS command lines begin with a space
|
||||||
|
stosb
|
||||||
|
|
||||||
|
-.loop: es lodsb
|
||||||
|
+.loop: lodsb
|
||||||
|
and al,al
|
||||||
|
jz .done
|
||||||
|
stosb
|
||||||
|
loop .loop
|
||||||
|
.done:
|
||||||
|
+ push cs
|
||||||
|
+ pop ds
|
||||||
|
|
||||||
|
mov al,0Dh ; CR after last character
|
||||||
|
stosb
|
||||||
|
@@ -963,6 +962,45 @@ comapi_shufraw:
|
||||||
|
mov ecx,P_ECX
|
||||||
|
jmp shuffle_and_boot_raw
|
||||||
|
|
||||||
|
+
|
||||||
|
+;
|
||||||
|
+; INT 22h AX=0025h Set current working directory
|
||||||
|
+;
|
||||||
|
+%if IS_ISOLINUX
|
||||||
|
+comapi_setcwd:
|
||||||
|
+ mov si,P_BX
|
||||||
|
+ mov di,TmpDirName
|
||||||
|
+ mov cx,FILENAME_MAX
|
||||||
|
+ mov ds,P_ES
|
||||||
|
+.copy:
|
||||||
|
+ lodsb
|
||||||
|
+ stosb
|
||||||
|
+ or al,al
|
||||||
|
+ loopnz .copy
|
||||||
|
+ push cs
|
||||||
|
+ pop ds
|
||||||
|
+ stc
|
||||||
|
+ jnz .err
|
||||||
|
+ mov di,TmpDirName
|
||||||
|
+ call setcwd
|
||||||
|
+.err:
|
||||||
|
+ ret
|
||||||
|
+%else
|
||||||
|
+comapi_setcwd equ comapi_err
|
||||||
|
+%endif
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+;
|
||||||
|
+; INT 22h AX=0026h Read filesystem meta data
|
||||||
|
+;
|
||||||
|
+%if IS_ISOLINUX
|
||||||
|
+comapi_mount:
|
||||||
|
+; call iso_mount
|
||||||
|
+ ret
|
||||||
|
+%else
|
||||||
|
+comapi_mount equ comapi_err
|
||||||
|
+%endif
|
||||||
|
+
|
||||||
|
section .data
|
||||||
|
|
||||||
|
%macro int21 2
|
||||||
|
@@ -970,6 +1008,88 @@ comapi_shufraw:
|
||||||
|
dw %2
|
||||||
|
%endmacro
|
||||||
|
|
||||||
|
+
|
||||||
|
+;
|
||||||
|
+; INT 22h AX=0027h Run command, return on error
|
||||||
|
+;
|
||||||
|
+; Terminates the COMBOOT program and executes the command line in
|
||||||
|
+; ES:BX as if it had been entered by the user.
|
||||||
|
+; CS:SI: comboot callback (via far call)
|
||||||
|
+; EDI kernel load address
|
||||||
|
+;
|
||||||
|
+comapi_run2:
|
||||||
|
+ push word P_CS
|
||||||
|
+ push word P_SI
|
||||||
|
+ pop dword [comboot_far]
|
||||||
|
+ push dword P_EDI
|
||||||
|
+ pop dword [KernelStart]
|
||||||
|
+ mov ds,P_ES
|
||||||
|
+ mov si,P_BX
|
||||||
|
+ mov di,command_line
|
||||||
|
+ call strcpy
|
||||||
|
+ push cs
|
||||||
|
+ pop ds
|
||||||
|
+ push cs
|
||||||
|
+ pop es
|
||||||
|
+ mov [comboot_sp_save],sp ; save stack pointer
|
||||||
|
+ mov word [comboot_hook],comboot_hook_entry
|
||||||
|
+ or byte [QuietBoot],2
|
||||||
|
+ jmp load_kernel ; Run a new kernel
|
||||||
|
+
|
||||||
|
+comapi_run2_cont:
|
||||||
|
+ mov word [comboot_hook],comboot_hook_nop
|
||||||
|
+ mov sp,[comboot_sp_save] ; fix stack pointer
|
||||||
|
+ and byte [QuietBoot],~2
|
||||||
|
+ clc
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
+;
|
||||||
|
+; Callback function used at various places during kernel/initrd loading.
|
||||||
|
+;
|
||||||
|
+; The function either returns or continues at comapi_run2_cont.
|
||||||
|
+;
|
||||||
|
+; AL:
|
||||||
|
+; bit 7: 0/1 return/don't return
|
||||||
|
+; bit 0-6: function code
|
||||||
|
+; 0: abort kernel/initrd loading
|
||||||
|
+; 1: kernel/initrd not found
|
||||||
|
+; 2: kernel corrupt
|
||||||
|
+; 3: out of memory (while initrd loading)
|
||||||
|
+; 4: progress start
|
||||||
|
+; 5: progress increment
|
||||||
|
+; 6: progress end: kernel loaded, stop gfxboot
|
||||||
|
+;
|
||||||
|
+comboot_hook_entry:
|
||||||
|
+ pushad
|
||||||
|
+ push gs
|
||||||
|
+ push fs
|
||||||
|
+ push es
|
||||||
|
+ push ds
|
||||||
|
+ call far [comboot_far]
|
||||||
|
+ pop ds
|
||||||
|
+ pop es
|
||||||
|
+ pop fs
|
||||||
|
+ pop gs
|
||||||
|
+ popad
|
||||||
|
+ pushad
|
||||||
|
+ and al,7fh
|
||||||
|
+ cmp al,6
|
||||||
|
+ jnz .notlast
|
||||||
|
+ push es
|
||||||
|
+ mov si,DOSSaveVectors
|
||||||
|
+ mov di,4*20h
|
||||||
|
+ mov cx,20h
|
||||||
|
+ push word 0
|
||||||
|
+ pop es
|
||||||
|
+ rep movsd ; Restore DOS-range vectors
|
||||||
|
+ pop es
|
||||||
|
+.notlast:
|
||||||
|
+ popad
|
||||||
|
+ test al,80h
|
||||||
|
+ jnz comapi_run2_cont
|
||||||
|
+comboot_hook_nop:
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
int21_table:
|
||||||
|
int21 00h, comboot_return
|
||||||
|
int21 01h, comboot_getkey
|
||||||
|
@@ -1022,8 +1142,15 @@ int22_table:
|
||||||
|
dw comapi_closedir ; 0022 close directory
|
||||||
|
dw comapi_shufsize ; 0023 query shuffler size
|
||||||
|
dw comapi_shufraw ; 0024 cleanup, shuffle and boot raw
|
||||||
|
+ dw comapi_setcwd ; 0025 set current working directory
|
||||||
|
+ dw comapi_mount ; 0026 read fs structures (aka mount)
|
||||||
|
+ dw comapi_run2 ; 0027 like 0003, but return on error
|
||||||
|
int22_count equ ($-int22_table)/2
|
||||||
|
|
||||||
|
+comboot_sp_save dw 0
|
||||||
|
+comboot_hook dw comboot_hook_nop
|
||||||
|
+comboot_far dd 0
|
||||||
|
+
|
||||||
|
APIKeyWait db 0
|
||||||
|
APIKeyFlag db 0
|
||||||
|
|
||||||
|
@@ -1042,8 +1169,9 @@ feature_flags_len equ ($-feature_flags)
|
||||||
|
err_notdos db ': attempted DOS system call INT ',0
|
||||||
|
err_comlarge db 'COMBOOT image too large.', CR, LF, 0
|
||||||
|
|
||||||
|
- section .bss1
|
||||||
|
+ section .bss2
|
||||||
|
alignb 4
|
||||||
|
DOSErrTramp resd 33 ; Error trampolines
|
||||||
|
+TmpDirName resb FILENAME_MAX
|
||||||
|
ConfigName resb FILENAME_MAX
|
||||||
|
CurrentDirName resb FILENAME_MAX
|
||||||
|
diff --git a/core/isolinux.asm b/core/isolinux.asm
|
||||||
|
index 2627c2d..a0910fb 100644
|
||||||
|
--- a/core/isolinux.asm
|
||||||
|
+++ b/core/isolinux.asm
|
||||||
|
@@ -1135,73 +1135,23 @@ 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.
|
||||||
|
;
|
||||||
|
-get_fs_structures:
|
||||||
|
- mov eax,[bi_pvd]
|
||||||
|
- mov bx,trackbuf
|
||||||
|
- call getonesec
|
||||||
|
-
|
||||||
|
- mov eax,[trackbuf+156+2]
|
||||||
|
- mov [RootDir+dir_lba],eax
|
||||||
|
- mov [CurrentDir+dir_lba],eax
|
||||||
|
-%ifdef DEBUG_MESSAGES
|
||||||
|
- mov si,dbg_rootdir_msg
|
||||||
|
- call writemsg
|
||||||
|
- call writehex8
|
||||||
|
- call crlf
|
||||||
|
-%endif
|
||||||
|
- mov eax,[trackbuf+156+10]
|
||||||
|
- mov [RootDir+dir_len],eax
|
||||||
|
- mov [CurrentDir+dir_len],eax
|
||||||
|
- add eax,SECTOR_SIZE-1
|
||||||
|
- shr eax,SECTOR_SHIFT
|
||||||
|
- mov [RootDir+dir_clust],eax
|
||||||
|
- mov [CurrentDir+dir_clust],eax
|
||||||
|
-
|
||||||
|
- ; Look for an isolinux directory, and if found,
|
||||||
|
- ; make it the current directory instead of the root
|
||||||
|
- ; directory.
|
||||||
|
- ; Also copy the name of the directory to CurrentDirName
|
||||||
|
- mov word [CurrentDirName],ROOT_DIR_WORD ; Write '/',0 to the CurrentDirName
|
||||||
|
+ call iso_mount
|
||||||
|
mov di,boot_dir ; Search for /boot/isolinux
|
||||||
|
- mov al,02h
|
||||||
|
- push di
|
||||||
|
- call searchdir_iso
|
||||||
|
- pop di
|
||||||
|
- jnz .found_dir
|
||||||
|
- mov di,isolinux_dir
|
||||||
|
- mov al,02h ; Search for /isolinux
|
||||||
|
- push di
|
||||||
|
- call searchdir_iso
|
||||||
|
- pop di
|
||||||
|
- jz .no_isolinux_dir
|
||||||
|
+ call setcwd
|
||||||
|
+ jnc .found_dir
|
||||||
|
+ mov di,isolinux_dir ; Search for /isolinux
|
||||||
|
+ call setcwd
|
||||||
|
.found_dir:
|
||||||
|
- ; Copy current directory name to CurrentDirName
|
||||||
|
- push si
|
||||||
|
- push di
|
||||||
|
- mov si,di
|
||||||
|
- mov di,CurrentDirName
|
||||||
|
- call strcpy
|
||||||
|
- mov byte [di],0 ;done in case it's not word aligned
|
||||||
|
- dec di
|
||||||
|
- mov byte [di],'/'
|
||||||
|
- pop di
|
||||||
|
- pop si
|
||||||
|
|
||||||
|
- mov [CurrentDir+dir_len],eax
|
||||||
|
- mov eax,[si+file_left]
|
||||||
|
- mov [CurrentDir+dir_clust],eax
|
||||||
|
- xor eax,eax ; Free this file pointer entry
|
||||||
|
- xchg eax,[si+file_sector]
|
||||||
|
- mov [CurrentDir+dir_lba],eax
|
||||||
|
%ifdef DEBUG_MESSAGES
|
||||||
|
push si
|
||||||
|
mov si,dbg_isodir_msg
|
||||||
|
call writemsg
|
||||||
|
pop si
|
||||||
|
+ mov eax,[CurrentDir+dir_lba]
|
||||||
|
call writehex8
|
||||||
|
call crlf
|
||||||
|
%endif
|
||||||
|
-.no_isolinux_dir:
|
||||||
|
|
||||||
|
;
|
||||||
|
; Locate the configuration file
|
||||||
|
@@ -1706,6 +1656,90 @@ getfssec:
|
||||||
|
TRACER 'f'
|
||||||
|
ret
|
||||||
|
|
||||||
|
+;
|
||||||
|
+; setcwd: Set current working directory.
|
||||||
|
+;
|
||||||
|
+; On entry:
|
||||||
|
+; DI -> directory name
|
||||||
|
+; On exit:
|
||||||
|
+; CF = 1 -> error
|
||||||
|
+;
|
||||||
|
+; On error, the old working directory is kept.
|
||||||
|
+;
|
||||||
|
+setcwd:
|
||||||
|
+ mov al,02h
|
||||||
|
+ push di
|
||||||
|
+ call searchdir_iso
|
||||||
|
+ pop di
|
||||||
|
+ stc
|
||||||
|
+ jz .err
|
||||||
|
+ mov [CurrentDir+dir_len],eax
|
||||||
|
+ mov eax,[si+file_left]
|
||||||
|
+ mov [CurrentDir+dir_clust],eax
|
||||||
|
+ xor eax,eax
|
||||||
|
+ xchg eax,[si+file_sector]
|
||||||
|
+ mov [CurrentDir+dir_lba],eax
|
||||||
|
+ mov si,di
|
||||||
|
+ mov di,CurrentDirName
|
||||||
|
+ cmp si,di
|
||||||
|
+ jz .ok
|
||||||
|
+ mov cx,FILENAME_MAX
|
||||||
|
+ push ds
|
||||||
|
+ pop es
|
||||||
|
+.copy:
|
||||||
|
+ lodsb
|
||||||
|
+ stosb
|
||||||
|
+ or al,al
|
||||||
|
+ loopnz .copy
|
||||||
|
+ mov byte [di-1],0
|
||||||
|
+ jnz .err
|
||||||
|
+.ok:
|
||||||
|
+ clc
|
||||||
|
+.err:
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
+;
|
||||||
|
+; Read fs meta data and setup RootDir and CurrentDir.
|
||||||
|
+;
|
||||||
|
+; On exit:
|
||||||
|
+; CF = 1 -> error
|
||||||
|
+;
|
||||||
|
+iso_mount:
|
||||||
|
+ mov eax,[bi_pvd]
|
||||||
|
+ mov bx,trackbuf
|
||||||
|
+ call getonesec
|
||||||
|
+
|
||||||
|
+ mov eax,[trackbuf+156+10]
|
||||||
|
+ mov [RootDir+dir_len],eax
|
||||||
|
+ add eax,SECTOR_SIZE-1
|
||||||
|
+ shr eax,SECTOR_SHIFT
|
||||||
|
+ mov [RootDir+dir_clust],eax
|
||||||
|
+ mov eax,[trackbuf+156+2]
|
||||||
|
+ mov [RootDir+dir_lba],eax
|
||||||
|
+
|
||||||
|
+ push ds
|
||||||
|
+ pop es
|
||||||
|
+ mov si,RootDir
|
||||||
|
+ mov di,CurrentDir
|
||||||
|
+ mov cx,dir_t_size
|
||||||
|
+ rep movsb
|
||||||
|
+
|
||||||
|
+%ifdef DEBUG_MESSAGES
|
||||||
|
+ mov si,dbg_rootdir_msg
|
||||||
|
+ call writemsg
|
||||||
|
+ call writehex8
|
||||||
|
+ call crlf
|
||||||
|
+%endif
|
||||||
|
+
|
||||||
|
+ mov di,CurrentDirName
|
||||||
|
+ call setcwd
|
||||||
|
+ jnc .ok
|
||||||
|
+ mov word [CurrentDirName],ROOT_DIR_WORD
|
||||||
|
+.ok:
|
||||||
|
+ clc
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
+
|
||||||
|
; -----------------------------------------------------------------------------
|
||||||
|
; Common modules
|
||||||
|
; -----------------------------------------------------------------------------
|
||||||
|
diff --git a/core/layout.inc b/core/layout.inc
|
||||||
|
index 8c2e248..ca95d2b 100644
|
||||||
|
--- a/core/layout.inc
|
||||||
|
+++ b/core/layout.inc
|
||||||
|
@@ -123,4 +123,4 @@ real_mode_seg equ cache_seg + 1000h
|
||||||
|
pktbuf_seg equ cache_seg ; PXELINUX packet buffers
|
||||||
|
%endif
|
||||||
|
|
||||||
|
-comboot_seg equ real_mode_seg ; COMBOOT image loading zone
|
||||||
|
+comboot_seg equ real_mode_seg + 1000h ; COMBOOT image loading zone
|
||||||
|
diff --git a/core/loadhigh.inc b/core/loadhigh.inc
|
||||||
|
index 8ff9da1..91061fc 100644
|
||||||
|
--- a/core/loadhigh.inc
|
||||||
|
+++ b/core/loadhigh.inc
|
||||||
|
@@ -101,6 +101,8 @@ load_high:
|
||||||
|
ret
|
||||||
|
|
||||||
|
.overflow: mov si,err_nohighmem
|
||||||
|
+ mov al,83h
|
||||||
|
+ call [comboot_hook] ; may not return
|
||||||
|
jmp abort_load
|
||||||
|
|
||||||
|
section .data
|
||||||
|
diff --git a/core/runkernel.inc b/core/runkernel.inc
|
||||||
|
index 8bfc8b8..0cd2488 100644
|
||||||
|
--- a/core/runkernel.inc
|
||||||
|
+++ b/core/runkernel.inc
|
||||||
|
@@ -165,7 +165,7 @@ opt_mem:
|
||||||
|
ret
|
||||||
|
|
||||||
|
opt_quiet:
|
||||||
|
- mov byte [QuietBoot],1
|
||||||
|
+ or byte [QuietBoot],1
|
||||||
|
ret
|
||||||
|
|
||||||
|
%if IS_PXELINUX
|
||||||
|
@@ -228,6 +228,8 @@ new_kernel:
|
||||||
|
mov [LoadFlags],al
|
||||||
|
|
||||||
|
any_kernel:
|
||||||
|
+ mov al,4
|
||||||
|
+ call [comboot_hook]
|
||||||
|
mov si,loading_msg
|
||||||
|
call writestr_qchk
|
||||||
|
mov si,KernelCName ; Print kernel name part of
|
||||||
|
@@ -257,7 +259,7 @@ read_kernel:
|
||||||
|
mov ecx,8000h ; 32K
|
||||||
|
sub ecx,esi ; Number of bytes to copy
|
||||||
|
add esi,(real_mode_seg << 4) ; Pointer to source
|
||||||
|
- mov edi,100000h ; Copy to address 100000h
|
||||||
|
+ mov edi,[KernelStart] ; Copy to kernel address
|
||||||
|
|
||||||
|
call bcopy ; Transfer to high memory
|
||||||
|
|
||||||
|
@@ -319,6 +321,9 @@ load_initrd:
|
||||||
|
;
|
||||||
|
call abort_check ; Last chance!!
|
||||||
|
|
||||||
|
+ mov al,6
|
||||||
|
+ call [comboot_hook]
|
||||||
|
+
|
||||||
|
mov si,ready_msg
|
||||||
|
call writestr_qchk
|
||||||
|
|
||||||
|
@@ -426,7 +431,7 @@ setup_move:
|
||||||
|
|
||||||
|
mov eax,10000h ; Target address of low kernel
|
||||||
|
stosd
|
||||||
|
- mov eax,100000h ; Where currently loaded
|
||||||
|
+ mov eax,[KernelStart] ; Where currently loaded
|
||||||
|
stosd
|
||||||
|
neg eax
|
||||||
|
add eax,[KernelEnd]
|
||||||
|
@@ -434,9 +439,13 @@ setup_move:
|
||||||
|
inc cx
|
||||||
|
|
||||||
|
mov bx,9000h ; Revised real mode segment
|
||||||
|
+ jmp .loading_initrd
|
||||||
|
|
||||||
|
.loading_high:
|
||||||
|
+ mov eax,[KernelStart]
|
||||||
|
+ mov [fs:su_code32start],eax
|
||||||
|
|
||||||
|
+.loading_initrd:
|
||||||
|
cmp word [InitRDPtr],0 ; Did we have an initrd?
|
||||||
|
je .no_initrd
|
||||||
|
|
||||||
|
@@ -489,6 +498,8 @@ old_kernel:
|
||||||
|
xor ax,ax
|
||||||
|
cmp word [InitRDPtr],ax ; Old kernel can't have initrd
|
||||||
|
je .load
|
||||||
|
+ mov al,82h
|
||||||
|
+ call [comboot_hook] ; may not return
|
||||||
|
mov si,err_oldkernel
|
||||||
|
jmp abort_load
|
||||||
|
.load:
|
||||||
|
@@ -613,6 +624,8 @@ loadinitrd:
|
||||||
|
ret
|
||||||
|
|
||||||
|
.notthere:
|
||||||
|
+ mov al,81h
|
||||||
|
+ call [comboot_hook] ; may not return
|
||||||
|
mov si,err_noinitrd
|
||||||
|
call writestr
|
||||||
|
mov si,InitRDCName
|
||||||
|
@@ -625,7 +638,7 @@ loadinitrd:
|
||||||
|
; assumes CS == DS
|
||||||
|
;
|
||||||
|
writestr_qchk:
|
||||||
|
- test byte [QuietBoot],01h
|
||||||
|
+ test byte [QuietBoot],03h
|
||||||
|
jz writestr
|
||||||
|
ret
|
||||||
|
|
||||||
|
@@ -680,4 +693,9 @@ KernelVersion resw 1 ; Kernel protocol version
|
||||||
|
;
|
||||||
|
InitRDPtr resw 1 ; Pointer to initrd= option in command line
|
||||||
|
LoadFlags resb 1 ; Loadflags from kernel
|
||||||
|
-QuietBoot resb 1 ; Set if a quiet boot is requested
|
||||||
|
+
|
||||||
|
+ section .data
|
||||||
|
+QuietBoot db 0 ; Set if a quiet boot is requested
|
||||||
|
+ alignz 4
|
||||||
|
+KernelStart dd 100000h
|
||||||
|
+
|
||||||
|
diff --git a/core/ui.inc b/core/ui.inc
|
||||||
|
index 1b40717..2bc56a1 100644
|
||||||
|
--- a/core/ui.inc
|
||||||
|
+++ b/core/ui.inc
|
||||||
|
@@ -468,6 +468,8 @@ bad_kernel:
|
||||||
|
.really:
|
||||||
|
mov si,KernelName
|
||||||
|
mov di,KernelCName
|
||||||
|
+ mov al,81h
|
||||||
|
+ call [comboot_hook] ; may not return
|
||||||
|
push di
|
||||||
|
call unmangle_name ; Get human form
|
||||||
|
mov si,err_notfound ; Complain about missing kernel
|
||||||
|
@@ -510,7 +512,10 @@ on_error:
|
||||||
|
;
|
||||||
|
; kernel_corrupt: Called if the kernel file does not seem healthy
|
||||||
|
;
|
||||||
|
-kernel_corrupt: mov si,err_notkernel
|
||||||
|
+kernel_corrupt:
|
||||||
|
+ mov al,82h
|
||||||
|
+ call [comboot_hook] ; may not return
|
||||||
|
+ mov si,err_notkernel
|
||||||
|
jmp abort_load
|
||||||
|
|
||||||
|
;
|
||||||
|
@@ -591,7 +596,7 @@ kernel_good:
|
||||||
|
;
|
||||||
|
xor ax,ax
|
||||||
|
mov [InitRDPtr],ax
|
||||||
|
- mov [QuietBoot],al
|
||||||
|
+ and byte [QuietBoot],~1
|
||||||
|
%if IS_PXELINUX
|
||||||
|
mov [KeepPXE],al
|
||||||
|
%endif
|
||||||
|
diff --git a/doc/comboot.txt b/doc/comboot.txt
|
||||||
|
index f5fefda..9fe7f28 100644
|
||||||
|
--- a/doc/comboot.txt
|
||||||
|
+++ b/doc/comboot.txt
|
||||||
|
@@ -955,3 +955,12 @@ AX=0024h [3.80] Cleanup, shuffle and boot, raw version
|
||||||
|
with read/write data segments, matching the respective code
|
||||||
|
segment. For mode 0, B=0 and the limits will be 64K, for mode
|
||||||
|
1, B=1 and the limits will be 4 GB.
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+AX=0025h [3.84] Set current working directory
|
||||||
|
+ Input: AX 00025h
|
||||||
|
+ ES:BX null-terminated directory name string
|
||||||
|
+ Output: None
|
||||||
|
+
|
||||||
|
+ Sets the current working directory. For SYSLINUX, ISOLINUX,
|
||||||
|
+ and PXELINUX, this will be an absolute path.
|
||||||
|
diff --git a/modules/gfxboot.asm b/modules/gfxboot.asm
|
||||||
|
index 5c7b118..7d1693f 100644
|
||||||
|
--- a/modules/gfxboot.asm
|
||||||
|
+++ b/modules/gfxboot.asm
|
||||||
|
@@ -179,6 +179,16 @@ input:
|
||||||
|
jmp input
|
||||||
|
|
||||||
|
boot:
|
||||||
|
+ mov ax,cs
|
||||||
|
+ mov es,ax
|
||||||
|
+ mov bx,command_line
|
||||||
|
+ mov si,syslinux_hook
|
||||||
|
+ mov edi,8 << 20 ; at 8MB
|
||||||
|
+ mov ax,27h
|
||||||
|
+ int 22h
|
||||||
|
+ jnc input
|
||||||
|
+
|
||||||
|
+ ; syslinux variant without function 27h
|
||||||
|
call far [gfx_bc_done]
|
||||||
|
mov ax,cs
|
||||||
|
mov es,ax
|
||||||
|
@@ -190,12 +200,77 @@ exit:
|
||||||
|
error:
|
||||||
|
ret
|
||||||
|
|
||||||
|
+sh_table: dw sh_abort ; 0
|
||||||
|
+ dw sh_not_found ; 1
|
||||||
|
+ dw sh_broken ; 2
|
||||||
|
+ dw sh_out_of_mem ; 3
|
||||||
|
+ dw sh_progress_start ; 4
|
||||||
|
+ dw sh_progress_inc ; 5
|
||||||
|
+ dw sh_progress_end ; 6
|
||||||
|
+sh_len equ ($-sh_table)/2
|
||||||
|
+
|
||||||
|
+;
|
||||||
|
+; Callback function used at various places in syslinux.
|
||||||
|
+;
|
||||||
|
+; Can modify all regs & sregs.
|
||||||
|
+;
|
||||||
|
+; AL:
|
||||||
|
+; bit 7: 0/1 return/don't return
|
||||||
|
+; bit 0-6: function code
|
||||||
|
+; 0: abort kernel/initrd loading
|
||||||
|
+; 1: kernel/initrd not found
|
||||||
|
+; 2: kernel corrupt
|
||||||
|
+; 3: out of memory (while initrd loading)
|
||||||
|
+; 4: progress start
|
||||||
|
+; 5: progress increment
|
||||||
|
+; 6: progress end: kernel loaded, stop gfxboot
|
||||||
|
+;
|
||||||
|
+syslinux_hook:
|
||||||
|
+ push cs
|
||||||
|
+ pop ds
|
||||||
|
+ and al,7fh
|
||||||
|
+ cmp al,sh_len
|
||||||
|
+ jae .end
|
||||||
|
+ movzx bx,al
|
||||||
|
+ add bx,bx
|
||||||
|
+ call word [bx+sh_table]
|
||||||
|
+.end:
|
||||||
|
+ retf
|
||||||
|
+
|
||||||
|
+sh_abort:
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
+sh_not_found:
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
+sh_broken:
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
+sh_out_of_mem:
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
+sh_progress_start:
|
||||||
|
+ call far [gfx_bc_progress_init]
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
+sh_progress_inc:
|
||||||
|
+ mov eax,10000h ; chunk size
|
||||||
|
+ call far [gfx_bc_progress_update]
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
+sh_progress_end:
|
||||||
|
+ call far [gfx_bc_progress_done]
|
||||||
|
+ call far [gfx_bc_done]
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
+
|
||||||
|
cb_table dw cb_status ; 0
|
||||||
|
dw cb_fopen ; 1
|
||||||
|
dw cb_fread ; 2
|
||||||
|
dw cb_getcwd ; 3
|
||||||
|
dw cb_chdir ; 4
|
||||||
|
dw cb_readsector ; 5
|
||||||
|
+ dw cb_mount ; 6
|
||||||
|
cb_len equ ($-cb_table)/2
|
||||||
|
|
||||||
|
gfx_cb:
|
||||||
|
@@ -291,16 +366,25 @@ cb_fread_end:
|
||||||
|
; edx filename
|
||||||
|
;
|
||||||
|
cb_getcwd:
|
||||||
|
- mov edx,cs
|
||||||
|
+ mov ax,1fh
|
||||||
|
+ int 22h
|
||||||
|
+ mov edx,es
|
||||||
|
+ movzx ebx,bx
|
||||||
|
shl edx,4
|
||||||
|
- add edx,gfx_slash
|
||||||
|
+ add edx,ebx
|
||||||
|
xor al,al
|
||||||
|
ret
|
||||||
|
|
||||||
|
; Set current working directory
|
||||||
|
;
|
||||||
|
cb_chdir:
|
||||||
|
- xor al,al
|
||||||
|
+ push cs
|
||||||
|
+ pop es
|
||||||
|
+ mov bx,fname_buf
|
||||||
|
+ mov ax,25h
|
||||||
|
+ int 22h
|
||||||
|
+ mov al,0
|
||||||
|
+ adc al,0
|
||||||
|
ret
|
||||||
|
|
||||||
|
; Read sector
|
||||||
|
@@ -334,6 +418,17 @@ cb_readsector:
|
||||||
|
cb_readsector_end:
|
||||||
|
ret
|
||||||
|
|
||||||
|
+; Read filesystem meta data.
|
||||||
|
+;
|
||||||
|
+; return:
|
||||||
|
+;
|
||||||
|
+cb_mount:
|
||||||
|
+ mov ax,26h
|
||||||
|
+ int 22h
|
||||||
|
+ mov al,0
|
||||||
|
+ adc al,0
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
gfx_init:
|
||||||
|
mov ax,0e801h
|
||||||
|
xor bx,bx
|
||||||
|
@@ -358,11 +453,10 @@ mem_below_16mb:
|
||||||
|
shl eax,10
|
||||||
|
mov [gfx_bios_mem_size],eax
|
||||||
|
shr eax,20
|
||||||
|
- cmp ax,16
|
||||||
|
+ cmp ax,32
|
||||||
|
jb skip_extended
|
||||||
|
|
||||||
|
- mov word [gfx_xmem_0],88h ; 8MB at 8MB
|
||||||
|
- mov dword [gfx_save_area1],7f0000h ; 8MB-64k
|
||||||
|
+ mov word [gfx_xmem_0],017h ; 3MB at 16MB
|
||||||
|
|
||||||
|
skip_extended:
|
||||||
|
movzx ebx,word [gfx_mem_start_seg]
|
||||||
|
@@ -405,7 +499,37 @@ skip_extended:
|
||||||
|
mov [gfx_bc_menu_init],ax
|
||||||
|
mov [gfx_bc_menu_init+2],es
|
||||||
|
|
||||||
|
-; ...
|
||||||
|
+ mov ax,[es:bx+8]
|
||||||
|
+ mov [gfx_bc_infobox_init],ax
|
||||||
|
+ mov [gfx_bc_infobox_init+2],es
|
||||||
|
+
|
||||||
|
+ mov ax,[es:bx+10]
|
||||||
|
+ mov [gfx_bc_infobox_done],ax
|
||||||
|
+ mov [gfx_bc_infobox_done+2],es
|
||||||
|
+
|
||||||
|
+ mov ax,[es:bx+12]
|
||||||
|
+ mov [gfx_bc_progress_init],ax
|
||||||
|
+ mov [gfx_bc_progress_init+2],es
|
||||||
|
+
|
||||||
|
+ mov ax,[es:bx+14]
|
||||||
|
+ mov [gfx_bc_progress_done],ax
|
||||||
|
+ mov [gfx_bc_progress_done+2],es
|
||||||
|
+
|
||||||
|
+ mov ax,[es:bx+16]
|
||||||
|
+ mov [gfx_bc_progress_update],ax
|
||||||
|
+ mov [gfx_bc_progress_update+2],es
|
||||||
|
+
|
||||||
|
+ mov ax,[es:bx+18]
|
||||||
|
+ mov [gfx_bc_progress_limit],ax
|
||||||
|
+ mov [gfx_bc_progress_limit+2],es
|
||||||
|
+
|
||||||
|
+ mov ax,[es:bx+20]
|
||||||
|
+ mov [gfx_bc_password_init],ax
|
||||||
|
+ mov [gfx_bc_password_init+2],es
|
||||||
|
+
|
||||||
|
+ mov ax,[es:bx+22]
|
||||||
|
+ mov [gfx_bc_password_done],ax
|
||||||
|
+ mov [gfx_bc_password_done+2],es
|
||||||
|
|
||||||
|
mov esi,cs
|
||||||
|
shl esi,4
|
||||||
|
@@ -974,8 +1098,6 @@ msg_no_labels_defined db 'No labels defined in config file',0dh,0ah,0
|
||||||
|
msg_space db ' ',0
|
||||||
|
msg_crlf db 0dh,0ah,0
|
||||||
|
|
||||||
|
-gfx_slash db '/', 0
|
||||||
|
-db0 db 0
|
||||||
|
menu_timeout dd 100
|
||||||
|
|
||||||
|
keyword_text_label db 6,'label',0
|
||||||
|
@@ -1071,8 +1193,6 @@ gfx_mem_end_seg resw 1
|
||||||
|
|
||||||
|
alignb 4
|
||||||
|
gfx_mem resd 1 ; linear address
|
||||||
|
-gfx_save_area1 resd 1 ; 64k
|
||||||
|
-gfx_save_area1_used resb 1 ; != 0 if area1 is in use
|
||||||
|
|
||||||
|
alignb 4
|
||||||
|
; interface to loadable gfx extension (seg:ofs values)
|
||||||
|
@@ -1082,3 +1202,12 @@ gfx_bc_init resd 1
|
||||||
|
gfx_bc_done resd 1
|
||||||
|
gfx_bc_input resd 1
|
||||||
|
gfx_bc_menu_init resd 1
|
||||||
|
+gfx_bc_infobox_init resd 1
|
||||||
|
+gfx_bc_infobox_done resd 1
|
||||||
|
+gfx_bc_progress_init resd 1
|
||||||
|
+gfx_bc_progress_done resd 1
|
||||||
|
+gfx_bc_progress_update resd 1
|
||||||
|
+gfx_bc_progress_limit resd 1
|
||||||
|
+gfx_bc_password_init resd 1
|
||||||
|
+gfx_bc_password_done resd 1
|
||||||
|
+
|
237
syslinux-3.82-s_herbst.diff
Normal file
237
syslinux-3.82-s_herbst.diff
Normal file
@ -0,0 +1,237 @@
|
|||||||
|
diff --git a/modules/gfxboot.asm b/modules/gfxboot.asm
|
||||||
|
index c9fdd1b..5c7b118 100644
|
||||||
|
--- a/modules/gfxboot.asm
|
||||||
|
+++ b/modules/gfxboot.asm
|
||||||
|
@@ -144,7 +144,15 @@ got_config_file:
|
||||||
|
push cs
|
||||||
|
pop es
|
||||||
|
call parse_config
|
||||||
|
+ cmp word [label_cnt],0
|
||||||
|
+ ja labels_defined
|
||||||
|
|
||||||
|
+ mov bx,msg_no_labels_defined
|
||||||
|
+ mov ax,2
|
||||||
|
+ int 22h
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
+labels_defined:
|
||||||
|
; get_gfx_file
|
||||||
|
mov ax,cs
|
||||||
|
add ax,2000h
|
||||||
|
@@ -417,6 +425,14 @@ gfx_read_file:
|
||||||
|
mov si,pspCmdArg+1
|
||||||
|
int 22h
|
||||||
|
jnc gfx_file_read
|
||||||
|
+
|
||||||
|
+ mov ax,2
|
||||||
|
+ mov bx,pspCmdArg+1
|
||||||
|
+ int 22h
|
||||||
|
+
|
||||||
|
+ mov ax,2
|
||||||
|
+ mov bx,msg_not_found
|
||||||
|
+ int 22h
|
||||||
|
stc
|
||||||
|
ret
|
||||||
|
|
||||||
|
@@ -641,8 +657,7 @@ gfx_input:
|
||||||
|
shl edi,4
|
||||||
|
add edi, command_line ; buffer (0: no buffer)
|
||||||
|
mov ecx, max_cmd_len ; buffer size
|
||||||
|
-; xor eax,eax ; timeout value (0: no timeout)
|
||||||
|
- mov eax,100 ; timeout value (0: no timeout)
|
||||||
|
+ mov eax,[menu_timeout] ; timeout value (0: no timeout)
|
||||||
|
|
||||||
|
call far [gfx_bc_input]
|
||||||
|
ret
|
||||||
|
@@ -699,33 +714,39 @@ parse_config:
|
||||||
|
mov bx, msg_crlf
|
||||||
|
int 22h
|
||||||
|
%endif
|
||||||
|
+ mov bx,keywords
|
||||||
|
+ mov cx,[keyword_cnt]
|
||||||
|
+.keywords_loop:
|
||||||
|
+ push cx
|
||||||
|
push si
|
||||||
|
push di
|
||||||
|
- xor ecx,ecx
|
||||||
|
+ xor cx,cx
|
||||||
|
mov si,configbuf
|
||||||
|
- mov di,label_keyword+1
|
||||||
|
- mov cl, byte [label_keyword]
|
||||||
|
+ mov di,[bx]
|
||||||
|
+ mov cl,byte [di]
|
||||||
|
+ inc di
|
||||||
|
call memcmp
|
||||||
|
pop di
|
||||||
|
pop si
|
||||||
|
- jz .do_label
|
||||||
|
+ jnz .not_found
|
||||||
|
+ pop cx
|
||||||
|
+ call [bx+2] ; call keyword handler
|
||||||
|
+ jmp .read
|
||||||
|
|
||||||
|
- push si
|
||||||
|
- push di
|
||||||
|
- xor ecx,ecx
|
||||||
|
- mov si,configbuf
|
||||||
|
- mov di,default_keyword+1
|
||||||
|
- mov cl, byte [default_keyword]
|
||||||
|
- call memcmp
|
||||||
|
- pop di
|
||||||
|
- pop si
|
||||||
|
- jz .do_default
|
||||||
|
+.not_found:
|
||||||
|
+ add bx,4
|
||||||
|
+ pop cx
|
||||||
|
+ loop .keywords_loop
|
||||||
|
|
||||||
|
.nextline:
|
||||||
|
call skipline
|
||||||
|
jmp .read
|
||||||
|
|
||||||
|
-.do_label:
|
||||||
|
+.eof:
|
||||||
|
+.noparm:
|
||||||
|
+ ret
|
||||||
|
+
|
||||||
|
+do_label:
|
||||||
|
call skipspace
|
||||||
|
jz .eof
|
||||||
|
jc .noparm
|
||||||
|
@@ -742,10 +763,11 @@ parse_config:
|
||||||
|
pop di
|
||||||
|
pop es
|
||||||
|
inc word [label_cnt]
|
||||||
|
+.eof:
|
||||||
|
+.noparm:
|
||||||
|
+ ret
|
||||||
|
|
||||||
|
- jmp .read
|
||||||
|
-
|
||||||
|
-.do_default:
|
||||||
|
+do_default:
|
||||||
|
call skipspace
|
||||||
|
jz .eof
|
||||||
|
jc .noparm
|
||||||
|
@@ -759,8 +781,42 @@ parse_config:
|
||||||
|
pop di
|
||||||
|
pop es
|
||||||
|
|
||||||
|
- jmp .read
|
||||||
|
+.eof:
|
||||||
|
+.noparm:
|
||||||
|
+ ret
|
||||||
|
|
||||||
|
+do_timeout:
|
||||||
|
+ call skipspace
|
||||||
|
+ jz .eof
|
||||||
|
+ jc .noparm
|
||||||
|
+ call ungetc
|
||||||
|
+ push es
|
||||||
|
+ push di
|
||||||
|
+ push cs
|
||||||
|
+ pop es
|
||||||
|
+ mov di,NumBuf
|
||||||
|
+.getnum:
|
||||||
|
+ cmp di,NumBufEnd
|
||||||
|
+ jae .loaded
|
||||||
|
+ call getc
|
||||||
|
+ stosb
|
||||||
|
+ cmp al,'-'
|
||||||
|
+ jnb .getnum
|
||||||
|
+ call ungetc
|
||||||
|
+ dec di
|
||||||
|
+.loaded:
|
||||||
|
+ mov byte [di],0
|
||||||
|
+ pop di
|
||||||
|
+ pop es
|
||||||
|
+ push cs
|
||||||
|
+ pop ds
|
||||||
|
+ mov si,NumBuf
|
||||||
|
+ push ebx
|
||||||
|
+ call parseint
|
||||||
|
+ jc .err
|
||||||
|
+ mov [menu_timeout],ebx
|
||||||
|
+.err:
|
||||||
|
+ pop ebx
|
||||||
|
.eof:
|
||||||
|
.noparm:
|
||||||
|
ret
|
||||||
|
@@ -876,23 +932,63 @@ memcmp:
|
||||||
|
pop si
|
||||||
|
ret
|
||||||
|
|
||||||
|
- section .data
|
||||||
|
-label_keyword db 6,'label',0
|
||||||
|
-default_keyword db 7,'default',0
|
||||||
|
+parseint:
|
||||||
|
+ push eax
|
||||||
|
+ push ecx
|
||||||
|
+ xor eax,eax
|
||||||
|
+ xor ebx,ebx
|
||||||
|
+ xor ecx,ecx
|
||||||
|
+ mov cl,10
|
||||||
|
+.loop:
|
||||||
|
+ lodsb
|
||||||
|
+ and al,al
|
||||||
|
+ jz .done
|
||||||
|
+ cmp al,'0'
|
||||||
|
+ jb .err
|
||||||
|
+ cmp al,'9'
|
||||||
|
+ ja .err
|
||||||
|
+ sub al,'0'
|
||||||
|
+ imul ebx,ecx
|
||||||
|
+ add ebx,eax
|
||||||
|
+ jmp short .loop
|
||||||
|
+.done:
|
||||||
|
+ clc
|
||||||
|
+.ret:
|
||||||
|
+ pop ecx
|
||||||
|
+ pop eax
|
||||||
|
+ ret
|
||||||
|
+.err:
|
||||||
|
+ stc
|
||||||
|
+ jmp short .ret
|
||||||
|
|
||||||
|
+ section .data
|
||||||
|
msg_progname db 'gfxboot: ',0
|
||||||
|
msg_config_file db 'Configuration file',0
|
||||||
|
msg_missing db 'missing',0
|
||||||
|
msg_usage db 'Usage: gfxboot.com <bootlogo>',0dh,0ah,0
|
||||||
|
msg_memory db 'Could not detect available memory size',0dh,0ah,0
|
||||||
|
msg_bootlogo_toobig db 'bootlogo file too big',0dh,0ah,0
|
||||||
|
-msg_pxelinux db 'pxelinux is not supported',0dh,0ah,0
|
||||||
|
msg_unknown_file_size db 'unknown file size',0dh,0ah,0
|
||||||
|
+msg_not_found db ' not found',0dh,0ah,0
|
||||||
|
+msg_no_labels_defined db 'No labels defined in config file',0dh,0ah,0
|
||||||
|
msg_space db ' ',0
|
||||||
|
msg_crlf db 0dh,0ah,0
|
||||||
|
|
||||||
|
gfx_slash db '/', 0
|
||||||
|
db0 db 0
|
||||||
|
+menu_timeout dd 100
|
||||||
|
+
|
||||||
|
+keyword_text_label db 6,'label',0
|
||||||
|
+keyword_text_default db 7,'default',0
|
||||||
|
+keyword_text_timeout db 7,'timeout',0
|
||||||
|
+keywords equ $
|
||||||
|
+ dw keyword_text_label
|
||||||
|
+ dw do_label
|
||||||
|
+ dw keyword_text_default
|
||||||
|
+ dw do_default
|
||||||
|
+ dw keyword_text_timeout
|
||||||
|
+ dw do_timeout
|
||||||
|
+keyword_cnt dw ($-keywords)/4
|
||||||
|
|
||||||
|
; menu entry descriptor
|
||||||
|
menu_entries equ 0
|
||||||
|
@@ -942,6 +1038,9 @@ dentry_buf_len equ $ - dentry_buf
|
||||||
|
max_cmd_len equ 2047
|
||||||
|
command_line resb max_cmd_len+2
|
||||||
|
|
||||||
|
+NumBuf resb 15
|
||||||
|
+NumBufEnd resb 1
|
||||||
|
+
|
||||||
|
alignb 4
|
||||||
|
derivative_id resb 1
|
||||||
|
drivenumber resb 1
|
180
syslinux-3.82-suse.diff
Normal file
180
syslinux-3.82-suse.diff
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 76abff5..7d00782 100644
|
||||||
|
--- 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
|
||||||
|
|
||||||
|
diff --git a/core/Makefile b/core/Makefile
|
||||||
|
index 65418c4..fbb38b5 100644
|
||||||
|
--- a/core/Makefile
|
||||||
|
+++ b/core/Makefile
|
||||||
|
@@ -66,6 +66,7 @@ kwdhash.gen: keywords genhash.pl
|
||||||
|
iso%.bin: iso%.elf checksumiso.pl
|
||||||
|
$(OBJCOPY) -O binary $< $@
|
||||||
|
$(PERL) checksumiso.pl $@
|
||||||
|
+ -./add_crc $@
|
||||||
|
|
||||||
|
# Standard rule for {ldlinux,pxelinux,extlinux}.bin
|
||||||
|
%.bin: %.elf
|
||||||
|
diff --git a/core/add_crc b/core/add_crc
|
||||||
|
new file mode 100755
|
||||||
|
index 0000000..0da2307
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/core/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;
|
||||||
|
+
|
||||||
|
diff --git a/core/isolinux.asm b/core/isolinux.asm
|
||||||
|
index a0910fb..c947846 100644
|
||||||
|
--- a/core/isolinux.asm
|
||||||
|
+++ b/core/isolinux.asm
|
||||||
|
@@ -308,6 +308,22 @@ initial_csum: xor edi,edi
|
||||||
|
mov [FirstSecSum],edi
|
||||||
|
|
||||||
|
mov [DriveNumber],dl
|
||||||
|
+
|
||||||
|
+ ; check whether the BIOS did load us correctly
|
||||||
|
+ cmp dl,80h ; some BIOSes try to do floppy emulation...
|
||||||
|
+ jb bios_err
|
||||||
|
+ cmp dword [FirstSecSum], byte 0
|
||||||
|
+ jmp bios_ok ; ##############
|
||||||
|
+ jz bios_ok
|
||||||
|
+bios_err:
|
||||||
|
+ mov si,broken_bios_msg
|
||||||
|
+ call writemsg
|
||||||
|
+ jmp short $
|
||||||
|
+broken_bios_msg db 13, 10, 'Cannot boot from this CD. Please try a BIOS update.', 13, 10, 0
|
||||||
|
+ align 4
|
||||||
|
+csum_value dd 0
|
||||||
|
+bios_ok:
|
||||||
|
+
|
||||||
|
%ifdef DEBUG_MESSAGES
|
||||||
|
mov si,startup_msg
|
||||||
|
call writemsg
|
||||||
|
@@ -336,6 +352,9 @@ initial_csum: xor edi,edi
|
||||||
|
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
|
||||||
|
@@ -356,6 +375,8 @@ initial_csum: xor edi,edi
|
||||||
|
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
|
||||||
|
@@ -480,6 +501,9 @@ integrity_ok:
|
||||||
|
%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
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
@@ -671,6 +695,7 @@ spec_query_failed:
|
||||||
|
mov si,trysbm_msg
|
||||||
|
call writemsg
|
||||||
|
jmp .found_drive ; Pray that this works...
|
||||||
|
+%endif
|
||||||
|
|
||||||
|
fatal_error:
|
||||||
|
mov si,nothing_msg
|
||||||
|
@@ -936,8 +961,18 @@ maxtrans:
|
||||||
|
getlinsec_cdrom:
|
||||||
|
mov si,dapa ; Load up the DAPA
|
||||||
|
mov [si+4],bx
|
||||||
|
- mov [si+6],es
|
||||||
|
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
|
||||||
|
+ 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,[MaxTransferCD]
|
||||||
|
@@ -1770,6 +1805,7 @@ default_str db 'default', 0
|
||||||
|
default_len equ ($-default_str)
|
||||||
|
boot_dir db '/boot' ; /boot/isolinux
|
||||||
|
isolinux_dir db '/isolinux', 0
|
||||||
|
+zb 64
|
||||||
|
config_name db 'isolinux.cfg', 0
|
||||||
|
err_disk_image db 'Cannot load disk image (invalid file)?', CR, LF, 0
|
||||||
|
|
3
syslinux-3.82.tar.bz2
Normal file
3
syslinux-3.82.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:1dbbf8cfd10fc07187fa8bfede23639fc95314976730f3474cb349e8bf6c6f61
|
||||||
|
size 3086896
|
@ -1,101 +0,0 @@
|
|||||||
---
|
|
||||||
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
|
|
@ -1,39 +0,0 @@
|
|||||||
--- 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
|
|
@ -1,47 +0,0 @@
|
|||||||
--- 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
|
|
@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
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
|
|
@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
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
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
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
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
|||||||
--- 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]
|
|
@ -1,12 +1,84 @@
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue May 29 23:35:25 CET 2009 - jeffm@suse.com
|
Wed Jun 10 11:59:54 CEST 2009 - snwint@suse.de
|
||||||
|
|
||||||
|
- update to version 3.82
|
||||||
|
* Lots of bug fixes.
|
||||||
|
* Simple menu: make ONTIMEOUT work with MENU HIDDEN.
|
||||||
|
* PXELINUX: handle TFTP servers which have extra NULs at the
|
||||||
|
end of an OACK packet.
|
||||||
|
* Attempt to halt the processor while idle. This can cause
|
||||||
|
bad reponsiveness when using a serial console especially for
|
||||||
|
automated input; if that ends up being a problem, use the
|
||||||
|
new "NOHALT 1" configuration command.
|
||||||
|
* isohybrid: fix the -partok logic for loading from a partition.
|
||||||
|
* isohybrid: add a variety of options, and a help message.
|
||||||
|
* isohybrid: fix problem with images over 2 GB in size.
|
||||||
|
* ISOLINUX: fix booting in hybrid mode when CBIOS is used.
|
||||||
|
This unfortunately means that the isohybrid handoff protocol
|
||||||
|
has changed, so the isohybrid utility must version-match
|
||||||
|
isolinux.bin.
|
||||||
|
* Don't hang trying to boot a "menu quit" label from the CLI.
|
||||||
|
* Fix problem with boot-once "sticking" on some BIOSes.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Apr 22 12:54:53 CEST 2009 - snwint@suse.de
|
||||||
|
|
||||||
|
- gfxboot: usage has changed; see README.gfxboot for details
|
||||||
|
|
||||||
|
- update to version 3.75
|
||||||
|
* Lots of bug fixes.
|
||||||
|
* New UI directive, which allows a more natural way to specify
|
||||||
|
a menu system (or not.) With the UI directive specifying
|
||||||
|
the menu system, the DEFAULT directive can be used to select
|
||||||
|
the default entry inside the menus.
|
||||||
|
* kbdmap.c32: new module to load a new keyboard map
|
||||||
|
dynamically.
|
||||||
|
* Suppress the Loading ... message if "quiet" is specified on
|
||||||
|
the kernel command line.
|
||||||
|
* MBR: produce alternate MBR variants which force the drive
|
||||||
|
number to hd0 (_f variants), or force the drive number to
|
||||||
|
hd0 if the Ctrl key is pressed (_c variants.) Furthermore,
|
||||||
|
add an MBR variant (altmbr*.bin) which ignores the active
|
||||||
|
flag and instead boots the partition number specified in the
|
||||||
|
byte at offset 439 decimal.
|
||||||
|
* Add IPAPPEND strings to com32 modules, especially needed for
|
||||||
|
linux.c32.
|
||||||
|
* New MENU SAVE directive which saves the latest menu
|
||||||
|
selection until the next boot. Currently only implemented for
|
||||||
|
EXTLINUX.
|
||||||
|
* gfxboot.com: *experimental* interface module to Steffen
|
||||||
|
Winterfeldt's "gfxboot" graphical front end
|
||||||
|
(http://gfxboot.sourceforge.net/). Module by Sebastian Herbszt.
|
||||||
|
* config.c32: trivial COM32 module to restart Syslinux with
|
||||||
|
another configuration file from the command line (equivalent
|
||||||
|
to the CONFIG command in the configuratin file.)
|
||||||
|
* Include the pxechain.com module from Jeffery Hutzelman at
|
||||||
|
Carnegie Mellon University. This allows chaining another
|
||||||
|
PXE boot program while changing the DHCP packet passed to
|
||||||
|
it.
|
||||||
|
* ISOLINUX: support generating images which can be either
|
||||||
|
a CD-ROM or a hard disk (USB disk, etc.) See
|
||||||
|
doc/isolinux.txt for more information.
|
||||||
|
* Tab display of labels, based on a patch from Sebastian
|
||||||
|
Herbszt. Can be disabled with the NOCOMPLETE configuration
|
||||||
|
command.
|
||||||
|
* Optionally allow initrd to be specified on a separate line
|
||||||
|
rather than as part of the "append" line. This is not
|
||||||
|
recommended, but apparently makes life easier for some
|
||||||
|
tools.
|
||||||
|
* chain.c32: lots of new options added
|
||||||
|
* ifcpu64.c32: simple COM32 module to select a 32- or 64-bit
|
||||||
|
kernel (and optionally 32-bit kernels with or without PAE.)
|
||||||
|
Eventually we want a scripting language for this
|
||||||
|
kind of stuff; a Lua module is under development.
|
||||||
|
* PXELINUX: Support enhanced capabilities when running on top
|
||||||
|
of gPXE (http://www.etherboot.org/). In particular, support
|
||||||
|
URL-style syntax for filenames, and any protocol that gPXE
|
||||||
|
supports (except, currently, iSCSI and AoE.) This feature
|
||||||
|
is currently highly experimental.
|
||||||
|
* SYSLINUX: VFAT long filename support.
|
||||||
|
* Add an experimental MBR for GPT partition tables.
|
||||||
|
|
||||||
- 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
|
Tue Nov 4 16:57:17 CET 2008 - snwint@suse.de
|
||||||
|
407
syslinux.spec
407
syslinux.spec
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# spec file for package syslinux (Version 3.81)
|
# spec file for package syslinux (Version 3.82)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
@ -19,31 +19,25 @@
|
|||||||
|
|
||||||
Name: syslinux
|
Name: syslinux
|
||||||
ExclusiveArch: %ix86 x86_64
|
ExclusiveArch: %ix86 x86_64
|
||||||
|
BuildRequires: libpng-devel nasm netpbm python
|
||||||
%ifarch x86_64
|
%ifarch x86_64
|
||||||
BuildRequires: gcc-32bit glibc-32bit glibc-devel-32bit
|
BuildRequires: gcc-32bit glibc-devel-32bit
|
||||||
%else
|
|
||||||
BuildRequires: glibc glibc-devel libpng-devel nasm netpbm
|
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: libpng-devel nasm netpbm
|
|
||||||
Url: http://syslinux.zytor.com/
|
Url: http://syslinux.zytor.com/
|
||||||
License: GPL v2 or later
|
License: GPL v2 or later
|
||||||
Group: System/Boot
|
Group: System/Boot
|
||||||
Requires: mtools
|
Requires: mtools
|
||||||
AutoReqProv: on
|
AutoReqProv: on
|
||||||
Summary: Boot Loader for Linux
|
Summary: Boot Loader for Linux
|
||||||
Version: 3.81
|
Version: 3.82
|
||||||
Release: 1
|
Release: 1
|
||||||
Source: %{name}-%{version}.tar.bz2
|
Source: %{name}-%{version}.tar.bz2
|
||||||
Source1: isolinux-config
|
Source1: isolinux-config
|
||||||
Patch: %{name}-%{version}.diff
|
Source2: README.gfxboot
|
||||||
Patch1: %{name}-no-win32
|
Patch0: %{name}-%{version}-s_herbst.diff
|
||||||
Patch2: %{name}-nonzero-target-segment-fix.diff
|
Patch1: %{name}-%{version}-gfxboot.diff
|
||||||
Patch3: %{name}-debug.diff
|
Patch2: %{name}-%{version}-suse.diff
|
||||||
Patch4: %{name}-disable-broken-code.diff
|
Patch3: %{name}-%{version}-compat.diff
|
||||||
Patch5: %{name}-eject.diff
|
|
||||||
Patch6: %{name}-install-isohybrid
|
|
||||||
Patch7: %{name}-isolinux-path-config
|
|
||||||
Patch8: %{name}-gfxboot-keyword
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -54,392 +48,41 @@ 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:
|
Authors:
|
||||||
--------
|
--------
|
||||||
H. Peter Anvin <hpa@zytor.com>
|
H. Peter Anvin <hpa@zytor.com>
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch -p1
|
%patch0 -p1
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
#%patch2 -p1
|
%patch2 -p1
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
%patch4 -p1
|
|
||||||
%patch5 -p1
|
|
||||||
%patch6 -p1
|
|
||||||
%patch7 -p1
|
|
||||||
%patch8 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
cp %{SOURCE2} .
|
||||||
export CFLAGS="$RPM_OPT_FLAGS"
|
export CFLAGS="$RPM_OPT_FLAGS"
|
||||||
chmod +x add_crc
|
chmod +x core/add_crc
|
||||||
make clean
|
make spotless
|
||||||
make -C core spotless
|
|
||||||
make
|
make
|
||||||
make -C sample tidy
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
make install-all \
|
make install-all \
|
||||||
INSTALLROOT=%{buildroot} BINDIR=%{_bindir} SBINDIR=%{_sbindir} \
|
INSTALLROOT=%{buildroot} BINDIR=%{_bindir} SBINDIR=%{_bindir} \
|
||||||
LIBDIR=%{_datadir} DATADIR=%{_datadir} \
|
LIBDIR=%{_datadir} INCDIR=%{_includedir} MANDIR=%{_mandir}
|
||||||
INCDIR=%{_includedir} MANDIR=%{_mandir}
|
# install -s -m 755 unix/syslinux $RPM_BUILD_ROOT/%{_bindir}/syslinux-nomtools
|
||||||
TFTPBOOT=/tftpboot EXTLINUXDIR=/boot/extlinux
|
install -m 755 %{SOURCE1} $RPM_BUILD_ROOT/%{_bindir}
|
||||||
make -C sample tidy
|
# install -m 755 keytab-lilo.pl syslinux2ansi.pl $RPM_BUILD_ROOT/%{_datadir}/syslinux
|
||||||
mkdir -p %{buildroot}/etc
|
rm -rf $RPM_BUILD_ROOT/%{_datadir}/syslinux/com32
|
||||||
install -m 755 %{_sourcedir}/isolinux-config $RPM_BUILD_ROOT/%{_bindir}
|
rm -rf $RPM_BUILD_ROOT/boot
|
||||||
|
rm -rf $RPM_BUILD_ROOT/tftpboot
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%doc COPYING NEWS sample doc/*
|
%doc doc/*.txt
|
||||||
|
%doc README* NEWS
|
||||||
%doc %{_mandir}/man1/*
|
%doc %{_mandir}/man1/*
|
||||||
%{_bindir}/*
|
%{_bindir}/*
|
||||||
%{_datadir}/syslinux/*.com
|
%{_datadir}/syslinux
|
||||||
%{_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
|
%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
|
|
||||||
- add ExclusiveArch x86 x86_64
|
|
||||||
* Thu Oct 16 2008 snwint@suse.de
|
|
||||||
- minor serial line patch fix (bnc #436034)
|
|
||||||
* Wed Sep 10 2008 snwint@suse.de
|
|
||||||
- reworked serial line patch (removed SERIALLINES)
|
|
||||||
* Thu Sep 04 2008 snwint@suse.de
|
|
||||||
- added SERIALLINES config option to listen on up to four
|
|
||||||
serial lines (fate #301595)
|
|
||||||
* Mon Apr 28 2008 snwint@suse.de
|
|
||||||
- give more memory to gfxboot code
|
|
||||||
* Mon Apr 14 2008 snwint@suse.de
|
|
||||||
- update to version 3.63
|
|
||||||
* Lots of bug fixes.
|
|
||||||
* Handle command lines up to 2047 characters, the current
|
|
||||||
Linux kernel limit.
|
|
||||||
* Support MD5, SHA256 and SHA512 encrypted passwords.
|
|
||||||
* MEMDISK: Turn on EDD support by default.
|
|
||||||
* Add a new INCLUDE command to the core syslinux parser.
|
|
||||||
* It is now supported to load a different configuration file
|
|
||||||
with the CONFIG keyword.
|
|
||||||
* MENU AUTOBOOT, MENU TABMSG, MENU PASSPROMPT allows
|
|
||||||
internationalization of menu messages.
|
|
||||||
* New hierarchial submenu support: see MENU BEGIN, MENU END,
|
|
||||||
MENU GOTO in doc/menu.txt.
|
|
||||||
* MENU QUIT allows creating a menu entry for returning to the
|
|
||||||
command line.
|
|
||||||
* Simple menu system: new "MENU HIDDEN" option to not display
|
|
||||||
the menu unless the user presses a key.
|
|
||||||
* Add "menu separator", "menu indent", "menu disabled"
|
|
||||||
(see README.menu).
|
|
||||||
* SYSLINUX: Support subdirectories.
|
|
||||||
* PXELINUX: Press Ctrl-N at the boot prompt to read out the
|
|
||||||
network info.
|
|
||||||
* PXELINUX: as per RFC 5071, PXELINUX no longer requires the
|
|
||||||
use of the magic cookie option (208) for unencapsulated
|
|
||||||
options. Currently it does not require it for
|
|
||||||
vendor-encapsulated options (vendor-option-space) either,
|
|
||||||
but that MAY be reverted in the future if it causes problems.
|
|
||||||
* EXTLINUX: boot-once support (--once, --clear-once, and --reset-adv)
|
|
||||||
* Support for "auxilliary data vector", a small amount of
|
|
||||||
writable storage. Currently only supported for EXTLINUX,
|
|
||||||
but the infrastructure is there for the other derivatives,
|
|
||||||
assuming a suitable storage location can be found.
|
|
||||||
* Fri Jun 22 2007 snwint@suse.de
|
|
||||||
- requires mtools (#286216)
|
|
||||||
* Fri Feb 09 2007 snwint@suse.de
|
|
||||||
- fixed file list
|
|
||||||
* Mon Oct 09 2006 snwint@suse.de
|
|
||||||
- no progress dots when in gfx mode
|
|
||||||
* Fri Sep 29 2006 snwint@suse.de
|
|
||||||
- update to version 3.31
|
|
||||||
* The simple menu system (menu.c32 and vesamenu.c32) now
|
|
||||||
support loading more than one configuration file at a time,
|
|
||||||
using MENU INCLUDE or by specifying multiple filenames.
|
|
||||||
* The MENU COLOR statement can now control the shadowing mode.
|
|
||||||
* libcom32 extended to support graphics mode and graphical console.
|
|
||||||
* vesamenu.c32, new graphical version of the Simple
|
|
||||||
Menu System, see README.menu.
|
|
||||||
* New com32 modules by Erwan Velu do selection based on CPUID
|
|
||||||
or PCI devices present.
|
|
||||||
* EXTLINUX: New options --install (-i) and --update (-U), to
|
|
||||||
make it clear if a boot loader should be installed or
|
|
||||||
updated. For now, defaults to --install for compatibility;
|
|
||||||
a future version will require one of these options.
|
|
||||||
* New library functions to load and place files in memory.
|
|
||||||
* mboot.c32 bug fixes.
|
|
||||||
* Remove 8 MB kernel size restriction.
|
|
||||||
* PXELINUX: Fail (and eventually reboot) if no configuration
|
|
||||||
file was found.
|
|
||||||
* COM32 module by Erwan Velu to make decisions based on DMI info.
|
|
||||||
* Fix issue where going back and forth between menus a lot
|
|
||||||
would cause a hang.
|
|
||||||
* ISOLINUX: Fix bug which made "cd boot sectors" not work.
|
|
||||||
* Fri Aug 25 2006 snwint@suse.de
|
|
||||||
- needs gcc41-32bit
|
|
||||||
* Wed Aug 23 2006 snwint@suse.de
|
|
||||||
- support latest gfxboot
|
|
||||||
* Tue Aug 15 2006 cthiel@suse.de
|
|
||||||
- specfile cleanup
|
|
||||||
- include chain.c32, copybs.com, ethersel.c32, mboot.c32, mbr.bin, menu.c32,
|
|
||||||
syslinux.com, mboot.doc README.menu and README.usbkey
|
|
||||||
* Mon Jun 19 2006 snwint@suse.de
|
|
||||||
- syslinux did not clear memory between initrds (#184706)
|
|
||||||
* Thu Apr 27 2006 snwint@suse.de
|
|
||||||
- ignore drive reset error when booting from local disk (#169014)
|
|
||||||
* Thu Feb 09 2006 snwint@suse.de
|
|
||||||
- monitor detection can be skipped (#149578)
|
|
||||||
* Thu Feb 02 2006 snwint@suse.de
|
|
||||||
- no aborts while kernel loads in gfx mode (#145748)
|
|
||||||
* Mon Jan 30 2006 snwint@suse.de
|
|
||||||
- fixed isolinux-config to work with new perl
|
|
||||||
* Wed Jan 25 2006 mls@suse.de
|
|
||||||
- converted neededforbuild to BuildRequires
|
|
||||||
* Mon Jan 23 2006 snwint@suse.de
|
|
||||||
- cjwatson@ubuntu.com: support big-endian cpio archives (#140119)
|
|
||||||
- support direct driverupdate loading from CD-ROM (feat #152):
|
|
||||||
o initrd loading errors are no longer fatal
|
|
||||||
o if initrd name starts with '+' ask for CD change
|
|
||||||
* Wed Dec 14 2005 snwint@suse.de
|
|
||||||
- really disable text messages
|
|
||||||
- cjwatson@ubuntu.com: turn off graphics for localboot
|
|
||||||
* Fri Dec 02 2005 snwint@suse.de
|
|
||||||
- make it build on beta
|
|
||||||
* Wed Nov 30 2005 snwint@suse.de
|
|
||||||
- update to version 3.11
|
|
||||||
- gfxboot patch changed significantly - check README.gfxboot
|
|
||||||
* Thu Oct 06 2005 snwint@suse.de
|
|
||||||
- add chdir/getcwd functions to gfxboot
|
|
||||||
* Mon Sep 26 2005 snwint@suse.de
|
|
||||||
- wrote isolinux-config script
|
|
||||||
* Fri Sep 09 2005 snwint@suse.de
|
|
||||||
- press Alt key to optionally skip monitor detection (#115204)
|
|
||||||
* Wed Apr 27 2005 snwint@suse.de
|
|
||||||
- fixed to take bios memory size into account (#65458)
|
|
||||||
* Fri Apr 22 2005 snwint@suse.de
|
|
||||||
- fixed 16 bit color mode selection (#79312)
|
|
||||||
* Tue Apr 12 2005 snwint@suse.de
|
|
||||||
- make it work with gcc4
|
|
||||||
* Fri Feb 04 2005 snwint@suse.de
|
|
||||||
- solved memory corruption issue (might have caused #43877)
|
|
||||||
* Mon Jan 31 2005 snwint@suse.de
|
|
||||||
- don't read from disk (#47891)
|
|
||||||
* Fri Jan 28 2005 snwint@suse.de
|
|
||||||
- updated gfxboot patch
|
|
||||||
* Mon Jan 24 2005 snwint@suse.de
|
|
||||||
- added syslinux-nomtools
|
|
||||||
- removed dependencies from mtools and bootsplash
|
|
||||||
* Mon Sep 13 2004 snwint@suse.de
|
|
||||||
- moved syslinux into /usr/bin (#44780)
|
|
||||||
* Mon Aug 23 2004 snwint@suse.de
|
|
||||||
- updated to syslinux 2.11
|
|
||||||
* Thu Apr 08 2004 snwint@suse.de
|
|
||||||
- make bios mem info available for gfxboot
|
|
||||||
* Fri Apr 02 2004 snwint@suse.de
|
|
||||||
- don't reset timeout for 'notice' option
|
|
||||||
* Fri Apr 02 2004 snwint@suse.de
|
|
||||||
- reduce max number of boot menu entries (syslinux: 64, isolinux: 32)
|
|
||||||
to make room for boot graphics
|
|
||||||
* Wed Mar 31 2004 snwint@suse.de
|
|
||||||
- fixed pxelinux (#36625)
|
|
||||||
* Mon Mar 15 2004 snwint@suse.de
|
|
||||||
- fixed menu size check (#35508)
|
|
||||||
- removed vmware from blacklist (#35896)
|
|
||||||
* Mon Mar 08 2004 ro@suse.de
|
|
||||||
- fix build on x86_64
|
|
||||||
* Fri Mar 05 2004 snwint@suse.de
|
|
||||||
- update to 2.08
|
|
||||||
* Tue Jan 13 2004 snwint@suse.de
|
|
||||||
- understand new gfxboot file format
|
|
||||||
* Tue Dec 16 2003 snwint@suse.de
|
|
||||||
- boot disk may have a file system that spans several floppies
|
|
||||||
* Wed Sep 10 2003 snwint@suse.de
|
|
||||||
- fixed monitor data interpretation bug (#29718)
|
|
||||||
* Mon Sep 01 2003 snwint@suse.de
|
|
||||||
- work around bios disk read bug (seen on VIA KT133A)
|
|
||||||
* Mon Aug 25 2003 snwint@suse.de
|
|
||||||
- update to 2.06: fix problem that would occationally cause a
|
|
||||||
boot failure, depending on the length of the kernel
|
|
||||||
* Thu Aug 21 2003 ro@suse.de
|
|
||||||
- make it build on x86_64
|
|
||||||
* Mon Aug 18 2003 snwint@suse.de
|
|
||||||
- update to 2.05
|
|
||||||
* Wed Apr 16 2003 coolo@suse.de
|
|
||||||
- use BuildRoot
|
|
||||||
* Tue Mar 11 2003 snwint@suse.de
|
|
||||||
- wait for 'enter' in text mode interface, too (#25047)
|
|
||||||
* Sat Mar 08 2003 snwint@suse.de
|
|
||||||
- handle "boot from hd" errors properly (#24788)
|
|
||||||
* Thu Mar 06 2003 snwint@suse.de
|
|
||||||
- preselect 640x480 even if no vbe support at all
|
|
||||||
* Sat Mar 01 2003 snwint@suse.de
|
|
||||||
- dynamically change FAT buffer size; this gives more space for
|
|
||||||
boot graphics
|
|
||||||
- really add 640x480 to modelist if no VB extension was found (#24293)
|
|
||||||
- _copy_ VBE mode list, might get overwritten (#23582)
|
|
||||||
* Tue Feb 18 2003 snwint@suse.de
|
|
||||||
- new splash handling: splash files no longer have to be added to
|
|
||||||
initrd but are read separately from <resolution>.spl files
|
|
||||||
* Fri Feb 14 2003 snwint@suse.de
|
|
||||||
- read device path info
|
|
||||||
- joined all diffs
|
|
||||||
* Sun Feb 09 2003 snwint@suse.de
|
|
||||||
- updated graphics patch
|
|
||||||
* Wed Feb 05 2003 snwint@suse.de
|
|
||||||
- make isolinux work around a strange bios bug (#23323)
|
|
||||||
- fix reading vbe mode list for machines that don't zero
|
|
||||||
its memory (#23261)
|
|
||||||
* Wed Sep 04 2002 snwint@suse.de
|
|
||||||
- select 8 bit fb modes if 16 bit is not available
|
|
||||||
* Tue Sep 03 2002 snwint@suse.de
|
|
||||||
- fixed minor bug detecting available gfx modes
|
|
||||||
* Tue Sep 03 2002 snwint@suse.de
|
|
||||||
- fixed Requires
|
|
||||||
* Wed Jul 17 2002 snwint@suse.de
|
|
||||||
- adaped graphics patch to handle new graphics file format
|
|
||||||
* Mon Mar 04 2002 snwint@suse.de
|
|
||||||
- detect fujitsu siemens notebook lcd
|
|
||||||
* Mon Mar 04 2002 snwint@suse.de
|
|
||||||
- allow booting from harddisk
|
|
||||||
* Sun Mar 03 2002 snwint@suse.de
|
|
||||||
- initrd may optionally be on a second disk
|
|
||||||
* Tue Feb 19 2002 snwint@suse.de
|
|
||||||
- make isolinux work on some more systems
|
|
||||||
(they used to break with 'Disk error 00')
|
|
||||||
* Mon Feb 18 2002 snwint@suse.de
|
|
||||||
- removed Matrox cards from exception list
|
|
||||||
- don't put monitor data into kernel cmdline
|
|
||||||
* Fri Feb 01 2002 ro@suse.de
|
|
||||||
- changed neededforbuild <libpng> to <libpng-devel-packages>
|
|
||||||
* Mon Sep 17 2001 snwint@suse.de
|
|
||||||
- no fb for Matrox G550 cards (#10749)
|
|
||||||
* Mon Sep 10 2001 snwint@suse.de
|
|
||||||
- don't select vmware fb mode, the kernel doesn't like it
|
|
||||||
* Sun Sep 09 2001 snwint@suse.de
|
|
||||||
- created single diff file
|
|
||||||
- support gfxboot-1.4
|
|
||||||
* Tue Sep 04 2001 snwint@suse.de
|
|
||||||
- should boot on some more computers
|
|
||||||
- print warning and hint to use CD2 if we encounter a broken BIOS
|
|
||||||
* Mon Sep 03 2001 snwint@suse.de
|
|
||||||
- exclude list for cards where fbdev will not work
|
|
||||||
- allow longer base directory name for boot image
|
|
||||||
* Wed Aug 22 2001 snwint@suse.de
|
|
||||||
- fixed 16 bit fb selection
|
|
||||||
* Mon Aug 20 2001 snwint@suse.de
|
|
||||||
- we want 16 bit framebuffer now
|
|
||||||
* Fri Aug 10 2001 snwint@suse.de
|
|
||||||
- added 1024x768 support
|
|
||||||
* Mon Aug 06 2001 snwint@suse.de
|
|
||||||
- upgraded to new version (1.62)
|
|
||||||
- fixed isolinux to work with graphics
|
|
||||||
- fixed minor isolinux bug to make it boot on Toshiba Satellite notebooks
|
|
||||||
* Mon May 14 2001 snwint@suse.de
|
|
||||||
- syslinux reports wrong video mode (#8244)
|
|
||||||
* Wed May 09 2001 snwint@suse.de
|
|
||||||
- fixed boot problem on d230 (#7958)
|
|
||||||
- corrected detection of 800x600 frame buffer mode support (#7959)
|
|
||||||
* Sun May 06 2001 snwint@suse.de
|
|
||||||
- ask for driver update disk in graphics mode
|
|
||||||
- F2 - F4 video mode selection in text mode
|
|
||||||
- make 800x600 default if monitor supports it *or*
|
|
||||||
graphics card has >= 4MB memory
|
|
||||||
* Tue May 01 2001 kukuk@suse.de
|
|
||||||
- Add libpng to neededforbuild
|
|
||||||
* Tue May 01 2001 ro@suse.de
|
|
||||||
- added libnetpbm to neededforbuild
|
|
||||||
* Mon Apr 30 2001 snwint@suse.de
|
|
||||||
- made it require gfxboot package
|
|
||||||
- added netpbm to #neededforbuild
|
|
||||||
* Mon Apr 30 2001 snwint@suse.de
|
|
||||||
- new version (1.61): can now boot CDs directly (isolinux)
|
|
||||||
- graphics support completely reworked
|
|
||||||
* Tue Apr 03 2001 snwint@suse.de
|
|
||||||
- completely reworked syslinux patch
|
|
||||||
- support graphics boot screen
|
|
||||||
* Sun Jan 14 2001 snwint@suse.de
|
|
||||||
- new messages for our Driver Update feature
|
|
||||||
* 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
|
|
||||||
* Fri Jun 09 2000 snwint@suse.de
|
|
||||||
- improved ddc parser
|
|
||||||
- ! kernel cmdline gets quite long already (slightly below 200 chars) !
|
|
||||||
* Fri Feb 11 2000 snwint@suse.de
|
|
||||||
- new version (1.48)
|
|
||||||
- some new features (see README.SuSE)
|
|
||||||
* Mon Oct 11 1999 snwint@suse.de
|
|
||||||
- added package (version 1.45)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user