An idea for improving init and rc seamlessly, without causing any conflicts or tedium for anyone

for people with impaired vision adding colors or bold to unicode text means getting a lot of weird characters wrapping words that can make them hard to understand...
My bad, completely forgot with this aspect!
So to comply with both requirements, text reader that completely ignore escape sequences and control characters (other than some specific ones like bell or [for use as delimiter] cr / lf) would be needed.

Off topic, but successor for Unicode that has structures such as supports for "how it should be read as" per character appearing in texts (in Japanese, called ルビ or ふりがな) should be standardized and forced to replace all existing character sets (keeping for compatibility features) would be strongly wanted.
This should help people with impaired vision a lot, with the costs of extended sizes, especially for CJK character sets regions.
 
Thank you all for reading my post and sharing your thoughts.

The links to some color related software from SirDice are especially useful and appreciated. 📑😎

I admit that I am rather surprised that so many people here apparently seem to prefer not making the boot sequence more aesthetically pleasing to create a potentially much better impression on new users, especially considering that making a symbolic link to the boot messages as /root/boot_messages.txt via /var/run/dmesg.boot or /var/log/dmesg.today (or any similar approach) makes it still easy (indeed arguably easier, since there is no automatic scrolling) to get the same info as before. The idea was specifically designed to minimize ripple effects as much as possible, relative to potential gains in terms of benefit per unit of effort in how FreeBSD may be perceived by prospective new users. I'm not sure what approach to the init situation could be any gentler, besides obvious things applicable to any software such as synchronous optimizations and small additions and tweaks in features and such of course.

The part about colors potentially causing problems for serial connections and some environments was something I was hoping would not be much of an issue, but it sounds like it could be. That makes me wonder though about how the already existing boot menu that shows the beastie logo is able to be colored without (I presume) such problems though. That seems inconsistent with the notion that colors and fancy output would cause problems. I also along similar lines wonder if there is a way to detect what kind of environment the boot sequence is happening in (seems like probably yes) and if it is an incompatible one then to not display any fancy messages. That would largely address the incompatibility problem for colors on constrained environments when booting.

It sounds like this might be something I'll have to implement myself if I do end up making my own "distro" based on FreeBSD, unless the consensus turns the other direction in this thread or elsewhere over time, though I am honestly surprised by that reaction given the potentially very large upside of doing this.

More users tends to bring more resources to all aspects of any operating system and boot output designed to be both as beautiful and as usefully informative as possible would likely be attractive to technical and non-technical users alike.

As for myself, I still new to serious use of FreeBSD, though I've played with it on and off while "distro hopping" and such over the past couple decades (and likewise for the other BSDs, especially NetBSD), and am still reading through Absolute FreeBSD (3rd edition) in fact, to round out my knowledge, but we'll see what happens. It would be good to have less of a monoculture in operating systems and FreeBSD seems like one of the best foundations for at least partially addressing that increasingly prevalent problem in the computing ecosystem. A more polished FreeBSD would help in that regard I think.
Honestly, aesthetics isn't much of a concern for an OS which doesn't ship with a GUI by default. Also, booting tends to be pretty fast and infrequent enough that it's a non-issue. It's been a while, but I thought that it used to be possible to hide the text behind an image the way that Windows does, but it's just not there long enough to worry about.

Distro hopping is really a Linux thing because Linux distros tend to install a lot of random software that isn't strictly needed, but requires an entire distro. It seems to work for people, but if I want a different WM on FreeBSD, I can just uninstall the one I've got and install a new one, no need to switch to NetBSD to do that.
 
My friend: moving parts. They break. You introduce them at your peril, not mine. I like my teams' nights uninterrupted. And yes, I will die on this hill in a far more literal sense than you're prepared to imagine.

That's the frame you get to propose your improvement in. So please do proceed, but tread carefully.
 
May I remind you that good ole syscons(4) colorizes the output at boot‑time. (I actually wonder where the programmatic origins are, it’s not in the rc scripts.)

I think the output could use some formatting – like paragraph breaks (empty lines), tabular alignment, or wrapping lines at logical breaks (space characters) – to become more legible.

Advantage: it’s backward compatible (no Unicode characters, no spinning wheel animation or the like), no separate files as suggested in the opening post, and it can be implemented bit by bit.​
Code:
---<<BOOT>>---
Copyright (c) 1992-2019 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 13.0-CURRENT #0 r353709: Fri Oct 18 05:49:35 UTC 2019
    root@releng1.nyi.freebsd.org:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64
FreeBSD clang version 9.0.0 (tags/RELEASE_900/final 372316) (based on LLVM 9.0.0)

WARNING: WITNESS option enabled, expect reduced performance.

