28.08.2015 Views

The Design and Implementation of the Anykernel and Rump Kernels

1F3KDce

1F3KDce

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

121<br />

boothowto variable. Since <strong>the</strong>re is no virtual CPU to schedule before bootstrap,<br />

no entry/exit wrappers are necessary. <strong>The</strong>se bootstrap interfaces provided as nongenerated<br />

prototypes in sys/rump/include/rump/rump.h.<br />

3.7 <strong>Rump</strong> Kernel Root File System<br />

Full operating systems require a root file system with persistent storage for files such<br />

as /bin/ls <strong>and</strong> /etc/passwd. A rump kernel does not inherently require such files.<br />

This relaxed requirement is because a rump kernel does not have a default userspace<br />

<strong>and</strong> because client binaries are executed outside <strong>of</strong> <strong>the</strong> rump kernel. However,<br />

specific drivers or clients may require file system support for example to open a<br />

device, load firmware or access a file system image. In some cases, such as for<br />

firmware files <strong>and</strong> file system images, it is likely that <strong>the</strong> backing storage for <strong>the</strong><br />

data to be accessed resides on <strong>the</strong> host.<br />

We explicitly want to avoid m<strong>and</strong>ating <strong>the</strong> association <strong>of</strong> persistent storage with a<br />

rump kernel because <strong>the</strong> storage image requires setup <strong>and</strong> maintenance <strong>and</strong> would<br />

hinder especially one-time invocations. It is not impossible to store <strong>the</strong> file system<br />

hierarchy <strong>and</strong> data required by a specific rump kernel instance on persistent storage.<br />

We are merely saying it is not required.<br />

A file system driver called rumpfs was written. It is implemented in <strong>the</strong> source module<br />

sys/rump/librump/rumpvfs/rumpfs.c. Like tmpfs, rumpfs is an in-memory<br />

file system. Unlike tmpfs, which is as fast <strong>and</strong> as complete as possible, rumpfs is as<br />

lightweight as possible. Most rumpfs operations have only simple implementations<br />

<strong>and</strong> support for advanced features such as rename <strong>and</strong> NFS export has been omitted.<br />

If <strong>the</strong>se features are desired, an instance <strong>of</strong> tmpfs can be mounted within <strong>the</strong><br />

rump kernel when required. <strong>The</strong> lightweight implementation <strong>of</strong> rumpfs makes <strong>the</strong><br />

compiled size 3.5 times smaller than that <strong>of</strong> tmpfs.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!