]> git.ozlabs.org Git - petitboot/log
petitboot
5 years agoui/ncurses: Add a missing gettext call & update translations
Samuel Mendoza-Jonas [Wed, 28 Nov 2018 23:56:08 +0000 (10:56 +1100)]
ui/ncurses: Add a missing gettext call & update translations

Fix up a spot where we forgot to translate the "Plugins" label on update
and make the check for that label more resilient.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/platform-powerpc: Remove unused variable
Samuel Mendoza-Jonas [Thu, 29 Nov 2018 02:28:12 +0000 (13:28 +1100)]
discover/platform-powerpc: Remove unused variable

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Display warning if saving config fails
Samuel Mendoza-Jonas [Thu, 29 Nov 2018 02:05:02 +0000 (13:05 +1100)]
discover: Display warning if saving config fails

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/boot: Fix talloc parent for resource URLs
Samuel Mendoza-Jonas [Thu, 29 Nov 2018 00:53:05 +0000 (11:53 +1100)]
discover/boot: Fix talloc parent for resource URLs

The pb_urls for the boot resources use 'opt' as the talloc parent but
this may be NULL, for example if this is a user-created boot option.
Move the boot_task initialisation so it can be used as the talloc parent
instead.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/grub2: Add support for initrd16 builtin
Shawn Anastasio [Wed, 21 Nov 2018 05:02:25 +0000 (23:02 -0600)]
discover/grub2: Add support for initrd16 builtin

This commit adds support for the initrd16 builtin
which compliments the existing linux16 support and
improves usability on x86 platforms.

Signed-off-by: Shawn Anastasio <shawn@anastas.io>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Nicely format IPMI response buffers v1.9.2
Samuel Mendoza-Jonas [Mon, 12 Nov 2018 01:01:05 +0000 (12:01 +1100)]
discover: Nicely format IPMI response buffers

A few places where we print out the response buffer from an IPMI command
weren't updated when log timestamps were added, resulting in very hard
to read output. Add a little helper to format buffers and use it to
print these with only one timestamp.

Example:

[04:59:01] ipmi_get_bmc_versions: BMC version resp [0][16]:
0x00 0x20 0x01 0x02 0x13 0x02 0xbf 0x00
0x00 0x00 0xbb 0xaa 0x58 0x98 0x01 0x00

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoui/ncurses: Reset console options on boot
Samuel Mendoza-Jonas [Tue, 6 Nov 2018 04:34:51 +0000 (15:34 +1100)]
ui/ncurses: Reset console options on boot

The ncurses UI sets a few console options at startup that are needed for
ncurses to work properly. These aren't reset however and can lead to
quirks like the cursor being invisible after kexecing to the next
kernel.
The UI process doesn't have time to reset these when it is killed by
kexec, so instead add a 'boot_active' field to status updates. This is
set by boot.c's update handler so the UI can assume it is about to boot
if it receives a status update with this field, and resets the console
options. If the boot is cancelled for any reason the status update will
reflect that and the console options are restored.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Reimplement native-parser as a Bison parser
Samuel Mendoza-Jonas [Tue, 30 Oct 2018 04:26:04 +0000 (15:26 +1100)]
discover: Reimplement native-parser as a Bison parser

Occasionally you look at some code and realise that a) this never gets
built, and b) even if it did it would never compile. Today's example is
native-parser.c which we must have just assumed worked for quite a
while.

The native parser has bitrotted entirely and needs to be brought up to
date. While we're here, lets take the chance to implement a proper
grammar for it. This helps us reason more effectively about the parser,
lets us extend it easily in the future, and.. I wanted to write a Bison
parser too.

This implements most of the old functionality, but drops off some
smaller details like settings icons which needs some separate attention
to bring up to date.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Remove unused params.c
Samuel Mendoza-Jonas [Sun, 28 Oct 2018 21:06:09 +0000 (10:06 +1300)]
discover: Remove unused params.c

The discover/params code is an artifact from a long time ago, and isn't
used by anything today: remove it.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/flash: Check if the partition is signed
Samuel Mendoza-Jonas [Thu, 17 May 2018 06:08:06 +0000 (16:08 +1000)]
lib/flash: Check if the partition is signed

In more recent firmware images built by op-build the VERSION partition
is signed, and includes a 'secure header'. Check for this and skip it if
found so we parse the version strings properly.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodocker: Change into docker directory
Geoff Levand [Mon, 17 Sep 2018 17:08:27 +0000 (10:08 -0700)]
docker: Change into docker directory

