Re: Going Dynamic (Was: HEADS UP: new NSS)

From: Andrew R. Reiter <arr_at_watson.org>
Date: Thu, 17 Apr 2003 17:28:20 -0400 (EDT)
On Thu, 17 Apr 2003, Tim Kientzle wrote:

:John Polstra wrote:
:> Moving to a fully dynamically linked system sounds easier to me.
:> But in the past there has been strong opposition to the idea every
:> time it has been proposed.
:
:
:So far, the best argument in favor of a
:fully dynamic system has been: "Someday,
:someone might need dlopen() to implement NSS,
:PAM, or locales."
:
:I think there's a much stronger argument now:
:"Someone has already implemented a new NSS that
:requires dlopen()."
:
:As for the performance argument against dynamic
:linking, Luke Mewburn observed that after
:NetBSD switched to fully dynamic, suddenly
:the dynamic start-up code got a lot of
:attention <grin>, with wide-ranging benefits.
:
:Scott Long wrote:
:> Right, because everyone is deathly afraid of /usr/lib not being
:> available and nothing working, or ld.so getting corrupt and nothing
:> working,
:
:
:Nate Lawson and I had a discussion with Luke Mewburn
:of NetBSD about this.  He outlined a strategy for
:dealing with exactly these issues.  Two key points:
:
:  1) Move critical libraries from /usr/lib to /lib.
:     This ensures that /bin, /sbin, etc, will all
:     work during boot, for instance, before /usr is
:     mounted.  To date, people who wanted to experiment
:     with fully dynamic had to keep /usr on the root
:     partition.  Note that static libs don't need to
:     move, only a handful of dynamic libs need to
:     be relocated (with compatibility symlinks from
:     their old locations in /usr/lib, of course).
:
:  2) Build a separate set of statically-linked
:     binaries for emergency use.  I've already
:     done this, and the patches are currently
:     being reviewed.  They add a /rescue directory
:     which uses crunchgen to pack most of /bin, /sbin,
:     and select other pieces into a nice small package.
:     Gauranteed to work even if you hose ld.so.

I kind of like #2.

:
:     Note that the standard /bin and /sbin will continue
:     to be used during boot and normal system operation.
:     Since they're dynamically linked, dlopen() works
:     and NSS, PAM, etc, can be used.  If things
:     go awry, then the /rescue directory will have
:     fully static versions of standard utils that can
:     be used to repair the system.  The /rescue utils
:     won't be able to fully use NSS or PAM, of course,
:     but if you're booting single user to repair a hosed
:     /usr partition, you probably don't really need NSS. ;-)
:
:I have Luke's full outline for transitioning to
:a dynamic system around here somewhere....
:
:
:> If switching to a fully dynamically linked system is desired before
:> 6.0 then it needs to happen before 5.2.  I'm not opposed to this.
:
:
:As I said, I've already done a chunk of work
:for this.  If someone would like to help finish...
:
:Tim Kientzle
:
:_______________________________________________
:freebsd-current_at_freebsd.org mailing list
:http://lists.freebsd.org/mailman/listinfo/freebsd-current
:To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
:

--
Andrew R. Reiter
arr_at_watson.org
arr_at_FreeBSD.org
Received on Thu Apr 17 2003 - 12:28:12 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:03 UTC