Linux-Development-Sys Digest #105, Volume #7     Wed, 25 Aug 99 09:13:58 EDT

Contents:
  Re: glibc-2.1.1 problems (Mike Dowling)
  Re: Accessing user space memory in kernel mode. (Falk Lehmann)
  Re: why not C++? (Stephan Houben)
  Oferta de trabajo (David)
  Configuration Macros (Fernando Ortega)
  Re: Bypass Login (Nick Thomas)
  Re: RAID mirrorset -- rebuild? (Martin Schulz)
  Re: Compiler question (Bartosz Klimek)
  Re: Bypass Login (Bartosz Klimek)
  Re: Help on customizing libc/libgcc/libg++ startup code (Steve Houseman)
  Re: Linux on embedded systems: question on memory footprint (Steve Houseman)

----------------------------------------------------------------------------

From: [EMAIL PROTECTED] (Mike Dowling)
Subject: Re: glibc-2.1.1 problems
Date: 25 Aug 1999 08:51:14 GMT

On 24 Aug 1999 11:59:32 +0200, Andreas Jaeger <[EMAIL PROTECTED]> wrote:
>>>>>> Mike Dowling writes:
>
>Mike> On the Pentium PC, I even had problems compiling glibc.  For a start,
>Mike> the configure script usually could not discern the type of system I had,
>Mike> so I had to include --host=i586-pc-linux-gnu as a parameter to the
>Mike> configure script.  When this happened, the sources would compile, but

>You can run config.guess by hand or with sh -xv to see what goes
>wrong.  I advise to resolve this first.

After installing kernel 2.2.11, these problems disappeared; configure
now always guesses the system type correctly.

>How did you call configure?

./configure --prefix=/usr --disable-nls --with-add-ons=crypt,linuxthreads,localedata

>Mike> All (as far as I can tell) of the libraries are installed before
>Mike> the "make install" crashes with something like
>
>Mike> test ! -x /usr/src/glibc-build/elf/ldconfig | l \
>Mike>      /usr/src/glibc-build/elf/ldconfig -d /lib /usr/lib
>
>Mike> whereupon I get the error message
>
>Mike> /bin/sh: error loading shared libraries:
>Mike>          /bin/sh: undefined symbol: __setfpucw

The supposition was correct; glibc-2.1.1 was now completely installed.
This is the last command of the install script.

>Please try the following:
>- Install into a temporary directory with make install
>  install_root=/tmp/glibc
>- play around in this temporary directory with (see FAQ 3.18):
>  LD_LIBRARY_PATH=/tmp/glibc/lib /tmp/glibc/lib/ld-linux.so.2 /some/binary
>and check if this works - or not.

Done.  The installation process proceeds to the bitter end.  I set the
LD_LIBRARY_PATH, and set the symbolic link for /lib/ld-linux.so.2 to
point to ld-2.1.1.so in the temporary directory.  The effect was exactly
as is was when I installed directly into /lib, namely that virtually all
binaries exit with the undefined symbol: __setfpucw.

>If you're confident that everything is ok, tar/cpio the temporary
>directory to it's permanent place.

Unfortunately, everything was not all right.  The undefined __setfpucw
symbol is a darned nuisance!

What really surprises me is that the two machines that I operate, one at
work, the other at home, should both have the same configurations.
Whatever I install on my work machine, I take home and install at home.
Yet glibc-2.1.1 presented no problems here at work.  Only a handful of
binaries were broken.  At home, virtually everything is broken.

If I could only find some way of having this variable __setfpucw defined
when executing binaries, I'd be very chuffed.  What does it do, anyway?

In time, of course, this __setfpucw problem would disappear; I feel
confident that all I need do is re-compile the binaries with the new
shared libraries.  The only problem is that I do not have the time to
re-compile almost every binary on the system.  In time, though, as new
releases come out, this will happen anyway.  I just need some fudge that
will enable the existing binaries to execute without this __setfpucw
problem.

Any ideas?

Cheers,
  Mike Dowling

-- 
My email address [EMAIL PROTECTED] above is a valid email address.
It is, in fact, a sendmail alias; the digit 'N' is incremented regularly.
Spammed aliases will be deleted.  Currently, mike[5,7-9,12,13,16] have been
deleted.  If email to mikeN bounces, try mikeN+1.