To avoid sending all the files in the top most project
directory tree down to the docker daemon, change into
the docker directory when running 'docker build'.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodocker: Allow CC and make command to be customised
Samuel Mendoza-Jonas [Wed, 29 Aug 2018 05:30:36 +0000 (15:30 +1000)]
docker: Allow CC and make command to be customised

Allow CC to be passed through to change the default compiler, and also
allow the invocation of 'make' to be customised. An example use case of
this is to set CC=/usr/bin/clang and use
--make-command 'scan-build make' to build Petitboot with the clang
static analyzer.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/kboot-parser: Recognise 'default' parameter v1.9.1
Samuel Mendoza-Jonas [Mon, 27 Aug 2018 04:34:57 +0000 (14:34 +1000)]
discover/kboot-parser: Recognise 'default' parameter

The kboot parser doesn't set a default option. Change it so that if we
see the 'default' parameter we match against this value when deciding if
an option should be set as default.

For example:

default=linux
linux='/vmlinux initrd=/initrd arg1=value1 arg2'

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/device-handler: Restore autoboot setting on requery
Samuel Mendoza-Jonas [Mon, 27 Aug 2018 01:50:47 +0000 (11:50 +1000)]
discover/device-handler: Restore autoboot setting on requery

When a device requery is triggered we cancel any default boot option on
the device. This also disables autoboot which we don't want; any boot
options found after the requery will not be able to autoboot.
To avoid this restore the existing autoboot setting after checking for
default options.

This prevents a particular corner case where a default boot option has
been selected for boot but one of its boot files has stalled or is
taking more time to download than the requery timeout and the requery
accidentally cancels autoboot preventing Petitboot from trying to boot
again.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoui/ncurses: in lockdown ensure system reboot in ncurses menu exit
Brett Grandbois [Sun, 26 Aug 2018 22:17:20 +0000 (08:17 +1000)]
ui/ncurses: in lockdown ensure system reboot in ncurses menu exit

In a lockdown situation in the ncurses menu there is a switch to replace
the 'Exit to shell' option with 'Reboot', so the intent seems to be to
not allow the user the option to exit to shell in a lockdown situation.
However the associated foreced reboot logic is in the process atexit so
is only triggered when completely exiting the menu system.  The default
menu item logic to exit to shell is still in place though so the menu
exit never occurs and shell access is still available.
Add a switch to a different menu exit callback to force a menu abort
using the same mechanism as a signal in lockdown situations so the shell
can never be entered.  This also affects the 'x' or esc shortcut keys.

Signed-off-by: Brett Grandbois <brett.grandbois@opengear.com>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Let 'boot' user-event boot by name
Samuel Mendoza-Jonas [Mon, 20 Aug 2018 06:09:58 +0000 (16:09 +1000)]
discover: Let 'boot' user-event boot by name

If a 'name' parameter is used for a boot user event, search existing
boot options for one that matches that name on the given device.
This allows a pb-event user to boot based on name rather than having to
specify the exact boot arguments.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agotravis: Update to job matrix
Geoff Levand [Fri, 17 Aug 2018 17:59:33 +0000 (10:59 -0700)]
travis: Update to job matrix

o Set language to bash (same as generic), so just the
   scrip steps run.
 o Move build-builder to 'before_script'.
 o Switch to a job matrix of 'os' entries with names.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodocker: Update to Ubuntu 18.04 LTS
Joel Stanley [Fri, 17 Aug 2018 05:39:32 +0000 (15:09 +0930)]
docker: Update to Ubuntu 18.04 LTS

Ubuntu 17.10 was end of life in July. Update to the latest LTS.

Signed-off-by: Joel Stanley <joel@jms.id.au>
[Docker tag bumped]
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/network: Stop udhcpc6 process on requery
Samuel Mendoza-Jonas [Fri, 17 Aug 2018 00:51:26 +0000 (10:51 +1000)]
discover/network: Stop udhcpc6 process on requery

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoREADME: Update
Geoff Levand [Thu, 16 Aug 2018 17:30:08 +0000 (10:30 -0700)]
README: Update

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agotravis: Use docker scripts v1.9.0
Samuel Mendoza-Jonas [Wed, 15 Aug 2018 01:39:31 +0000 (11:39 +1000)]
travis: Use docker scripts

