tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Rumpification (was Re: CVS commit: src/usr.sbin/envstat)



On Tue Dec 14 2010 at 20:24:22 +0000, David Holland wrote:
> If what you want is to configure interfaces on the rump kernel, then
> the right way is to ifconfig (all of ifconfig) on the rump kernel.
> This does not require modifying ifconfig, avoids all the problems that
> have been cited in this thread, and is semantically far cleaner. All
> it requires is an LD_PRELOAD hack or similar to intercept syscalls, so
> the ifconfig process runs on the rump kernel, and the rump equivalent
> of 'ssh rumpkernel $COMMAND' to bring back the ifconfig process's
> output.

It's not quite as trivial as you'd like to think without ever actually
working on the code.  Some issues you'll have to deal with when you
implement your model:

* no sbrk/mmap/fork/exec etc. in a rump kernel (you can relegate
  to host behind the syscall, but I thought you said running something
  half in the kernel was gross)
* no file system or at least no populated file system.  what will happen
  when some util wants e.g. /etc/protocols or /etc/services or some other
  static database
* related to the above, no requirement to support e.g. vfs or networking
  in a rump kernel.  e.g. network utils should work with networking
  support only.
* the LD_PRELOAD hack (which is gross) does not trap syscalls from libc.
  if you want to use ptrace(), you need some additional gross hacks

rump is *not* a usermode OS project and trying to hammer it into the
model you are familiar with is not a productive way to spend time.

-- 
älä karot toivorikkauttas, kyl rätei ja lumpui piisaa


Home | Main Index | Thread Index | Old Index