------------------------------

From: Falk Lehmann <[EMAIL PROTECTED]>
Subject: Re: Accessing user space memory in kernel mode.
Date: Wed, 25 Aug 1999 08:31:00 +0200

> On Mon, 16 Aug 1999 11:07:43 GMT, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:

> >Which functions should i use to access user space memory in kernel mode?

>

Read the "The Linux Kernel Module Programming Guide" from LDP for sample code.
If you program for an 2.2 kernel you can use the macros put_user(..) and
get_user(...) which are defined in the header file asm/uaccess.h.

Falk Lehmann
[EMAIL PROTECTED]


------------------------------

From: Stephan Houben <[EMAIL PROTECTED]>
Crossposted-To: comp.os.linux.development.apps,comp.os.linux.misc
Subject: Re: why not C++?
Date: 25 Aug 1999 10:01:08 +0200

Tristan Wibberley <[EMAIL PROTECTED]> writes:

> Johan Kullstam wrote:
> 
> A general operator syntax, now that would be nice :)
> 
> 
>   C = A `x B; // cross product
>   C = A `. B;   // dot product

Caml has something like that. An infix operator in Caml is just an identfier
which starts with one of:

=<>@^|&+-*/$%

, followed by zero of more occurences of the following characters:

!$%&*+-./:<=>?@^|~

So you can define and redefine your own infix operators at will. 
Normal scoping rules apply.

Greetings,

Stephan

------------------------------

From: [EMAIL PROTECTED] (David)
Crossposted-To: 
comp.os.linux.development.apps,comp.os.linux.hardware,comp.os.linux.m68k,comp.os.linux.misc,comp.os.linux.networking,comp.os.linux.portable,comp.os.linux.powerpc,comp.os.linux.security,comp.os.linux.setup
Subject: Oferta de trabajo
Date: Wed, 25 Aug 1999 09:52:14 GMT


Estamos buscando una persona con amplios conocimientos en Linux, PHP, etc.. 
para incorporaci�n inmediata a puesto de administrador Linux y desarrollo 
paginas web.


Preferentemente personas de la zona (Espa�a, Castell�n)


[EMAIL PROTECTED]

------------------------------

From: Fernando Ortega <[EMAIL PROTECTED]>
Subject: Configuration Macros
Date: Wed, 25 Aug 1999 12:05:31 +0200

Where do I have to insert my own define.

Example, I want to have something like:

#define FORTEGA_MODULE, so that in my code I can use it the same way than

#ifdef CONFIG_KERNELD
.....
#endif

Can I do it in "linux/autoconf.h" and just recompile it?, or there is
another place to put it?


Thanks in advance, Fernando
--
Fernando Ortega Bellosta
[EMAIL PROTECTED]


------------------------------

From: Nick Thomas <[EMAIL PROTECTED]>
Crossposted-To: 
comp.os.linux.development.apps,comp.os.linux.misc,de.comp.os.linux,jaring.os.linux
Subject: Re: Bypass Login
Date: Wed, 25 Aug 1999 11:06:20 +0100

In article <7pvlqf$1e5$[EMAIL PROTECTED]>, stan168
<[EMAIL PROTECTED]> writes
>Hi,
>    Is there anyway to bypass the login session and straight away run my
>application after linux started? Also is there anyway to start my app
>without starting the window manager after the X Windows started?
>
>My situation is just to start only my application for the user to use and
>prevent the user to mess around with others after booting the system.
>
>Any help will be appreciate, have a nice day.
>
>

Look at the /etc/inittab file.
It describes what programs run at which run levels.
You can disable the login program on the default virtual terminal
and run your program instead.

The user could still use Alt-F2 to get to another login prompt.

Hope this helps.

Regards

Nick Thomas.
-- 
Nick Thomas
Software Developer
Advanced Control Systems Ltd
Email: [EMAIL PROTECTED]
WWW: http://www.advcontl.demon.co.uk

------------------------------

From: Martin Schulz <[EMAIL PROTECTED]>
Subject: Re: RAID mirrorset -- rebuild?
Date: 25 Aug 1999 12:48:59 +0200