Update the Travis config to use Petitboot's own docker scripts, and add
ppc64le to the list of recognised architectures.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/arm64: Update to struct efi_mount
Geoff Levand [Fri, 10 Aug 2018 17:29:15 +0000 (17:29 +0000)]
discover/arm64: Update to struct efi_mount

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agotest/efivar: Rework for efi_mount
Geoff Levand [Tue, 14 Aug 2018 14:25:09 +0000 (07:25 -0700)]
test/efivar: Rework for efi_mount

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/efi: Move magic to implementation
Geoff Levand [Fri, 10 Aug 2018 17:29:15 +0000 (17:29 +0000)]
lib/efi: Move magic to implementation

efi_check_mount now does a magic number check by default, so
move the magic number related code from efivar.h to efivar.c.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/efi: Add new struct efi_mount
Geoff Levand [Fri, 10 Aug 2018 17:29:14 +0000 (17:29 +0000)]
lib/efi: Add new struct efi_mount

To make it easier to manage EFI variables add a new struct efi_mount
that holds the path to the EFI file system mount and the EFI variable
name GUID. Update the lib/efi routines to use struct efi_mount.  Add
a new routine efi_check_mount based on the checks done in
platform-arm64.

This change to using struct efi_mount removes the static variable
efivarfs_path making the lib/efi routines stateless.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/efi: Log operations to debug log
Geoff Levand [Fri, 10 Aug 2018 17:29:14 +0000 (17:29 +0000)]
lib/efi: Log operations to debug log

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/efi: Add EFI_DEFALT_ATTRIBUTES macro
Geoff Levand [Fri, 10 Aug 2018 17:29:14 +0000 (17:29 +0000)]
lib/efi: Add EFI_DEFALT_ATTRIBUTES macro

For convenience, add a new efi data attributes macro
EFI_DEFALT_ATTRIBUTES.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodocker: Use host networking
Samuel Mendoza-Jonas [Wed, 8 Aug 2018 01:08:06 +0000 (11:08 +1000)]
docker: Use host networking

Use the host driver by default to simplify networking for build-builder,
especially when DNS settings need to be inherited from the host.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/efi: Add check for ioctl_iflags support
Geoff Levand [Wed, 8 Aug 2018 00:01:10 +0000 (00:01 +0000)]
lib/efi: Add check for ioctl_iflags support

The efi tests may use a filesystem which does not support
ioctl_iflags.  Add a check and skip the ioctl_iflags
operations if not supported.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/platforms: Fix param_list talloc failure
Geoff Levand [Wed, 8 Aug 2018 00:01:10 +0000 (00:01 +0000)]
discover/platforms: Fix param_list talloc failure

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/talloc: Fix TALLOC_ABORT
Geoff Levand [Wed, 8 Aug 2018 20:24:50 +0000 (13:24 -0700)]
lib/talloc: Fix TALLOC_ABORT

The current TALLOC_ABORT macro had a number of problems.
Failures were not going to the pb log, but only to stderr.
If the object passed in was not a talloc object the printing
of an object name would be printing random data.
The use of a macro obscured the code.

To clean this up, remove all reference to TALLOC_ABORT and
put the logging and abort calls directly into talloc_chunk_from_ptr.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agopb_log: Break out timestamp
Geoff Levand [Mon, 13 Aug 2018 16:23:07 +0000 (09:23 -0700)]
pb_log: Break out timestamp

Fixes double timestamp on pb_log_fn, pb_debug_fn.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/platform: Use pb_log_fn
Geoff Levand [Wed, 8 Aug 2018 00:01:09 +0000 (00:01 +0000)]
discover/platform: Use pb_log_fn

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodocker: Add strace for interactive debugging
Geoff Levand [Wed, 8 Aug 2018 00:01:09 +0000 (00:01 +0000)]
docker: Add strace for interactive debugging

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Add platform-arm64
Ge Song [Thu, 2 Aug 2018 17:29:41 +0000 (17:29 +0000)]
discover: Add platform-arm64

Signed-off-by: Ge Song <ge.song@hxt-semitech.com>
[Split from a larger patch and cleaned up]
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/system: Add dmidecode as system app
Geoff Levand [Thu, 2 Aug 2018 17:29:40 +0000 (17:29 +0000)]
lib/system: Add dmidecode as system app

For use by the arm64 get_sysinfo.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoconfigure: Add conditional platform builds
Geoff Levand [Thu, 2 Aug 2018 17:29:40 +0000 (17:29 +0000)]
configure: Add conditional platform builds

Add configure --enable-platform-XXX options to allow specifying
which platform support to build.

