Subject: Re: New idea on ELF prebinding
To: Robert Elz <kre@munnari.OZ.AU>
From: Bang Jun-Young <junyoung@netbsd.org>
List: tech-userlevel
Date: 11/23/2002 14:29:07
On Fri, Nov 22, 2002 at 08:52:40PM +1100, Robert Elz wrote:
> Date: Fri, 22 Nov 2002 09:27:40 +0100
> From: Martin Husemann <martin@duskware.de>
> Message-ID: <20021122082740.GD416@drowsy.duskware.de>
>
> | Only one file,
>
> Which means the file is altered, which means that you can no longer easily
> check that the file you're running is identical with the distribution copy.
>
> I much prefer the "file on the side" method, provided the file goes in /var
> and not /usr (/usr is, or should be able to be, read only - I mount it that
> way all the time, and would prefer to avoid even more null mounts to provide
> the few odd necessary writable pieces - currently all required by X).
I like both, but some people don't like "file on the side" method for
security reasons. I'll be back with the subject "Why security doesn't matter"
sooner or later. ;-)
>
> Jun-Yong ...
>
> | My proposal is also completely optional.
>
> per file (executable) or just on/off big switch? I'd prefer the former.
> That is, the vast majority of programs aren't run enough, and don't cost
> enough to dynamically link, that it really isn't worth the effort dealing
> with them. I'd like to just turn on this cache for the few files that are
> used enough,a nd cost enough, that there would be a real gain. If it is
> per file, how is it controlled?
Per-file switch can be implemented by filling .cksum (renamed from .csum
for consitency with the name of cksum(1)) with FFFFFF..FFFFFF. System-wide
switch still can be turned on/off by setting/unsetting LD_PREBIND
environment variable.
>
> I had a half thought out idea of something similar, but just keeping the
> linked binary in swap space (in virtual memory) so it would be re-bound once,
> at least, each boot (and perhaps more often, using weighted LRU (weighted by
> size) to discard bindings and avoid using too much VM) which I had expected
> might be controlled by the 't' bit on the executable (with that being passed
> to ld.elf_so - and it telling the kernel to preserve a copy of the image,
> by making all pages copy on write, keeping the original untouched, in a
> cache, ready for next time - if the kernel found such a thing in this new
> cache, it would just skip ld.elf_so completely, and run the copy instead).
A kind of "hibernation"?
Jun-Young
--
Bang Jun-Young <junyoung@netbsd.org>