[TUHS] Pre-init initialization

Warner Losh imp at bsdimp.com
Thu Aug 8 02:40:06 AEST 2019

The move into RAM disks happened as memories grew. This obviated the need
to copy a filesystem to a new disk's swap space and then use that to really
install the system.

Kernels with bundled RAM disks were a thing in BSD for a long time, though
I'm unsure when that functionality entered the code stream. I know the
early versions of FreeBSD's installer ran out of a RAM disk loaded off
floppies, though that's not the same as initrd since there never was a
pivot to something else: just a reboot to boot the real thing.

FreeBSD, at least, has the functionality to also do a RAM disk to get
things configured enough to pivot to the real disk on boot, but that's a
niche operation there: most everybody just boots off / directly without the
initrd-like thing. It's rarely needed, but it's one of those things that
when it is needed, it's really needed, which is why one can do it.

FreeBSD has an interesting 'tertiary loader' that plays a similar role to
initrd. It orchestrates loading of modules, setting tunable parameters and
launching the kernel. It's grown up to be a mini-kernel stand-alone
program, but as the real kernel is now 28MB, the boot loader leverages off
'boot services' or other well-known interfaces to weigh in at only a few
hundred k. This has proven to be both a blessing and a curse at times,


On Wed, Aug 7, 2019 at 7:05 AM Clem Cole <clemc at ccc.com> wrote:

> A couple of the commercial systems did this for sure. Linux definitely
> picked it up from UNIX practices, although I have no idea/memory of who did
> it first.  We used the idea at Stellar (Stellix) and at Masscomp (RTU).
> IIRC, a couple of others like Pyramid made have created a RAMFS - but it
> was kicking around the UNIX community for a fairly long time - certainly in
> the late 1970s - *i.e.* post V7.
> FWIW: V7 had /stand which was a funky UNIX-like standalone system that
> some applications could be compiled.  The problem was that it was a little
> different so you would end up seeing #ifdef STAND in code for things like
> fsck, fsdb, even cat.  At Masscomp we ended up with three target
> environments for a couple of the system maintenance utilities: the OS,
> /stand and the boot ROMS.   This was expensive/a PITA to maintain and keep
> straight, and in the case of the boot ROM, space was a huge problem.
> The RAMFS idea was created to get rid of at least /stand and IIRC we were
> able to drop a number of utilities out of the boot ROM.  I'm not sure how
> far they took it.   I left for Stellar and it was always the way Stellix
> booted.
> On Tue, Aug 6, 2019 at 7:47 PM Grant Taylor via TUHS <tuhs at minnie.tuhs.org>
> wrote:
>> Do, or did, anything other than Linux use a concept of an initramfs /
>> initrd to create a pre-(main)-init initialization environment to prepare
>> the system to execute the (main)-init process?
>> --
>> Grant. . . .
>> unix || die
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20190807/a9d172be/attachment.html>

More information about the TUHS mailing list