--enable-platform-auto, the default, will use the host
triplet to guess which platforms to build.
--enable-platform-all will build all platforms.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Add platform-dummy
Geoff Levand [Thu, 2 Aug 2018 17:29:40 +0000 (17:29 +0000)]
discover: Add platform-dummy

With the new configure enable-platform parameters it is possible
configure no platform support.  Add a new minimal 'dummy' platform
so that the __start_platforms and __stop_platforms variables needed
by platform_init are created.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoconfigure: Rename ENABLE_PS3 to PLATFORM_PS3
Geoff Levand [Thu, 2 Aug 2018 17:29:39 +0000 (17:29 +0000)]
configure: Rename ENABLE_PS3 to PLATFORM_PS3

To prepare for other configure platform names.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Move generic params routines to platform
Ge Song [Thu, 2 Aug 2018 17:29:39 +0000 (17:29 +0000)]
discover: Move generic params routines to platform

Move the generic params routines from platform-powerpc to platform.
Also, for clarity, add a params prefix to the names.

Signed-off-by: Ge Song <ge.song@hxt-semitech.com>
[Split from a larger patch and cleaned up]
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Move generic config routines to platform
Ge Song [Thu, 2 Aug 2018 17:29:39 +0000 (17:29 +0000)]
discover: Move generic config routines to platform

Move the generic config routines from platform-powerpc to platform.
Also, for clarity, add a config_ prefix to the names.

Signed-off-by: Ge Song <ge.song@hxt-semitech.com>
[Split from a larger patch and cleaned up]
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/powerpc: Switch to new param_list
Geoff Levand [Thu, 2 Aug 2018 17:29:38 +0000 (17:29 +0000)]
discover/powerpc: Switch to new param_list

Signed-off-by: Geoff Levand <geoff@infradead.org>
[Name string fixup]
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/powerpc: Add param_name arg
Geoff Levand [Thu, 2 Aug 2018 17:29:38 +0000 (17:29 +0000)]
discover/powerpc: Add param_name arg

Update update_network_config and update_bootdev_config to
operate on a generic parameter name passed as an argument.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/powerpc: Rearange save_config
Ge Song [Thu, 2 Aug 2018 17:29:38 +0000 (17:29 +0000)]
discover/powerpc: Rearange save_config

Rearange update_config and save_config so that update_config
only operates on the platform params list.

Signed-off-by: Ge Song <ge.song@hxt-semitech.com>
[Split from a larger patch and cleaned up]
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/param_list: Add new parameter list routines
Geoff Levand [Thu, 2 Aug 2018 17:29:38 +0000 (17:29 +0000)]
lib/param_list: Add new parameter list routines

Based on the powerpc param routines adds new generic routines
to manage a name + value parameter list.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/event: Rename param -> event_param
Geoff Levand [Thu, 2 Aug 2018 17:29:37 +0000 (17:29 +0000)]
discover/event: Rename param -> event_param

To avoid name clash with other 'struct param'.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Move generic ipmi routines to ipmi
Ge Song [Thu, 2 Aug 2018 17:29:37 +0000 (17:29 +0000)]
discover: Move generic ipmi routines to ipmi

Signed-off-by: Ge Song <ge.song@hxt-semitech.com>
[Split from a larger patch]
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agotest-efivar: Update to latest lib/efi routines
Samuel Mendoza-Jonas [Thu, 2 Aug 2018 17:29:37 +0000 (17:29 +0000)]
test-efivar: Update to latest lib/efi routines

From: Samuel Mendoza-Jonas <sam@mendozajonas.com>
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/efi: Cleanup read/write routines
Geoff Levand [Thu, 2 Aug 2018 17:29:36 +0000 (17:29 +0000)]
lib/efi: Cleanup read/write routines

Make a new stucture struct efi_data to hold the info that describes
an efi variable.  Make a common routine efi_open that opens the efi
variable file.  Switch the efi get/set/del routines over to use
efi_open.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/efi: Add new routines to access efi variables
Ge Song [Thu, 2 Aug 2018 17:29:36 +0000 (17:29 +0000)]
lib/efi: Add new routines to access efi variables

Provide methods to load/store petitboot's configuration on efi-based
platforms. A test case is also provided.

Signed-off-by: Ge Song <ge.song@hxt-semitech.com>
[Cleanup file comments, make efivarfs_path static.]
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/powerpc: Use process_get_stdout
Geoff Levand [Thu, 2 Aug 2018 17:29:36 +0000 (17:29 +0000)]
discover/powerpc: Use process_get_stdout

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/process: Add process_get_stdout
Geoff Levand [Thu, 2 Aug 2018 17:29:35 +0000 (17:29 +0000)]
lib/process: Add process_get_stdout

