Pre-filled RAM disk.

Ian Lepore ian at freebsd.org
Thu Sep 21 03:51:32 UTC 2017


On Wed, 2017-09-20 at 21:23 -0600, Warner Losh wrote:
> On Wed, Sep 20, 2017 at 9:16 PM, Warner Losh <imp at bsdimp.com> wrote:
> 
> > 
> > 
> > 
> > On Wed, Sep 20, 2017 at 8:50 PM, Jon Brawn <jon at brawn.org> wrote:
> > 
> > > 
> > > Wotcha!
> > > 
> > > I work for Arm for my sins, and in my spare time I’ve been
> > > playing with
> > > FreeBSD. In my day job I work with the CPU core validation team,
> > > and one of
> > > the things we do is take the hardware design of a new core and
> > > run it on a
> > > machine called an emulator. This emulator isn’t the same thing as
> > > QEMU, nor
> > > is it just an FPGA, it’s something in the middle - you compile
> > > the hardware
> > > design and download it to the emulator, and it can then run
> > > programs on
> > > your design at about 1MHz. Which is lovely. Our main bread and
> > > butter is to
> > > take such a design and get it to boot Arm Linux, a very cut down
> > > version,
> > > and then run some tests hosted in the Linux environment. These
> > > tests would
> > > typically thrash the snot out of some particular aspect of the
> > > architecture, such as memory sharing amongst multiple processor
> > > cores. Now,
> > > we would like to use other operating systems that behave
> > > differently to
> > > Linux, there are some obvious candidates that I’m not going to
> > > talk about
> > > for legal reasons, but one that was suggested was using FreeBSD
> > > under
> > > emulation.
> > > 
> > > So, what is needed is someway of telling the operating system
> > > that it is
> > > going to use a ram disk for its root filesystem, and that the ram
> > > disk is
> > > going to be at a fixed physical address in the memory map. That
> > > way we can
> > > pre-load root from a file in the emulation environment. In the
> > > Linux
> > > environment we would package the kernel, it’s DRB and the root
> > > filesystem
> > > memory image inside a light-weight bootloader wrapper, load that
> > > at the
> > > right offset into the emulator’s memory map, and twang the
> > > virtual reset
> > > line of the emulated processor. There’s some magic jiggery pokery
> > > to get
> > > console output from what the OS thinks is an AMBA UART, but
> > > that’s about
> > > size of it.
> > > 
> > > So, what does FreeBSD have to offer in the way of ramdisk
> > > functionality?
> > > 
> > Yes.
> > 
> > See MD_ROOT and friends.
> > 
> The MFS_IMAGE kernel option has replaced this.
> 
> Warner

And the documentation (such as it is) for MFS_IMAGE is in the md(4)
manpage.  In a nutshell, it's a mechanism that lets you compile an
existing filesystem image directly into the kernel and it is mounted as
a memory filesystem at boot time.  Hopefully being contained within the
kernel will make the problem of loading it at a fixed physical address
go away for you.

-- Ian


More information about the freebsd-current mailing list