NetBSD-Users archive

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

rump-current on 5.x (was Re: puffs ignores filesystem permissions)

[reply-to netbsd-users]

On Wed Jan 05 2011 at 10:36:05 +0000, Matthias Scheler wrote:
> On Wed, Dec 29, 2010 at 01:36:24PM +0200, Antti Kantee wrote:
> > Additionally, since you can use
> > rump from -current on netbsd-5, it would just be a lot of extra work,
> > and doubly so since there are no suitable tests for netbsd-5.
> Are the instructions how to do that? If I just use NetBSD-current binaries
> they won't work because they use system calls that NetBSD 5.1 doesn't support.

I've never used stock binaries myself (I typically want debugging
symbols), but you should be able to just drop -current rump *kernel*
components in, since the only way the kernel bits access the host is
via the rumpuser hypercall interface.

The userland stuff (at least librumpuser) you need to compile from
-current sources on your NetBSD 5 system so that, as you say, you get
references to the right system calls.  Hopefully for 6.0 and beyond the
hypercall interface will be stable enough so that you can skip this step.

You also might be able to install an old'ish -current snapshot by toying
a little with the pkgsrc/misc/rump package, but I cannot comment on how
that approach would go.

I wrote instructions a long time ago (around the time of the first talks
about releasing 5.1), but they were never fully tested by someone other
than me and never published.  The instructions might have bitrotted,
but I'm attaching them anyway with a no-money-back guarantee, just in
case they are helpful.

=== snip ===
People frequently tell me they want to upgrade to -current some
day to play with rump.  But in fact it is possible to compile and
use kernel code from a version different than the host.  Personally
I run NetBSD 5.something on my desktop and develop code from -current
using rump.  Here's how:

  0:  run at least NetBSD 5.1 release (works on others too, I've run
      e.g. on 4.0, but you'll have to suffer some extra fiddling I'm
      not going to document here)

  1:  download the NetBSD source tree version you desire

  2: tools

  3:  copy nbmake-$arch (e.g. nbmake-i386) to rumpmake (and
      preferably have it somewhere along $PATH)

  4:  modify rumpmake: comment out DESTDIR, MAKEOBJDIR,
      NETBSDSRCDIR and RELEASEDIR (and maybe MAKEVERBOSE if you set it).
      make sure all the other stuff looks sensible.  at the very
      least MAKEFLAGS should have -m pointing to the target version

  5:  install rump headers:
      cd $src/sys/rump ; sudo make includes

  6:  build & install rump:
      cd $src/sys/rump ; rumpmake -j4 dependall ; make install

If you want to the -current kernel file systems as servers, you
additionally need libukfs, libp2k and the file servers themselves:

  7:  cd $src/lib/libukfs ; make includes ; make dependall ; make install
  8:  cd $src/lib/libp2k ; make includes ; make dependall ; make install
  9:  cd $src/usr.sbin/puffs ; make dependall ; make install

Note that the last step will also install -current versions of all
the puffs servers, most notably mount_psshfs.  If you are not
running 5.1, this may require you to install a -current or 5.1
libpuffs.  While it is certainly doable (I do it ;), see disclaimer
in 0 about having to fiddle a little.

Whenever you upgrade, you should upgrade the full package, i.e.
execute steps 5 through 9.  This is because rump is still constantly
evolving and does not support a stable ABI yet.

Also, I'm pretty sure steps 3-4 could be handled by "make"
automatically, but haven't yet put any effort into investigating
=== snip ===

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

Home | Main Index | Thread Index | Old Index