Print this page
NEX-16819 loader UEFI support
Includes work by Toomas Soome <tsoome@me.com>
Upstream commits:
    loader: pxe receive cleanup
    9475 libefi: Do not return only if ReceiveFilter
    installboot: should support efi system partition
    8931 boot1.efi: scan all display modes rather than
    loader: spinconsole updates
    loader: gfx experiment to try GOP Blt() function.
    sha1 build test
    loader: add sha1 hash calculation
    common/sha1: update for loader build
    loader: biosdisk rework
    uts: 32-bit kernel FB needs mapping in low memory
    uts: add diag-device
    uts: boot console mirror with diag-device
    uts: enable very early console on ttya
    kmdb: add diag-device as input/output device
    uts: test VGA memory exclusion from mapping
    uts: clear boot mapping and protect boot pages test
    uts: add dboot map debug printf
    uts: need to release FB pages in release_bootstrap()
    uts: add screenmap ioctl
    uts: update sys/queue.h
    loader: add illumos uts/common to include path
    loader: tem/gfx font cleanup
    loader: vbe checks
    uts: gfx_private set KD_TEXT when KD_RESETTEXT is
    uts: gfx 8-bit update
    loader: gfx 8-bit fix
    loader: always set media size from partition.
    uts: MB2 support for 32-bit kernel
    loader: x86 should have tem 80x25
    uts: x86 should have tem 80x25
    uts: font update
    loader: font update
    uts: tem attributes
    loader: tem.c comment added
    uts: use font module
    loader: add font module
    loader: build rules for new font setup
    uts: gfx_private update for new font structure
    uts: early boot update for new font structure
    uts: font update
    uts: font build rules update for new fonts
    uts: tem update to new font structure
    loader: module.c needs to include tem_impl.h
    uts: gfx_private 8x16 font rework
    uts: make font_lookup public
    loader: font rework
    uts: font rework
    9259 libefi: efi_alloc_and_read should check for PMBR
    uts: tem utf-8 support
    loader: implement tem utf-8 support
    loader: tem should be able to display UTF-8
    7784 uts: console input should support utf-8
    7796 uts: ldterm default to utf-8
    uts: do not reset serial console
    uts: set up colors even if tem is not console
    uts: add type for early boot properties
    uts: gfx_private experiment with drm and vga
    uts: gfx_private should use setmode drm callback.
    uts: identify FB types and set up gfx_private based
    loader: replace gop and vesa with framebuffer
    uts: boot needs simple tem to support mdb
    uts: boot_keyboard should emit esc sequences for
    uts: gfx_private FB showuld be written by line
    kmdb: set terminal window size
    uts: gfx_private needs to keep track of early boot FB
    pnglite: move pnglite to usr/src/common
    loader: gfx_fb
    ficl-sys: add gfx primitives
    loader: add illumos.png logo
    ficl: add fb-putimage
    loader: add png support
    loader: add alpha blending for gfx_fb
    loader: use term-drawrect for menu frame
    ficl: add simple gfx words
    uts: provide fb_info via fbgattr dev_specific array.
    uts: gfx_private add alpha blending
    uts: update sys/ascii.h
    uts: tem OSC support (incomplete)
    uts: implement env module support and use data from
    uts: tem get colors from early boot data
    loader: use crc32 from libstand (libz)
    loader: optimize for size
    loader: pass tem info to the environment
    loader: import tem for loader console
    loader: UEFI loader needs to set ISADIR based on
    loader: need UEFI32 support
    8918 loader.efi: add vesa edid support
    uts: tem_safe_pix_clear_prom_output() should only
    uts: tem_safe_pix_clear_entire_screen() should use
    uts: tem_safe_check_first_time() should query cursor
    uts: tem implement cls callback & visual_io v4
    uts: gfx_vgatext use block cursor for vgatext
    uts: gfx_private implement cls callback & visual_io
    uts: gfx_private bitmap framebuffer implementation
    uts: early start frame buffer console support
    uts: font functions should check the input char
    uts: font rendering should support 16/24/32bit depths
    uts: use smallest font as fallback default.
    uts: update terminal dimensions based on selected
    7834 uts: vgatext should use gfx_private
    uts: add spacing property to 8859-1.bdf
    terminfo: add underline for sun-color
    terminfo: sun-color has 16 colors
    uts: add font load callback type
    loader: do not repeat int13 calls with error 0x20 and
    8905 loader: add skein/edonr support
    8904 common/crypto: make skein and edonr loader
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Revert "NEX-16819 loader UEFI support"
This reverts commit ec06b9fc617b99234e538bf2e7e4d02a24993e0c.
Reverting due to failures in the zfs-tests and the sharefs-tests
NEX-16819 loader UEFI support
Includes work by Toomas Soome <tsoome@me.com>
Upstream commits:
    loader: pxe receive cleanup
    9475 libefi: Do not return only if ReceiveFilter
    installboot: should support efi system partition
    8931 boot1.efi: scan all display modes rather than
    loader: spinconsole updates
    loader: gfx experiment to try GOP Blt() function.
    sha1 build test
    loader: add sha1 hash calculation
    common/sha1: update for loader build
    loader: biosdisk rework
    uts: 32-bit kernel FB needs mapping in low memory
    uts: add diag-device
    uts: boot console mirror with diag-device
    uts: enable very early console on ttya
    kmdb: add diag-device as input/output device
    uts: test VGA memory exclusion from mapping
    uts: clear boot mapping and protect boot pages test
    uts: add dboot map debug printf
    uts: need to release FB pages in release_bootstrap()
    uts: add screenmap ioctl
    uts: update sys/queue.h
    loader: add illumos uts/common to include path
    loader: tem/gfx font cleanup
    loader: vbe checks
    uts: gfx_private set KD_TEXT when KD_RESETTEXT is
    uts: gfx 8-bit update
    loader: gfx 8-bit fix
    loader: always set media size from partition.
    uts: MB2 support for 32-bit kernel
    loader: x86 should have tem 80x25
    uts: x86 should have tem 80x25
    uts: font update
    loader: font update
    uts: tem attributes
    loader: tem.c comment added
    uts: use font module
    loader: add font module
    loader: build rules for new font setup
    uts: gfx_private update for new font structure
    uts: early boot update for new font structure
    uts: font update
    uts: font build rules update for new fonts
    uts: tem update to new font structure
    loader: module.c needs to include tem_impl.h
    uts: gfx_private 8x16 font rework
    uts: make font_lookup public
    loader: font rework
    uts: font rework
    libefi: efi_alloc_and_read should check for PMBR
    uts: tem utf-8 support
    loader: implement tem utf-8 support
    loader: tem should be able to display UTF-8
    7784 uts: console input should support utf-8
    7796 uts: ldterm default to utf-8
    uts: do not reset serial console
    uts: set up colors even if tem is not console
    uts: add type for early boot properties
    uts: gfx_private experiment with drm and vga
    uts: gfx_private should use setmode drm callback.
    uts: identify FB types and set up gfx_private based
    loader: replace gop and vesa with framebuffer
    uts: boot needs simple tem to support mdb
    uts: boot_keyboard should emit esc sequences for
    uts: gfx_private FB showuld be written by line
    kmdb: set terminal window size
    uts: gfx_private needs to keep track of early boot FB
    pnglite: move pnglite to usr/src/common
    loader: gfx_fb
    ficl-sys: add gfx primitives
    loader: add illumos.png logo
    ficl: add fb-putimage
    loader: add png support
    loader: add alpha blending for gfx_fb
    loader: use term-drawrect for menu frame
    ficl: add simple gfx words
    uts: provide fb_info via fbgattr dev_specific array.
    uts: gfx_private add alpha blending
    uts: update sys/ascii.h
    uts: tem OSC support (incomplete)
    uts: implement env module support and use data from
    uts: tem get colors from early boot data
    loader: use crc32 from libstand (libz)
    loader: optimize for size
    loader: pass tem info to the environment
    loader: import tem for loader console
    loader: UEFI loader needs to set ISADIR based on
    loader: need UEFI32 support
    8918 loader.efi: add vesa edid support
    uts: tem_safe_pix_clear_prom_output() should only
    uts: tem_safe_pix_clear_entire_screen() should use
    uts: tem_safe_check_first_time() should query cursor
    uts: tem implement cls callback & visual_io v4
    uts: gfx_vgatext use block cursor for vgatext
    uts: gfx_private implement cls callback & visual_io
    uts: gfx_private bitmap framebuffer implementation
    uts: early start frame buffer console support
    uts: font functions should check the input char
    uts: font rendering should support 16/24/32bit depths
    uts: use smallest font as fallback default.
    uts: update terminal dimensions based on selected
    7834 uts: vgatext should use gfx_private
    uts: add spacing property to 8859-1.bdf
    terminfo: add underline for sun-color
    terminfo: sun-color has 16 colors
    uts: add font load callback type
    loader: do not repeat int13 calls with error 0x20 and
    8905 loader: add skein/edonr support
    8904 common/crypto: make skein and edonr loader
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>


  78 commands" for historical reasons.
  79 The main drive behind these commands is user-friendliness.
  80 The bigger component is an
  81 .Tn ANS
  82 Forth compatible Forth interpreter based on FICL, by
  83 .An John Sadler .
  84 .Pp
  85 During initialization,
  86 .Nm
  87 will probe for a console and set the
  88 .Va console
  89 variable, or set it to serial console
  90 .Pq Do Li ttya Dc - Dq Li ttyd
  91 if the previous boot stage used that.
  92 If multiple consoles are selected, they will be listed separated by commas.
  93 Then, devices are probed,
  94 .Va currdev
  95 and
  96 .Va loaddev
  97 are set, and
  98 .Va COLUMNS ,
  99 .Va LINES ,
 100 and
 101 .Va ISADIR
 102 are set.
 103 Next,
 104 .Tn FICL
 105 is initialized, the builtin words are added to its vocabulary.
 106 The inner interpreter
 107 .Nm
 108 will use with
 109 .Tn FICL
 110 is then set to
 111 .Ic interpret ,
 112 which is
 113 .Tn FICL Ns 's
 114 default.
 115 After that,
 116 .Pa /boot/loader.rc
 117 is processed if available.
 118 These files are processed through the
 119 .Ic include


 245 .Ar path
 246 is not specified.
 247 If
 248 .Fl l
 249 is specified, file sizes will be shown too.
 250 .Pp
 251 .It Ic lsdev Op Fl v
 252 Lists all of the devices from which it may be possible to load modules.
 253 If
 254 .Fl v
 255 is specified, more details are printed.
 256 .Pp
 257 .It Ic lsmod Op Fl v
 258 Displays loaded modules.
 259 If
 260 .Fl v
 261 is specified, more details are shown.
 262 .Pp
 263 .It Ic more Ar file Op Ar
 264 Display the files specified, with a pause at each
 265 .Va LINES
 266 displayed.
 267 .Pp
 268 .It Ic read Xo
 269 .Op Fl t Ar seconds
 270 .Op Fl p Ar prompt
 271 .Op Va variable
 272 .Xc
 273 Reads a line of input from the terminal, storing it in
 274 .Va variable
 275 if specified.
 276 A timeout can be specified with
 277 .Fl t ,
 278 though it will be canceled at the first key pressed.
 279 A prompt may also be displayed through the
 280 .Fl p
 281 flag.
 282 .Pp
 283 .It Ic reboot
 284 Immediately reboots the system.
 285 .Pp


 410 .Nm
 411 startup will parse the
 412 .Va boot-args
 413 value to set boot prefixed variables listed above, any unrecognized options
 414 are added to kernel command line verbatim.
 415 .It Va bootfile
 416 The name of the kernel.
 417 .It Va console
 418 Defines the current console or consoles.
 419 Multiple consoles may be specified.
 420 In that case, the first listed console will become the default console for
 421 the
 422 .Xr kernel 1M .
 423 .It Va currdev
 424 Selects the default device.
 425 Syntax for devices is odd.
 426 .It Va interpret
 427 Has the value
 428 .Dq Li ok
 429 if the Forth's current state is interpreting.
 430 .It Va LINES
 431 Define the number of lines on the screen, to be used by the pager.
 432 .It Va module_path
 433 Sets the list of directories which will be searched for modules
 434 named in a load command or implicitly required by a dependency.
 435 The default value for this variable is
 436 .Dq Li /platform/i86pc/${ISADIR}
 437 .It Va prompt
 438 Value of
 439 .Nm Ns 's
 440 prompt.
 441 Defaults to
 442 .Dq Li "${interpret}" .
 443 If variable
 444 .Va prompt
 445 is unset, the default prompt is
 446 .Ql > .
 447 .It Va os_console
 448 If set, the value is used to set
 449 .Xr kernel 1M
 450 .Va console




  78 commands" for historical reasons.
  79 The main drive behind these commands is user-friendliness.
  80 The bigger component is an
  81 .Tn ANS
  82 Forth compatible Forth interpreter based on FICL, by
  83 .An John Sadler .
  84 .Pp
  85 During initialization,
  86 .Nm
  87 will probe for a console and set the
  88 .Va console
  89 variable, or set it to serial console
  90 .Pq Do Li ttya Dc - Dq Li ttyd
  91 if the previous boot stage used that.
  92 If multiple consoles are selected, they will be listed separated by commas.
  93 Then, devices are probed,
  94 .Va currdev
  95 and
  96 .Va loaddev
  97 are set, and
  98 .Va screen-#cols ,
  99 .Va screen-#rows ,
 100 and
 101 .Va ISADIR
 102 are set.
 103 Next,
 104 .Tn FICL
 105 is initialized, the builtin words are added to its vocabulary.
 106 The inner interpreter
 107 .Nm
 108 will use with
 109 .Tn FICL
 110 is then set to
 111 .Ic interpret ,
 112 which is
 113 .Tn FICL Ns 's
 114 default.
 115 After that,
 116 .Pa /boot/loader.rc
 117 is processed if available.
 118 These files are processed through the
 119 .Ic include


 245 .Ar path
 246 is not specified.
 247 If
 248 .Fl l
 249 is specified, file sizes will be shown too.
 250 .Pp
 251 .It Ic lsdev Op Fl v
 252 Lists all of the devices from which it may be possible to load modules.
 253 If
 254 .Fl v
 255 is specified, more details are printed.
 256 .Pp
 257 .It Ic lsmod Op Fl v
 258 Displays loaded modules.
 259 If
 260 .Fl v
 261 is specified, more details are shown.
 262 .Pp
 263 .It Ic more Ar file Op Ar
 264 Display the files specified, with a pause at each
 265 .Va screen-#rows
 266 displayed.
 267 .Pp
 268 .It Ic read Xo
 269 .Op Fl t Ar seconds
 270 .Op Fl p Ar prompt
 271 .Op Va variable
 272 .Xc
 273 Reads a line of input from the terminal, storing it in
 274 .Va variable
 275 if specified.
 276 A timeout can be specified with
 277 .Fl t ,
 278 though it will be canceled at the first key pressed.
 279 A prompt may also be displayed through the
 280 .Fl p
 281 flag.
 282 .Pp
 283 .It Ic reboot
 284 Immediately reboots the system.
 285 .Pp


 410 .Nm
 411 startup will parse the
 412 .Va boot-args
 413 value to set boot prefixed variables listed above, any unrecognized options
 414 are added to kernel command line verbatim.
 415 .It Va bootfile
 416 The name of the kernel.
 417 .It Va console
 418 Defines the current console or consoles.
 419 Multiple consoles may be specified.
 420 In that case, the first listed console will become the default console for
 421 the
 422 .Xr kernel 1M .
 423 .It Va currdev
 424 Selects the default device.
 425 Syntax for devices is odd.
 426 .It Va interpret
 427 Has the value
 428 .Dq Li ok
 429 if the Forth's current state is interpreting.
 430 .It Va screen-#rows
 431 Define the number of lines on the screen, to be used by the pager.
 432 .It Va module_path
 433 Sets the list of directories which will be searched for modules
 434 named in a load command or implicitly required by a dependency.
 435 The default value for this variable is
 436 .Dq Li /platform/i86pc/${ISADIR}
 437 .It Va prompt
 438 Value of
 439 .Nm Ns 's
 440 prompt.
 441 Defaults to
 442 .Dq Li "${interpret}" .
 443 If variable
 444 .Va prompt
 445 is unset, the default prompt is
 446 .Ql > .
 447 .It Va os_console
 448 If set, the value is used to set
 449 .Xr kernel 1M
 450 .Va console