*BSD News Article 32006


Return to BSD News archive

Xref: sserve comp.os.386bsd.questions:11084 gnu.misc.discuss:15346
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!msuinfo!agate!howland.reston.ans.net!swrinde!emory!cherry.atlanta.com!nntp.mindspring.com!usenet
From: rsanders@mindspring.com (Robert Sanders)
Newsgroups: comp.os.386bsd.questions,gnu.misc.discuss
Subject: Re: Taylor UUCP on FreeBSD???
Date: 22 Jun 1994 15:06:39 GMT
Organization: MindSpring Enterprises, Inc.
Lines: 72
Message-ID: <RSANDERS.94Jun22110639@hrothgar.mindspring.com>
References: <1994Jun13.040754.17764@kosman.uucp> <GOWEN.94Jun21084913@presto.cs.tufts.edu>
	<2u73ti$egn@glitnir.ifi.uio.no>
	<RSANDERS.94Jun21155032@hrothgar.mindspring.com>
	<2u7tcb$6mr@pdq.coe.montana.edu>
NNTP-Posting-Host: msdem5.mindspring.com
In-reply-to: nate@bsd.coe.montana.edu's message of 21 Jun 94 23:33:31 GMT

In article <2u7tcb$6mr@pdq.coe.montana.edu> nate@bsd.coe.montana.edu (Nate Williams) writes:

   >Well, that's a valid argument on Linux, but FreeBSD (and I suppose
   >NetBSD) think that shared libraries belong in /usr/lib.  I disagree,

   As a FreeBSD developer, I'll give a quick WHY we did it that way.

   1) / (root) should be small.
   2) Given the above, putting the entire shared library in /root makes
      no sense due to size, even offsetting the savings in the small
      number of shared binaries.

Linux's shared libc and libm add up to about 280K (they look bigger,
but they contain holes).  I really couldn't tell you for sure how much
space I save in /bin and /sbin with shared libraries, but I'm sure
it's close to that.  FreeBSD may have a significantly larger libc.so
because of its more ELF-like dynamic linking.

   3) Breaking up a standalone library for the root partition is wasteful
      since the code will be also needed for other binaries.

Could you explain this a little more?  I'm not sure I understand.

   4) In the case of a bad crash using the Mach VM system in BSD systems you
      *CAN* corrupt the running binary, which in the case of shared binaries
      can be the shared library.  (The way paging is done)

You mean a file mapped into memory in such a way that changes
shouldn't be committed to disk can still get corrupted?  That's a bug.

   5) ld.so doesn't NEED to be in /root, and there is less likely for
      something bad to get hosed up when doing updates.  The more dependant
      you are on particular tools, the more likely one of them is to break.
      Upon bootup there are 2 CRITICAL binaries.  'init' and 'sh' for
      safety reasons should be linked static IMHO.

This is a different argument from whether or not the shared libraries
should be accessible at boottime and used by binaries on the root
partition.  I have no argument with this.

   >install bash as /bin/sh because ash just wouldn't cut several scripts
   >we used.

   Fix ash. :-)

Although I normally find the FreeBSD developers as reasonable as any
people on Usenet, this is definitely from left field.  Let's compact
all this discussion into a quick dialogue:

user:	"Hey, ash doesn't run some standard 'sh' scripts, but bash
         does."
nate:   "ash is smaller.  You don't need the interactive bloat for
         /bin/sh."
user:   "Smaller, yes, but it doesn't work."
nate:   "So fix ash."

It seems to me that as one of the principal developers of a respected
and important operating system, it should be more important to you
that things work than is apparent here.  Admittedly, the lure of a
lean, fast system is a tempting one, but if it's just rushing headlong
to brokenness, I'll do without, thanks.

The fact is that you chose a broken ash over a much less broken bash
as your /bin/sh, and unless you plan to fix ash's bugs, it's not a
very wise decision.  You want me to fix ash?  Sure.

	rm /bin/sh
	ln /bin/bash /bin/sh

There.  Now it works. :-)

  -- Robert