On 5/4/26 13:52, Eugene Grosbein wrote:
> 02.05.2026 13:42, Doug Hardie wrote:
>
>> I have one server (Raspberry Pi 4) which during boot shows all the hardware
>> configuration,
>> but then stops until the Login prompt appears. The other servers show the
>> startup of each service
>> and various other outputs. There is a 10 minute gap on the one server
>> and I would like to see where it is during that process for that time.
QUOTE from loader.efi's man page
. . . the FreeBSD kernel has a limitation when more than one console
is present. The kernel outputs to all configured consoles. Only the
primary console will get the log messages from the rc(8) system, and
prompts for things like geli(8) passwords.
ENDQUOTE
So control over which console that you want to be used as primary is at
issue here.
QUOTE
Primary Console
The primary console is set using the boot flags. These command line
arguments set corresponding flags for the kernel. These flags can be
controlled by setting loader environment variables to “yes” or “no”.
Boot flags may be set on the command line to the boot command. Inside
the kernel, the RB_ flags are used to control behavior, sometimes in
architecturally specific ways and are included to aid in discovery
of any
behavior not covered in this document.
boot flag loader variable Kernel RB_ flag
-a boot_askme RB_ASKNAME
-c boot_cdrom RB_CDROM
-d boot_ddb RB_KDB
-r boot_dfltroot RB_DFLTROOT
-D boot_multiple RB_MULTIPLE
-m boot_mute RB_MUTE
-g boot_gdb RB_GDB
-h boot_serial RB_SERIAL
-p boot_pause RB_PAUSE
-P boot_probe RB_PROBE
-s boot_single RB_SINGLE
-v boot_verbose RB_VERBOSE
And the following flags determine the primary console:
Flags Kernel Flags Kernel Consoles Primary
Console
none 0 Video Video
-h RB_SERIAL Serial Serial
-D RB_MULTIPLE Serial, Video Video
-Dh RB_SERIAL | RB_MULTIPLE Serial, Video Serial
END QUOTE
There is also notation that can go in /boot/loader.conf . (More later
below.)
>
> Then you may find useful to put the following to /boot/loader.conf:
>
> kern.msgbuf_show_timestamp=1
>
>> I have tried to find differences between the server configurations and
>> haven't found the one
>> that controls the startup output. What controls that? Thanks,
>
> It's kernel console settings that you can check out in multiuser mode
> with "conscontrol" command, in my case:
>
> # conscontrol
> Configured: ttyu1,ttyv0
> Available: ttyu1,ttyv0
> Muting: off
>
> This corresponds to another loader.conf knob:
>
> comconsole_port=0x2f8
> boot_multicons="YES"
> console="comconsole vidconsole"
comconsole has not been supported for aarch64 for some time: the updates
creating eficom span 2023-05-11 .. 2023-05-28 or so and the shim was
temporary in how its code was structured. RPi4B's are aarch64.
One of the commits was a comconsole compatibility shim for aarch64, but
the shim is set up only via code of the structure:
#if defined(__aarch64__) && __FreeBSD_version < 1500000
. . .
#endif
As for comments about the overall change . . .
QUOTE (from the first of the series of commits)
Fix the 'renaming kludge' that we absolutely cannot do going forward
(it's cost us days of engineering time).
console=comconsole talks to the hardware directly. This is available
only on amd64. It is not available anywhere else (and so requires
changes for people doing comconsole on aarch64)
console=eficom talks to the console via EFI protocols. It's available
on amd64, aarch64 and riscv64. It's the first port that we find, though
it can be overriden by efi_com_port (which should be set to the UID of
the serial port, not the I/O port, despite the name). devinfo -v
will give the UID to uartX mapping.
This is an incompatible change for HYPER-V on amd64. It only works with
eficom console, so you'll need to change your configuration in
loader.conf. No compatibility hack will ever be provided for this (since
it requires renamig, which the loader cannot reliably do).
It's also an incompatible change for aarch64. comconsole will need to
change to eficom. There might be a comconsole "shim" for this.
All the interlock to keep only eficom and comconsole from both attaching
have been removed.
END QUOTE
On an RPi5B using main I have in use:
boot_multicons="YES"
#boot_serial="YES"
console="eficom,efi"
(eficom only works when listed first, as I remember, at least for the
context I have been using.)
But the RPi5B context is based on a draft EDK2 that was never completed
and I normally use the serial console without a graphics console. The
EDK2 has a selection for graphics vs. serial console and things need to
match up appropriately.
FYI: /usr/share/man/man8/loader.efi.8.gz does not mention eficom . Nor
do the other loader man pages.
On the rare occasions when I add a new context, I have to experiment to
get the behavior I happen to be interested in --be it aarch64 or amd64
for the type of context. Once set up, I normally do not need to change
it for the type of context.
>
> That is, "primary" console is serial one (COM2 A.K.A. uart1, /dev/cuau1)
> and vidconsole is secondary that does not get messages you want.
>
> Use similar settings but change accordingly.
> Possible values for the "console" setting are documented in the loader.conf(5)
> manual page:
>
>> "comconsole" selects serial console, "vidconsole" selects the video console,
> "efi" selects the EFI console etc.
>
> Eugene
>
>
>
--
===
Mark Millard
marklmi at yahoo.com