|
Revision tags: release/12.4.0, release/13.1.0 |
|
| #
de404535 |
| 17-Feb-2022 |
Colin Percival <[email protected]> |
Add support for getting early entropy from UEFI
UEFI provides a protocol for accessing randomness. This is a good way to gather early entropy, especially when there's no driver for the RNG on the pl
Add support for getting early entropy from UEFI
UEFI provides a protocol for accessing randomness. This is a good way to gather early entropy, especially when there's no driver for the RNG on the platform (as is the case on the Marvell Armada8k (MACCHIATObin) for now).
If the entropy_efi_seed option is enabled in loader.conf (default: YES) obtain 2048 bytes of entropy from UEFI and pass is to the kernel as a "module" of name "efi_rng_seed" and type "boot_entropy_platform"; if present, ingest it into the kernel RNG.
Submitted by: Greg V Reviewed by: markm, kevans Approved by: csprng (markm), re (delphij) Differential Revision: https://reviews.freebsd.org/D20780
show more ...
|
| #
28d2b8b7 |
| 13-Dec-2021 |
Emmanuel Vadot <[email protected]> |
loader: lua: test that /boot exists first
Otherwise on fs like tftp where no directory listing is possible we fail on the .dir method.
Reviewed by: imp, kevans MFC after: 2 weeks Sponsored by: Beck
loader: lua: test that /boot exists first
Otherwise on fs like tftp where no directory listing is possible we fail on the .dir method.
Reviewed by: imp, kevans MFC after: 2 weeks Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D33414
(cherry picked from commit c4dc907254a4275d8f3ecd9a6b615c6e2a2438e9)
show more ...
|
|
Revision tags: release/12.3.0, release/13.0.0 |
|
| #
57d6e82d |
| 14-Feb-2021 |
Toomas Soome <[email protected]> |
loader_lua: consider userboot console as serial
We use ascii box chars with serial console because we do not know if terminal can draw unixode box chars. Same problem is about userboot console.
(ch
loader_lua: consider userboot console as serial
We use ascii box chars with serial console because we do not know if terminal can draw unixode box chars. Same problem is about userboot console.
(cherry picked from commit 5d8c062fe3ee7b2d6aed0b46d22f62c7771c0af8)
show more ...
|
| #
13de7257 |
| 24-Jan-2021 |
Kyle Evans <[email protected]> |
stand: lua: enhance lfs.dir() to speed up kernels_autodetect
This eliminates a lot of stat() calls that happen when lualoader renders the menu with the default settings, and greatly speeds up render
stand: lua: enhance lfs.dir() to speed up kernels_autodetect
This eliminates a lot of stat() calls that happen when lualoader renders the menu with the default settings, and greatly speeds up rendering on my laptop.
ftype is nil if loader/loader.efi hasn't been updated yet, falling back to lfs.attributes() to test.
This is technically incompatible with lfs, but not in a particularly terrible way.
(cherry picked from commit e25ee296c919d6567aa76058a7049eac974797fb)
show more ...
|
| #
3630506b |
| 21-Dec-2020 |
Toomas Soome <[email protected]> |
loader: implement framebuffer console
Draw console on efi. Add vbe framebuffer for BIOS loader (vbe off, vbe on, vbe list, vbe set xxx). autoload font (/boot/fonts) based on resolution and font size
loader: implement framebuffer console
Draw console on efi. Add vbe framebuffer for BIOS loader (vbe off, vbe on, vbe list, vbe set xxx). autoload font (/boot/fonts) based on resolution and font size. Add command loadfont (set font by file) and variable screen.font (set font by size). Pass loaded font to kernel.
Export variables: screen.height screen.width screen.depth
Add gfx primitives to draw the screen and put png image on the screen. Rework menu draw to iterate list of consoles to enamble device specific output.
Probably something else I forgot...
Relnotes: yes Differential Revision: https://reviews.freebsd.org/D27420
show more ...
|
|
Revision tags: release/12.2.0 |
|
| #
94510c29 |
| 01-Oct-2020 |
Kyle Evans <[email protected]> |
lualoader: clear up some luacheck warnings
- One (1) unused argument - One (1) trailing whitespace - Two (2) "non-standard global" (curenv, rewind)
tools/boot/lua-lint.sh is once again happy.
|
| #
8f3b3610 |
| 28-Sep-2020 |
Warner Losh <[email protected]> |
Report the kernel console on the boot screen
Report what console the boot loader is telling the kernel to use: o Dual (Serial Primary) o Dual (Video Primary) o Serial o Video
This allows the us
Report the kernel console on the boot screen
Report what console the boot loader is telling the kernel to use: o Dual (Serial Primary) o Dual (Video Primary) o Serial o Video
This allows the user to interrupt the boot and tweak the cosnole, if needed, in a trivial way. Useful for installs where the default selected may not be quite what you want, or when you are running a dual setup and need to toggle over to the other console being primary. The 'c'/'C' keys will do the cycling through the consoles. Note: you'll still have to drop into the loader to set details about serial consoles. And this doesn't change the console the loader is using.
Reviewed by: kevans@ MFC After: 3 days Differential Revision: https://reviews.freebsd.org/D26573
show more ...
|
| #
277f38ab |
| 18-Aug-2020 |
Mariusz Zaborski <[email protected]> |
zfs: add an option to the bootloader to rewind the ZFS checkpoint
The checkpoints are another way of keeping the state of ZFS. During the rewind, the pool has to be exported. This makes checkpoints
zfs: add an option to the bootloader to rewind the ZFS checkpoint
The checkpoints are another way of keeping the state of ZFS. During the rewind, the pool has to be exported. This makes checkpoints unusable when using ZFS as root. Add the option to rewind the ZFS checkpoint at the boot time. If checkpoint exists, a new option for rewinding a checkpoint will appear in the bootloader menu. We fully support boot environments. If the rewind option is selected, the boot loader will show a list of boot environments that existed before the checkpoint.
Reviewed by: tsoome, allanjude, kevans (ok with high-level overview) Differential Revision: https://reviews.freebsd.org/D24920
show more ...
|
|
Revision tags: release/11.4.0 |
|
| #
73531a2a |
| 27-Mar-2020 |
Ryan Moeller <[email protected]> |
loader: Fully reset terminal settings, not just colors
Reviewed by: kevans Reviewed by: tsoome Approved by: mav (mentor) MFC after: 1 week Sponsored by: iXsystems, Inc. Differential Revision: https:
loader: Fully reset terminal settings, not just colors
Reviewed by: kevans Reviewed by: tsoome Approved by: mav (mentor) MFC after: 1 week Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D21733
show more ...
|
| #
366f9979 |
| 03-Dec-2019 |
Kyle Evans <[email protected]> |
lualoader: correct a typo from r354247
r354247 converted try_include to lfs + dofile with the loader.lua_path added just before. Fortunately, there was a hardcoded /boot/lua fallback in case loader.
lualoader: correct a typo from r354247
r354247 converted try_include to lfs + dofile with the loader.lua_path added just before. Fortunately, there was a hardcoded /boot/lua fallback in case loader.lua_path wasn't being set yet- I typo'd it as loader.lua_paths.
Fix the typo.
X-MFC-With: r354247 MFC after: 3 days
show more ...
|
| #
bac5966e |
| 02-Nov-2019 |
Kyle Evans <[email protected]> |
lualoader: rewrite try_include using lfs + dofile
Actual modules get require()'d in, rather than try_include(). All instances of try_include should be provided with proper hooks/API in the rest of l
lualoader: rewrite try_include using lfs + dofile
Actual modules get require()'d in, rather than try_include(). All instances of try_include should be provided with proper hooks/API in the rest of loader to do the work they need to do, since we can't rely on them to exist. Convert this now to lfs + dofile since we won't really be treating them as modules.
lfs is required because dofile will properly throw an error if the file doesn't exist, which is not in the spirit of 'optionally included'.
Getting out of the pcall game allows us to provide a loader.exit() style call that backs out to the common bits of loader (autoboot sequence unless disabled with a loader.setenv("autoboot_delay", "NO")). The most ideal way identified so far to implement loader.exit() is to throw a special abort-style error that indicates to the caller in interp_lua that we've not actually errored out, just continue execution. Otherwise, we have to hack in logic to bubble up and return from loader.lua without continuing further, which gets kind of ugly depending on the context in which we're aborting.
A compat shim is provided temporarily in case the executing loader doesn't yet have loader.lua_path, which was just added in r354246.
show more ...
|
|
Revision tags: release/12.1.0 |
|
| #
90a25417 |
| 10-Sep-2019 |
Kyle Evans <[email protected]> |
lualoader: Revert to ASCII menu frame for serial console
The box drawing characters we use aren't necessarily safe with a serial console; for instance, in the report by npn@, these were causing his
lualoader: Revert to ASCII menu frame for serial console
The box drawing characters we use aren't necessarily safe with a serial console; for instance, in the report by npn@, these were causing his xterm to send back a sequence that lua picked up as input and halted the boot. This is less than ideal.
Fallback to ASCII frames for console with 'comconsole' in it. This is a partial revert r338108 by imp@ -- instead of removing the menu entirely and disabling color/cursor sequences, just reverting the default frame to ASCII is enough to not break in this setup.
Reported by: npn Triaged and recommended by: tsoome
show more ...
|
|
Revision tags: release/11.3.0, release/12.0.0 |
|
| #
5beb5507 |
| 29-Oct-2018 |
Kyle Evans <[email protected]> |
lualoader: Fix try_include error handling
The previous iteration of try_include attempted to be 'friendly' and error() out if we hit an error that wasn't ENOENT. This was semi-OK, but fragile as it
lualoader: Fix try_include error handling
The previous iteration of try_include attempted to be 'friendly' and error() out if we hit an error that wasn't ENOENT. This was semi-OK, but fragile as it relied on pattern matching the error message.
Move the responsibility for handling failure to the caller. Following a common lua pattern, we'll return the return value of the underlying require() on success, or false and an error message.
Reported by: bcran MFC after: 3 days
show more ...
|
| #
1613f091 |
| 07-Oct-2018 |
Kyle Evans <[email protected]> |
lualoader: Honor boot_* variables at lua init
For non-UEFI systems, boot.config(5) may have -s or -v specified for single-user and verbose boot respectively. These were not being properly taken into
lualoader: Honor boot_* variables at lua init
For non-UEFI systems, boot.config(5) may have -s or -v specified for single-user and verbose boot respectively. These were not being properly taken into account and reflected in the "Boot Options" submenu. When we initialize core.lua, we'll record boot_single and boot_verbose as we do ACPI and consider these the system defaults.
Reported by: David Wolfskill <[email protected]> Approved by: re (kib)
show more ...
|
| #
a5003419 |
| 03-Sep-2018 |
Kyle Evans <[email protected]> |
lualoader: Handle comma-separated kernels as well
The format for kernels is documented as being space-delimited, but forthloader was more lenient on this and so people began to depend on it.
A late
lualoader: Handle comma-separated kernels as well
The format for kernels is documented as being space-delimited, but forthloader was more lenient on this and so people began to depend on it.
A later pass will be made to document all of the fun features that forthloader allowed that may not be immediately obvious.
Reported by: mmacy Approved by: re (kib)
show more ...
|
| #
b83a355d |
| 21-Aug-2018 |
Kyle Evans <[email protected]> |
lualoader: Just compare expression directly
|
| #
116c5314 |
| 20-Aug-2018 |
Warner Losh <[email protected]> |
Serial console menus for lua.
Remove a bunch of special cases for UEFI and serial consoles. We do want to do curses and menu things here. This makes us match what we do in FORTH, with the possible
Serial console menus for lua.
Remove a bunch of special cases for UEFI and serial consoles. We do want to do curses and menu things here. This makes us match what we do in FORTH, with the possible exception of boxes around menus.
Differential Revision: https://reviews.freebsd.org/D16816
show more ...
|
|
Revision tags: release/11.2.0 |
|
| #
892b3a52 |
| 26-Mar-2018 |
Kyle Evans <[email protected]> |
lualoader: Actually re-raise error in try_include
It was previously only printed, but we do actually want to raise it as a full blown error so that things don't look OK when they've actually gone wr
lualoader: Actually re-raise error in try_include
It was previously only printed, but we do actually want to raise it as a full blown error so that things don't look OK when they've actually gone wrong.
The second parameter to error, level, is set to 2 here so that the error message reflects the position of the try_include caller, rather than the try_include itself. Example:
LUA ERROR: /boot/lua/loader.lua:46: /boot/lua/local.lua:1: attempt to call a nil value (global 'cxcint').
show more ...
|
| #
07faaf78 |
| 26-Mar-2018 |
Kyle Evans <[email protected]> |
lualoader: Implement try_include and use it for including the local module
This provides a way to optionally include a module without having to wrap it in filesystem checks. try_include is a little
lualoader: Implement try_include and use it for including the local module
This provides a way to optionally include a module without having to wrap it in filesystem checks. try_include is a little more robust, using the lua search path instead of forcing us to explicitly consider all of the places we could want to include a module. Errors are still generally raised from trying to load the module, but ENOENT will not get raised unless we're doing a verbose load.
This will also be used to split out logo/brand graphics into their own files so that we can safely scale up the number of graphics included without worrying about the extra memory consumption- opting to lazily load graphics instead.
Reviewed by: cem Differential Revision: https://reviews.freebsd.org/D14658
show more ...
|
| #
5f8cfbe1 |
| 21-Mar-2018 |
Kyle Evans <[email protected]> |
UEFI: Ditch console mode setting, choose optimal GOP mode later in boot
boot1 is too early to be deciding a good resolution. Console modes don't map cleanly/predictably to actual screen resolutions,
UEFI: Ditch console mode setting, choose optimal GOP mode later in boot
boot1 is too early to be deciding a good resolution. Console modes don't map cleanly/predictably to actual screen resolutions, and GOP does not reflect the actual screen resolution after a console mode change. Rip it out.
Add an efi-autoresizecons command to loader to choose an optimal screen resolution based on the current environment. We'll explicitly execute this later, preferably before we draw anything of value but after we load config and pick up any tunables we may need to decide where we're going.
This method also allows us to actually pass the correct framebuffer information on to the kernel.
UGA autoresizing is not implemented because it doesn't have the kind of mode enumeration that GOP does. If an interested person with relevant hardware could get in contact, we can take a look at implementing UGA autoresize.
This effectively "fixes" the breakage caused by r327058, but doesn't actually set the resolution correctly until the interpreter calls efi-autoresizcons. The lualoader version of this has been included for reference; the forth equivalent will follow.
Reviewed by: imp (with some hestitation), manu Differential Revision: https://reviews.freebsd.org/D14788
show more ...
|
| #
aea262bf |
| 21-Mar-2018 |
Kyle Evans <[email protected]> |
lualoader: Add primitive hook module, use it to untangle bogus reference
See: comments in the hook module about intended usage, as well as the introduced use for config.reloaded.
Use the newly intr
lualoader: Add primitive hook module, use it to untangle bogus reference
See: comments in the hook module about intended usage, as well as the introduced use for config.reloaded.
Use the newly introduced hook module to define a "config.reloaded" hook. This is currently used to register core's clearKernelCache as a reload hook to avoid a circular dependency and fix this functionality- it didn't actually work out, and it isn't immediately obvious how it slipped into src.
Other hook types will be introduced into the core lualoader as useful hook points are identified.
show more ...
|
| #
35b0c718 |
| 09-Mar-2018 |
Kyle Evans <[email protected]> |
lualoader: Cache kernel list
With autodetection turned on, hitting the filesystem everytime we need to calculate choices for the kernel carousel is kind of slow. Cache once on the first listing and
lualoader: Cache kernel list
With autodetection turned on, hitting the filesystem everytime we need to calculate choices for the kernel carousel is kind of slow. Cache once on the first listing and reload it anytime the config is reloaded in case any of the loader.conf(5) changes that affect this (kernel, kernels, kernels_autodetect) have changed. This also picks up the case where we've changed currdev and the autodetected kernels could change.
show more ...
|
| #
a2a7830e |
| 07-Mar-2018 |
Kyle Evans <[email protected]> |
lualoader: Only loadelf before boot/autoboot if no kernel loaded
Back when I "fixed" the loading of kernel/modules to be deferred until booting, I inadvertently broke the ability to manually load a
lualoader: Only loadelf before boot/autoboot if no kernel loaded
Back when I "fixed" the loading of kernel/modules to be deferred until booting, I inadvertently broke the ability to manually load a set of kernels and modules in case of something bad having happened. lualoader would instead happily load whatever is specified in loader.conf(5) and go about the boot, leading to a panic loop as you try to rediscover a way to stop the panicky efirt module from loading and fail miserably.
Reported by: me, sadly
show more ...
|
| #
230061c5 |
| 28-Feb-2018 |
Kyle Evans <[email protected]> |
lualoader: Add note that \027 is a decimal representation
We've included an extra '0' in there (which might get removed later, but it's maintained for the moment for legacy purposes) which oftentime
lualoader: Add note that \027 is a decimal representation
We've included an extra '0' in there (which might get removed later, but it's maintained for the moment for legacy purposes) which oftentimes indicate that the following number should be treated as octal. This is not the case, so note that to prevent future confusion (of myself and others).
show more ...
|
| #
2bb86aef |
| 27-Feb-2018 |
Kyle Evans <[email protected]> |
lualoader: Convert instances of KEYSTR_ESCAPE .. "[" -> KEYSTR_CSI
|