Add a new structure 'struct process_stdout' and optional parameter
'stdout' to the process_run_simple functions to allow the caller
to get a buffer filled with the stdout from the child process.

Rename the process_run_simple functions to process_get_stdout
and add wrappers for the old process_run_simple function names.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/process: Cleanup stdout callback
Geoff Levand [Thu, 2 Aug 2018 17:29:35 +0000 (17:29 +0000)]
lib/process: Cleanup stdout callback

General cleanup of async stdout processing.

The process_stdout_cb and process_stdout_custom routines were doing the
same thing, so rename process_stdout_custom to process_process_stdout
and make process_stdout_cb a wrapper that calls process_process_stdout.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/parser: Hookup parser_is_unique
Geoff Levand [Thu, 2 Aug 2018 17:29:35 +0000 (17:29 +0000)]
discover/parser: Hookup parser_is_unique

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agotest/parser: Add parser_is_unique
Geoff Levand [Thu, 2 Aug 2018 17:29:35 +0000 (17:29 +0000)]
test/parser: Add parser_is_unique

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/parser: Add new parser_is_unique
Geoff Levand [Thu, 2 Aug 2018 17:29:34 +0000 (17:29 +0000)]
discover/parser: Add new parser_is_unique

Add a new routine parser_is_unique that tests a file's inode
against a list of known file inodes.  Useful when searching
case-insensitive filesystems.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Add some debug print messages
Geoff Levand [Thu, 2 Aug 2018 17:29:34 +0000 (17:29 +0000)]
discover: Add some debug print messages

To aid in debugging print some additinal discover messages
to the log.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/kboot-parser: Look in /boot
Geoff Levand [Thu, 2 Aug 2018 17:29:34 +0000 (17:29 +0000)]
discover/kboot-parser: Look in /boot

Other parsers look in /boot for config files, so add
it to the kboot parser.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Add --debug to kexec
Geoff Levand [Thu, 2 Aug 2018 17:29:34 +0000 (17:29 +0000)]
discover: Add --debug to kexec

If verbose logging is enabled then add '--debug' to the kexec command line.
Adds a new routine pb_log_get_debug() that can be used to query the log
debug state.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/log: Switch to pb_log_fn
Geoff Levand [Thu, 2 Aug 2018 17:29:34 +0000 (17:29 +0000)]
lib/log: Switch to pb_log_fn

The only functional change should be an additional '/n' to
a few log messagees that seemed to be missing it.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/log: Add verbose logging routines
Geoff Levand [Thu, 2 Aug 2018 17:29:33 +0000 (17:29 +0000)]
lib/log: Add verbose logging routines

Add three new logging routines pb_log_fn and pb_debug_fn, which
print the calling function's name to the log, and pb_debug_fl
which prints the calling function's name and the file line
number to the log.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoconfigure: Remove unused ENABLE_DEBUG
Geoff Levand [Thu, 2 Aug 2018 17:29:33 +0000 (17:29 +0000)]
configure: Remove unused ENABLE_DEBUG

We setup debug builds in the configure script with DEFAULT_CFLAGS and
DEFAULT_CPPFLAGS.  Remove the unused ENABLE_DEBUG AM conditional.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoconfigure: Add check for UI build
Geoff Levand [Thu, 2 Aug 2018 17:29:33 +0000 (17:29 +0000)]
configure: Add check for UI build

Emit configure warning if no UI program is to be built.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodocker: Add libfdt-dev
Geoff Levand [Thu, 2 Aug 2018 17:29:33 +0000 (17:29 +0000)]
docker: Add libfdt-dev

Add package libfdt-dev to the pb-builder docker image.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/paths: Cleanup res after getaddrinfo
Samuel Mendoza-Jonas [Thu, 26 Jul 2018 01:50:33 +0000 (11:50 +1000)]
discover/paths: Cleanup res after getaddrinfo

Fixes Coverity defect #187192.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodocker: Pass extra options to configure
Samuel Mendoza-Jonas [Wed, 1 Aug 2018 04:53:07 +0000 (14:53 +1000)]
docker: Pass extra options to configure

