Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Apr 2003 17:28:20 -0400 (EDT)
From:      "Andrew R. Reiter" <arr@watson.org>
To:        Tim Kientzle <kientzle@acm.org>
Cc:        John Polstra <jdp@polstra.com>
Subject:   Re: Going Dynamic (Was: HEADS UP: new NSS)
Message-ID:  <20030417172745.A90240@fledge.watson.org>
In-Reply-To: <3E9F1C15.7080702@acm.org>
References:  <20030417141133.GA4155@madman.celabo.org> <20030417144449.GA4530@madman.celabo.org> <20030418014500.B94094@iclub.nsu.ru> <3E9F0A28.8030906@btc.adaptec.com> <3E9F1C15.7080702@acm.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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@freebsd.org mailing list
:http://lists.freebsd.org/mailman/listinfo/freebsd-current
:To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
:

--
Andrew R. Reiter
arr@watson.org
arr@FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030417172745.A90240>