Going Dynamic (Was: HEADS UP: new NSS)
Andrew R. Reiter
arr at watson.org
Thu Apr 17 14:28:12 PDT 2003
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
More information about the freebsd-current
mailing list