Linux-Development-Sys Digest #144, Volume #8 Wed, 13 Sep 00 15:13:13 EDT
Contents:
Re: Problem in RedHat 6.2 installation (Josef Moellers)
Re: Zip 100 Parallel Port Drive ("Peter T. Breuer")
Re: Wish for a writable ISO-9660 compatible filsystem (Tony Lawrence)
Re: current->timeout in 2.4.x (Villy Kruse)
Damned unresolved symbols.... ("mconroy")
Turning off standard output with FTP (Aaron Stone)
setting non-standard baudrate. (Lac Hao Viet)
Re: scheduling under Linux not suitable for interactive work? (Mario Klebsch)
Re: Help! (Brian Horton)
Re: Critical sections and spinlocks in Linux ("Brice Breeden")
pppd problem ("Nera")
Re: Atomic functions and user mode ("Brice Breeden")
Re: New OS Project ([EMAIL PROTECTED])
sound during system startup (in LILO?) ([EMAIL PROTECTED])
new windowing system ([EMAIL PROTECTED])
----------------------------------------------------------------------------
From: Josef Moellers <[EMAIL PROTECTED]>
Subject: Re: Problem in RedHat 6.2 installation
Date: Wed, 13 Sep 2000 13:34:38 +0200
Nuclear wrote:
> =
> Hi there,
> =
> I'm a Linux newbie. I was trying to install Redhat 6.2 at my friend's
> place. He has got a 20 GB seagate Hard disk with four partitions as 4.8=
> GB, 5 GB, 4.8 GB .... and so on.
> =
> The problem i faced is that when the installation came to disk
> partitioning it gave me an error message saying that the boot partition=
> i.e. "C:\" - the first 4.8 GB partition is too big.....
> Then it refused to make any new partitions in the empty space.
> =
> Pls. Help me get around this problem.
I guess the problem is related to the fact that LILO assumes that your
BIOS cannot access the disk beyond the infamous 500andsomething MB (This
value is soooo important and soooo famous, everyone knows it B-{).
I'm afraid you won't get around a complete re-partitioning of your hard
disk. The best thing would be to insert a small 16MB partition at the
very start of the disk (mounted to /boot).
-- =
Josef M=F6llers (Pinguinpfleger bei FSC)
If failure had no penalty success would not be a prize (T. Pratchett)
------------------------------
From: "Peter T. Breuer" <[EMAIL PROTECTED]>
Crossposted-To: comp.os.linux.hardware,comp.os.linux.misc
Subject: Re: Zip 100 Parallel Port Drive
Date: 13 Sep 2000 11:19:20 GMT
In comp.os.linux.misc Kasper Dupont <[EMAIL PROTECTED]> wrote:
: Peter T. Breuer wrote:
:> In comp.os.linux.misc Kasper Dupont <[EMAIL PROTECTED]> wrote:
:> : also think it would be a very strange choice to
:> : configure new computers for old broken software
:> : instead of configuring them for the new and more
:> : effective ones.
:> (this is one of the things that mswin sometimes does right btw; its
:> settings by default are very conservative).
: There is quite a difference. Many people wants
: to use ancient software on a new OS. But hardly
: no one wants to use an ancient OS on a new
: computer.
I don't get the point you are making (as opposed to the rhetoric, which,
however, seems a little vague too). When they sell you the OS, they
don't ask you what hardware and software you have first. It would be
silly to suppose you have the latest of everything, because you don't.
It would also be silly to suppose that the latest of everything works as
well as what went before, becuase in many dimensions of the measure, it
doesn't. It's simply todays advertised product as opposed to
yesterdays.
Peter
------------------------------
From: Tony Lawrence <[EMAIL PROTECTED]>
Crossposted-To: comp.os.linux.misc
Subject: Re: Wish for a writable ISO-9660 compatible filsystem
Date: Wed, 13 Sep 2000 08:35:41 -0400
Johan Kullstam wrote:
> what about tar? can you make a big tar file and then burn it straight
> off to the cd-writer? list with tar tvf /dev/cdrom and extract using
> tar xvf /dev/cdrom just like when using a tape. maybe a cpio archive
> would be better?
Deja vu. A long time ago, people used to do things like
that. In fact,SCO systems still offer to configure a
"CD-ROM/TAPE installation device", and that's what they
mean, though there haven't been any CD's made in many a year
that the ctd (cd-tape) device could read..
--
Tony Lawrence ([EMAIL PROTECTED])
SCO/Linux articles, help, book reviews, tests,
job listings and more : http://www.pcunix.com
------------------------------
From: [EMAIL PROTECTED] (Villy Kruse)
Subject: Re: current->timeout in 2.4.x
Date: 13 Sep 2000 13:00:23 GMT
On Wed, 13 Sep 2000 10:48:30 +0200, Wolfram Faul <[EMAIL PROTECTED]> wrote:
>Hallo ,
>i am writing a devicedriver for 2.4.0-test1. In Alessandro Rubinis book
>'device driver' there is a possibility shown to wait a bit.
>
> current->timeout = jiffies + x;
> current->state = TASK_INTERRUPTIBLE;
> schedule();
> current->timeout = 0; /* reset timeout */
>
>If i realized it correctly this is no longer possible in 2.4.x.
>
>Any idea how to replace this piece of code.
>
These disappeared in 2.2 already sometime end of 1998. Use
schedule_timeout() or sleep_on(); you should be able to find some examples
in the device drivers on how these are used.
Villy
------------------------------
From: "mconroy" <[EMAIL PROTECTED]>
Subject: Damned unresolved symbols....
Date: Wed, 13 Sep 2000 10:13:48 -0400
Hi...
I wrote (read: butchered, copied, and stole) a printer driver for my
company. It insmod's fine, but fails depmod -ae with:
*** Unresolved symbols in /lib/modules....
depmod: request_region
depmod: __generic_copy_from_user
...
depmod: __generic_copy_to_user
WHY?!?!!?! I have Rubini's book, but it's pretty useless considering
EVERYTHING has seemed to change with RH 6.1.
If I understand correctly, insmod somehow knows how to link the .o file with
the kernel, but depmod requires more info. Do I have to somehow link my
driver at compile time? And if so, HOW? It's COMPILE time... *sigh*.
Here's the make:
cc -D__KERNEL__ -DMODULE -O -Wall -c -o prdrv.o prdrv.c
Thanks in advance for any help.
Cheers,
Mike Conroy
------------------------------
From: Aaron Stone <[EMAIL PROTECTED]>
Subject: Turning off standard output with FTP
Date: Wed, 13 Sep 2000 09:03:25 -0600
Reply-To: [EMAIL PROTECTED]
Im trying to use ftpXfer to transfer files.
When I open the file socket.
Login and other terminal information are
dumped to the screen. Is there any way
to turn this off?
------------------------------
From: Lac Hao Viet <[EMAIL PROTECTED]>
Subject: setting non-standard baudrate.
Date: Wed, 13 Sep 2000 15:49:35 GMT
I've got a serial device which can only send and receive at 14,400 bps,
which is not a UART standard baudrate. Does anyone know how to set this
stupid Windows "standard" baudrate in Linux?
Thanks for any response!
Sent via Deja.com http://www.deja.com/
Before you buy.
------------------------------
From: [EMAIL PROTECTED] (Mario Klebsch)
Subject: Re: scheduling under Linux not suitable for interactive work?
Date: Wed, 13 Sep 2000 09:44:55 +0200
[EMAIL PROTECTED] (Thaddeus L Olczyk) writes:
>BTW adjusting priorities under your scheme doesn't make sense
>especially with I/O since your giving up time to a process which
>may not do anything. It costs even if the process simply returns the
>time.
If the process simply "returns the time" it is badly broken. UNIX
processes should block (in the kernel) until they really have
something to do.
73, Mario
--
Mario Klebsch [EMAIL PROTECTED]
PGP-Key available at http://www.klebsch.de/public.key
Fingerprint DSS: EE7C DBCC D9C8 5DC1 D4DB 1483 30CE 9FB2 A047 9CE0
Diffie-Hellman: D447 4ED6 8A10 2C65 C5E5 8B98 9464 53FF 9382 F518
------------------------------
From: Brian Horton <[EMAIL PROTECTED]>
Subject: Re: Help!
Date: Wed, 13 Sep 2000 10:04:23 -0500
xing li wrote:
>
> Thanks a lot!
> As I changed sprintk to sprintf and compiled with -O, it seems fine to
> load the module.
> Why doesn't the compiler give any error message about the undeclared
> function sprintk?
Because you're not building a stand alone executable, where all
functions and symbols need to be resolved. You're building code that has
LOTS of symbols and functions unresolved, to be resolved by insmod when
it 'links' your module into the kernel.
.bri.
> BTW, Message and Message_Ptr are defined as following in the global
> scope,
> static char Message[80];
> static char* Message_Ptr;
>
>
> > The kernel includes contains some fance macros
> > which only work when the code is being optimized.
> > The optimizer will see that __put_user__X is in
> > fact never called and remove the reference.
> >
> > I think there is no such thing as a sprintk
> > function. You probably want to use sprintf which
> > i think is available inside the kernel. But
> > where is Message and Message_Ptr defined?
> >
> > --
> > Kasper Dupont
------------------------------
From: "Brice Breeden" <[EMAIL PROTECTED]>
Crossposted-To: comp.os.linux.development.apps
Subject: Re: Critical sections and spinlocks in Linux
Date: Wed, 13 Sep 2000 12:18:38 -0500
"Kaz Kylheku" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]...
> On Tue, 12 Sep 2000 17:27:56 -0500, Brice Breeden <[EMAIL PROTECTED]>
wrote:
> >I have a portable C++ multi-threading library for
> >Windows/Linux and I'm trying to find the
> >fastest possible mutual-exclusion API in
> >Linux from user mode. I'm assuming that the
> >increased efficiency implies that locks
> >are only performed within the same process.
> >
> >Here are the two classes I'm using:
> >
> >Mutex uses a pthreads mutex or a System V semaphore,
> >depending on whether it is shared between processes.
> >
> >Spinlock is meant for use in a single process. Currently,
> >I'm using a pthreads mutex. I'd like to know if there's
> >a faster alternative on Linux from user mode. The reason
> >I'm asking is that Windows defines a mutex as well as
> >a critical section.
>
> glibc 2.2 implements the pthread_spinlock_t type and operations. These
are
> implemented as assembly routines that just do naive spinning (no
backoffs).
>
> This is now in beta, (glibc-2.1.93 is the latest test release, I think).
>
> Glibc linuxthreads mutexes are fairly light-weight, but not enough for
some
> people. In glibc 2.2, there is a new non-portable mutex attribute type
called
> PTHREAD_MUTEX_ADAPTIVE_NP. This mutex type has some of the qualities of a
> spinlock (only when running on SMP!). Namely, it spins around to try the
lock
> some number of times before giving up and suspending. That number of times
is
> determined from a dynamic smoothed average of past counts that is recorded
in
> the lock. Additionally, this mutex type does not implement any fairness:
when
> a mutex is unlocked, it is not guaranteed to be given to one of the
waiting
> threads, but to any thread which comes along and grabs it first. It's
possible
> that this mutex type will meet the needs of anyone looking for a fast,
> lightweight, non-recursive lock that has prudent behavior on a single
processor
> machine, and more aggressive behavior on SMP.
>
I'm currently logged in at work on a Windows system. I'll check into that
new attribute
later.
> >NOTE: The reason for having two classes is that the
> >Mutex has more features (such as timeouts).
>
> The function pthread_mutex_timedwait() is only implemented in the glibc
2.2
> stream, not in any current release. Since, as you mentioned, your Mutex
class
> is done in terms of pthread_mutex_t, it cannot, for the time being,
support
> timed-out mutex locks. I suggest you use a mutex, condition variable and
a
> flag if you need timed-out locks today.
>
You're right about timedwait.
Currently, I don't attempt to support timeouts on process-shared mutexes in
Linux.
The Mutex class allows process-shared mutexes to be created. Last time
I checked, condition variables couldn't be shared between processes in
Linux.
But if it is, I may implement it using something similar to what you
mention.
Short explanation for others: A mutex/condition variable/flag implementation
won't work in a process-shared situation if you code "flag" as a C int.
You will end up with local copies of "flag" in each process, resulting in
a (nasty) race condition. You have to represent "flag" differently when
sharing
between processes. I won't waste bandwidth explaining how to do it.
But I will say if you need to share a mutex across processes (without
timeouts), one
solution is to use the System V semaphore API. I based mine on Steven's
code in his Unix Network Programming book. The only limitation is that
timeouts aren't supported on System V semaphores.
I do have process-shared mutexes with timeouts in Windows.
Typically, I document such issues in my library. Most of these issues are
only
related to process-shared locks, which I don't use in my multi-threaded
programs. And there aren't many of them. One of these days I may log
something on the newsgroups/write a web page so that people know
what the current multi-threading limitations for Linux are from user mode.
> --
> Any hyperlinks appearing in this article were inserted by the unscrupulous
> operators of a Usenet-to-web gateway, without obtaining the proper
permission
> of the author, who does not endorse any of the linked-to products or
services.
------------------------------
From: "Nera" <[EMAIL PROTECTED]>
Subject: pppd problem
Date: Thu, 14 Sep 2000 01:35:33 +0800
This is a multi-part message in MIME format.
=======_NextPart_000_000D_01C01DEC.13412E20
Content-Type: text/plain;
charset="big5"
Content-Transfer-Encoding: quoted-printable
Hi
I have configured my linux box with pppd to my ISP to access the =
Internet.
Everything is ok and I successfully connected to my ISP using ppp. My =
ISP needs me
to configure the browser with proxy setting before going out the =
Internet.
The problem arises here. The ISP provides me with 3 proxy servers =
setting and I configure
my Netscape browser.
When I connect to the Internet everytime, the Netscape browser always =
prompts that it cannot find the proxy server. I always need to shift the =
3 settings to try. Strangly, there is always one
setting workable. And I am sure that the 3 proxy servers are function =
(since I have another
machine running Window using the same setting).=20
What is the problem with my linux box?
Thx in advance
Nera
=======_NextPart_000_000D_01C01DEC.13412E20
Content-Type: text/html;
charset="big5"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Dbig5" http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2314.1000" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT color=3D#000000 size=3D2>Hi</FONT></DIV>
<DIV> </DIV>
<DIV><FONT color=3D#000000> I have configured my linux =
box with=20
pppd to my ISP to access the Internet.</FONT></DIV>
<DIV><FONT color=3D#000000>Everything is ok and I successfully connected =
to my ISP=20
using ppp. My ISP needs me</FONT></DIV>
<DIV><FONT color=3D#000000>to configure the browser with proxy setting =
before=20
going out the Internet.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT color=3D#000000>The problem arises here. The ISP provides me =
with 3=20
proxy servers setting and I configure</FONT></DIV>
<DIV><FONT color=3D#000000>my Netscape browser.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT color=3D#000000>When I </FONT><FONT color=3D#000000>connect =
to the=20
Internet everytime, the Netscape browser always prompts that it cannot =
find=20
</FONT><FONT color=3D#000000>the proxy server. I always need to shift =
the 3=20
settings to try. Strangly, there is always one</FONT></DIV>
<DIV><FONT color=3D#000000>setting workable. And I am sure that the 3 =
proxy=20
servers are function (since I have another</FONT></DIV>
<DIV><FONT color=3D#000000>machine running Window using the same =
setting).=20
</FONT></DIV>
<DIV> </DIV>
<DIV><FONT color=3D#000000>What is the problem with my linux =
box?</FONT></DIV>
<DIV> </DIV>
<DIV><FONT color=3D#000000 size=3D2>Thx in advance</FONT></DIV>
<DIV><FONT color=3D#000000>Nera</FONT></DIV>
<DIV> </DIV>
<DIV> </DIV></BODY></HTML>
=======_NextPart_000_000D_01C01DEC.13412E20==
------------------------------
From: "Brice Breeden" <[EMAIL PROTECTED]>
Crossposted-To: comp.os.linux.development.apps
Subject: Re: Atomic functions and user mode
Date: Wed, 13 Sep 2000 13:35:16 -0500
"Kaz Kylheku" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]...
> On Tue, 12 Sep 2000 17:23:25 -0500, Brice Breeden <[EMAIL PROTECTED]>
wrote:
> >Windows has some Interlocked... functions in its
> >API, which support atomic operations.
> >I'm trying to see if Linux has similar functions
> >available in user mode. Could a Linux API similar
>
> There are some functions in the <linux/atomic.h> kernel header that can be
used
> from user mode. The actual contents of this header vary from target
hardware to
> target hardware.
>
> >to:
> >
> > tUInt32 AtomicIncrement32(tUInt32 *cell);
> >
> > tUInt32 AtomicDecrement32(tUInt32 *cell);
> >
> > void* AtomicCompareExchangePtr32(void **cell,
> > void *ExchangeVal,void *CompareVal);
> >
> > tUInt32 AtomicExchangeAdd32(tUInt32 *cell,tUInt32 value);
> >
> > void* AtomicExchangePtr32(void **cell,void *ExchangeVal);
>
> You will find that the equivalents for these functions are not available
on
> Win32 platforms. So you cannot say ``Windows has...'' without qualifying
which
> windows and what functions. Windows CE devices don't have
> InterlockedCompareExchange. Windows 95 has InterlockedIncrement and
> InterlockedDecrement with different semantics from Windows 95 or NT. Then
> there are some new functions that are NT only.
>
I already know this. NT-based Windows is the only decent Windows version
for multi-threading, and Windows 2000 as well. The other versions of Windows
just don't measure up.
> >If there are no similar functions available,
> >who can I submit x86 assembler source to?
> >The glibc team?
>
> My guess would be /dev/null
>
> Glibc already has this type of code in it for internal use. It's likely
that
> the maintainers would not agree to have such functions exposed as public
> library interfaces, and that they would have broad popular support in that
> decision.
I agree with you about some of these functions. Of the five functions I've
listed,
AtomicIncrement would be most important (practically critical for some
apps).
Followed by AtomicDecrement and AtomicExchangeAdd.
The AtomicCompareExchangePtr and AtomicExchangePtr
functions may be beneficial for certain apps. These are rarely needed and
would definitely be scrutinized by any library developer, including me. The
reason being that some atomic pointer-based functions can be used by clever
programmers to create process-local IPC structures. But that's another
topic. :-)
>
> The problem is that only a limited subset of such functions could be
> implemented on all the target hardware. What good is an interface that
doesn't
> work everywhere?
See below
>
> Any successful interface proposal will probably have to make provisions
for
> emulation. That is to say, the atomic type would be abstract, allowing it
to be
> implemented as a struct with extra fields in it to implement a lock on
machines
> that don't have the hardware. E.g.
See below.
>
> typedef unsigned long atomic_t; /* if we have all the hardware */
>
> typedef struct { /* if we don't have the hardware */
> unsigned long __counter;
> pthread_mutex_t __lock;
> } atomic_t;
>
> All the functions would operate on atomic_t's, not directly on types like
> void * or unsigned long.
Your atomic_t type should only contain __lock, which would only be used
by the API if necessary. There are actually two solutions. Let me illustrate
by restating the Atomic API for each solution:
Solution #1:
tUInt32 fastAtomicIncrement32(atomic_t lock,tUInt32 *cell);
tUInt32 fastAtomicDecrement32(atomic_t lock,tUInt32 *cell);
void* fastAtomicCompareExchangePtr32(atomic_t lock,void **cell,
void *ExchangeVal,void *CompareVal);
tUInt32 fastAtomicExchangeAdd32(atomic_t lock,tUInt32 *cell,tUInt32 value);
void* fastAtomicExchangePtr32(atomic_t lock,void **cell,void *ExchangeVal);
Solution #2:
tUInt32 AtomicIncrement32(tUInt32 *cell);
tUInt32 AtomicDecrement32(tUInt32 *cell);
void* AtomicCompareExchangePtr32(void **cell,
void *ExchangeVal,void *CompareVal);
tUInt32 AtomicExchangeAdd32(tUInt32 *cell,tUInt32 value);
void* AtomicExchangePtr32(void **cell,void *ExchangeVal);
Solution #1 assumes that the caller must always pass atomic_t to the API.
If the caller wants to, he could use different atomic_t for different
situations.
This would be more efficient than solution #2, but forces the caller to
create
at least one atomic_t in their process.
Solution #2 creates one instance (a singleton) of the atomic_t in the
process.
This solution forces one atomic_t to be shared between all functions in the
API.
But this sharing comes at a (possible) performance penalty. If a process
makes
heavy use of the API, the lock will become saturated - becoming what I call
a "hotspot". Fortunately, most applications don't use these functions often
enough to worry about hotspots. But I can think of several (such as
databases)
that would really cause problems.
Notice that I prefixed Solution #1 functions with "fast", so that both sets
of
functions could end up in an API. Solution #2 is the most
popular solution, and should be used in the API. Solution #1 could be
included
to such an API, but I would say it's optional. Especially since the latest
(and
most popular) processors have compare-and-swap in their instruction set.
As far as portability is concerned, this is not a problem. Any Atomic...
function
that is not supported by a particular processor can be implemented by
locking the atomic_t.
>
> --
> Any hyperlinks appearing in this article were inserted by the unscrupulous
> operators of a Usenet-to-web gateway, without obtaining the proper
permission
> of the author, who does not endorse any of the linked-to products or
services.
------------------------------
From: [EMAIL PROTECTED]
Crossposted-To: comp.os.minix
Subject: Re: New OS Project
Date: Wed, 13 Sep 2000 18:25:44 GMT
Why not just use Linux? It's easier and more economical than
reinventing the wheel.
Also, why are you interested in NC's and internet terminals,
is your employer trying to produce one?
uwuh
In article <8p5n2a$sdi$[EMAIL PROTECTED]>,
"Gatien Gillon" <[EMAIL PROTECTED]> wrote:
> I was thinking on writing a new Operating System based on Minix 2.0.
The OS
> would be aimed at Internet Terminals and Network Computers.
>
> Here are the expected specifications :
>
> Full multiprogramming (multiple programs can run at once)
> Support for extended memory up to 16M on 286; 4 GB on 386, 486, and
Pentium
> RS-232 serial line support with terminal emulation, kermit, zmodem,
etc.
> Up to 3 simultaneous users on one machine
> Total POSIX compatibility
> Full C source code (OS, utilities, libraries, etc.) supplied
> ANSI C compiler
> Shell that is functionally identical to the Bourne shell
> Networking with TCP/IP
> A GUI and a Web Browser
> Smallest Possible size
> Online manual pages
>
> I'm looking for some help since I not very experienced in OS
programming.
>
> Sorry for my English but I'm French ...
>
>
Sent via Deja.com http://www.deja.com/
Before you buy.
------------------------------
From: [EMAIL PROTECTED]
Subject: sound during system startup (in LILO?)
Date: Wed, 13 Sep 2000 18:40:35 GMT
When a Mac starts up, we hear a pleasant little phooom sound.
When Windows starts up, we hear some chintsy annoying sound.
When Linux starts up, one hears nothing except the hard disk.
Has anyone pursued the idea of, perhaps before kernel
decompression, playing a simple pleasant sound on the PC
speaker using a modification of the PC Speaker Driver's
PCM routine? Doing it in LILO would allow removing it via
an option if the user so desires, and it would also allow
passing musical notes to the PCM routine to play using perhaps
a simple sine-wave.
Even a penguin quack would be nice.
uwuh
Sent via Deja.com http://www.deja.com/
Before you buy.
------------------------------
From: [EMAIL PROTECTED]
Subject: new windowing system
Date: Wed, 13 Sep 2000 18:35:14 GMT
It seems to me that many people are dissatisfied with X Windows.
I myself am one of them. It takes up a lot of memory. It is not
too difficult to code for but is bulky and people say it has
security holes. Has anyone developed an alternative, however?
It seems to me that the fact that X uses sockets is bound to
reduce performance and increase memory use, as well. I myself
have only very rarely run a program on another computer and
displayed the window on my system. Is there any reason why a
simple windowing system cannot exist as a driver?
uwuh
Sent via Deja.com http://www.deja.com/
Before you buy.
------------------------------
** FOR YOUR REFERENCE **
The service address, to which questions about the list itself and requests
to be added to or deleted from it should be directed, is:
Internet: [EMAIL PROTECTED]
You can send mail to the entire list (and comp.os.linux.development.system) via:
Internet: [EMAIL PROTECTED]
Linux may be obtained via one of these FTP sites:
ftp.funet.fi pub/Linux
tsx-11.mit.edu pub/linux
sunsite.unc.edu pub/Linux
End of Linux-Development-System Digest
******************************