Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Sep 2017 21:14:42 -0600
From:      Alan Somers <asomers@freebsd.org>
To:        Jon Brawn <jon@brawn.org>
Cc:        "current@freebsd.org" <current@freebsd.org>
Subject:   Re: Pre-filled RAM disk.
Message-ID:  <CAOtMX2g50sfnT9rQVg1dVTXfhfOWs3xofJQwAd=2nbOU6qhPFQ@mail.gmail.com>
In-Reply-To: <AEDBF95D-5D91-41A0-AEFF-56840FAB755C@brawn.org>
References:  <AEDBF95D-5D91-41A0-AEFF-56840FAB755C@brawn.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Sep 20, 2017 at 8:50 PM, Jon Brawn <jon@brawn.org> wrote:
> Wotcha!
>
> I work for Arm for my sins, and in my spare time I=E2=80=99ve been playin=
g 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=E2=80=99t the same th=
ing as QEMU, nor is it just an FPGA, it=E2=80=99s something in the middle -=
 you compile the hardware design and download it to the emulator, and it ca=
n 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 environm=
ent. These tests would typically thrash the snot out of some particular asp=
ect of the architecture, such as memory sharing amongst multiple processor =
cores. Now, we would like to use other operating systems that behave differ=
ently to Linux, there are some obvious candidates that I=E2=80=99m not goin=
g to talk about for legal reasons, but one that was suggested was using Fre=
eBSD 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 g=
oing to be at a fixed physical address in the memory map. That way we can p=
re-load root from a file in the emulation environment. In the Linux environ=
ment we would package the kernel, it=E2=80=99s DRB and the root filesystem =
memory image inside a light-weight bootloader wrapper, load that at the rig=
ht offset into the emulator=E2=80=99s memory map, and twang the virtual res=
et line of the emulated processor. There=E2=80=99s some magic jiggery poker=
y to get console output from what the OS thinks is an AMBA UART, but that=
=E2=80=99s about size of it.
>
> So, what does FreeBSD have to offer in the way of ramdisk functionality?
>
> Jon.

Cool project!  There is something called MFSBSD which is basically
exactly what you want.  It creates a small ramdisk and boots from
that.  It's often used for stuff like booting from PXE, CD, or USB.  I
don't know if you can force it to be located at a specific memory
address, though.  It's normally used in combination with a bootloader.

http://mfsbsd.vx.sk/

-Alan



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOtMX2g50sfnT9rQVg1dVTXfhfOWs3xofJQwAd=2nbOU6qhPFQ>