gptboot, zfsboot, gptzfsboot: Enable the video and serial consoles early

Normally the serial console is not enabled until /boot.config is read and
we know how the serial console should be configured.  Initialize the
consoles early in 'dual' mode (serial & keyboard) with a default serial
rate of 115200. Then serial is re-initialized once the disk is decrypted
and the /boot.config file can be read.

This allows the GELIBoot passphrase to be provided via the serial console.

PR:		221526
Requested by:	many
Reviewed by:	imp
Sponsored by:	Klara Systems
Differential Revision:	https://reviews.freebsd.org/D15862
This commit is contained in:
Allan Jude 2018-06-17 03:18:56 +00:00
parent 68e520fea4
commit 6fee3bb8e1
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=335276
2 changed files with 20 additions and 0 deletions

View File

@ -285,6 +285,16 @@ main(void)
bootinfo.bi_memsizes_valid++;
bootinfo.bi_bios_dev = dsk.drive;
/*
* Initialize the serial console early with a modern default of 115200.
* Later, we'll read PATH_DOTCONFIG and reconfigure serial according
* to the configuration provided.
*/
opts = OPT_SET(RBX_DUAL);
ioctrl = (IO_SERIAL|IO_KEYBOARD);
if (sio_init(115200) != 0)
ioctrl &= ~IO_SERIAL;
#ifdef LOADER_GELI_SUPPORT
geli_init();
#endif

View File

@ -693,6 +693,16 @@ main(void)
}
setheap(heap_next, heap_end);
/*
* Initialize the serial console early with a modern default of 115200.
* Later, we'll read PATH_DOTCONFIG and reconfigure serial according
* to the configuration provided.
*/
opts = OPT_SET(RBX_DUAL);
ioctrl = (IO_SERIAL|IO_KEYBOARD);
if (sio_init(115200) != 0)
ioctrl &= ~IO_SERIAL;
dsk = malloc(sizeof(struct dsk));
dsk->drive = *(uint8_t *)PTOV(ARGS);
dsk->type = dsk->drive & DRV_HARD ? TYPE_AD : TYPE_FD;