"Ted Pavlic" <[EMAIL PROTECTED]> writes:

> Linux 2.2.x doesn't use ckraid anymore. ckraid is obsolete. All the resync
> happens in the kernel. (the newest raidtools (0.90) don't even provide
> documentation for anything but mkraid)

Yes, but I had some serious trouble with it, Namely, after some error
the recovery therad obviously reconstructs the state of about 2 days old.

The goal is to mirror 2 disks for safty, so my setup is as follows:

raiddev                 /dev/md0
raid-level              1

nr-raid-disks           2
nr-spare-disks          0

chunk-size              16
persistent-superblock   1

device                  /dev/sdc1
raid-disk               0

device                  /dev/sdd1
raid-disk               1


The machine is a Pentium II 400 Mhz with 256MB in a Asus P2BS with
onboard u2W scsi and u2w disks, running Redhat linux 6.2, kernel
2.2.5-22 and raidtools-0.90-3.

To tell the story, some dys ago, there appeared an obscure IO error
during the backup session to the (also scsi-) tape:


Aug 23 02:04:26 iwr01 kernel: attempt to access beyond end of device 
Aug 23 02:04:26 iwr01 kernel: 08:21: rw=0, want=1160838069, limit=8924076 
Aug 23 02:04:26 iwr01 kernel: raid1: Disk failure on sdc1, disabling device.  
Aug 23 02:04:26 iwr01 kernel:        Operation continuing on 1 devices 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: rescheduling block 3308321716 
Aug 23 02:04:26 iwr01 kernel: attempt to access beyond end of device 
Aug 23 02:04:26 iwr01 kernel: 08:31: rw=0, want=1279355907, limit=8924076 
Aug 23 02:04:26 iwr01 kernel: raid1: only one disk left and IO error. 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: rescheduling block 3426839554 
Aug 23 02:04:26 iwr01 kernel: attempt to access beyond end of device 
Aug 23 02:04:26 iwr01 kernel: 08:31: rw=0, want=2066135804, limit=8924076 
Aug 23 02:04:26 iwr01 kernel: raid1: only one disk left and IO error. 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: rescheduling block 2066135803 
Aug 23 02:04:26 iwr01 kernel: md: recovery thread got woken up ... 
Aug 23 02:04:26 iwr01 kernel: md0: no spare disk to reconstruct array! -- continuing 
in degraded mode 
Aug 23 02:04:26 iwr01 kernel: md: recovery thread finished ... 
Aug 23 02:04:26 iwr01 kernel: dirty sb detected, updating. 
Aug 23 02:04:26 iwr01 kernel: md: updating md0 RAID superblock on device 
Aug 23 02:04:26 iwr01 kernel: (skipping faulty sdd1 ) 
Aug 23 02:04:26 iwr01 kernel: (skipping faulty sdc1 ) 
Aug 23 02:04:26 iwr01 kernel: . 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: unrecoverable I/O read error for block 
2066135803 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: unrecoverable I/O read error for block 
3426839554 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: redirecting sector 3308321716 to another 
mirror 
Aug 23 02:04:26 iwr01 kernel: attempt to access beyond end of device 
Aug 23 02:04:26 iwr01 kernel: 08:31: rw=0, want=1160838069, limit=8924076 
Aug 23 02:04:26 iwr01 kernel: raid1: only one disk left and IO error. 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: rescheduling block 3308321716 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: unrecoverable I/O read error for block 
3308321716 
Aug 23 02:04:26 iwr01 kernel: md: recovery thread got woken up ... 
Aug 23 02:04:26 iwr01 kernel: md0: no spare disk to reconstruct array! -- continuing 
in degraded mode 
Aug 23 02:04:26 iwr01 kernel: md: recovery thread finished ... 
Aug 23 02:04:26 iwr01 kernel: attempt to access beyond end of device 
Aug 23 02:04:26 iwr01 kernel: 08:31: rw=0, want=1160838069, limit=8924076 
Aug 23 02:04:26 iwr01 kernel: raid1: only one disk left and IO error. 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: rescheduling block 3308321716 
Aug 23 02:04:26 iwr01 kernel: attempt to access beyond end of device 
Aug 23 02:04:26 iwr01 kernel: 08:31: rw=0, want=1279355907, limit=8924076 
Aug 23 02:04:26 iwr01 kernel: raid1: only one disk left and IO error. 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: rescheduling block 3426839554 
Aug 23 02:04:26 iwr01 kernel: attempt to access beyond end of device 
Aug 23 02:04:26 iwr01 kernel: 08:31: rw=0, want=2066135804, limit=8924076 
Aug 23 02:04:26 iwr01 kernel: raid1: only one disk left and IO error. 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: rescheduling block 2066135803 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: unrecoverable I/O read error for block 
2066135803 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: unrecoverable I/O read error for block 
3426839554 
Aug 23 02:04:26 iwr01 kernel: raid1: md0: unrecoverable I/O read error for block 
3308321716 
Aug 23 02:04:26 iwr01 kernel: md: recovery thread got woken up ... 
Aug 23 02:04:26 iwr01 kernel: md0: no spare disk to reconstruct array! -- continuing 
in degraded mode 
Aug 23 02:04:26 iwr01 kernel: md: recovery thread finished ... 


