[romprefix] Add vendor branding facilities and guidelines
Some hardware vendors have been known to remove all gPXE-related branding from ROMs that they build. While this is not prohibited by the GPL, it is a little impolite. Add a facility for adding branding messages via two #defines (PRODUCT_NAME and PRODUCT_SHORT_NAME) in config/general.h. This should accommodate all known OEM-mandated branding requirements. Vendors with branding requirements that cannot be satisfied by using PRODUCT_NAME and/or PRODUCT_SHORT_NAME should contact us so that we can extended this facility as necessary.
This commit is contained in:
parent
32bc76f902
commit
5e6b82104d
|
@ -199,6 +199,39 @@ print_pci_busdevfn:
|
||||||
ret
|
ret
|
||||||
.size print_pci_busdevfn, . - print_pci_busdevfn
|
.size print_pci_busdevfn, . - print_pci_busdevfn
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Utility function: clear current line
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* %ds:di : output buffer (or %di=0 to print to console)
|
||||||
|
* Returns:
|
||||||
|
* %ds:di : next character in output buffer (if applicable)
|
||||||
|
*****************************************************************************
|
||||||
|
*/
|
||||||
|
.section ".prefix.lib"
|
||||||
|
.code16
|
||||||
|
.globl print_kill_line
|
||||||
|
print_kill_line:
|
||||||
|
/* Preserve registers */
|
||||||
|
pushw %ax
|
||||||
|
pushw %cx
|
||||||
|
/* Print CR */
|
||||||
|
movb $'\r', %al
|
||||||
|
call print_character
|
||||||
|
/* Print 79 spaces */
|
||||||
|
movb $' ', %al
|
||||||
|
movw $79, %cx
|
||||||
|
1: call print_character
|
||||||
|
loop 1b
|
||||||
|
/* Print CR */
|
||||||
|
movb $'\r', %al
|
||||||
|
call print_character
|
||||||
|
/* Restore registers and return */
|
||||||
|
popw %cx
|
||||||
|
popw %ax
|
||||||
|
ret
|
||||||
|
.size print_kill_line, . - print_kill_line
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* pm_call (real-mode near call)
|
* pm_call (real-mode near call)
|
||||||
*
|
*
|
||||||
|
|
|
@ -109,12 +109,12 @@ mfgstr:
|
||||||
|
|
||||||
/* Product string
|
/* Product string
|
||||||
*
|
*
|
||||||
* Defaults to "gPXE". If the ROM image is writable at initialisation
|
* Defaults to PRODUCT_SHORT_NAME. If the ROM image is writable at
|
||||||
* time, it will be filled in to include the PCI bus:dev.fn number of
|
* initialisation time, it will be filled in to include the PCI
|
||||||
* the card as well.
|
* bus:dev.fn number of the card as well.
|
||||||
*/
|
*/
|
||||||
prodstr:
|
prodstr:
|
||||||
.ascii "gPXE"
|
.ascii PRODUCT_SHORT_NAME
|
||||||
prodstr_separator:
|
prodstr_separator:
|
||||||
.byte 0
|
.byte 0
|
||||||
.ascii "(PCI "
|
.ascii "(PCI "
|
||||||
|
@ -346,23 +346,28 @@ no_pmm:
|
||||||
movw $init_message_prompt, %si
|
movw $init_message_prompt, %si
|
||||||
xorw %di, %di
|
xorw %di, %di
|
||||||
call print_message
|
call print_message
|
||||||
|
movw $prodstr, %si
|
||||||
|
call print_message
|
||||||
|
movw $init_message_dots, %si
|
||||||
|
call print_message
|
||||||
/* Wait for Ctrl-B */
|
/* Wait for Ctrl-B */
|
||||||
movw $0xff02, %bx
|
movw $0xff02, %bx
|
||||||
call wait_for_key
|
call wait_for_key
|
||||||
/* Clear prompt */
|
/* Clear prompt */
|
||||||
pushf
|
pushf
|
||||||
movw $clear_message, %si
|
|
||||||
xorw %di, %di
|
xorw %di, %di
|
||||||
|
call print_kill_line
|
||||||
|
movw $init_message_done, %si
|
||||||
call print_message
|
call print_message
|
||||||
popf
|
popf
|
||||||
jnz 1f
|
jnz 2f
|
||||||
/* Ctrl-B was pressed: invoke gPXE. The keypress will be
|
/* Ctrl-B was pressed: invoke gPXE. The keypress will be
|
||||||
* picked up by the initial shell prompt, and we will drop
|
* picked up by the initial shell prompt, and we will drop
|
||||||
* into a shell.
|
* into a shell.
|
||||||
*/
|
*/
|
||||||
pushw %cs
|
pushw %cs
|
||||||
call exec
|
call exec
|
||||||
1:
|
2:
|
||||||
/* Restore registers */
|
/* Restore registers */
|
||||||
popw %gs
|
popw %gs
|
||||||
popw %fs
|
popw %fs
|
||||||
|
@ -375,7 +380,26 @@ no_pmm:
|
||||||
lret
|
lret
|
||||||
.size init, . - init
|
.size init, . - init
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note to hardware vendors:
|
||||||
|
*
|
||||||
|
* If you wish to brand this boot ROM, please do so by defining the
|
||||||
|
* strings PRODUCT_NAME and PRODUCT_SHORT_NAME in config/general.h.
|
||||||
|
*
|
||||||
|
* While nothing in the GPL prevents you from removing all references
|
||||||
|
* to gPXE or http://etherboot.org, we prefer you not to do so.
|
||||||
|
*
|
||||||
|
* If you have an OEM-mandated branding requirement that cannot be
|
||||||
|
* satisfied simply by defining PRODUCT_NAME and PRODUCT_SHORT_NAME,
|
||||||
|
* please contact us.
|
||||||
|
*
|
||||||
|
* [ Including an ASCII NUL in PRODUCT_NAME is considered to be
|
||||||
|
* bypassing the spirit of this request! ]
|
||||||
|
*/
|
||||||
init_message:
|
init_message:
|
||||||
|
.ascii "\n"
|
||||||
|
.ascii PRODUCT_NAME
|
||||||
|
.ascii "\n"
|
||||||
.asciz "gPXE (http://etherboot.org) - "
|
.asciz "gPXE (http://etherboot.org) - "
|
||||||
.size init_message, . - init_message
|
.size init_message, . - init_message
|
||||||
init_message_pci:
|
init_message_pci:
|
||||||
|
@ -394,11 +418,14 @@ init_message_int19:
|
||||||
.asciz " INT19"
|
.asciz " INT19"
|
||||||
.size init_message_int19, . - init_message_int19
|
.size init_message_int19, . - init_message_int19
|
||||||
init_message_prompt:
|
init_message_prompt:
|
||||||
.asciz "\nPress Ctrl-B to configure gPXE..."
|
.asciz "\nPress Ctrl-B to configure "
|
||||||
.size init_message_prompt, . - init_message_prompt
|
.size init_message_prompt, . - init_message_prompt
|
||||||
clear_message:
|
init_message_dots:
|
||||||
.asciz "\r \n\n"
|
.asciz "..."
|
||||||
.size clear_message, . - clear_message
|
.size init_message_dots, . - init_message_dots
|
||||||
|
init_message_done:
|
||||||
|
.asciz "\n\n"
|
||||||
|
.size init_message_done, . - init_message_done
|
||||||
|
|
||||||
/* ROM image location
|
/* ROM image location
|
||||||
*
|
*
|
||||||
|
@ -454,8 +481,9 @@ int19_entry:
|
||||||
movw $0xdf42, %bx
|
movw $0xdf42, %bx
|
||||||
call wait_for_key
|
call wait_for_key
|
||||||
pushf
|
pushf
|
||||||
movw $clear_message, %si
|
|
||||||
xorw %di, %di
|
xorw %di, %di
|
||||||
|
call print_kill_line
|
||||||
|
movw $int19_message_done, %si
|
||||||
call print_message
|
call print_message
|
||||||
popf
|
popf
|
||||||
jnz 1f
|
jnz 1f
|
||||||
|
@ -482,6 +510,9 @@ int19_message_prompt:
|
||||||
int19_message_dots:
|
int19_message_dots:
|
||||||
.asciz "..."
|
.asciz "..."
|
||||||
.size int19_message_dots, . - int19_message_dots
|
.size int19_message_dots, . - int19_message_dots
|
||||||
|
int19_message_done:
|
||||||
|
.asciz "\n\n"
|
||||||
|
.size int19_message_done, . - int19_message_done
|
||||||
|
|
||||||
/* Execute as a boot device
|
/* Execute as a boot device
|
||||||
*
|
*
|
||||||
|
|
|
@ -9,6 +9,22 @@
|
||||||
|
|
||||||
#include <config/defaults.h>
|
#include <config/defaults.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Branding
|
||||||
|
*
|
||||||
|
* Vendors may use these strings to add their own branding to gPXE.
|
||||||
|
* PRODUCT_NAME is displayed prior to any gPXE branding in startup
|
||||||
|
* messages, and PRODUCT_SHORT_NAME is used where a brief product
|
||||||
|
* label is required (e.g. in BIOS boot selection menus).
|
||||||
|
*
|
||||||
|
* To minimise end-user confusion, it's probably a good idea to either
|
||||||
|
* make PRODUCT_SHORT_NAME a substring of PRODUCT_NAME or leave it as
|
||||||
|
* "gPXE".
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define PRODUCT_NAME ""
|
||||||
|
#define PRODUCT_SHORT_NAME "gPXE"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Timer configuration
|
* Timer configuration
|
||||||
*
|
*
|
||||||
|
|
|
@ -20,6 +20,7 @@ Literature dealing with the network protocols:
|
||||||
#include <gpxe/shell.h>
|
#include <gpxe/shell.h>
|
||||||
#include <gpxe/shell_banner.h>
|
#include <gpxe/shell_banner.h>
|
||||||
#include <usr/autoboot.h>
|
#include <usr/autoboot.h>
|
||||||
|
#include <config/general.h>
|
||||||
|
|
||||||
#define NORMAL "\033[0m"
|
#define NORMAL "\033[0m"
|
||||||
#define BOLD "\033[1m"
|
#define BOLD "\033[1m"
|
||||||
|
@ -39,8 +40,19 @@ __cdecl int main ( void ) {
|
||||||
initialise();
|
initialise();
|
||||||
startup();
|
startup();
|
||||||
|
|
||||||
/* Print welcome banner */
|
/*
|
||||||
printf ( NORMAL "\n\n\n" BOLD "gPXE " VERSION
|
* Print welcome banner
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* If you wish to brand this build of gPXE, please do so by
|
||||||
|
* defining the string PRODUCT_NAME in config/general.h.
|
||||||
|
*
|
||||||
|
* While nothing in the GPL prevents you from removing all
|
||||||
|
* references to gPXE or http://etherboot.org, we prefer you
|
||||||
|
* not to do so.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
printf ( NORMAL "\n\n" PRODUCT_NAME "\n" BOLD "gPXE " VERSION
|
||||||
NORMAL " -- Open Source Boot Firmware -- "
|
NORMAL " -- Open Source Boot Firmware -- "
|
||||||
CYAN "http://etherboot.org" NORMAL "\n"
|
CYAN "http://etherboot.org" NORMAL "\n"
|
||||||
"Features:" );
|
"Features:" );
|
||||||
|
|
Reference in New Issue