where to put hw.uart.console setting so it sticks after reboot
-
@jimp said in where to put hw.uart.console setting so it sticks after reboot:
You would put that in
/boot/loader.conf.local
See: https://docs.netgate.com/pfsense/en/latest/config/advanced-tunables.html#config-tunables-loader
Hmm. Still not working after creating a /boot/loader.conf.local file with a single entry of: hw.uart.console="mm:0xfedc9000,rs:2"
Console output ends at this point:
| __ _ __ / _|___ ___ _ __ ___ ___ | '_ \| |_/ __|/ _ \ '_ \/ __|/ _ \ | |_) | _\__ \ __/ | | \__ \ __/ | .__/|_| |___/\___|_| |_|___/\___| |_| /---------- Welcome to pfSense -----------\ __________________________ | | / ___\ | 1. Boot Multi user [Enter] | | /` | 2. Boot Single user | | / :-| | 3. Escape to loader prompt | | _________ ___/ /_ | | 4. Reboot | | /` ____ / /__ ___/ | | 5. Cons: Dual (Serial primary) | | / / / / / / | | | | / /___/ / / / | | Options: | | / ______/ / / | | 6. Kernel: default/kernel (1 of 1) | |/ / / / | | 7. Boot Options | / /___/ | | | / | | | /_________________________/ \-----------------------------------------/ | Autoboot in 0 seconds. [Space] to pause Loading kernel... /boot/kernel/kernel text=0x19ba18 text=0xfdab90 text=0x17dcbf0 data=0x180 data=0x222690+0x3dc970 0x8+0x1c7460+0x8+0x1d5994- Loading configured modules...
If I interrupt the boot processes and enter it manually, console continues to function:
__ _ __ / _|___ ___ _ __ ___ ___ | '_ \| |_/ __|/ _ \ '_ \/ __|/ _ \ | |_) | _\__ \ __/ | | \__ \ __/ | .__/|_| |___/\___|_| |_|___/\___| |_| /---------- Welcome to pfSense -----------\ __________________________ | | / ___\ | 1. Boot Multi user [Enter] | | /` | 2. Boot Single user | | / :-| | 3. Escape to loader prompt | | _________ ___/ /_ | | 4. Reboot | | /` ____ / /__ ___/ | | 5. Cons: Dual (Serial primary) | | / / / / / / | | | | / /___/ / / / | | Options: | | / ______/ / / | | 6. Kernel: default/kernel (1 of 1) | |/ / / / | | 7. Boot Options | / /___/ | | | / | | | /_________________________/ \-----------------------------------------/ | Exiting menu! Type '?' for a list of commands, 'help' for more detailed help. OK set hw.uart.console="mm:0xfedc9000,rs:2" OK boot Loading kernel... /boot/kernel/kernel text=0x19ba18 text=0xfdab90 text=0x17dcbf0 data=0x180 data=0x222690+0x3dc970 0x8+0x1c7460+0x8+0x1d5994- Loading configured modules... /boot/kernel/cryptodev.ko size 0x76f8 at 0x359d000 /boot/kernel/opensolaris.ko size 0x1e2b0 at 0x35a5000 can't find '/etc/hostid' /boot/entropy size=0x1000 /boot/kernel/zfs.ko GDB: no debug ports present KDB: debugger backends: ddb KDB: current backend: ddb ---<<BOOT>>--- Copyright (c) 1992-2023 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 14.0-CURRENT amd64 1400094 #1 RELENG_2_7_2-n255948-8d2b56da39c: Wed Dec 6 20:45:47 UTC 2023 root@freebsd:/var/jenkins/workspace/pfSense-CE-snapshots-2_7_2-main/obj/amd64/StdASW5b/var/jenkins/workspace/pfSense-CE-snapshots-2_7_2-main/sources/FreeBSD-src-RELENG_2_7_2/amd64.amd64/sys/pfSense amd64 FreeBSD clang version 16.0.6 (https://github.com/llvm/llvm-project.git llvmorg-16.0.6-0-g7cbf1a259152) VT(vga): resolution 640x480 CPU: AMD EPYC 3201 8-Core Processor (1497.26-MHz K8-class CPU) ...
Contents of /boot/loader.conf.local:
hw.uart.console="mm:0xfedc9000,rs:2"
Contents of /boot.loader.conf:
kern.cam.boot_delay=10000 kern.geom.label.disk_ident.enable="0" kern.geom.label.gptid.enable="0" kern.ipc.nmbclusters="1000000" kern.ipc.nmbjumbo9="524288" kern.ipc.nmbjumbop="524288" opensolaris_load="YES" zfs_load="YES" opensolaris_load="YES" zfs_load="YES" kern.cam.boot_delay=10000 kern.geom.label.disk_ident.enable="0" kern.geom.label.gptid.enable="0" kern.ipc.nmbclusters="1000000" kern.ipc.nmbjumbo9="524288" kern.ipc.nmbjumbop="524288" kern.geom.label.disk_ident.enable="0" kern.geom.label.gptid.enable="0" cryptodev_load="YES" zfs_load="YES" boot_multicons="YES" boot_serial="YES" console="comconsole,efi" comconsole_speed="115200" autoboot_delay="3" hw.hn.vf_transparent="0" hw.hn.use_if_start="1" net.link.ifqmaxlen="128" machdep.hwpstate_pkg_ctrl="1" net.pf.states_hashsize="1048576"
-
Try running
show
at the loader prompt and see if it's being set correctly. -
@stephenw10 said in where to put hw.uart.console setting so it sticks after reboot:
Try running
show
at the loader prompt and see if it's being set correctly.It doesn't list it. Show output:
__ _ __ / _|___ ___ _ __ ___ ___ | '_ \| |_/ __|/ _ \ '_ \/ __|/ _ \ | |_) | _\__ \ __/ | | \__ \ __/ | .__/|_| |___/\___|_| |_|___/\___| |_| /---------- Welcome to pfSense -----------\ __________________________ | | / ___\ | 1. Boot Multi user [Enter] | | /` | 2. Boot Single user | | / :-| | 3. Escape to loader prompt | | _________ ___/ /_ | | 4. Reboot | | /` ____ / /__ ___/ | | 5. Cons: Dual (Serial primary) | | / / / / / / | | | | / /___/ / / / | | Options: | | / ______/ / / | | 6. Kernel: default/kernel (1 of 1) | |/ / / / | | 7. Boot Options | / /___/ | | | / | | | /_________________________/ \-----------------------------------------/ | Exiting menu! Type '?' for a list of commands, 'help' for more detailed help. OK show COLUMNS=128 LINES=40 acpi_dsdt_load=NO acpi_dsdt_name=/boot/acpi_dsdt.aml acpi_dsdt_type=acpi_dsdt acpi_video_load=NO audit_event_load=NO audit_event_name=/etc/security/audit_event audit_event_type=etc_security_audit_event autoboot_delay=NO bitmap_load=NO bitmap_name=splash.bmp bitmap_type=splash_image_data boot_multicons=YES boot_serial=YES bootenv_autolist=YES bootenvs[0]=zfs:pfSense/ROOT/default bootenvs_count=1 bootfile=kernel comconsole_pcidev= comconsole_port=1016 comconsole_speed=115200 console=comconsole,efi cpu_microcode_load=NO cpu_microcode_name=/boot/firmware/ucode.bin cpu_microcode_type=cpu_microcode cryptodev_load=YES currdev=zfs:pfSense/ROOT/default: efi-version=2.50 efi_com_speed=115200 efi_max_resolution=1x1 entropy_cache_load=YES entropy_cache_name=/boot/entropy entropy_cache_type=boot_entropy_cache entropy_efi_seed=YES hint.acpi_throttle.0.disabled=1 hint.atkbd.0.at=atkbdc hint.atkbd.0.irq=1 hint.atkbdc.0.at=isa hint.atkbdc.0.port=0x060 hint.atrtc.0.at=isa hint.atrtc.0.irq=8 hint.atrtc.0.port=0x70 hint.attimer.0.at=isa hint.attimer.0.irq=0 hint.attimer.0.port=0x40 hint.fd.0.at=fdc0 hint.fd.0.drive=0 hint.fd.1.at=fdc0 hint.fd.1.drive=1 hint.fdc.0.at=isa hint.fdc.0.drq=2 hint.fdc.0.irq=6 hint.fdc.0.port=0x3F0 hint.p4tcc.0.disabled=1 hint.ppc.0.at=isa hint.ppc.0.irq=7 hint.psm.0.at=atkbdc hint.psm.0.irq=12 hint.sc.0.at=isa hint.sc.0.flags=0x100 hint.smbios.0.mem=0x793f6000 hint.uart.0.at=isa hint.uart.0.flags=0x10 hint.uart.0.irq=4 hint.uart.0.port=0x3F8 hint.uart.1.at=isa hint.uart.1.irq=3 hint.uart.1.port=0x2F8 hostuuid_load=YES hostuuid_name=/etc/hostid hostuuid_type=hostuuid hw.hn.use_if_start=1 hw.hn.vf_transparent=0 hw.usb.no_pf=1 interpret=OK kern.cam.boot_delay=10000 kern.geom.label.disk_ident.enable=0 kern.geom.label.gptid.enable=0 kern.ipc.nmbclusters=1000000 kern.ipc.nmbjumbo9=524288 kern.ipc.nmbjumbop=524288 kernel=kernel kernel_options= kernels_autodetect=YES loaddev=zfs:pfSense/ROOT/default: loader.efi=1 loader_brand=pfSense loader_color=NO loader_conf_dirs=/boot/loader.conf.d loader_logo=pfSensebw loader_menu_title=Welcome to pfSense machdep.hwpstate_pkg_ctrl=1 module_blacklist=drm drm2 radeonkms i915kms amdgpu module_path=/boot/modules;/boot/dtb;/boot/dtb/overlays module_verbose=2 net.isr.maxthreads=-1 net.link.ifqmaxlen=128 net.pf.request_maxcount=400000 net.pf.states_hashsize=1048576 nextboot_conf=/boot/nextboot.conf opensolaris_load=YES prompt=${interpret} ram_blacklist_load=NO ram_blacklist_name=/boot/blacklist.txt ram_blacklist_type=ram_blacklist screensave_load=NO screensave_name=green_saver script.lang=lua smbios.bios.reldate=12/14/2022 smbios.bios.revision=5.22 smbios.bios.vendor=INSYDE Corp. smbios.bios.version=05.22.01.0011.0010 smbios.chassis.maker=Deciso B.V. smbios.chassis.serial=Chassis Serial Number smbios.chassis.tag=Chassis Asset Tag smbios.chassis.type=Notebook smbios.chassis.version=Chassis Version smbios.memory.enabled=16777216 smbios.planar.location=Type2 - Board Chassis Location smbios.planar.maker=Deciso B.V. smbios.planar.product=NetBoard-A20 smbios.planar.serial= smbios.planar.tag=Type2 - Board Asset Tag smbios.planar.version= smbios.socket.enabled=1 smbios.socket.populated=1 smbios.system.family=NetBoard-A20 smbios.system.maker=Deciso B.V. smbios.system.product=NetBoard-A20 smbios.system.serial= smbios.system.sku= smbios.system.uuid=12345678-1234-5678-90ab-cddeefaabbcc smbios.system.version= smbios.version=3.0 splash_bmp_load=NO splash_pcx_load=NO splash_txt_load=NO twiddle_divisor=16 verbose_loading=NO vesa_load=NO zfs_be_active=zfs:pfSense/ROOT/default zfs_be_currpage=1 zfs_be_root=pfSense/ROOT zfs_load=YES OK
-
Could the FreeBSD 14 base used by 2.7.2 have reverted or broken this fix from FreeBSD 13?
https://www.freebsd.org/security/advisories/FreeBSD-EN-23:06.loader.asc -
Possible but unlikely IMO. Can it boot UEFI? If so try that as it's unaffected.
Do you see it loading that file before the loader menu? It should show something like:
Setting currdev to disk0p2: Loading /boot/defaults/loader.conf Loading /boot/device.hints Loading /boot/loader.conf Loading /boot/loader.conf.lua Loading /boot/loader.conf.local
-
@stephenw10 said in where to put hw.uart.console setting so it sticks after reboot:
Possible but unlikely IMO. Can it boot UEFI? If so try that as it's unaffected.
Do you see it loading that file before the loader menu? It should show something like:
Setting currdev to disk0p2: Loading /boot/defaults/loader.conf Loading /boot/device.hints Loading /boot/loader.conf Loading /boot/loader.conf.lua Loading /boot/loader.conf.local
It is a UEFI-based BIOS. It has a UEFI shell you can access. I assume it is in UEFI boot mode rather than legacy boot mode. The BIOS setup has no options for boot mode. Here is what happens before the pfSense loader:
CPUID : 800F12 InsydeH2O Version : 05.22.01.0011.0010A BIOS Build Date : 12/14/2022 Processor Type : AMD EPYC 3201 8-Core Processor System Memory Speed : 2133 MHz Please set hw.efifb.address and hw.efifb.stride. Consoles: EFI console Reading loader env vars from /efi/freebsd/loader.env Setting currdev to disk0p1: FreeBSD/amd64 EFI loader, Revision 1.1(Wed Dec 6 20:44:01 UTC 2023 root@freebsd) Command line arguments: loader.efi Image base: 0x74118000 EFI version: 2.50 EFI Firmware: INSYDE Corp. (rev 21024.4112) Console: efi (0x1000) Load Path: \efi\freebsd\loader.efi Load Device: PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x2)/Sata(0x0,0x0,0x0)/HD(1,GPT,43D8B194-A993-11EE-BB54-F490EA006397,0x28,0x82 BootCurrent: 0003 BootOrder: 0003[*] 0000 2001 0002 2002 2003 BootInfo Path: HD(1,GPT,43D8B194-A993-11EE-BB54-F490EA006397,0x28,0x82000)/\efi\freebsd\loader.efi Ignoring Boot0003: Only one DP found Trying ESP: PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x2)/Sata(0x0,0x0,0x0)/HD(1,GPT,43D8B194-A993-11EE-BB54-F490EA006397,0x28,0x82000) Setting currdev to disk0p1 Trying: PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x2)/Sata(0x0,0x0,0x0)/HD(2,GPT,43DD88AC-A993-11EE-BB54-F490EA006397,0x82028,0x400) Setting currdev to disk0p2:\ Trying: PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x2)/Sata(0x0,0x0,0x0)/HD(3,GPT,43E4C639-A993-11EE-BB54-F490EA006397,0x82800,0x200000) Setting currdev to disk0p3: Trying: PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x2)/Sata(0x0,0x0,0x0)/HD(4,GPT,43E99877-A993-11EE-BB54-F490EA006397,0x282800,0x1DA708 Setting currdev to zfs:pfSense/ROOT/default
-
Hmm, it might have cleared the screen before that then. It must be loading at least loader.conf.
Try also setting:
console=efi
-
@stephenw10 said in where to put hw.uart.console setting so it sticks after reboot:
Hmm, it might have cleared the screen before that then. It must be loading at least loader.conf.
Try also setting:
console=efi
show command reveals efi is already in the console option:
console=comconsole,efi
That message about loader.efi reading env vars from /efi/freebsd/loader.env got my attention. I entered the EFI shell and browsed to that location. There was no loader.env, only loader.efi. However I created a loader.env file . Contest shown below:
FS0:\efi\freebsd\> type loader.env hw.uart.console="mm:0xfedc9000,rs:2" greg=1 FS0:\efi\freebsd\>
After rebooting, show command output is below. Notice my "greg=1" test var is there but hw.uart.console is not. So that confirms that loader.efi is reading the file but hw.uart.console is being cleared or ignored for some reason. I did try removing the quotes in the line but that did not make a difference. Maybe that fix I mentioned really is missing from 2.7.2
\ __ _ __ / _|___ ___ _ __ ___ ___ | '_ \| |_/ __|/ _ \ '_ \/ __|/ _ \ | |_) | _\__ \ __/ | | \__ \ __/ | .__/|_| |___/\___|_| |_|___/\___| |_| /---------- Welcome to pfSense -----------\ __________________________ | | / ___\ | 1. Boot Multi user [Enter] | | /` | 2. Boot Single user | | / :-| | 3. Escape to loader prompt | | _________ ___/ /_ | | 4. Reboot | | /` ____ / /__ ___/ | | 5. Cons: Dual (Serial primary) | | / / / / / / | | | | / /___/ / / / | | Options: | | / ______/ / / | | 6. Kernel: default/kernel (1 of 1) | |/ / / / | | 7. Boot Options | / /___/ | | | / | | | /_________________________/ \-----------------------------------------/ \ Exiting menu! Type '?' for a list of commands, 'help' for more detailed help. OK ?? unknown command OK show COLUMNS=128 LINES=40 acpi_dsdt_load=NO acpi_dsdt_name=/boot/acpi_dsdt.aml acpi_dsdt_type=acpi_dsdt acpi_video_load=NO audit_event_load=NO audit_event_name=/etc/security/audit_event audit_event_type=etc_security_audit_event autoboot_delay=NO bitmap_load=NO bitmap_name=splash.bmp bitmap_type=splash_image_data boot_multicons=YES boot_serial=YES bootenv_autolist=YES bootenvs[0]=zfs:pfSense/ROOT/default bootenvs_count=1 bootfile=kernel comconsole_pcidev= comconsole_port=1016 comconsole_speed=115200 console=comconsole,efi cpu_microcode_load=NO cpu_microcode_name=/boot/firmware/ucode.bin cpu_microcode_type=cpu_microcode cryptodev_load=YES currdev=zfs:pfSense/ROOT/default: efi-version=2.50 efi_com_speed=115200 efi_max_resolution=1x1 entropy_cache_load=YES entropy_cache_name=/boot/entropy entropy_cache_type=boot_entropy_cache entropy_efi_seed=YES greg=1 hint.acpi_throttle.0.disabled=1 hint.atkbd.0.at=atkbdc hint.atkbd.0.irq=1 hint.atkbdc.0.at=isa hint.atkbdc.0.port=0x060 hint.atrtc.0.at=isa hint.atrtc.0.irq=8 hint.atrtc.0.port=0x70 hint.attimer.0.at=isa hint.attimer.0.irq=0 hint.attimer.0.port=0x40 hint.fd.0.at=fdc0 hint.fd.0.drive=0 hint.fd.1.at=fdc0 hint.fd.1.drive=1 hint.fdc.0.at=isa hint.fdc.0.drq=2 hint.fdc.0.irq=6 hint.fdc.0.port=0x3F0 hint.p4tcc.0.disabled=1 hint.ppc.0.at=isa hint.ppc.0.irq=7 hint.psm.0.at=atkbdc hint.psm.0.irq=12 hint.sc.0.at=isa hint.sc.0.flags=0x100 hint.smbios.0.mem=0x793f6000 hint.uart.0.at=isa hint.uart.0.flags=0x10 hint.uart.0.irq=4 hint.uart.0.port=0x3F8 hint.uart.1.at=isa hint.uart.1.irq=3 hint.uart.1.port=0x2F8 hostuuid_load=YES hostuuid_name=/etc/hostid hostuuid_type=hostuuid hw.hn.use_if_start=1 hw.hn.vf_transparent=0 hw.usb.no_pf=1 interpret=OK kern.cam.boot_delay=10000 kern.geom.label.disk_ident.enable=0 kern.geom.label.gptid.enable=0 kern.ipc.nmbclusters=1000000 kern.ipc.nmbjumbo9=524288 kern.ipc.nmbjumbop=524288 kernel=kernel kernel_options= kernels_autodetect=YES loaddev=zfs:pfSense/ROOT/default: loader.efi=1 loader_brand=pfSense loader_color=NO loader_conf_dirs=/boot/loader.conf.d loader_logo=pfSensebw loader_menu_title=Welcome to pfSense machdep.hwpstate_pkg_ctrl=1 module_blacklist=drm drm2 radeonkms i915kms amdgpu module_path=/boot/modules;/boot/dtb;/boot/dtb/overlays module_verbose=2 net.isr.maxthreads=-1 net.link.ifqmaxlen=128 net.pf.request_maxcount=400000 net.pf.states_hashsize=1048576 nextboot_conf=/boot/nextboot.conf opensolaris_load=YES prompt=${interpret} ram_blacklist_load=NO ram_blacklist_name=/boot/blacklist.txt ram_blacklist_type=ram_blacklist screensave_load=NO screensave_name=green_saver script.lang=lua smbios.bios.reldate=12/14/2022 smbios.bios.revision=5.22 smbios.bios.vendor=INSYDE Corp. smbios.bios.version=05.22.01.0011.0010 smbios.chassis.maker=Deciso B.V. smbios.chassis.serial=Chassis Serial Number smbios.chassis.tag=Chassis Asset Tag smbios.chassis.type=Notebook smbios.chassis.version=Chassis Version smbios.memory.enabled=16777216 smbios.planar.location=Type2 - Board Chassis Location smbios.planar.maker=Deciso B.V. smbios.planar.product=NetBoard-A20 smbios.planar.serial= smbios.planar.tag=Type2 - Board Asset Tag smbios.planar.version= smbios.socket.enabled=1 smbios.socket.populated=1 smbios.system.family=NetBoard-A20 smbios.system.maker=Deciso B.V. smbios.system.product=NetBoard-A20 smbios.system.serial= smbios.system.sku= smbios.system.uuid=12345678-1234-5678-90ab-cddeefaabbcc smbios.system.version= smbios.version=3.0 splash_bmp_load=NO splash_pcx_load=NO splash_txt_load=NO twiddle_divisor=16 verbose_loading=NO vesa_load=NO zfs_be_active=zfs:pfSense/ROOT/default zfs_be_currpage=1 zfs_be_root=pfSense/ROOT zfs_load=YES OK
-
@gfeiner said in where to put hw.uart.console setting so it sticks after reboot:
show command reveals efi is already in the console option:
console=comconsole,efi
But comconsole is set first and the referenced bug shows that running it unsets the hw.uart value.
So try addingconsole=efi
to loader.conf.local -
@stephenw10 said in where to put hw.uart.console setting so it sticks after reboot:
@gfeiner said in where to put hw.uart.console setting so it sticks after reboot:
show command reveals efi is already in the console option:
console=comconsole,efi
But comconsole is set first and the referenced bug shows that running it unsets the hw.uart value.
So try addingconsole=efi
to loader.conf.localBingo. That was it. /efi/freebsd/loader.env is not needed. All that is needed is a /boot/loader.conf.local with these two entries:
console="efi" hw.uart.console="mm:0xfedc9000,rs:2"
In looking at the details and comments of the actual change in FreeBSD 13, it makes sense: https://cgit.freebsd.org/src/commit/?id=525ac1948af8
Their change will specifically unset hw.uart.console if console has comconsole as a value.For those reading this who may wish to install pfSense on a Deciso appliance like myself, I got the mmio address value for hw.uart.console by inspecting the output of "dmeg | grep uart" while the appliance was running OPNsense.