VT(efifb):                 resolution 1366x768
CPU: Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz (1800.11-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x806ec  Family=0x6  Model=0x8e  Stepping=12
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0x7ffafbbf<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,SDBG,FMA,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND>
  AMD Features=0x2c100800<SYSCALL,NX,Page1GB,RDTSCP,LM>
  AMD Features2=0x121<LAHF,ABM,Prefetch>
  Structured Extended Features=0x29c67af<FSGSBASE,TSCADJ,SGX,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,NFPUSG,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PROCTRACE>
  Structured Extended Features3=0xbc000400<MD_CLEAR,IBPB,STIBP,L1DFL,ARCH_CAP,SSBD>
  XSAVE Features=0xf<XSAVEOPT,XSAVEC,XINUSE,XSAVES>
  IA32_ARCH_CAPS=0x2b<RDCL_NO,IBRS_ALL,SKIP_L1DFL_VME>
  VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID
  TSC: P-state invariant, performance statistics
real memory  = 34359738368 (32768 MB)
avail memory = 33139593216 (31604 MB)
Event timer "LAPIC" quality 600
ACPI APIC Table:           <LENOVO TP-R0Y  >
FreeBSD/SMP:               Multiprocessor System Detected: 8 CPUs
FreeBSD/SMP:               1 package(s) x 4 core(s) x 2 hardware threads
random:                    registering fast source Intel Secure Key RNG
random:                    fast provider: "Intel Secure Key RNG"

arc4random: WARNING: initial seeding bypassed the cryptographic random device
because it was not yet seeded and the knob 'bypass_before_seeding' was enabled.

ioapic0 <Version 2.0> irqs 0-119
Launching APs:             1 7 4 3 2 5 6
Timecounter "TSC" frequency 1800107885 Hz quality 1000
random:                    entropy device external interface

kbd1 at kbdmux0
000.000050 [4335] netmap_init               netmap: loaded module
module_register_init:      MOD_LOAD (vesa, 0xffffffff8105a240, 0) error 19
[ath_hal] loaded
nexus0
efirtc0:                   <EFI Realtime Clock>
efirtc0:                   registered as a time-of-day clock,
                           resolution 1.000000s
cryptosoft0:               <software crypto>
acpi0:                     <LENOVO TP-R0Y>
acpi_ec0:                  <Embedded Controller: GPE 0x20, ECDT>
                           port 0x62,0x66 on acpi0
acpi0:                     Power Button (fixed)
cpu0:                      <ACPI CPU> on acpi0
hpet0:                     <High Precision Event Timer>
                           iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 24000000 Hz quality 950
Event timer "HPET" frequency 24000000 Hz quality 550
atrtc0:                    <AT realtime clock>
                           port 0x70-0x77 irq 8 on acpi0
atrtc0:                    Warning: Couldn't map I/O.
atrtc0:                    registered as a time-of-day clock,
                           resolution 1.000000s
Event timer "RTC" frequency 32768 Hz quality 0
attimer0:                  <AT timer>
                           port 0x40-0x43,0x50-0x53 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0:               <24-bit timer at 3.579545MHz>
                           port 0x1808-0x180b on acpi0
pcib0:                     <ACPI Host-PCI bridge>
                           port 0xcf8-0xcff on acpi0
pci0:                      <ACPI PCI bus> on pcib0
vgapci0:                   <VGA-compatible display>
                           port 0x3000-0x303f
                           mem 0xa0000000-0xa0ffffff,0x90000000-0x9fffffff
                           at device 2.0 on pci0
vgapci0:                   Boot video device
xhci0:                     <XHCI (generic) USB 3.0 controller>
                           mem 0xa1400000-0xa140ffff
                           at device 20.0 on pci0
xhci0:                     32 bytes context size, 64-bit DMA

usbus0 on xhci0
usbus0:                    5.0Gbps Super Speed USB v3.0
pci0:                      <memory, RAM>
                           at device 20.2 (no driver attached)
pci0:                      <simple comms>
                           at device 22.0 (no driver attached)
ahci0:                     <AHCI SATA controller>
                           port 0x3080-0x3087,0x3088-0x308b,0x3060-0x307f
                           mem 0xa141e000-0xa141ffff,0xa1428000-0xa14280ff,0xa1427000-0xa14277ff
                           at device 23.0 on pci0
ahci0:                     AHCI v1.31 with 2 6Gbps ports,
                           Port Multiplier not supported
ahcich1:                   <AHCI channel>
                           at channel 1 on ahci0
ahcich2:                   <AHCI channel>
                           at channel 2 on ahci0
pcib1:                     <ACPI PCI-PCI bridge>
                           at device 28.0 on pci0
pci1:                      <ACPI PCI bus>
                           on pcib1
sdhci_pci0:                <Generic SD HCI>
                           mem 0xa1301000-0xa1301fff,0xa1300000-0xa13007ff
                           at device 0.0 on pci1
sdhci_pci0:                1 slot(s) allocated
pcib2:                     <ACPI PCI-PCI bridge>
                           at device 29.0 on pci0
pci2:                      <ACPI PCI bus>
                           on pcib2
re0:                       <RealTek 8168/8111
                            B/C/CP/D/DP/E/F/G PCIe Gigabit Ethernet>
                           port 0x2000-0x20ff
                           mem 0xa1204000-0xa1204fff,0xa1200000-0xa1203fff
                           at device 0.0
                           on pci2
re0:                       Using 1 MSI-X message
re0:                       ASPM disabled
re0:                       Chip rev. 0x50800000
re0:                       MAC rev. 0x00100000
miibus0:                   <MII bus>
                           on re0
rgephy0:                   <RTL8251/8153 1000BASE-T media interface>
                           PHY 1 on miibus0
rgephy0:                   none, 10baseT, 10baseT-FDX, 10baseT-FDX-flow,
                           100baseTX, 100baseTX-FDX, 100baseTX-FDX-flow,
                           1000baseT-FDX, 1000baseT-FDX-master,
                           1000baseT-FDX-flow, 1000baseT-FDX-flow-master, auto,
                           auto-flow
re0:                       Using defaults for TSO: 65518/35/2048
re0:                       Ethernet address: 98:fa:9b:cd:4a:73
re0:                       netmap queues/slots: TX 1/256, RX 1/256
pcib3:                     <ACPI PCI-PCI bridge>
                           at device 29.2 on pci0
pci3:                      <ACPI PCI bus>
                           on pcib3
pci3:                      <network>
                           at device 0.0 (no driver attached)
pci0:                      <simple comms>
                           at device 30.0 (no driver attached)
isab0:                     <PCI-ISA bridge>
                           at device 31.0 on pci0
isa0:                      <ISA bus>
                           on isab0
hdac0:                     <Intel Cannon Lake HDA Controller>
                           mem 0xa1418000-0xa141bfff,0xa1000000-0xa10fffff
                           at device 31.3
                           on pci0
pci0:                      <serial bus>
                           at device 31.5 (no driver attached)
acpi_button0:              <Sleep Button> on acpi0
acpi_lid0:                 <Control Method Lid Switch>
                           on acpi0
acpi_tz0:                  <Thermal Zone>
                           on acpi0
atkbdc0:                   <Keyboard controller (i8042)>
                           port 0x60,0x64 irq 1 on acpi0
atkbd0:                    <AT Keyboard> irq 1
                           on atkbdc0

kbd0 at atkbd0
atkbd0:                    [GIANT-LOCKED]
psm0:                      <PS/2 Mouse> irq 12
                           on atkbdc0
psm0:                      [GIANT-LOCKED]
psm0:                      model Synaptics Touchpad, device ID 0
acpi_syscontainer0:        <System Container>
                           on acpi0
acpi_acad0:                <AC Adapter>
                           on acpi0
battery0:                  <ACPI Control Method Battery>
                           on acpi0
est0:                      <Enhanced SpeedStep Frequency Control>
                           on cpu0
Timecounters tick every 1.000 msec
hdacc0:                    <Conexant (0x1f86) HDA CODEC>
                           at cad 0 on hdac0
hdaa0:                     <Conexant (0x1f86) Audio Function Group>
                           at nid 1 on hdacc0
ugen0.1:                   <0x8086 XHCI root HUB>
                           at usbus0
pcm0:                      <Conexant (0x1f86) (Analog)>
                           at nid 23 and 25 on hdaa0
pcm1:                      <Conexant (0x1f86) (Left Analog Headphones)>
                           at nid 22 on hdaa0
hdacc1:                    <Intel Kaby Lake HDA CODEC>
                           at cad 2 on hdac0
hdaa1:                     <Intel Kaby Lake Audio Function Group>
                           at nid 1 on hdacc1
pcm2:                      <Intel Kaby Lake (HDMI/DP 8ch)>
                           at nid 3 on hdaa1

uhub0 on usbus0
uhub0:                     <0x8086 XHCI root HUB,
                            class 9/0, rev 3.00/1.00, addr 1>
                            on usbus0
cam_periph_alloc:          attempt to re-allocate valid device
                           pass1 rejected flags 0 refcount 3
passasync:                 Unable to attach new device due to status 0x6:
                           CCB request was invalid

ada0 at ahcich1 bus 0 scbus0 target 0 lun 0
ada0:                      <WDC WD10SPZX-08Z10 05.01A05>
                           ACS-3 ATA SATA 3.x device
ada0:                      Serial Number WD-WXR1A49J4AK8
ada0:                      600.000MB/s transfers
                           (SATA 3.x, UDMA6, PIO 8192bytes)
ada0:                      Command Queueing enabled
ada0:                      953869MB (1953525168 512 byte sectors)

ada1 at ahcich2 bus 0 scbus1 target 0 lun 0
ada1:                      <SAMSUNG MZNLN256HAJQ-000L7 MVT25L6Q>
                            ACS-3 ATA SATA 3.x device
ada1:                      Serial Number S3RZNX0M827825
ada1:                      600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes)
ada1:                      Command Queueing enabled
ada1:                      244198MB (500118192 512 byte sectors)
Trying to mount root from ufs:/dev/ufs/FreeBSD_Install [ro,noatime]...