Pass extra configure options and CFLAGS/LDFLAGS to docker to enable
building multiple configurations.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodocker: Pass proxy variables to docker build
Samuel Mendoza-Jonas [Wed, 1 Aug 2018 04:52:43 +0000 (14:52 +1000)]
docker: Pass proxy variables to docker build

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodocker: Add signed boot dependencies
Samuel Mendoza-Jonas [Wed, 1 Aug 2018 04:52:09 +0000 (14:52 +1000)]
docker: Add signed boot dependencies

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/paths: Set suffix to default value on error.
Samuel Mendoza-Jonas [Mon, 30 Jul 2018 01:48:26 +0000 (11:48 +1000)]
discover/paths: Set suffix to default value on error.

This avoids the log filling up with "Couldn't recognise suffix" messages
if a lot of partial stdout updates are received.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Be more verbose about boot failures
Samuel Mendoza-Jonas [Mon, 30 Jul 2018 01:48:25 +0000 (11:48 +1000)]
discover: Be more verbose about boot failures

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/log: Include timestamp prefix
Samuel Mendoza-Jonas [Mon, 30 Jul 2018 01:48:24 +0000 (11:48 +1000)]
lib/log: Include timestamp prefix

The relative time between logged events is very useful during debugging,
particularly when debugging autoboot failures. Prepend a short HH:MM:SS
timestamp to each line logged.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agojenkins: Add build jobs
Geoff Levand [Thu, 24 May 2018 00:25:57 +0000 (17:25 -0700)]
jenkins: Add build jobs

Adds two Jenkins pipeline jobs pb-upstream-trigger and pb-build-matrix.
pb-upstream-trigger checks for upstream updates and runs
pb-build-matrix.  pb-build-matrix builds a pb-builder image and runs the
build-pb script.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoui/ncurses: Allow IPv6 addresses in address fields
Samuel Mendoza-Jonas [Wed, 23 May 2018 01:39:14 +0000 (11:39 +1000)]
ui/ncurses: Allow IPv6 addresses in address fields

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Determine connectivity with getaddrinfo()
Samuel Mendoza-Jonas [Wed, 23 May 2018 04:39:17 +0000 (14:39 +1000)]
discover: Determine connectivity with getaddrinfo()

Use getaddrinfo() to determine if a remote URL is reachable instead of
only checking if we have an addresses configured. This avoids, for
example, trying to load an IPv4 URL when only an IPv6 address is
available.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/pxe-parser: Parse simple iPXE scripts
Samuel Mendoza-Jonas [Thu, 10 May 2018 05:48:21 +0000 (15:48 +1000)]
discover/pxe-parser: Parse simple iPXE scripts

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/user-event: Use bootfile_url if available
Samuel Mendoza-Jonas [Thu, 10 May 2018 05:47:56 +0000 (15:47 +1000)]
discover/user-event: Use bootfile_url if available

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Support IPv6 addresses
Samuel Mendoza-Jonas [Wed, 9 May 2018 01:18:57 +0000 (11:18 +1000)]
discover: Support IPv6 addresses

Support handling IPv6 addresses from user events and call the udhcpc6
client in addition to the udhcpc client.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoutils/pb-udhcpc: Recognise DHCPv6 parameters
Samuel Mendoza-Jonas [Wed, 9 May 2018 01:15:03 +0000 (11:15 +1000)]
utils/pb-udhcpc: Recognise DHCPv6 parameters

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/system: Add udhcpc6
Samuel Mendoza-Jonas [Wed, 9 May 2018 01:14:30 +0000 (11:14 +1000)]
lib/system: Add udhcpc6

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/sysinfo: Set IPv6 addresses
Samuel Mendoza-Jonas [Wed, 23 May 2018 06:25:25 +0000 (16:25 +1000)]
discover/sysinfo: Set IPv6 addresses

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib: Add support and helpers for IPv6 host addresses
Samuel Mendoza-Jonas [Wed, 9 May 2018 01:13:54 +0000 (11:13 +1000)]
lib: Add support and helpers for IPv6 host addresses

Recognise IPv6 addresses and URLs, and allow an interface_info struct to
have both an IPv4 and IPv6 address.
The addr_scheme() helper returns the address family of a given address.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoui/ncurses: Implement F10-F12 for autoboot device control
Jeremy Kerr [Tue, 3 Jul 2018 06:34:47 +0000 (16:34 +1000)]
ui/ncurses: Implement F10-F12 for autoboot device control

Add a few mappings to specify temporary autoboot settings:

  F10: Only autoboot from disk
  F11: Only autoboot from USB devices
  F12: Only autoboot from network