I interpreted this so that the error was induced by something else
than a defective disk, but maybe some corruption in the file system
(therefore seek for a nonexisting block, therefore failing on both
disks, therefore marking both defective...).

So I decided to umount the filesystem and stop the raid:


Aug 24 10:48:32 iwr01 kernel: interrupting MD-thread pid 70 
Aug 24 10:48:32 iwr01 kernel:   raid1d(70) flushing signals. 
Aug 24 10:48:32 iwr01 kernel: marking sb clean... 
Aug 24 10:48:32 iwr01 kernel: md: updating md0 RAID superblock on device 
Aug 24 10:48:32 iwr01 kernel: (skipping faulty sdd1 ) 
Aug 24 10:48:32 iwr01 kernel: (skipping faulty sdc1 ) 
Aug 24 10:48:32 iwr01 kernel: . 
Aug 24 10:48:32 iwr01 kernel: unbind<sdd1,1> 
Aug 24 10:48:32 iwr01 kernel: export_rdev(sdd1) 
Aug 24 10:48:32 iwr01 kernel: unbind<sdc1,0> 
Aug 24 10:48:32 iwr01 kernel: export_rdev(sdc1) 
Aug 24 10:48:32 iwr01 kernel: md0 stopped. 


And afterwards restart it:


Aug 24 10:48:38 iwr01 kernel: (read) sdc1's sb offset: 8923968 [events: 0000004d] 
Aug 24 10:48:38 iwr01 kernel: (read) sdd1's sb offset: 8923968 [events: 0000004d] 
Aug 24 10:48:38 iwr01 kernel: autorun ... 
Aug 24 10:48:38 iwr01 kernel: considering sdd1 ... 
Aug 24 10:48:38 iwr01 kernel:   adding sdd1 ... 
Aug 24 10:48:38 iwr01 kernel:   adding sdc1 ... 
Aug 24 10:48:38 iwr01 kernel: created md0 
Aug 24 10:48:38 iwr01 kernel: bind<sdc1,1> 
Aug 24 10:48:38 iwr01 kernel: bind<sdd1,2> 
Aug 24 10:48:38 iwr01 kernel: running: <sdd1><sdc1> 
Aug 24 10:48:38 iwr01 kernel: now! 
Aug 24 10:48:38 iwr01 kernel: sdd1's event counter: 0000004d 
Aug 24 10:48:38 iwr01 kernel: sdc1's event counter: 0000004d 
Aug 24 10:48:38 iwr01 kernel: md: md0: raid array is not clean -- starting background 
reconstruction 
Aug 24 10:48:38 iwr01 kernel: md0: max total readahead window set to 128k 
Aug 24 10:48:38 iwr01 kernel: md0: 1 data-disks, max readahead per data-disk: 128k 
Aug 24 10:48:38 iwr01 kernel: raid1: device sdd1 operational as mirror 1 
Aug 24 10:48:38 iwr01 kernel: raid1: device sdc1 operational as mirror 0 
Aug 24 10:48:38 iwr01 kernel: raid1: raid set md0 not clean; reconstructing mirrors 
Aug 24 10:48:38 iwr01 kernel: raid1: raid set md0 active with 2 out of 2 mirrors
Aug 24 10:48:38 iwr01 kernel: md: updating md0 RAID superblock on device 
Aug 24 10:48:38 iwr01 kernel: sdd1 [events: 0000004e](write) sdd1's sb offset: 8923968 
Aug 24 10:48:38 iwr01 kernel: md: syncing RAID array md0 
Aug 24 10:48:38 iwr01 kernel: md: minimum _guaranteed_ reconstruction speed: 100 
KB/sec. 
Aug 24 10:48:38 iwr01 kernel: md: using maximum available idle IO bandwith for 
reconstruction. 
Aug 24 10:48:38 iwr01 kernel: md: using 128k window. 
Aug 24 10:48:38 iwr01 kernel: sdc1 [events: 0000004e](write) sdc1's sb offset: 8923968 
Aug 24 10:48:38 iwr01 kernel: . 
Aug 24 10:48:38 iwr01 kernel: ... autorun DONE. 



