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,
however.
Warner
On Wed, Aug 7, 2019 at 7:05 AM Clem Cole <clemc(a)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(a)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
>
>