Re: Kernel modules not loading on 15-prerelease

Mark Millard <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On Sep 5, 2025, at 07:37, bob prohaska <[email protected]> wrote:

> On Thu, Sep 04, 2025 at 09:08:20AM -0700, Mark Millard wrote:
>> 
>> 
>> I'm saying more than that: Any time you used just
>> -DWITH_META_MODE you were not correctly specifying
>> that META_MODE would be used: that specification
>> has to be via an environment variable called
>> WITH_META_MODE, not via a global make variable
>> called WITH_META_MODE .
> 
> Ok, that is something I failed to grasp until now.
> Apparently, my problems are that
> 1. world isn't updating

Not fully updating. Nor are the kernel/modules
fully updating.

> making
> 2. kernel and modules inconsistent.

world's status is not all that is involved in that.

> There a page at https://wiki.freebsd.org/MetaMode offering 
> concise instruction, dated 2021, for using WITH_META_MODE.
> Is it still correct?

For a normal, modern context, yes.

The below will end up recommending a sequence to get
a working kernel/filmon/modules combination before
doing a full buildworld.

Adding notes that that web page's instructions:

> Setup
> 
> Add WITH_META_MODE=YES to /etc/src-env.conf

The above should work in modern contexts. If you are to
disable META_MODE it would be a change to the file to
instead define WITHOUT_META_MODE .

I'll note that the YES text is ignored: just the defined
vs. not status is used for these.

> Run # kldload filemon

Of course, you are tying to get to a status where that
would actually work. Establishing an initial META_MODE
context would need to be done once you have filemon
working so that the full information is recorded.

> Run # make cleanworld once.

In your odd context, "make clean" may well be better
for before starting the builds.

> If objects don't have .meta files then META_MODE won't do the right thing on an incremental build. 1
> FreeBSD buildworld will now create meta files to improve the performance of future builds.

So: how to get a valid kernel/module-set without
first building all of the world:

FIRST: deal with having /etc/src-env.conf include a
line with:

WITH_META_MODE=

(Your choice if you want the YES or some text.)

NOTE: I make the assumption that you want to use
      /etc/src-env.conf instead of command line
      content.

# cd /usr/src/ # (or where ever you have your source)
# make clean # not something that you would normally do
# make kerneltoolchain
# make buildkernel
# make installkernel
# shutdown -r now

NOTE: At this point use of filemon (and more) should
      load and work. But the kerneltoolchain activity
      was not recorded.

NOTE: I do not know your detailed choices about handling
      kernel updates so you may have more related to the
      installkernel than I show. For example, you might
      deliberately keep a copy of the old kernel under
      some alternate name before updating the default
      named one. (There are other possibilities.)

After logging in, do the first build with filemon and META_MODE
via:

# kldload filemon # Should always be established before META_MODE use.
# cd /usr/src/
# make clean # not something that you would normally do
# make buildworld buildkernel

NOTE: That should establish all the *.meta files for META_MODE
      use.

NOTE: At this point a normal procedure for the installkernel
      and installworld sequence can be used.

I have scripts that I used to do various types of builds. They
include doing:

kldload -n filemon
cd /usr/src/ # or my equivalent for a specific source tree

That is in order to establish context for later commands
in the script and for META_MODE use.

I happen to choose to not start filemon unless I'm
starting a system software build, avoiding any overhead
if I've not done any system builds yet.


===
Mark Millard
marklmi at yahoo.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.