some kenv vars stopped working

Hi.
I noticed that by default these variables kern.vt.color.0.rgb...kern.vt.color.15.rgb work fine, but when I enabled this option WITHOUT_LOADER_BIOS_TEXTONLY=YES they stopped working. While other vars remained the same.
kenv shows
kern.vt.color.0.rgb=""
kern.vt.color.1.rgb=""
kern.vt.color.2.rgb=""
...

I use 14.3-RELEASE amd64.
Update: Also I've noticed that locale (ru_RU.UTF-8) switching doesn't work anymore, now I get ??? instead of cyrillic letters.
Best regards.
 
src.conf(5)
Probably that should not be excluded from world for these variables to work.
Code:
     WITHOUT_LOADER_BIOS_TEXTONLY
             Include graphics, font and video mode support in the i386 and
             amd64 BIOS boot loader.
 
Hi.
I noticed that by default these variables kern.vt.color.0.rgb...kern.vt.color.15.rgb work fine, but when I enabled this option WITHOUT_LOADER_BIOS_TEXTONLY=YES they stopped working. While other vars remained the same.
kenv shows
kern.vt.color.0.rgb=""
kern.vt.color.1.rgb=""
kern.vt.color.2.rgb=""
...

I use 14.3-RELEASE amd64.
Best regards.
I assume that option is for a custom kernel build?
If so, a logical assumption would be those sysctls get excluded when that option is enabled.
Or "what nxjoseph said"
 
src.conf(5)
Probably that should not be excluded from world for these variables to work.
Code:
     WITHOUT_LOADER_BIOS_TEXTONLY
             Include graphics, font and video mode support in the i386 and
             amd64 BIOS boot loader.
man src.conf shows:

Code:
     WITHOUT_LOADER_BIOS_TEXTONLY
             Include graphics, font and video mode support in the i386 and
             amd64 BIOS boot loader.
it includes graphics etc., but not excludes. And if this option affects some variables in some way, why there's no any information about that?
 
it includes graphics etc., but not excludes.
That's a negative option, so, ones with WITHOUT_ prefix mean that they will be excluded.

WITH (that thing will include things) WITHOUT (that thing will exclude things)

And if this option affects some variables in some way, why there's no any information about that?
The customization of the world is a personal thing, so, it may be rare to get encountered with it.
 
  • Like
Reactions: mer
That's a negative option, so, ones with WITHOUT_ prefix mean that they will be excluded.

WITH (that thing will include things) WITHOUT (that thing will exclude things)


The customization of the world is a personal thing, so, it may be rare to get encountered with it.
I think you are wrong here, because after enabling this option WITHOUT_LOADER_BIOS_TEXTONLY=YES I got these variables to work:
screen.textmode=" ... "
vbe_max_resolution=" ... "
which didn't work before, and I couln't enable framebuffer (with BIOS and not UEFI) with default src.conf.
 
Where are you standing? Perspective, what is the default value.
I think
"WITHOUT_BLAHBLAHBLAH" and a default value of NO is different from
"WITHOUT_BLAHBLAHBLAH" and a default value of YES.
Just as
WITH_BLAHBLAHBLAH and default of NO vs
WITH_BLAHBLAHBLAH and default of YES

If the GENERIC config file does not have that option specified, then there is a default value for it somewhere which drives default behavior.
Explicitly adding that option to your config means that takes precedence.

I would start with "what is the default value of that option and what is the behavior at the default" and go from there.
 
WITHOUT_LOADER_BIOS_TEXTONLY is not a default option. It should be enabled manually! All the options that are default are denoted with following statement:
This is a default setting on amd64/amd64, arm/armv7,
arm64/aarch64, i386/i386 and riscv/riscv64.
 
I think that code below confirms that setting it to "yes" should exclude something.

/usr/src/stand/i386/loader/Makefile

Makefile:
.if ${MK_LOADER_BIOS_TEXTONLY} == "no"
SRCS+=        gfx_fb.c
SRCS+=        8x16.c

CFLAGS.gfx_fb.c += -I${.CURDIR}/../libi386
CFLAGS.gfx_fb.c += -I$(SRCTOP)/sys/teken
CFLAGS.gfx_fb.c += -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/lz4
CFLAGS.gfx_fb.c += -I${SRCTOP}/contrib/pnglite
CFLAGS.gfx_fb.c += -DHAVE_MEMCPY -I${SRCTOP}/sys/contrib/zlib
CFLAGS.gfx_bios.c += -I$(SRCTOP)/sys/teken
CFLAGS.gfx_bios.c += -I${SRCTOP}/contrib/pnglite
.else
CFLAGS.gfx_bios.c += -DBIOS_TEXT_ONLY
CFLAGS.conf.c    += -DBIOS_TEXT_ONLY
.endif

Code:
% find . -type f -exec grep -Hin "LOADER_BIOS_TEXTONLY" {} +
./stand/i386/loader/Makefile:46:.if ${MK_LOADER_BIOS_TEXTONLY} == "no"
./share/mk/src.opts.mk:132:    LOADER_BIOS_TEXTONLY \
./share/man/man5/src.conf.5:1031:.It Va WITHOUT_LOADER_BIOS_TEXTONLY
Binary file ./.git/index matches
 
WITHOUT_LOADER_BIOS_TEXTONLY is not a default option. It should be enabled manually! All the options that are default are denoted with following statement:
This is a default setting on amd64/amd64, arm/armv7,
arm64/aarch64, i386/i386 and riscv/riscv64.
Disagree. It is an option that if NOT explicitly defined has, by default a value of "undefined". That feeds into how it is checked.
As nxjoseph points out in #9 the check is explicitly against the value "no". If one never defines the variable the default behavior is "that check fails", effectively making the default value "yes".
 
To be clear, WITHOUT_LOADER_BIOS_TEXTONLY enables "graphics, font and video mode support in the i386 and amd64 BIOS boot loader", because WITH_LOADER_BIOS_TEXTONLY, which is now the default since 2024-10-30, or speaking in RELEASE terms, since 14.3-RELEASE, disables the above-mentioned.

src.conf.5: LOADER_BIOS_TEXTONLY default change
Code:
WITH_LOADER_BIOS_TEXTONLY is now the default so document
WITHOUT_LOADER_BIOS_TEXTONLY.

Fixes:        23dee252daf2 loader: Change this BIOS tradeoff...
23dee252daf2 being:
loader: Change this BIOS tradeoff: Add back zip and use text only
 
Back
Top