These use the new code to prevent cancelling autoboot.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoui/ncurses: Implement non-boot-cancelling keys
Jeremy Kerr [Tue, 3 Jul 2018 06:34:46 +0000 (16:34 +1000)]
ui/ncurses: Implement non-boot-cancelling keys

Allow some keys to not cancel the default-boot process.

For the moment, this is just the screen refresh (ctrl+L).

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/handler: Implement temporary autoboot messages
Jeremy Kerr [Tue, 3 Jul 2018 06:34:45 +0000 (16:34 +1000)]
discover/handler: Implement temporary autoboot messages

Handle incoming requests for temporary autoboot settings.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
[indenting fixup]
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/handler: Split autoboot matching into a new function
Jeremy Kerr [Tue, 3 Jul 2018 06:34:44 +0000 (16:34 +1000)]
discover/handler: Split autoboot matching into a new function

A future change will want to match autoboot option settings, so abstract
this into its own function.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoprotocol: Add definition and serialisation for temporary autoboot
Jeremy Kerr [Tue, 3 Jul 2018 06:34:43 +0000 (16:34 +1000)]
protocol: Add definition and serialisation for temporary autoboot

Add a new message format for a temporarily-applied autoboot setting.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: implement a periodic requery for network devices
Jeremy Kerr [Tue, 3 Jul 2018 06:24:58 +0000 (16:24 +1000)]
discover: implement a periodic requery for network devices

If we boot a machine before external (network) dependencies are properly
configured, it will have tried once to download configuration, and
possibly failed due to that configuration not being present.

This change introduces a periodic requery of network resources. After a
timeout, petitboot will either re-acquire its DHCP lease (causing any
downloads to be re-processed, possibly with different parameters from
the new lease), or re-download a statically defined URL.

This timeout defaults to five minutes (similar to pxelinux), and is
configurable by DHCP option 211, "reboot time".

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
[added test stub]
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agopo/en: Fix inconsistencies with trailing colons
Jeremy Kerr [Mon, 2 Jul 2018 05:36:27 +0000 (15:36 +1000)]
po/en: Fix inconsistencies with trailing colons

We have a few cases where the english translations have matched against
strings with/without colon suffixes.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/user-event: Check for required parameters
Samuel Mendoza-Jonas [Thu, 28 Jun 2018 07:21:35 +0000 (17:21 +1000)]
discover/user-event: Check for required parameters

Check for some required parameters in the 'dhcp' handler, and in the
'add' handler return an error if parse_user_event() fails rather than
charging ahead into a segfault.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/udev: Don't require ID_NET_NAME_PATH property
Samuel Mendoza-Jonas [Wed, 20 Jun 2018 04:09:02 +0000 (14:09 +1000)]
discover/udev: Don't require ID_NET_NAME_PATH property

Drop the requirement for the ID_NET_NAME_PATH property since it prevents
Petitboot from recognising virtio network devices, and is not otherwise
used.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/grub: Improve BLS grub environment variables expansion
Javier Martinez Canillas [Tue, 12 Jun 2018 10:18:34 +0000 (12:18 +0200)]
discover/grub: Improve BLS grub environment variables expansion

The fields from a BootLoaderSpec file can contain environment variables,
in GRUB 2 these are show verbatim and are evaluated later when an entry
is selected. But on Petitboot these have to be expanded before creating
the GRUB 2 resources and show in the UI the values after the evaluation.

The current blscfg handler had a very limited support for variables, it
only had support for the options field and also didn't take into account
that variables could be mixed with literal values.

So for example the following fields were not expanded correctly:

  linux   $bootprefix/vmlinuz

  options $kernelopts foo=bar

  options foo=bar $kernelopts

  options $kernelopts $debugopts

Also change some of the tests to cover mixing variables and literals.

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/grub: Use different paths to search for the BLS directory
Javier Martinez Canillas [Tue, 12 Jun 2018 10:18:33 +0000 (12:18 +0200)]
discover/grub: Use different paths to search for the BLS directory

Currenlty the BLS fragments are only searched in the /loader/entries
directory, but this assumes that there is a boot partition mounted
in /boot. This may not always be the case, /boot may not be a mount
point and just a directory inside the root partition.

To cover this case, Petitboot tries to find a GRUB 2 config file in
different paths. So let's do the same for the BLS files directory.

Also change some of the unit tests to use /boot/loader/entries as a
BLS directory instead of /loader/entries.

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agotest/parser: Make parser_scandir() ignore files with path len less than dir
Javier Martinez Canillas [Tue, 12 Jun 2018 10:18:32 +0000 (12:18 +0200)]
test/parser: Make parser_scandir() ignore files with path len less than dir

