Pre-filled RAM disk.
Jon Brawn
jon at brawn.org
Thu Sep 21 03:10:14 UTC 2017
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?
Jon.
More information about the freebsd-current
mailing list