To load additional code into kernel-space, you can use various commandline tools which call the appropriate syscalls & device files. With the kmod command dispatching to the appropriate subcommand.
After parsing commandline flags insmod converts remaining arguments into a multi-string, & constructs a Module object to (with preprocessing) call the init_module syscall.
There's someadditional logging infrastructure, which might write to Syslog.
For each of those modinfos modinfo serializes various info LibKMod has parsed from device files.
After parsing commandline flags modprobe initializes logging, fills in missing parameters, initializes a LibKMod context having it parse its "resources", & runs a chosen subsubcommand.
These subcommands may output various properties of the LibKMod context, output loaded version numbers, output a module's symbols, or hand off to rmmod or insmod.
After parsing commandline flags rmmod initializes a LibKMod context & iterates over remaining commandline args (validating they exist) leading each given module in 1 of 2 ways. Calling the delete_module syscall on each via a light LibKMod wrapper.
After parsing commandline flags static-nodes opens modules.devname device file directly & an output file, to parse the modules.devname to reformat into a chosen format.
Something I frequently find about many openweb-original shows: Many seem to be very good at doing their research!
I'm not the best to judge this, but those set in the past frequently seem to capture their time periods well. Certainly judging by her editor's notes Tracy Butler holds her Lackadaisy to high standards!
And when they tackle science, the technobabble passes my scrutiny. The Red Panda Adventures is an exception in that it emulates 1930s technobabble, see previous point.
Over spent the past year I explored how I'd build a browser truly from scratch, hardware on up, over the next month or so I'll explore tooling to help us build this!
Can we self-host the development? Without pulling in other OSs, being self reliant?
Not for the AI models (text prediction, speech recognition, machine translation, etc) since that would require faster hardware. The AI coprocessor I described would get worn out training itself.
And not initially: Before we can write software on our device we'd already need most of this software already running on it! Unless...
The easiest way to get started is probably to hook the device up to external hardware or (ideally) software terminal (via RS232 over USB?)! Giving us text entry & rendering (with retro flair!) as well as the ability paste text from the web, filesystems, or text editors before we reimplement these things for ourselves as we gain self-reliance!
In designing these dev tools I'll strive to make the software easy to study & (minor caveats) modify on-device, whilst hindering the ability for others (whom you interact with over the internet) to claim that control for themselves.
I won't extend the hardware to aid implementing these dev tools, since they're not the main point of the device. Though at times I will discuss "clever hacks".
3/3 Fin for today! Tomorrow: Introduce compilers & code-runners.
As a massive project Linux is split into several mostly-but-not-really-independent "modules" which get dynamically linked together as the kernel is running! Userspace (rarely) generally initiate this via the topic of today's study: LibKMod!
There's an iterator over the multistring in a modules.builtin.modinfo file. It may use OpenSSL to check cryptographic signatures. It implements a doubly-linked list datastructure. There's a parser & builder for KMod options.
LibKMod may parse binary ELF files to simplify the work done in (hostile) kernel-space. There's a layer integrating a runtime-choice of decompression libraries, in case the kernel doesn't support these formats. There's abstractions around files, including memory-mapped BTree lookups.
Perhaps one of the 2 most central sourcecode files models & parses a ref-counted kernel-module object, abstracting those support routines & certain device files, & e.g. the init_module syscall.
The other main file (aside from implementing some logging infrastructure) defines a ref-counted "context" object with accessors some of which may be sourced from device files, & queries collections via various device files with in-process caching.
2.5/2.5 Fin for today! Tomorrow: KMod commands, then: kernelspace side!
@alcinnz
This is a large part of why I enjoy buying books from Tor Publishing: their ebooks have always been DRM-free, even now that they're a Macmillan subsidiary.
Smashwords is also a great source of DRM-free epubs.