This method was quite comfortable but left me with the state of the
disk of about 2 days older. That is what I definitely do not want! I
had to restore the data from backup tape etc. 

How can I assure that all data is written physically on the disks
within few seconds, so that the state of the disks is (at least
nearly) consistent to what one might expect it to be? (2 Minutes do
not matter, 2 days do.)

update (bdflush) is running on that machine, so I do not expect the cause to be
some unflushed kernel buffer.


The disks did not produce any new errors up to now, so they do not
seem to be physically damaged.

Any comments, hints? Corrections or similar experiences welcome....


BTW: is there a more appropriate group around here?
-- 
Martin Schulz                             [EMAIL PROTECTED]
Uni Karlsruhe, Institut f. wissenschaftliches Rechnen u. math. Modellbildung
Engesser Str. 6, 76128 Karlsruhe

------------------------------

From: Bartosz Klimek <[EMAIL PROTECTED]>
Subject: Re: Compiler question
Date: Wed, 25 Aug 1999 10:51:01 GMT

Fernando Ortega Bellosta wrote:
> 
> What does it mean for the compiler something like:
> 
> void (*function)(parameters);

This defines variable "function" as a pointer to a function that returns
nothing and takes "parameters" as its parameters.

> 
> I found that doing this I can insert my own function (from my module) in
> the kernel code, and it works.
> 
> There is an example in the file "net/ipv4/af_inet" , where the function
> "rarp_ioctl_hook" from the "rarp"module is used.

I looked into the file you mention. rarp_ioctl_hook is a global variable
(a pointer, not a function, strictly speaking). It is initialized to
NULL. Then it may be set somewhere in the code to point to some
function.

Hope it'll help.

Good luck,

-- 
Bartosz Klimek
mailto:[EMAIL PROTECTED]

------------------------------

From: Bartosz Klimek <[EMAIL PROTECTED]>
Crossposted-To: 
comp.os.linux.development.apps,comp.os.linux.misc,de.comp.os.linux,jaring.os.linux
Subject: Re: Bypass Login
Date: Wed, 25 Aug 1999 10:50:58 GMT

stan168 wrote:
>     Is there anyway to bypass the login session and straight away run my
> application after linux started? Also is there anyway to start my app
> without starting the window manager after the X Windows started?
> 
> My situation is just to start only my application for the user to use and
> prevent the user to mess around with others after booting the system.

It's all possible. This is what we like about Linux :)

Have a look at /etc/inittab. You can modify it so that it runs your
script after system starts up. In my system the last line of the file
is:

x:5:respawn:/etc/X11/prefdm -nodaemon

You could change it to (e.g.):

x:5:respawn:/etc/X11/my_script

/etc/X11/my_script would start X11 and then your application.

However, I think it would nice to modify the X11 startup scripts so that
your app is started instead of a window manager.

This is just an idea. Maybe there is some more elegant solution. 

Good luck,

-- 
Bartosz Klimek
mailto:[EMAIL PROTECTED]

------------------------------

