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>