WARNING: WITNESS option enabled, expect reduced performance.

uhub0:                     18 ports with 18 removable, self powered
ugen0.2:                   <VIA Labs, Inc. USB2.0 Hub> at usbus0

uhub1 on uhub0
uhub1:                     <VIA Labs, Inc. USB2.0 Hub,
                            class 9/0, rev 2.10/90.11, addr 1>
                            on usbus0
Root mount waiting for:    usbus0
uhub1:                     4 ports with 4 removable, self powered
Root mount waiting for:    usbus0
ugen0.3:                   <C-Media Electronics Inc. USB Audio Device> at usbus0
ugen0.4:                   <vendor 0x413c Dell KB216 Wired Keyboard> at usbus0

ukbd0 on uhub1
ukbd0:                     <vendor 0x413c Dell KB216 Wired Keyboard,
                            class 0/0, rev 1.10/1.08, addr 3>
                            on usbus0

kbd2 at ukbd0
Root mount waiting for:    usbus0
ugen0.5:                   <Logitech USB Receiver> at usbus0

ukbd1 on uhub1
ukbd1:                     <Logitech USB Receiver,
                            class 0/0, rev 2.00/29.01, addr 4>
                            on usbus0

kbd3 at ukbd1
Root mount waiting for:    usbus0
Root mount waiting for:    usbus0
ugen0.6:                   <Generic USB3.0 Card Reader> at usbus0