Both the test files and directories added into the test harness are stored
into the same file list. So the parser_scandir() stub compares the absolute
file path of the files and the directory to scan, to know if a file belongs
to the directory.

Files whose absolute file path length isn't bigger than the directory to
scan should just be ignored, since it means they can't be from that dir.

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/syslinux-parser: consistent cmdline arg processing
Brett Grandbois [Sun, 10 Jun 2018 21:54:08 +0000 (07:54 +1000)]
discover/syslinux-parser: consistent cmdline arg processing

In signed-boot environments consistent handling of kernel commandline
options is essential as they must be pre-signed.  In the syslinux parser
ensure that in the absence of a global APPEND they are processed
exactly as found and not with the leading space that the current APPEND
processing has as a shortcut.

Signed-off-by: Brett Grandbois <brett.grandbois@opengear.com>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agolib/security: hard_lockdown flag to stop runtime disable of signed boot
Brett Grandbois [Sun, 10 Jun 2018 21:36:58 +0000 (07:36 +1000)]
lib/security: hard_lockdown flag to stop runtime disable of signed boot

Currently if signed-boot is enabled in configure the presence of the
LOCKDOWN_FILE is used as a runtime determination to perform the actual
verification.  In some environments this may be acceptable or even the
intended operation but in other environments could be a security hole
since the removal of the file will then cause boot task verification.
Add a 'hard_lockdown' enable flag to generate a HARD_LOCKDOWN
preprocessor definition to force the system to always do a signed boot
verification for each boot task, which in the case of a missing file the
boot will fail.

Signed-off-by: Brett Grandbois <brett.grandbois@opengear.com>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover/network: Null terminate ifname buffer explicitly
Samuel Mendoza-Jonas [Wed, 30 May 2018 05:37:05 +0000 (15:37 +1000)]
discover/network: Null terminate ifname buffer explicitly

GCC 8 produces the following warning for network.c:

In function ‘network_handle_nlmsg’,
    inlined from ‘network_netlink_process’ at ../discover/network.c:726:3:
../discover/network.c:568:3: warning: ‘strncpy’ output may be truncated copying 15 bytes from a string of length 16 [-Wstringop-truncation]
   strncpy(interface->name, ifname, sizeof(interface->name) - 1);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../discover/network.c:586:3: warning: ‘strncpy’ output may be truncated copying 15 bytes from a string of length 16 [-Wstringop-truncation]
   strncpy(interface->name, ifname, sizeof(interface->name) - 1);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The code is safe since interface is allocated with talloc_zero() and we
could use -Wno-stringop-truncation to hide this but since this is the
only offender instead just copy the whole IFNAMSIZ bytes and explicitly
terminate the ifname buffer to be safe.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agodiscover: Rescan SCSI devices on reinit
Samuel Mendoza-Jonas [Wed, 30 May 2018 05:36:45 +0000 (15:36 +1000)]
discover: Rescan SCSI devices on reinit

Explicitly rescan SCSI devices on reinit rather than just remounting
them in case a device did not init properly on boot.

Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoFix pb-discover segfaults caused by list corruption.
Brandon Bergren [Sun, 10 Jun 2018 18:21:58 +0000 (13:21 -0500)]
Fix pb-discover segfaults caused by list corruption.

I was seeing list corruption and segfaults in pb-discover on my Talos
II when using both yaboot and kboot config files on the same device.

My assumption is that discover_context_add_boot_option() was being
called on the same pointer more than once.

So, null the pointer right after the call. The ownership was transferred
anyway so the parsers should not keep it around.

Signed-off-by: Brandon Bergren <git@bdragon.rtk0.net>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agotest/lib: Add OpenSSL verify and decrypt tests
Brett Grandbois [Tue, 15 May 2018 00:55:52 +0000 (10:55 +1000)]
test/lib: Add OpenSSL verify and decrypt tests

Signed-off-by: Brett Grandbois <brett.grandbois@opengear.com>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
5 years agoui/ncurses: Update LOCKDOWN_FILE check to reflect generic SIGNED_BOOT
Brett Grandbois [Tue, 15 May 2018 00:55:51 +0000 (10:55 +1000)]
ui/ncurses: Update LOCKDOWN_FILE check to reflect generic SIGNED_BOOT

Signed-off-by: Brett Grandbois <brett.grandbois@opengear.com>
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>