[gobolinux-users] new ViewFS prototype (yes, you read it right :-) )

Hisham hisham.hm at gmail.com
Fri Nov 5 10:36:25 NZDT 2010


Hi folks,

I know I've been MIA for a good while now -- I've been mostly focused
on other stuff and haven't had the time to work on GoboLinux, but in
the last few weeks I've been slowly working on ressurrecting
everyone's favorite vaporware, ViewFS. :-)

And this time I have screenshots! :-D

I wrote a quick reimplementation inspired by Flu (
http://piratery.net/flu/ ), a new set of Lua bindings for FUSE, and
it's actually working well enough to launch simultaneous binaries with
incompatible dependencies.

My first test was to grab a very old GoboLinux image and install
Netscape 4 in my current 014.01 system. At first I had to launch it
using ld-linux.so.2 directly, but it did run:

There it is, in all its Glibc-2.2.5-glory:
http://hisham.gobolinux.org/viewfs/netscape.png

Only today I saw Michael's message announcing his Chromium package,
which I had missed. I gave it a try and my machine had a bunch of
outdated dependencies, including Glibc. Since this is my main work
machine and I didn't want to tweak it too much, I decided to try to
launch it using ViewFS. The ld-linux.so.2 hack didn't work because
chromium uses /proc/self/exe to find out where it is (the same thing I
do in ViewFS to determine contexts, by the way). After banging my head
on it for a while I remembered I had solved the exact same problem
five years ago when working on the first implementation of ViewFS at
IBM. Fortunately, all of the relevant code from that project was open
sourced (thanks Ben! :) ) and I still have here with me the program I
wrote which actually patches the binary to modify the location of its
loader. Once I ran that, voilà:

http://hisham.gobolinux.org/viewfs/chromium.png

The viewfs code itself is in a very "prototypical" stage yet (views
have to be generated by hand using "find -ls" and I'm hardcoding the
detection of contexts). Anyway, I'll upload it tomorrow as is. My
plans are to keep working on this to make it more generally usable,
because from what I've tested so far, this approach seems really
viable.

Cheers!

-- Hisham


More information about the gobolinux-users mailing list