diff options
author | Donny Davies <woodchip@gentoo.org> | 2002-02-03 03:46:22 +0000 |
---|---|---|
committer | Donny Davies <woodchip@gentoo.org> | 2002-02-03 03:46:22 +0000 |
commit | da706d413a4dc7f5733f4c934a910b7b29dc0bdf (patch) | |
tree | 688e4fa56d41c3caf8b4a4a2c338116c2817cf45 /sys-apps/lilo | |
parent | xplanet 0.93 ebuild commited by kalenp@cs.washington.edu (Kalen Petersen) (diff) | |
download | gentoo-2-da706d413a4dc7f5733f4c934a910b7b29dc0bdf.tar.gz gentoo-2-da706d413a4dc7f5733f4c934a910b7b29dc0bdf.tar.bz2 gentoo-2-da706d413a4dc7f5733f4c934a910b7b29dc0bdf.zip |
Added lilo animated bootlogos support. Patches assimilated from SuSE.
I still need to either add the utils used for creating your own
bootlogos as a separate package, or lump them into this package.
Havent decided yet.
NB: Unfortunately that patches dont apply cleanly to the latest
version of lilo. I think its easier to just track SuSE's lilo
package ;)
Diffstat (limited to 'sys-apps/lilo')
-rw-r--r-- | sys-apps/lilo/ChangeLog | 10 | ||||
-rw-r--r-- | sys-apps/lilo/files/21.7.5/lilo-21.7-vga_inst.diff | 232 | ||||
-rw-r--r-- | sys-apps/lilo/files/21.7.5/lilo-21.7.4-gfx.diff | 861 | ||||
-rw-r--r-- | sys-apps/lilo/files/21.7.5/lilo-21.7.4-loop_dev.diff | 29 | ||||
-rw-r--r-- | sys-apps/lilo/files/21.7.5/lilo-21.7.4.diff | 69 | ||||
-rw-r--r-- | sys-apps/lilo/files/digest-lilo-21.7.5-r1 | 1 | ||||
-rw-r--r-- | sys-apps/lilo/lilo-21.7.5-r1.ebuild | 86 |
7 files changed, 1287 insertions, 1 deletions
diff --git a/sys-apps/lilo/ChangeLog b/sys-apps/lilo/ChangeLog index 43ce222757b9..59d7cb56cca6 100644 --- a/sys-apps/lilo/ChangeLog +++ b/sys-apps/lilo/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for sys-apps/lilo # Copyright 2002 Gentoo Technologies, Inc.; Distributed under the GPL -# $Header: /var/cvsroot/gentoo-x86/sys-apps/lilo/ChangeLog,v 1.1 2002/02/01 21:53:37 gbevin Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/lilo/ChangeLog,v 1.2 2002/02/03 03:46:22 woodchip Exp $ + +*lilo-21.7.5-r1 (2 Feb 2002) + + 2 Feb 2002; Donny Davies <woodchip@gentoo.org> : + + Added several patches from SuSE for animated boot logos. Not completly finished + yet, but totally usable. Please read the ebuild first before merging this! + Get animations at: http://www.gamers.org/~quinet/lilo/index.html. *lilo-22.1-r1 (1 Feb 2002) diff --git a/sys-apps/lilo/files/21.7.5/lilo-21.7-vga_inst.diff b/sys-apps/lilo/files/21.7.5/lilo-21.7-vga_inst.diff new file mode 100644 index 000000000000..d5edd63b3c8a --- /dev/null +++ b/sys-apps/lilo/files/21.7.5/lilo-21.7-vga_inst.diff @@ -0,0 +1,232 @@ +--- ./bsect.c.orig Fri Sep 14 15:02:01 2001 ++++ ./bsect.c Fri Sep 14 15:02:01 2001 +@@ -342,6 +342,7 @@ + else if (!strcasecmp(vga,"ext") || !strcasecmp(vga,"extended")) + descr->vga_mode = EXTENDED_VGA; + else if (!strcasecmp(vga,"ask")) descr->vga_mode = ASK_VGA; ++ else if (!strcasecmp(vga,"inst")) descr->vga_mode = INST_VGA; + else descr->vga_mode = to_number(vga); + #endif + } +--- ./second.S.orig Fri Sep 14 15:02:01 2001 ++++ ./second.S Mon Sep 17 12:57:10 2001 +@@ -1029,11 +1029,152 @@ + or cl,cl ! no errors ? + jnz pwfail ! no -> fail + cmp byte ptr (si),#0 ! at end ? +- je doboot ! yes -> continue booting ++ jne pwfail ! yes -> continue booting ++ br doboot + pwfail: mov bx,#msg_pf ! display an error message + call say + br iloop ! get next input + ++! Test if the monitor can display a vga mode ++! mode in ax, returns ax if success, otherwise 0 ++montest: ++ push es ++ push di ++ push bx ++ push cx ++ push dx ++ push ax ++ push #0 ++ pop es ++ mov di,#0xfc00 ++ xor cx,cx ++ seg es ++ mov 0xfc23,cx ++ xor dx,dx ++ mov bx,#1 ++ mov ax,#0x4f15 ++ int 0x10 ++ cmp ax,#0x4f ++ pop ax ++ jnz monno ++ mov bx,ax ++ sub bx,#0x100 ++ cmp bx,#0x1c ++ jnb monno ++ seg cs ++ mov bl,monbits(bx) ++ xor bh,bh ++ seg es ++ mov cx,0xfc23 ++ or cx,cx ++ jnz nofsc ++ call fscscan ++nofsc: and cl,#0xfe ++ bt cx,bx ++ jc monok ++monno: xor ax,ax ++monok: pop dx ++ pop cx ++ pop bx ++ pop di ++ pop es ++ ret ++ ++monbits: ++ .byte 5,5,9,9,14,14,15,15,0,0,0,0,0,0,0,0 ++ .byte 5,5,5,9,9,9,14,14,14,15,15,15 ++ ++! return in cx the bits for FSC notebooks. ++fscscan: ++ push ds ++ push si ++ push di ++ push ax ++ push bx ++ push #0xf000 ++ pop ds ++ xor di,di ++fscnn: cmp dword ptr (di),#0x696a7546 ++ jnz fscn ++ cmp dword ptr 4(di),#0x20757374 ++ jnz fscn ++ mov cx,#0x20 ++ xor bx,bx ++ mov si,di ++fscsig: lodsb ++ add bl,al ++ dec cx ++ jnz fscsig ++ or bl,bl ++ jnz fscn ++ mov al,23(di) ++ and al,#0xf0 ++ jnz fscbad ++ mov bl,21(di) ++ and bx,#0xf0 ++ shr bx,#3 ++ seg cs ++ mov cx,fscbits(bx) ++ jmp fscok ++fscn: add di,#0x10 ++ jnz fscnn ++fscbad: xor cx,cx ++fscok: pop bx ++ pop ax ++ pop di ++ pop si ++ pop ds ++ ret ++ ++fscbits: ++ .word 0,0x0020,0x0200,0x4000,0x8000,0,0,0 ++ .word 0,0,0,0,0,0,0,0 ++ ++! Test if the driver can display a vga mode ++! mode in ax, returns ax if success, otherwise 0 ++vgatest: ++ push es ++ push di ++ push bx ++ push cx ++ push dx ++ push ax ++ push #0 ++ pop es ++ mov cx,ax ++ xor ax,ax ++ seg es ++ mov 0xfc00+0x28,ax ++ seg es ++ mov 0xfc00+0x2a,ax ++ mov di,#0xfc00 ++ mov ax,#0x4f01 ++ int 0x10 ++ cmp ax,#0x4f ++ jnz vgano ++ seg es ++ mov ax,0xfc00 ++ and ax,#0x99 ++ cmp ax,#0x99 ++ jnz vgano ++ seg es ++ mov ax,0xfc00+0x28 ++ seg es ++ or ax,0xfc00+0x2a ++ jz vgano ++ pop ax ++ jmp vgayes ++vgano: pop ax ++ xor ax,ax ++vgayes: pop dx ++ pop cx ++ pop bx ++ pop di ++ pop es ++ ret ++ ++ ++ + ! Boot the image BX points to + + doboot: +@@ -1245,7 +1386,32 @@ + jmp vgaset + vganorm:test bx,#FLAG_VGA + jz novga +-vgaset: seg es ++vgaset: ++#ifdef NORMAL_VGA ++ cmp ax,#INST_VGA ++ jnz vganoi ++ mov ax,#0x117 ++ call vgatest ++ or ax,ax ++ jz vga2 ++ call montest ++ or ax,ax ++ jnz vga3 ++vga2: mov ax,#0x114 ++ call vgatest ++ or ax,ax ++ jz vga4 ++ call montest ++ or ax,ax ++ jnz vga3 ++vga4: mov ax,#0x101 ++ call vgatest ++ or ax,ax ++ jnz vga3 ++ mov ax,#NORMAL_VGA-0x0200 ++vga3: add ax,#0x200 ++#endif ++vganoi: seg es + mov 506,ax + novga: push bx ! use flags (BX) later + test bx,#FLAG_LOCK ! ... lock target ? +@@ -2257,6 +2423,9 @@ + .byte 0 + .word NORMAL_VGA + .ascii "NORMAL" ++ .byte 0 ++ .word INST_VGA ++ .ascii "INST" + .byte 0 + #endif + .word 0 +--- ./lilo.h.orig Fri Sep 14 15:02:01 2001 ++++ ./lilo.h Fri Sep 14 15:02:01 2001 +@@ -151,6 +151,7 @@ + #define FLAG_FALLBACK 64 /* fallback command line exists */ + + #define VGA_NOCOVR 0x8000 /* VGA setting not overridden on command line */ ++#define INST_VGA 0xfff0 /* test for framebuffer at vga=771 */ + + #define SER_DFL_PRM 0xa3 /* default serial parameters: 2400n8 */ + +--- ./lilo.c.orig Fri Sep 14 15:02:01 2001 ++++ ./lilo.c Fri Sep 14 15:02:01 2001 +@@ -170,6 +170,9 @@ + case ASK_VGA: + printf("ASK\n"); + break; ++ case INST_VGA: ++ printf("INST\n"); ++ break; + default: + printf("%d (0x%04x)\n", + descrs.d.descr[image].vga_mode, diff --git a/sys-apps/lilo/files/21.7.5/lilo-21.7.4-gfx.diff b/sys-apps/lilo/files/21.7.5/lilo-21.7.4-gfx.diff new file mode 100644 index 000000000000..e85d11ee5203 --- /dev/null +++ b/sys-apps/lilo/files/21.7.5/lilo-21.7.4-gfx.diff @@ -0,0 +1,861 @@ +diff -uNr lilo-21.7.4.patched1/Makefile lilo-21.7.4.patched2/Makefile +--- lilo-21.7.4.patched1/Makefile Mon Apr 30 01:57:25 2001 ++++ lilo-21.7.4.patched2/Makefile Mon Apr 30 02:14:31 2001 +@@ -132,15 +132,15 @@ + first.s: first.S read.S lilo.h version.h lilo mylilo.h + $(CPP) $(PCONFIG) $(AFLAGS) `./lilo -X` first.S -o first.s + +-second.s: second.S read.S lilo.h version.h lilo mylilo.h ++second.s: second.S gfxlogo.S read.S lilo.h version.h lilo mylilo.h + $(CPP) $(PCONFIG) $(AFLAGS) `./lilo -X` second.S -o second.s + +-third.s: second.S read.S lilo.h version.h lilo mylilo.h \ ++third.s: second.S gfxlogo.S read.S lilo.h version.h lilo mylilo.h \ + graph.S menu.S strlen.S crt.S + $(CPP) $(PCONFIG) $(AFLAGS) `./lilo -X` \ + -DMENU second.S -o third.s + +-temp2.s: second.S read.S lilo.h version.h \ ++temp2.s: second.S gfxlogo.S read.S lilo.h version.h \ + graph.S menu.S strlen.S crt.S + $(CPP) $(PCONFIG) $(LILOX) -DMENU second.S -o temp2.s + +diff -uNr lilo-21.7.4.patched1/bsect.c lilo-21.7.4.patched2/bsect.c +--- lilo-21.7.4.patched1/bsect.c Thu Feb 22 23:34:04 2001 ++++ lilo-21.7.4.patched2/bsect.c Mon Apr 30 02:14:31 2001 +@@ -148,8 +148,9 @@ + if (st.st_size > MAX_MESSAGE) + die("%s is too big (> %d bytes)",message,MAX_MESSAGE); + map_begin_section(); +- map_add(&geo,0,((bsect.par_1.msg_len = st.st_size)+SECTOR_SIZE-1)/ +- SECTOR_SIZE); ++ map_add(&geo,0,(st.st_size+SECTOR_SIZE-1)/SECTOR_SIZE); ++ /* allow pictures to be > 64k; text messages shoud be < 64k */ ++ bsect.par_1.msg_len = st.st_size > 0xffff ? 0xffff : st.st_size; + sectors = map_end_section(&bsect.par_1.msg,0); + if (verbose > 1) + printf("Message: %d sector%s.\n",sectors,sectors == 1 ? "" : "s"); +@@ -296,7 +297,7 @@ + { + struct stat st; + char *here,*root,*ram_disk,*vga,*password; +- char *literal,*append,*fback; ++ char *literal,*append,*fback, *image; + char fallback_buf[SECTOR_SIZE]; + + *descr->password = 0; +@@ -333,7 +334,8 @@ + if ((vga = cfg_get_strg(cf_kernel,"vga")) || (vga = cfg_get_strg(cf_options, + "vga"))) { + #ifndef NORMAL_VGA +- die("VGA mode presetting is not supported by your kernel."); ++ fprintf(stderr,"Warning: VGA mode presetting is not supported by your kernel, skipping the 'vga=' option."); /* -ecki */ ++ /*die("VGA mode presetting is not supported by your kernel.");*/ + #else + descr->flags |= FLAG_VGA; + if (!strcasecmp(vga,"normal")) descr->vga_mode = NORMAL_VGA; +@@ -356,6 +358,11 @@ + } + if (cfg_get_flag(cf_all,"single-key") || + cfg_get_flag(cf_options,"single-key")) descr->flags |= FLAG_SINGLE; ++ if ((image = cfg_get_strg(cf_top, "image"))) { ++ strcat(options, "BOOT_FILE="); ++ strcat(options, image); ++ strcat(options, " "); ++ } + if ((append = cfg_get_strg(cf_kernel,"append")) || (append = + cfg_get_strg(cf_options,"append"))) strcat(options,append); + literal = cfg_get_strg(cf_kernel,"literal"); +diff -uNr lilo-21.7.4.patched1/gfxlogo.S lilo-21.7.4.patched2/gfxlogo.S +--- lilo-21.7.4.patched1/gfxlogo.S Thu Jan 1 01:00:00 1970 ++++ lilo-21.7.4.patched2/gfxlogo.S Mon Apr 30 02:14:31 2001 +@@ -0,0 +1,481 @@ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++; gfx stuff ++; ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++ ++; != 0 -> everything is fine ++gfx_ok: .byte 0 ++ ++; the memory area we are working with ++gfx_mem: .long 0 ; linear address ++gfx_mem_max: .long 0 ; end address ++gfx_mem_free: .long 0 ; start of free area for malloc (after pcx image) ++ ++; interface to loadable gfx extension (seg:ofs values) ++gfx_bc_jt: .long 0 ++ ++gfx_bc_init: .long 0 ++gfx_bc_done: .long 0 ++gfx_bc_input: .long 0 ++gfx_bc_menu_init: .long 0 ++gfx_bc_infobox_init: .long 0 ++gfx_bc_infobox_done: .long 0 ++gfx_bc_progress_init: .long 0 ++gfx_bc_progress_done: .long 0 ++gfx_bc_progress_update: .long 0 ++gfx_bc_progress_limit: .long 0 ++gfx_bc_password_init: .long 0 ++gfx_bc_password_done: .long 0 ++ ++; system config data ++gfx_sysconfig: ++gfx_sc_vmode: .byte 0 ++gfx_sc_modes: .byte 0 ++ ++gfx_password_buf: .blkb 32 ++gfx_msg_wrong_image: .ascii "Could not find kernel image: " ++ .byte 0 ++gfx_msg_wrong_password: .ascii "Sorry, incorrect password." ++ .byte 0 ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++; I really have no idea how to get as86 to do this properly ++ ++ macro farcall ++ .byte 0xff ++ .byte 0x1e ++ .word ?1 ++ mend ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++gfx_get_sysconfig: ++ xor ax,ax ++ ret ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++gfx_set_sysconfig: ++ ret ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++; Initialize graphics code. Load and display graphics data. ++; ++; edi file length ++; ++; return: [gfx_ok] = 0/1 ++; ++gfx_init: ++ push es ++ ++ cld ++ ++ mov byte gfx_ok,#0 ++ ++ ; define our memory area ++ ; gfx_mem _must_ be 16-byte aligned ++ mov dword gfx_mem,#0x10000 ++ add edi,gfx_mem ++ mov gfx_mem_free,edi ++ mov dword gfx_mem_max,#0x80000 ++ ++ sub edi,gfx_mem_max ++ neg edi ++ cmp edi,#0x1000 ; we need some minimum space ++ jc near gfx_init_80 ++ ++ ; align 4 ++ mov eax,gfx_mem_free ++ add eax,#3 ++ and eax,#~3 ++ mov gfx_mem_free,eax ++ ++ push dword gfx_mem ++ call gfx_l2so ++ pop bx ++ pop es ++ ++ seg es ++ cmp dword (bx),#0x0b2d97f00 ; header.magic_id ++ jnz near gfx_init_80 ++ seg es ++ cmp byte (bx+4),#1 ; header.version ++ jnz near gfx_init_80 ++ ++ seg es ++ mov eax,(bx+8) ++ or eax,eax ++ jz near gfx_init_80 ++ add eax,gfx_mem ++ test al,#0xf ++ jnz near gfx_init_80 ++ shr eax,4 ++ mov gfx_bc_jt+2,ax ++ ++ ++ ; setup jump table ++ les bx,gfx_bc_jt ++ ++ seg es ++ mov ax,(bx) ++ mov gfx_bc_init,ax ++ mov gfx_bc_init+2,es ++ ++ seg es ++ mov ax,(bx+2) ++ mov gfx_bc_done,ax ++ mov gfx_bc_done+2,es ++ ++ seg es ++ mov ax,(bx+4) ++ mov gfx_bc_input,ax ++ mov gfx_bc_input+2,es ++ ++ seg es ++ mov ax,(bx+6) ++ mov gfx_bc_menu_init,ax ++ mov gfx_bc_menu_init+2,es ++ ++ seg es ++ mov ax,(bx+8) ++ mov gfx_bc_infobox_init,ax ++ mov gfx_bc_infobox_init+2,es ++ ++ seg es ++ mov ax,(bx+10) ++ mov gfx_bc_infobox_done,ax ++ mov gfx_bc_infobox_done+2,es ++ ++ seg es ++ mov ax,(bx+12) ++ mov gfx_bc_progress_init,ax ++ mov gfx_bc_progress_init+2,es ++ ++ seg es ++ mov ax,(bx+14) ++ mov gfx_bc_progress_done,ax ++ mov gfx_bc_progress_done+2,es ++ ++ seg es ++ mov ax,(bx+16) ++ mov gfx_bc_progress_update,ax ++ mov gfx_bc_progress_update+2,es ++ ++ seg es ++ mov ax,(bx+18) ++ mov gfx_bc_progress_limit,ax ++ mov gfx_bc_progress_limit+2,es ++ ++ seg es ++ mov ax,(bx+20) ++ mov gfx_bc_password_init,ax ++ mov gfx_bc_password_init+2,es ++ ++ seg es ++ mov ax,(bx+22) ++ mov gfx_bc_password_done,ax ++ mov gfx_bc_password_done+2,es ++ ++ mov eax,gfx_mem ++ mov ebx,gfx_mem_free ++ mov ecx,gfx_mem_max ++ mov dx,cs ++ mov si,#gfx_sysconfig ++ ++ ; eax memory start ++ ; ebx free memory start ++ ; ecx memory end ++ ; dx boot loader code segment ++ ; si gfx_sysconfig offset ++ ++ farcall(gfx_bc_init) ++ ++ jc gfx_init_80 ++ ++ mov byte gfx_ok,#1 ++ ++ jmp gfx_init_90 ++ ++gfx_init_80: ++ mov byte gfx_ok,#0 ++gfx_init_90: ++ pop es ++ ret ++ ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++; Back to text mode. ++; ++; return: [gfx_ok] = 0 ++; ++gfx_done: ++ cmp byte gfx_ok,#0 ++ jz gfx_done_90 ++ farcall(gfx_bc_done) ++ mov byte gfx_ok,#0 ++ call gfx_set_sysconfig ++gfx_done_90: ++ ret ++ ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++gfx_input: ++ cmp byte gfx_ok,#0 ++ jz gfx_input_90 ++ call gfx_get_sysconfig ++ ++ mov ax,#0xffff ++ seg fs ++ xchg ax,DSC_OFF-10+SSDIFF ++ ++ ; map 0xffff -> 0 ++ add ax,#1 ++ cmc ++ sbb ax,#0 ++ ++gfx_input_20: ++ mov di,#cmdline ++ mov cx,#CL_LENGTH ++ ++ ; di buffer ( 0 --> no buffer ) ++ ; cx buffer size ++ ; ax timeout value (0 --> no timeout) ++ ++ farcall(gfx_bc_input) ++ ++ pushf ++ call gfx_set_sysconfig ++ popf ++ jnc gfx_input_50 ++ mov ax,#1 ++gfx_input_50: ++ cmp ax,#1 ++ jz gfx_input_80 ++ ++ call find_boot_image ++ jnc gfx_input_90 ++ ++ mov si,#gfx_msg_wrong_image ++ mov di,#cmdline ++ ++ mov al,#0 ++ call gfx_infobox ++ ++ xor ax,ax ++ jmp gfx_input_20 ++gfx_input_80: ++ push ax ++ call gfx_done ++ pop ax ++gfx_input_90: ++ ret ++ ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++gfx_setup_menu: ++ cmp byte gfx_ok,#0 ++ jz gfx_setup_menu_90 ++ ++ mov si,#DESCR+2 ++ mov di,si ++ xor ax,ax ++ mov cx,#IMAGES ++gfx_setup_menu_20: ++ cmp byte (si),#0 ++ jz gfx_setup_menu_30 ++ inc ax ++ add si,#DESCR_SIZE ++ loop gfx_setup_menu_20 ++gfx_setup_menu_30: ++ mov si,di ++ mov dx,#DESCR_SIZE ++ ++ ; al menu entries ++ ; dx menu entry size ++ ; di menu entry list ++ ; si default menu entry ++ ++ farcall(gfx_bc_menu_init) ++gfx_setup_menu_90: ++ ret ++ ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++gfx_infobox: ++ pushad ++ cmp byte gfx_ok,#0 ++ jz gfx_infobox_90 ++ farcall(gfx_bc_infobox_init) ++ xor di,di ++ xor ax,ax ++ farcall(gfx_bc_input) ++ farcall(gfx_bc_infobox_done) ++gfx_infobox_90: ++ popad ++ ret ++ ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++gfx_progress_init: ++ pushad ++ cmp byte gfx_ok,#0 ++ jz gfx_progress_init_90 ++ movzx eax,ax ++ farcall(gfx_bc_progress_init) ++gfx_progress_init_90: ++ popad ++ ret ++ ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++gfx_progress_done: ++ pushad ++ cmp byte gfx_ok,#0 ++ jz gfx_progress_done_90 ++ farcall(gfx_bc_progress_done) ++gfx_progress_done_90: ++ popad ++ ret ++ ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++gfx_progress_update: ++ pushad ++ cmp byte gfx_ok,#0 ++ jz gfx_progress_update_90 ++ movzx eax,cx ++ farcall(gfx_bc_progress_update) ++gfx_progress_update_90: ++ popad ++ ret ++ ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++gfx_progress_limit: ++ pushad ++ cmp byte gfx_ok,#0 ++ jz gfx_progress_limit_90 ++ movzx eax,ax ++ farcall(gfx_bc_progress_limit) ++gfx_progress_limit_90: ++ popad ++ ret ++ ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++gfx_password: ++ pushad ++ cmp byte gfx_ok,#0 ++ stc ++ jz gfx_password_90 ++ farcall(gfx_bc_password_init) ++ mov di,#gfx_password_buf ++ mov cx,#32 ++ xor ax,ax ++ farcall(gfx_bc_input) ++ mov si,#gfx_password_buf ++ farcall(gfx_bc_password_done) ++ jnc gfx_password_90 ++ mov si,#gfx_msg_wrong_password ++ xor di,di ++ mov al,#0 ++ farcall(gfx_bc_infobox_init) ++ xor di,di ++ xor ax,ax ++ farcall(gfx_bc_input) ++ farcall(gfx_bc_infobox_done) ++ stc ++gfx_password_90: ++ popad ++ ret ++ ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++; Convert 32bit linear address to seg:ofs. ++; ++; dword [esp + 2]: linear address ++; ++; return: ++; dword [esp + 2]: seg:ofs ++; ++; Notes: ++; - changes no regs ++; ++gfx_l2so: ++ push eax ++ mov eax,(esp + 6) ++ shr eax,4 ++ mov (esp + 8),ax ++ and word (esp + 6),#0xf ++ pop eax ++ ret ++ ++; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++; ++; locate the boot image ++; ++; return: ++; bx boot image index ++; CF error (image not found) ++; ++find_boot_image: ++ mov dx,#DESCR+2 ++ mov cx,#IMAGES ++ ++ xor bx,bx ++ ++find_boot_image_10: ++ mov si,dx ++ mov di,#cmdline ++find_boot_image_20: ++ mov al,(si) ++ or al,al ++ jz find_boot_image_60 ++ cmp al,(di) ++ jnz find_boot_image_30 ++ inc si ++ inc di ++ jmp find_boot_image_20 ++find_boot_image_30: ++ inc bx ++ add dx,#DESCR_SIZE ++ cmp bx,cx ++ jb find_boot_image_10 ++ ; not found, strip options for fancy error message ++ ++ mov si,#cmdline ++ mov cx,#MAX_IMAGE_NAME+1 ++find_boot_image_40: ++ cmp byte (si),#0x20+1 ++ inc si ++ jb find_boot_image_50 ++ loop find_boot_image_40 ++find_boot_image_50: ++ mov byte (si-1),#0 ++ jmp find_boot_image_80 ++find_boot_image_60: ++ mov al,(di) ++ cmp al,#0x20 ++ ja find_boot_image_30 ++ imul bx,bx,#DESCR_SIZE ++ add bx,#DESCR+2 ++ jmp find_boot_image_90 ++find_boot_image_80: ++ stc ++find_boot_image_90: ++ ret ++ ++ +diff -uNr lilo-21.7.4.patched1/lilo.h lilo-21.7.4.patched2/lilo.h +--- lilo-21.7.4.patched1/lilo.h Mon Apr 30 02:12:11 2001 ++++ lilo-21.7.4.patched2/lilo.h Mon Apr 30 02:14:31 2001 +@@ -59,7 +59,7 @@ + #define MAX_IMAGE_NAME 15 /* maximum name length (w/o terminating NUL) */ + #define MAX_PW 15 /* maximum password length */ + +-#define MAX_SECONDARY 12 ++#define MAX_SECONDARY 14 + + #define SECTOR_SIZE 512 /* disk sector size */ + #ifndef BLOCK_SIZE /* may also come from linux/fs.h */ +@@ -157,7 +157,7 @@ + #define DC_MAGIC 0xf4f2 /* magic number of default cmd. line sector */ + #define DC_MGOFF 0x6b6d /* magic number for disabled line */ + +-#define MAX_MESSAGE 65535 /* maximum message length */ ++#define MAX_MESSAGE 8*64*1024-1 /* maximum message length (512k) */ + + #define NEW_HDR_SIG "HdrS" /* setup header signature */ + #define NEW_HDR_VERSION 0x200 /* header version number */ +diff -uNr lilo-21.7.4.patched1/second.S lilo-21.7.4.patched2/second.S +--- lilo-21.7.4.patched1/second.S Mon Apr 30 01:55:01 2001 ++++ lilo-21.7.4.patched2/second.S Mon Apr 30 02:20:43 2001 +@@ -439,6 +439,7 @@ + + dokay: mov bx,#ospc ! display 'O ' + call say ++! call flamme ! display flame hack + mov ospc,#0 ! disable the message + mov word ptr vgaovr,#VGA_NOCOVR ! disable VGA override + mov word ptr memlim,#0 ! no memory limit +@@ -479,7 +480,8 @@ + seg es + cmp byte ptr (si),#0 ! empty ? + je iloop ! yes -> enter interactive mode +- jmp niloop ! enter non-interactive mode ++niloop0: ++ br niloop ! enter non-interactive mode + + ! No external parameters after timeout -> boot first image + +@@ -487,7 +489,7 @@ + pop es + mov si,#DFLCMD+2 ! default command line ? + cmp byte ptr (si),#0 +- jne niloop ! yes -> use it ++ jne niloop0 ! yes -> use it + mov ax,nodfl ! no idea how to tell as86 to do jmp (addr) :-( + jmp ax ! fall through + +@@ -495,12 +497,16 @@ + ! Command input processor + + iloop: +-#ifdef MENU +- call menu_setup +-#endif ++ cmp byte gfx_ok,#0 ++ jnz iloop_gfx ++ ++ ; load message before doing anything else ++ ; the graphics/text stuff is mixed in a rather messy way... ++ + seg fs ! message disabled ? + cmp MSG_OFF+SSDIFF,#0 +- je nomsg ! yes -> skip this ++ ; _must_ be 'jz'! ++ jz iloop_20 ! yes -> skip this + call crlf + seg fs ! load the message file + mov cx,MSG_OFF+SSDIFF+2 +@@ -512,6 +518,16 @@ + call sread + call loadfile + ++ ; es:bx points to file end ++ movzx ebx,bx ++ xor edi,edi ++ mov di,es ++ shl edi,4 ++ add edi,ebx ++ sub edi,#SYSSEG * 16 ++ ++ ; edi -> message file size ++ + push #SYSSEG + pop ds + +@@ -519,7 +535,76 @@ + ! messages + seg fs + xchg bx,MSG_OFF+SSDIFF +- mov byte ptr (bx),#0 ++ ++ cmp dword ptr 0,#0x0b2d97f00 ; magic header ++ ; _must_ be 'jnz'! ++ jnz iloop_10 ++ ++ push cs ++ pop ds ++ ++ ; graphical message ++#if 0 ++; no alternative text message for now ++ mov dword showit,message_offset_relative_to_SYSSEG ++#endif ++ call gfx_init ++ push cs ++ pop es ++ cmp byte gfx_ok,#0 ++ jz iloop ++ call gfx_setup_menu ++iloop_gfx: ++ push cs ++ pop es ++ call gfx_input ++ cmp ax,#1 ++ jz iloop ; text mode ++ jmp near boot ++ ++ ; normal text message ++iloop_10: ++ ; keep the zero flag! ++ mov byte ptr (bx),#0 ++ push cs ++ pop ds ++ ++iloop_20: ++#ifdef MENU ++ pushf ++ call menu_setup ++ popf ++#endif ++ jnz totxt ++ ++ mov ax,showit ++ mov dx,showit+2 ++ mov bx,ax ++ or bx,dx ++ jz iloop_40 ++ push ds ++ shl dx,12 ++ mov bx,ax ++ and bx,#0xf ++ shr ax,4 ++ add ax,dx ++ add ax,#SYSSEG ++ mov ds,ax ++ call say ++ pop ds ++ xor ax,ax ++ mov showit,ax ++ mov showit+2,ax ++iloop_40: ++ ++ jmp nomsg ++ ++showit: ++ .long 0 ++ ++totxt: ++ push #SYSSEG ++ pop ds + xor bx,bx ! display the message + call say + +@@ -554,7 +639,6 @@ + inc si + jmp gotinp ! go on + +-tolist: br list ! ... + + kbinp: mov cx,#brto ! get a key + call getkey +@@ -575,18 +659,29 @@ + je tolist ! yes -> list images + or al,al ! NUL ? + je nul ! yes -> go on +- cmp al,#13 ! CR ? +- je cr ! yes -> go on + cmp al,#8 ! BS ? + je todelch ! yes -> erase one character + cmp al,#127 ! DEL ? + je todelch ! yes -> erase one character + ja input ! non-printable -> ignore it ++ cmp al,#13 ! CR ? ++ je cr ! yes -> go on + cmp al,#21 ! ^U ? + je todell ! yes -> erase the line +- cmp al,#24 ! ^X ? +- je todell ! yes -> erase the line +- cmp al,#32 ! ignore non-printable characters except space ++! cmp al,#27 ! Esc? ++! jne nogrph ! No -> continue ++ ++! seg cs ++! cmp grphmode, #$FF ! Yes -> check if graphics mode ++! jne nogrph ! ++! br togrph ! If graphics mode, go back to screen ++ ++nogrph: cmp al,#24 ! ^X? ++ jne suitek ! yes -> flame mode ++! call flamme ++ br toinput ++ ++suitek: cmp al,#32 ! ignore non-printable chars except space + jb input + ja noblnk ! no space -> go on + cmp (bx-1),al ! second space in a row ? +@@ -626,6 +721,7 @@ + + todelch:br delch ! ... + todell: br delline ! ... ++tolist: br list ! ... + + ! End of input, process the command line + +@@ -869,11 +965,19 @@ + jz dopw ! no -> get the password + cmp byte ptr (si),#0! are there any options ? + jne dopw ! yes -> password required +-toboot: jmp doboot ! ... ++toboot: jmp near doboot ! ... + dopw: push bx ! save the image descriptor + lea si,(bx+MAX_IMAGE_NAME+1) ! get a pointer to the password string + seg fs ! disable timeout + mov DSC_OFF-10+SSDIFF,#0xffff ++ cmp byte gfx_ok,#0 ++ jz dopw_nogfx ++ mov di,bx ++ call gfx_password ++ pop bx ++ jnc toboot ++ jmp near iloop ++dopw_nogfx: + mov bx,#msg_pw ! display a prompt + call say + pwagain:xor cl,cl ! CL counts characters after a mismatch +@@ -932,7 +1036,9 @@ + + ! Boot the image BX points to + +-doboot: mov byte ptr prechr,#61 ! switch to equal sign ++doboot: ++ call gfx_done ++ mov byte ptr prechr,#61 ! switch to equal sign + push bx ! save image descr + mov bx,#msg_l ! say hi + call say +@@ -2188,7 +2294,9 @@ + je mldivl ! yes -> divide + cmp byte ptr (si),#32 + ;;; je mldivl ! yes -> divide +- jne s2lbad ! trouble ++; jne s2lbad ! trouble ++ je mldivl ++ br s2lbad + mldivl: shr dx,1 ! shr DX:AX,1 + rcr ax,1 + loop mldivl ! ten times +@@ -2205,6 +2313,8 @@ + pop si ! restore SI + ret ! done + ++ ++#include "gfxlogo.S" + + strtoul: /* string to unsigned long in DX:AX */ + xor ax,ax +--- lilo-21.7.5/gfxlogo.S Sun Sep 9 13:50:36 2001 ++++ lilo-21.7.5.new/gfxlogo.S Sun Sep 9 13:35:10 2001 +@@ -32,6 +32,7 @@ + gfx_sysconfig: + gfx_sc_vmode: .byte 0 + gfx_sc_modes: .byte 0 ++gfx_bootloader: .byte 0 + + gfx_password_buf: .blkb 32 + gfx_msg_wrong_image: .ascii "Could not find kernel image: " +@@ -102,8 +103,11 @@ + cmp dword (bx),#0x0b2d97f00 ; header.magic_id + jnz near gfx_init_80 + seg es +- cmp byte (bx+4),#1 ; header.version +- jnz near gfx_init_80 ++ mov al,(bx+4) ; header.version ++ cmp al,#1 ++ jb near gfx_init_80 ++ cmp al,#2 ++ ja near gfx_init_80 + + seg es + mov eax,(bx+8) +--- lilo-21.7.5/gfxlogo.S Mon Sep 10 17:41:24 2001 ++++ lilo-21.7.5.new/gfxlogo.S Mon Sep 10 17:35:07 2001 +@@ -76,6 +76,11 @@ + + mov byte gfx_ok,#0 + ++ ; no gfx if we use a serial line ++ seg fs ++ cmp byte DSC_OFF-6+SSDIFF,#0 ++ jnz near gfx_init_90 ++ + ; define our memory area + ; gfx_mem _must_ be 16-byte aligned + mov dword gfx_mem,#0x10000 diff --git a/sys-apps/lilo/files/21.7.5/lilo-21.7.4-loop_dev.diff b/sys-apps/lilo/files/21.7.5/lilo-21.7.4-loop_dev.diff new file mode 100644 index 000000000000..a867ed5324bd --- /dev/null +++ b/sys-apps/lilo/files/21.7.5/lilo-21.7.4-loop_dev.diff @@ -0,0 +1,29 @@ +diff -uNr lilo-21.7.4.patched/geometry.c lilo-21.7.4.patched1/geometry.c +--- lilo-21.7.4.patched/geometry.c Mon Apr 30 01:59:15 2001 ++++ lilo-21.7.4.patched1/geometry.c Mon Apr 30 02:10:48 2001 +@@ -425,6 +425,14 @@ + geo->start = hdprm.start; + break; + ++ case MAJOR_LOOP: ++ geo->device = 0; ++ geo->heads = 2; ++ geo->cylinders = 80; ++ geo->sectors = 18; ++ geo->start = 0; ++ break; ++ + default: + die("Sorry, don't know how to handle device 0x%04x",device); + } +diff -uNr lilo-21.7.4.patched/lilo.h lilo-21.7.4.patched1/lilo.h +--- lilo-21.7.4.patched/lilo.h Mon Apr 30 01:57:26 2001 ++++ lilo-21.7.4.patched1/lilo.h Mon Apr 30 02:12:11 2001 +@@ -32,6 +32,7 @@ + #define MAJMIN_RAM 0x101 /* RAM disk */ + #define MAJOR_FD 2 /* floppy disks */ + #define MAJOR_HD 3 /* IDE-type hard disks */ ++#define MAJOR_LOOP 7 /* loop device */ + #define MAJOR_SD 8 /* SCSI disks 0-15 */ + #define MAJOR_SD2 65 /* SCSI disks 16-31 */ + #define MAJOR_SD3 66 /* SCSI disks 32-47 */ diff --git a/sys-apps/lilo/files/21.7.5/lilo-21.7.4.diff b/sys-apps/lilo/files/21.7.5/lilo-21.7.4.diff new file mode 100644 index 000000000000..662185371a1e --- /dev/null +++ b/sys-apps/lilo/files/21.7.5/lilo-21.7.4.diff @@ -0,0 +1,69 @@ +diff -uNr lilo-21.7.4/geometry.c lilo-21.7.4.patched/geometry.c +--- lilo-21.7.4/geometry.c Mon Apr 30 01:55:01 2001 ++++ lilo-21.7.4.patched/geometry.c Mon Apr 30 01:59:15 2001 +@@ -14,10 +14,21 @@ + #define _I386_STATFS_H /* two versions of statfs is not good ... */ + #endif + +-#include <linux/fs.h> +-#include <linux/hdreg.h> +-#include <linux/fd.h> + #include <string.h> ++#include <linux/kdev_t.h> /* for major and minor macros */ ++#ifndef BMAP_IOCTL ++#define BMAP_IOCTL 1 /* obsolete - kept for compatibility */ ++#endif ++#ifndef FIBMAP ++#define FIBMAP _IO(0x00,1) /* bmap access */ ++#endif ++#ifndef FIGETBSZ ++#define FIGETBSZ _IO(0x00,2) ++#endif ++ ++#include <sys/statfs.h> ++#include <linux/fd.h> /* for fdgetprm */ ++#include <linux/hdreg.h> /* for hdio_getgeo */ + + #include "config.h" + #include "lilo.h" +diff -uNr lilo-21.7.5.orig/partition.c lilo-21.7.5/partition.c +--- lilo-21.7.5.orig/partition.c Tue Apr 10 19:48:57 2001 ++++ lilo-21.7.5/partition.c Sat Feb 2 18:52:14 2002 +@@ -17,8 +17,15 @@ + #include <limits.h> + #include <errno.h> + #include <sys/stat.h> +-#include <linux/fs.h> + #include <string.h> ++ ++#if 0 ++#define _LINUX_STRING_H_ ++#include <linux/fs.h> ++#else ++#include <linux/kdev_t.h> ++#endif ++ + #include "config.h" + #include "lilo.h" + #include "common.h" +@@ -28,9 +35,9 @@ + #include "partition.h" + #include "boot.h" + +- + /* For older kernels ... */ +- ++/* hrmph... Gentoo is 2.4 kernel based anyway... */ ++/* + #ifndef DOS_EXTENDED_PARTITION + #define DOS_EXTENDED_PARTITION EXTENDED_PARTITION + #endif +@@ -38,7 +45,7 @@ + #ifndef LINUX_EXTENDED_PARTITION + #define LINUX_EXTENDED_PARTITION EXTENDED_PARTITION + #endif +- ++*/ + + void part_verify(int dev_nr,int type) + { diff --git a/sys-apps/lilo/files/digest-lilo-21.7.5-r1 b/sys-apps/lilo/files/digest-lilo-21.7.5-r1 new file mode 100644 index 000000000000..c52f06673f33 --- /dev/null +++ b/sys-apps/lilo/files/digest-lilo-21.7.5-r1 @@ -0,0 +1 @@ +MD5 517c337c871a7e6ac66eae0090a337ec lilo-21.7.5.tar.gz 229224 diff --git a/sys-apps/lilo/lilo-21.7.5-r1.ebuild b/sys-apps/lilo/lilo-21.7.5-r1.ebuild new file mode 100644 index 000000000000..129895976b24 --- /dev/null +++ b/sys-apps/lilo/lilo-21.7.5-r1.ebuild @@ -0,0 +1,86 @@ +# Copyright 1999-2002 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Maintainer: Donny Davies <woodchip@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/lilo/lilo-21.7.5-r1.ebuild,v 1.1 2002/02/03 03:46:22 woodchip Exp $ + +# NOTES: Not finished yet, but completely usable. Havent decided yet howto +# package the boot animations, if any.. Also havent decided what to +# do with the utils for making boot animations.. ie: include them in +# this package, or make a separate package, as SuSE has done.. +# +# Remember to mount /boot before you merge this thing! + +S=${WORKDIR}/${P} +DESCRIPTION="Standard Linux boot loader" +SRC_URI="ftp://metalab.unc.edu/pub/Linux/system/boot/lilo/${P}.tar.gz" + +DEPEND="virtual/glibc >=sys-devel/bin86-0.15.5" +RDEPEND="virtual/glibc" #gfxboot + +src_unpack() { + unpack ${A} ; cd ${S} + + # patches for animated boot logo from Suse. weeee! :> + patch -p1 < ${FILESDIR}/${PV}/lilo-21.7.4.diff || die + patch -p1 < ${FILESDIR}/${PV}/lilo-21.7.4-loop_dev.diff || die + patch -p1 < ${FILESDIR}/${PV}/lilo-21.7.4-gfx.diff || die + patch -p0 < ${FILESDIR}/${PV}/lilo-21.7-vga_inst.diff || die + + mv Makefile Makefile.orig + sed -e "s:-g:${CFLAGS}:" Makefile.orig > Makefile +} + +src_compile() { + make || die "compile problem" +} + +src_install() { + into / + dosbin lilo + into /usr + dosbin keytab-lilo.pl + dodir /boot + insinto /boot + doins boot-text.b boot-menu.b chain.b os2_d.b + doman manPages/*.[5-8] + dodoc CHANGES COPYING INCOMPAT QuickInst README* + + #dodir /usr/share/lilo + #hmm, maybe include some boot animations from the homepage + #listed below, but we're required to redistribute the sources + #for them too.. will decide soon. +} + +pkg_preinst() { + if [ ! -L $ROOT/boot/boot.b -a -f $ROOT/boot/boot.b ] + then + einfo "Saving old boot.b..." + mv $ROOT/boot/boot.b $ROOT/boot/boot.old + fi + + if [ ! -L $ROOT/boot/chain.b -a -f $ROOT/boot/chain.b ] + then + einfo "Saving old chain.b..." + mv $ROOT/boot/chain.b $ROOT/boot/chain.old + fi + + if [ ! -L $ROOT/boot/os2_d.b -a -f $ROOT/boot/os2_d.b ] + then + einfo "Saving old os2_d.b..." + mv $ROOT/boot/os2_d.b $ROOT/boot/os2_d.old + fi +} + +pkg_postinst() { + einfo "Activating boot-menu..." + ln -sf boot-menu.b $ROOT/boot/boot.b + + einfo "You need to put: message=/boot/foo.boot in your" + einfo "/etc/lilo.conf global section." + echo + einfo "See http://www.gamers.org/~quinet/lilo/index.html" + einfo "for downloadable animations. Put them in your" + einfo "/boot directory." + echo + einfo "Have fun :>" +} |