28.08.2015 Views

The Design and Implementation of the Anykernel and Rump Kernels

1F3KDce

1F3KDce

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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

194<br />

not include later debugging [76]. Since we reuse <strong>the</strong> kernel driver, we get <strong>the</strong> driver<br />

functionality for free. All <strong>of</strong> <strong>the</strong> FFS code for <strong>the</strong> rump kernel implementation is<br />

involved in calculating <strong>the</strong> image size <strong>and</strong> was available from makefs. If code for this<br />

calculation had not been available, we most likely would have implemented it using<br />

shell utilities. However, since determining <strong>the</strong> size involves multiple calculations<br />

such as dealing with hard links <strong>and</strong> rounding up directory entry sizes, we concluded<br />

that reusing working code was a better option.<br />

<strong>The</strong> makefs implementation with a rump kernel backend is available from <strong>the</strong> o<strong>the</strong>rsrc<br />

module at o<strong>the</strong>rsrc/usr.sbin/makefs-rump. It also uses <strong>the</strong> utility at<br />

o<strong>the</strong>rsrc/usr.sbin/makefs-analyzetree. Note that <strong>the</strong> o<strong>the</strong>rsrc module is<br />

separate from <strong>the</strong> src module we mentioned in Section 1.6.1, <strong>and</strong> <strong>the</strong> code must be<br />

retrieved from <strong>the</strong> NetBSD source repository separately.<br />

Interested readers are also invited to look at Appendix B.4, where we present ano<strong>the</strong>r<br />

method for makefs functionality using st<strong>and</strong>ard system utilities as remote clients for<br />

rump kernel servers.<br />

4.3 On Portability<br />

<strong>The</strong>re are two things to consider with portability. First, given that <strong>the</strong> NetBSD<br />

kernel was ported to run on a hypercall interface, what are <strong>the</strong> practical implications<br />

for hosting a NetBSD rump kernel on ei<strong>the</strong>r a non-NetBSD system or a NetBSD<br />

system <strong>of</strong> a different version. We call <strong>the</strong>se systems non-native. Second, we want<br />

to know if <strong>the</strong> concept <strong>of</strong> rump kernel construction is unique to <strong>the</strong> NetBSD kernel<br />

codebase, or if it can be applied to o<strong>the</strong>r operating systems as well.

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

Saved successfully!

Ooh no, something went wrong!