umass0 on uhub0
umass0:                    <Generic USB3.0 Card Reader,
                            class 0/0, rev 3.00/15.32, addr 5>
                            on usbus0
umass0:                    SCSI over Bulk-Only; quirks = 0x8100
umass0:2:0:                Attached to scbus2
mountroot:                 waiting for device /dev/ufs/FreeBSD_Install...
(probe0:umass-sim0:0:0:0): REPORT LUNS. CDB: a0 00 00 00 00 00 00 00 00 10 00 00 
(probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
(probe0:umass-sim0:0:0:0): SCSI status: Check Condition
(probe0:umass-sim0:0:0:0): SCSI sense: ILLEGAL REQUEST
                           asc:20,0 (Invalid command operation code)
(probe0:umass-sim0:0:0:0): Error 22, Unretryable error

da0 at umass-sim0 bus 0 scbus2 target 0 lun 0
da0:                       <Generic STORAGE DEVICE 1532>
                           Removable Direct Access SPC-4 SCSI device
da0:                       Serial Number 000000001532
da0:                       400.000MB/s transfers
da0:                       1938MB (3970048 512 byte sectors)
da0:                       quirks=0x3<NO_SYNC_CACHE,NO_6_BYTE>
random:                    unblocking device.
lo0:                       link state changed to UP
re0:                       link state changed to UP

uaudio0 on uhub1
uaudio0:                   <C-Media Electronics Inc. USB Audio Device,
                            class 0/0, rev 1.10/1.00, addr 2>
                            on usbus0
uaudio0:                   Play:   48000 Hz,
                                   2 ch,
                                   16-bit S-LE PCM format,
                                   2x8ms buffer.
uaudio0:                   Play:   44100 Hz,
                                   2 ch,
                                   16-bit S-LE PCM format,
                                   2x8ms buffer.
uaudio0:                   Record: 48000 Hz,
                                   1 ch,
                                   16-bit S-LE PCM format,
                                   2x8ms buffer.
uaudio0:                   Record: 44100 Hz,
                                   1 ch,
                                   16-bit S-LE PCM format,
                                   2x8ms buffer.
uaudio0:                   No MIDI sequencer.
pcm3:                      <USB audio> on uaudio0
uaudio0:                   HID volume keys found.

uhid0 on uhub1
uhid0:                     <vendor 0x413c Dell KB216 Wired Keyboard,
                            class 0/0, rev 1.10/1.08, addr 3>
                            on usbus0

ums0 on uhub1
ums0:                      <Logitech USB Receiver,
                            class 0/0, rev 2.00/29.01, addr 4>
                            on usbus0
ums0:                      18 buttons and [XYZT] coordinates ID=2
Disadvantages: grep(1) works on physical lines (to be fair, there are already some multi‑line messages), predicting reasonable tabs(1) is difficult, esp. on an 80×25 screen it wastes a lot of space … just to name some issues.​
 
Back
Top