From: [EMAIL PROTECTED] (Steve Houseman)
Crossposted-To: gnu.gcc.help,comp.os.linux.development.apps
Subject: Re: Help on customizing libc/libgcc/libg++ startup code
Date: Wed, 25 Aug 1999 07:49:22 +0000

Hello Marco,
The real startup code for gcc is in crt0.o and in simly named stuff
#  locate crt    will turn up the items (plus a pile of other rubbish).
A process is always (?) started from a fork , and with one of the
exec variants to run the appn.
This will load the code etc and then (I believe) call _start 
which is probably in crt0 and I guess that that just calls
the main with its args .
The env can/should be passed using the getenv() rather than in the main
so is less of a problem (ie dont need
main(int argc,char *argv[],char *envp[]) only
main(int argc,char *argv[])  ).

The exit is just a call to the kernel exit ... by experiment
if dont link exit then it gives a seg violation ...
presumably when it tries to return from main and pops an empty stack.
(see other post for more details).

Cheers,
Steve Houseman

-- 
                          
currently  steve.houseman at virgin net 

------------------------------

From: [EMAIL PROTECTED] (Steve Houseman)
Crossposted-To: comp.os.linux.development.apps,comp.os.linux.help
Subject: Re: Linux on embedded systems: question on memory footprint
Date: Wed, 25 Aug 1999 07:44:08 +0000

Hello Marco ,
You may have already reached the same conclusions by now, but
I have had the use of linux in embedded systems at the back
of my mind for a while and so I had a poke into this
(describes the level of my understanding :-)

I did a trivial prog simlr to yours , and have dropped the
sleep()  and just put in a long loop .
compiled it and indeed get  (using top) ....
 PID USER     PRI  NI  SIZE  RSS SHARE STAT  LIB %CPU %MEM   TIME COMMAND
 1505 steve     16   0   188  188   136 R       0 46.4  0.4   0:02 zz6

If do without libraries by skipping the entry and exits using ...
#include <unistd.h>
int main ()
{
  int  i ;
  volatile int  k ;
  for(i=0;i<100000000;i++) { // a loop instead of a sleep
     k = i ;
  }
  return 1;
}
int  _start(int argc,char  *argv[]) {
   _exit(main());
}
and compiling
gcc -c /usr/src/libc5.4.44/libc/sysdeps/linux/i386/libc_exit.c
which is the real exit  and linking with
gcc -o zz6  -static -nostdlib zz6.o libc_exit.o
gives
-rwxr-xr-x   1 steve    users        1183 Aug 24 16:59 zz6
 PID USER     PRI  NI  SIZE  RSS SHARE STAT  LIB %CPU %MEM   TIME COMMAND
 1523 steve     17   0    12   12     4 R       0 33.0  0.0   0:01 zz6

Playing around (a dangerous thing) with linking shows that when
a (shared) library is linked and something is needed , then the whole
shebang is loaded not just the fn you want , so I *believe* that
the RSS  reported by top is just the data segment of the prog
with all the  lib vars in it (libc is much larger than that) ??
I could be wrong on this and would welcome comments and urls for this.

So if you have a small app not linked with other code
and which  only used a small seg of lib c , then could
extract the bits from the libc source and compile them,
and link them as above .
(I dont know the licence aspects of this though.)
As someone posted recently on a similar topic,
there are potential problems if calling other code eg a database
client or maybe even X as they would expect libc to be available.

Just as a check, I extracted the write code out of the libc
(what a mangled mechanism to disguise the calls ! )
and linked that in ... ie put a small write of a string to stdout,
which worked. This also shows the same size as above (as expected).

Just experimented with an extended sleep , and run up a few
netscapes so am using 20Mb of 100Mb swap partition and left
running for a while, but the RSS size of zz6 does not come down
and I dont believe that it is using actively  192 kb ...
on a real unix <ducks> this would have disappeared ie would
have been paged out and the RSS value would have gone
almost to zero ...  so linux does not seem to do its
paging correctly (or at least the same as other unices ... pity).

Cheers,
Steve Houseman

-- 
                          
currently  steve.houseman at virgin net 

------------------------------


** 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
******************************

Reply via email to