12586 lines
511 KiB
Plaintext
12586 lines
511 KiB
Plaintext
Linus Torvalds Posts on comp.os.linux
|
|
Searched Groups for group:comp.os.linux author:Linus author:Torvalds.
|
|
Results 401 - 434 of 434.
|
|
===============================================
|
|
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: HD timeout Errors (with .95a)
|
|
Keywords: IDE
|
|
Message-ID: <1992Apr3.144129.15122@klaava.Helsinki.FI>
|
|
Date: 3 Apr 92 14:41:29 GMT
|
|
References: <1992Apr3.030517.29450@afterlife.ncsc.mil>
|
|
Organization: University of Helsinki
|
|
Lines: 25
|
|
|
|
|
|
In article <1992Apr3.030517.29450@afterlife.ncsc.mil> sdbaker@afterlife.ncsc.mil (Stewart Baker) writes:
|
|
>Is there anyone else having problems with their disk in .95a?
|
|
> [ description deleted ]
|
|
|
|
I'm afraid there are people still having problems with the 0.95a
|
|
harddisk drivers: the problems show up in "unexpected HD interrupt" and
|
|
"HD timeout" messages. These messages sometimes result in read-errors,
|
|
it seems: general protection errors and sometimes even bad filesystems.
|
|
|
|
I'll make a new alpha-patch available tomorrow, which has some
|
|
corrections to the harddisk driver: they aren't guaranteed to help you,
|
|
but I hope the few persons experiencing these errors will try them out
|
|
and report to me what happened.
|
|
|
|
The upcoming alpha-patches will also contain other corrections: the
|
|
387-emulation had bugs (corrections were already sent to the gcc-2
|
|
beta-testers) and there has been some further work done on the VFS-code
|
|
(thanks to entropy and card) as well as some other corrections (hedrick,
|
|
bruce evans etc pointed out bugs..)
|
|
|
|
I'm afraid the patches will be against a clean 0.95a once more: people
|
|
with other patches might have problems. The ps-patches are incorporated,
|
|
btw.
|
|
|
|
Linus
|
|
|
|
=================================
|
|
=================================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Help, can't compile 0.95a!
|
|
Message-ID: <1992Apr3.212741.3018@klaava.Helsinki.FI>
|
|
Date: 3 Apr 92 21:27:41 GMT
|
|
References: <1192@lysator.liu.se> <magister.702263905@garfield.catt.ncsu.edu> <03.04.92.020516.223@cogsci.cog.jhu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 44
|
|
|
|
|
|
In article <03.04.92.020516.223@cogsci.cog.jhu.edu> wjb@cogsci.cog.jhu.edu (Bill Bogstad) writes:
|
|
>
|
|
> I have a 8 Meg system and also am having problems compiling fork.c.
|
|
>I would have thought that would have been sufficient....
|
|
|
|
Ok, the problem isn't memory: it's gcc-1.40. For some strange reason
|
|
the older gcc runs out of registers when optimizing some of the files in
|
|
the linux source distribution, and dies. This one isn't the same bug as
|
|
the "unknown insn" which was due to my hacks in the earlier 1.40 - this
|
|
one seems to be a genuine gcc bug.
|
|
|
|
Linux 0.95a is compileable with the older gcc if you just add the flag
|
|
"-fcombine-regs" to the command line. In fact, the only thing you need
|
|
to do is to remove a "#" from the makefiles: the line
|
|
|
|
#GCC_OPT = -fcombine-regs
|
|
|
|
should be uncommented, and gcc-1.40 will have no problems compiling the
|
|
source. This was documented in some of the release-notes for 0.95, but
|
|
I guess I forgot it for 0.95a.
|
|
|
|
Why remove the flag in the first place I hear you say? Simply because
|
|
gcc-2 doesn't understand -fcombine-regs, as it seems to do the
|
|
optimizations even without asking. There are other things I had to
|
|
change in the source to get gcc-2 to compile it, but this is the only
|
|
problem that made the old gcc choke.
|
|
|
|
With the advent of an official gcc-2.1 (this weekend?), people might
|
|
want to change to that one: note however that gcc-2.1 is about twice as
|
|
big as 1.40, so it's going to be slower on machines that swap... People
|
|
with just 2M of mem might not want to upgrade (*). I like the changes
|
|
to 2.1: the code quality seems to be a lot better (esp floating point).
|
|
|
|
On a slightly related note: the as-binary in newgcc has been reported by
|
|
several people to have problems. Getting as from the original
|
|
gcc-distribution by me (gccbin.tar.Z) might be a good idea if you have
|
|
problems with the newgcc version.
|
|
|
|
Linus
|
|
|
|
(*) Even with only 2M of mem, using gcc-2 has it's good points. The
|
|
shared libraries should cut down on memory use as well as loading time
|
|
and disk-space use. Shared libraries work even with 1.40 if you know how
|
|
to build them, but 2.1 does it all automatically...
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: What is linux?
|
|
Keywords: linux
|
|
Message-ID: <1992Apr3.214400.3551@klaava.Helsinki.FI>
|
|
Date: 3 Apr 92 21:44:00 GMT
|
|
References: <1992Apr1.182702.8464@colorado.edu> <1992Apr02.135130.26689@watson.ibm.com> <IMHW400.3@INDYVAX.IUPUI.EDU>
|
|
Organization: University of Helsinki
|
|
Lines: 28
|
|
|
|
|
|
In article <IMHW400.3@INDYVAX.IUPUI.EDU> IMHW400@INDYVAX.IUPUI.EDU (Mark H. Wood) writes:
|
|
>In article <1992Apr02.135130.26689@watson.ibm.com> lpickup@xanadu.btv.ibm.com (Lance Pickup) writes:
|
|
>
|
|
>>While not part of the original question, it's worth mentioning that
|
|
>>Linux requires an ISA bus--no MCA )-;
|
|
>
|
|
>Is this just because nobody's done it, or LINUX' structure would make it too
|
|
>difficult, or is it a matter of principle :-) ? Seriously, if anybody is
|
|
>working on MCA mods, I'd like to know. If not, I may take a stab at it
|
|
>myself, so my poor underemployed PS/2 can have a real operating system, in
|
|
>addition to MeSs-DOS.
|
|
|
|
It's not due to some internal linux-design: linux does count on a 386+
|
|
processor, but there isn't any heavy kernel dependancy on the AT-bus.
|
|
HOWEVER: most device driver will probably have to be changed to some
|
|
degree, but I haven't got the slightest idea of what is needed.
|
|
|
|
The minimum needed to make a PS/2 port is a very thorough knowledge of
|
|
the interrupt and IO system of the MCA systems, as well as patience and
|
|
a feel for kernel programming (debugging is /hell/ when nothing works -
|
|
no debugger I know of can follow the code from real mode to protected
|
|
mode and paging-setup etc - you'd probably need an emulator). I can
|
|
help with questions about the current code, but I have /no/ idea of what
|
|
the microchannel architecture changed with respect to the ISA standard,
|
|
so you are essentially on your own in that respect. I assume DMA, A20
|
|
etc have changed - I know the keyboard seems to work differently etc...
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Since I haven't seen an FAQ...
|
|
Message-ID: <1992Apr4.102225.13174@klaava.Helsinki.FI>
|
|
Date: 4 Apr 92 10:22:25 GMT
|
|
References: <1992Apr3.190450.28708@pony.Ingres.COM>
|
|
Organization: University of Helsinki
|
|
Lines: 138
|
|
|
|
|
|
In article <1992Apr3.190450.28708@pony.Ingres.COM> sergio@Ingres.COM (Sergio L Aponte) writes:
|
|
>
|
|
> Can somebody give me a two-three liner description of what is LINUX
|
|
> and what hardware it runs on?
|
|
|
|
Ok, this has come up so many times I'd better send out the info-sheet.
|
|
The FAQ is maintained by corsini@?? and he'll send out the newest
|
|
version just as soon as this newsgroup gets that far.
|
|
|
|
This info-sheet is basically the old 0.12 info-sheet with very minor
|
|
modifications: I've changed it slightly, but it's not completely up to
|
|
date.
|
|
|
|
Linus
|
|
|
|
----------
|
|
|
|
|
|
LINUX INFORMATION SHEET
|
|
(last updated 13 Jan 1992 (with changes by Linus 4.4.92))
|
|
|
|
1. WHAT IS LINUX 0.95a
|
|
LINUX 0.95a is a freely distributable UNIX clone. It implements a
|
|
subset of System V and POSIX functionality. LINUX has been written
|
|
from scratch, and therefore does not contain any AT&T or MINIX
|
|
code--not in the kernel, the compiler, the utilities, or the libraries.
|
|
For this reason it can be made available with complete source code by
|
|
anonymous FTP. LINUX runs only on 386/486 AT-bus machines; porting to
|
|
non-Intel architectures is likely to be difficult, as the kernel makes
|
|
extensive use of 386 memory management and task primitives.
|
|
|
|
Version 0.95a is still a beta release, but it already provides much
|
|
of the functionality of a System V.3 kernel. For example, various
|
|
users have been able to port programs such as bison/flex without having
|
|
to modify code at all. Another indication of its maturity is that
|
|
it is now possible to do LINUX kernel development using LINUX itself
|
|
and freely-available programming tools.
|
|
|
|
2. LINUX features
|
|
- System call compatible with a subset of System V and POSIX
|
|
- Full multiprogramming (multiple programs can run at once)
|
|
- Memory paging with copy-on-write
|
|
- Demand loading of executables
|
|
- Page sharing of executables
|
|
- Virtual memory: swapping to disk when out of RAM
|
|
- POSIX job control
|
|
- virtual consoles
|
|
- pty's
|
|
- some 387-emulation
|
|
- ANSI compliant C compiler (gcc)
|
|
- A complete set of compiler writing tools
|
|
(bison as yacc-replacement, flex as lex replacement)
|
|
- The GNU 'Bourne again' shell (bash) (as well as 'ash', 'rc' etc)
|
|
- Micro emacs
|
|
- most utilities you need for development
|
|
(cat, cp, kermit, ls, make, etc.)
|
|
- Over 200 library procedures (atoi, fork, malloc, read, stdio, etc.)
|
|
- Currently 6 national keyboards: Finnish/US/German/French/British/Danish
|
|
- Full source code (in C) for the OS is freely distributable
|
|
- Full source code of the tools can be gotten from many anonymous ftp sites
|
|
(Almost the entire suite of GNU programs has been ported to Linux.)
|
|
- Runs in protected mode on 386 and above
|
|
- Support for extended memory up to 16M on 386 and above
|
|
- RS-232 serial line support with terminal emulation, kermit, zmodem, etc.
|
|
- Supports the real time clock
|
|
|
|
|
|
3. HARDWARE REQUIRED
|
|
- A 386 or 486 machine with an AT-bus. (EISA will probably work, also,
|
|
but you will need an AT-bus hard disk controller.) Both DX and SX
|
|
processors will work.
|
|
- A hard disk implementing the standard AT hard disk interface -- for
|
|
example, an IDE drive. In addition, some SCSI drives are supported
|
|
with additional kernel patches.
|
|
- A high-density disk drive--either 5.25" (1.2MB) or 3.5" (1.44MB).
|
|
- At least 2 megabytes of RAM. (LINUX will boot in 2 Mb. To use gcc
|
|
4 MB is a good idea.)
|
|
- Any video card of the following: Hercules,CGA,EGA,VGA
|
|
|
|
In addition, LINUX supports
|
|
- Up to four serial lines (2 active at a time)
|
|
- A real time clock
|
|
|
|
4. PARTIAL LIST OF UTILITIES INCLUDED IN OR AVAILABLE FOR LINUX 0.95a
|
|
- The MTOOLS package (reading/writing to DOS filesystems)
|
|
- The complete GNU filetools (ls, cat, cp, mv, ...)
|
|
- The GNU C and C++ compiler with GNU assembler, linker, ar, ...
|
|
- bison
|
|
- flex
|
|
- rcs
|
|
- pmake (BSD 4.3 Reno/BSD 4.4 make)
|
|
- kermit
|
|
- Micro emacs
|
|
- less
|
|
- mkfs
|
|
- fsck
|
|
- mount/umount
|
|
- TeX, dvips
|
|
- and lots more...
|
|
|
|
5. LINUX BINARIES
|
|
The LINUX binaries and sources are available at several different
|
|
anonymous FTP sites. The biggest are:
|
|
|
|
nic.funet.fi:/pub/OS/Linux
|
|
tsx-11.mit.edu:/pub/linux
|
|
|
|
|
|
6. LEGAL STATUS OF LINUX
|
|
Although LINUX is supplied with the complete source code, it is
|
|
copyrighted software. Unlike MINIX, however, it is available for free,
|
|
provided you obey to the rules specified in the LINUX copyright.
|
|
|
|
Linux is (C) Linus Torvalds, but the copyright is the GNU copyleft:
|
|
get a copy of the copyleft at your nearest ftp-archive..
|
|
|
|
7. NEWS ABOUT LINUX
|
|
There are now two newsgroups devoted to linux articles: an older
|
|
alt.os.linux and the new comp.os.linux group. The alt-group will be
|
|
phased out as the comp-group gets a wider propagation. Additionally,
|
|
there are a couple of mailing-lists: linux-activists@niksula.hut.fi is
|
|
the original mailing-list, and it now supports sub-threads (notably the
|
|
gcc-2 beta-testing list). There is also a linux-standards mailing list
|
|
as well as a newsgroup-service for those that can get mail but are
|
|
unable to read the newsgroups. For the current status of LINUX, do a
|
|
"finger torvalds@kruuna.helsinki.fi".
|
|
|
|
|
|
8. FUTURE PLANS
|
|
Work is underway on LINUX version 1.0, which will close some of the
|
|
gaps in the present implementation. Various people are currently working
|
|
on:
|
|
- A more complete virtual filesystem layer
|
|
- STREAMS
|
|
- Interprocess communication
|
|
- IEEE POSIX P1003.1 / P1003.2 compatibility
|
|
- more complete SCSI support
|
|
If you want to help, mail the various activists or post to the newsgroups.
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux,alt.os.linux
|
|
Subject: Re: Second 0.95a alpha-patch
|
|
Summary: include-file changes
|
|
Message-ID: <1992Apr5.174430.17408@klaava.Helsinki.FI>
|
|
Date: 5 Apr 92 17:44:30 GMT
|
|
References: <1992Apr4.144210.17833@klaava.Helsinki.FI>
|
|
Organization: University of Helsinki
|
|
Lines: 51
|
|
|
|
|
|
I forgot to mention some of the changes this alpha-patch brings to the
|
|
user: the kernel include-files have been slightly changed in a couple of
|
|
cases, which can result in unexpected behaviour...
|
|
|
|
a.out.h is now the latest GNU a.out.h, and it seems to have slightly
|
|
different magic-number handling than the original 386-minix version I
|
|
used for older versions. Without recompiling the kernel with the new
|
|
a.out.h, programs linked with the new binutils will not run (unable to
|
|
execute binary file errors). This just means that even if you don't use
|
|
the patch in any other capacity, you had better upgrade to the new
|
|
a.out.h, or newer programs won't necessarily run. Right now there are
|
|
no such binaries available, but when gcc2 gets more used, they will show
|
|
up.
|
|
|
|
The other change is that limits.h and sys/dirent.h are now part of the
|
|
kernel include-files: they were needed for the readdir() system call.
|
|
Normally this wouldn't change anything, but there is also a slight
|
|
change in limits.h - NAME_MAX is now defined to be 255 so that linux
|
|
will eventually handle filesystems with longer names than 14 chars.
|
|
This means that the old direntry-routines in the library won't compile
|
|
correctly, as they depended on NAME_MAX being the size of a directory
|
|
name. I hope the gcc-2 library won't have this problem, and that we can
|
|
move over to the more general readdir-function without undue growing
|
|
pains.
|
|
|
|
The a.out.h change was made just to minimize the differences between the
|
|
linux headers and the library headers - but the second change is pretty
|
|
fundamental. If you are porting software with the old libraries, I'd
|
|
suggest keeping to the old limits.h in /usr/include - that way nothing
|
|
should break until we get non-minix filesystems. Adventurous people
|
|
might want to test out the new kernel functions that will be supported
|
|
even with new filesystems.
|
|
|
|
In case anyone is wondering why the NAME_MAX change is needed, it's due
|
|
to the fact that the old /library/ readdir only handled a 14-char
|
|
library entry. When the VFS code is enhanced to allow different
|
|
filesystems, you no longer can depend on this, and the library routine
|
|
wouldn't know what type of directory it's supposed to read - so the code
|
|
has to be moved into the kernel which knows about these things. The new
|
|
readdir() will work correctly independently of the underlying filesystem
|
|
(so that you can freely mix different filesystems without needing to
|
|
bother about it).
|
|
|
|
I'm sorry all this is certain to cause it's share of confusion (using
|
|
the old library with the new NAME_MAX and vice versa), but there wasn't
|
|
any graceful way to handle it all - unless I would have anticipated
|
|
these problems from the start, which I didn't... You can console
|
|
yourselves with the thought that linux should be able to handle longer
|
|
filenames and >64MB partitions within a couple of releases.
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: linux-0.95c known bugs
|
|
Summary: well, it was alpha...
|
|
Message-ID: <1992Apr8.090321.7673@klaava.Helsinki.FI>
|
|
Date: 8 Apr 92 09:03:21 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 58
|
|
|
|
|
|
Well, only one known bug so far, but a couple of problems. I thought I'd
|
|
mention them before anyone else does, and we'll call them "features" :^)
|
|
|
|
The BUG:
|
|
|
|
when using the readdir() system call, linux incorrectly doesn't let go
|
|
of the last buffer used for reading: this results in the buffer being
|
|
marked as used (and if you use readdir() heavily, the counter will
|
|
eventually wrap around, which might result in incorrect marking as
|
|
"not used"). This bug happily isn't easy to find: no current binary
|
|
uses the readdir() system call unless you have gotten your hands on
|
|
the new VFS gcc-2.1 release. Thanks to Remy Card for finding this
|
|
one.
|
|
|
|
Not too bad a bug though: the fix is very easy. Add a 'brelse(bh);'
|
|
in the minix_readdir() function, like this:
|
|
|
|
if (i) {
|
|
put_fs_long(de->inode,&dirent->d_ino);
|
|
put_fs_byte(0,i+dirent->d_name);
|
|
put_fs_word(i,&dirent->d_reclen);
|
|
return i;
|
|
|
|
should really be :
|
|
|
|
if (i) {
|
|
put_fs_long(de->inode,&dirent->d_ino);
|
|
put_fs_byte(0,i+dirent->d_name);
|
|
put_fs_word(i,&dirent->d_reclen);
|
|
+ brelse (bh);
|
|
return i;
|
|
|
|
That is, just add the brelse before the early return. Sorry for the
|
|
lack of real cdiffs - I'm not at home right now, and the above was
|
|
taken directly from the bug-report mail.
|
|
|
|
The problems:
|
|
|
|
I've had one report that the floppy-driver in versions 0.95x breaks
|
|
when accessing drive nr 2. It doesn't on my machine, but I'd
|
|
appreciate it if people would test it out, and mail me about any
|
|
problems. So far, only one report, but that's one too many.
|
|
|
|
0.95c doesn't correctly keep track of the 'rss' field in the
|
|
task-structure. A fix was already posted (and nothing breaks even if
|
|
you don't apply the fix - ps just gives slightly incorrect output)
|
|
|
|
And the expected troubles with the change of 'a.out.h' - the old gdb
|
|
doesn't recognize new executables etc.
|
|
|
|
As soon as I get my own sources cleaned up, I'll send out a new binary
|
|
for the 0.95c+ kernel to the ftp-sites. I've gotten a few mails from
|
|
people unable to recompile everything - either because of lack of
|
|
diskspace or some other problem. Tomorrow I'll put the new kernel image
|
|
on nic.funet.fi and tsx-11 - it's basically the 0.95c kernel + the above
|
|
bugfix + the lp-patches (somewhat edited by me).
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux,alt.os.linux
|
|
Subject: Re: Large disk partition
|
|
Message-ID: <1992Apr8.122049.20594@klaava.Helsinki.FI>
|
|
Date: 8 Apr 92 12:20:49 GMT
|
|
References: <1992Apr7.202208.12193@spuddy.uucp>
|
|
Organization: University of Helsinki
|
|
Lines: 40
|
|
|
|
|
|
In article <1992Apr7.202208.12193@spuddy.uucp> sweh@spuddy.uucp (Stephen Harris) writes:
|
|
>Is it possible for Linux to use a disk partition greater than 64Mb ?
|
|
>I have a 650Mb disk at 1283x16x63. DOS takes up the first 1023 clinders
|
|
>(the most it can have), leaving me 128Mb as a second partition. But when I
|
|
>try mkfs it moans for greater than 64Mb :-(
|
|
|
|
Yes, the 64MB limit is still there in the filesystem: it seems the VFS
|
|
functions start to get complete soon, but I haven't written any actual
|
|
code for any other fs-type. I'll be adding an "extended-minix" type
|
|
soon - it will conform to the native-order-long minix filesystem type,
|
|
which allows bigger disks, but still has the 14-character name limit (in
|
|
case someone wonders why keep to minix types: it's easy to add, as I can
|
|
use most of the old routines anyway, and some misguided persons use
|
|
linux and minix side by side :)
|
|
|
|
>Alternatively, could I make this into an extended partiton, with 2x64Mb
|
|
>in that, or even 1x10Mb (root+tmp), 1x12Mb(swap=3xRAM),1x64 (/usr), 1x42 (think
|
|
>of something!).
|
|
|
|
As you report you have 0.95c running, it should be safe to use extended
|
|
partitions, but the old fdisk probably has problems with them still. At
|
|
least I haven't heard any reports of problems with extended partitions
|
|
yet, although I haven't heard any success-stories either.
|
|
|
|
There are other fdisks than the linux or dos ones - pfdisk etc is
|
|
reported to work. I haven't got any personal experience (I should be so
|
|
lucky to have the 1024-cylinder problem :). Anyway, linux 0.95c should
|
|
report any partitions it finds at bootup (along with some data on size
|
|
and position), and you should check the numbers before using extended
|
|
partitions the first time.
|
|
|
|
If the bootup-information seems to be ok, try out the extended
|
|
partitions (but back up just in case...).
|
|
|
|
>Help please! I am on 0.95c (yippeee! I successfully managed to get Linus's
|
|
>patches to work! Well the kernel boots :-) ).
|
|
|
|
Is everybody this surprised when one of my patches happen to work? :^)
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Job Ctrl && $$->programmers (How?)
|
|
Keywords: jobs, money, bash, happy
|
|
Message-ID: <1992Apr9.144903.19540@klaava.Helsinki.FI>
|
|
Date: 9 Apr 92 14:49:03 GMT
|
|
References: <83443@bu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 73
|
|
|
|
|
|
In article <83443@bu.edu> buckley@csa.UUCP (David Buckley) writes:
|
|
>
|
|
> Is there some version of jsh, or some implementation of the
|
|
>functions fg, bg, %[n] etc... I didn't find them on the version of
|
|
>bash I am using. Are there several versions of bash? How do we get
|
|
>access to job ctrl? I know these exist from reading previous
|
|
>postings, are they hiding or should I chmod u+rwx mybrain.out?
|
|
|
|
Yes, there are several versions of bash existing - some of them are
|
|
/very/ old. I don't know if the original bash.Z is still somehwre to be
|
|
found, but it was not too long ago, and that is the version I used under
|
|
0.01, long before linux had job control. That version certainly doesn't
|
|
support job control.
|
|
|
|
Versions of bash that support job control (including the builtins fg,
|
|
bg, kill, jobs etc) are available on older root-disks, notably the 0.95
|
|
(not "a") rootdisk. I don't know where to find a "standalone" version
|
|
of bash - I know somebody ported bash 1.12 (the one on the rootdisk is
|
|
1.11 patch-level 1, although I think "help" returns 0.00.1).
|
|
|
|
You might want to check out the abc-release when it gets out - right now
|
|
the binaries under linux are a major mess (different versions under the
|
|
same name etc...), but this will eventually be sorted out, I hope.
|
|
|
|
> Also, is there some list of developers-port|ers so that
|
|
>it might be easyer to direct financial contributions to this venture?
|
|
>I haven't seen any postings with regards to how and to who money
|
|
>should be donated, and I think it would be interesting to be able
|
|
>to direct donations for specific implementations (our unix favourites),
|
|
>beyond Linux itself. Such a posting (I feel) would be greately
|
|
>appreciated.
|
|
|
|
I have never felt anybody needed to pay for linux - I didn't want to
|
|
make it share-ware, and I never wanted to make it commercial. The
|
|
biggest reason I started on linux at all was that I had no good unix and
|
|
no money - I wanted a totally free unix (not "GNU-free", but "no-money"
|
|
free - the "GNU-free" came later). I still have no money, but at least
|
|
I've got the unix :)
|
|
|
|
In fact, the earliest copyrights expressly forbid /any/ money at all
|
|
changing hands due to linux - the above was the reason. As the system
|
|
actually became useable, I had to change my mind - I don't mind people
|
|
making money off linux, as long as it essentially is available for free
|
|
as well, which it is.
|
|
|
|
I still feel strongly about the money-thing though - I don't want to
|
|
encumber the "official" version with any kind of pleas for money. If I
|
|
had something like "if you enjoy this package, please send $10 to xxx"
|
|
it might scare away people from then sending other feedback (bugreports
|
|
etc), as they didn't send the money... As it is, linux has no special
|
|
"registered users" which get special treatment by me - if you are
|
|
porting something important, I might give your troubles more thought
|
|
than the average user, but I try to answer every problem that gets
|
|
reported (even if it's just a "sorry, can't help this one" or "it's a
|
|
known problem, I don't know the cure", "hardware dependant").
|
|
|
|
One thing I would appreciate is people sending me postcards from all
|
|
over the world: I don't want to be a new Craig Shergold, but it might be
|
|
fun to see where linux is used :^). Postcards (with least name and
|
|
location written in for reference) could be sent to:
|
|
|
|
Linus Torvalds
|
|
Pietarinkatu 2 A 2
|
|
00140 Helsinki
|
|
Finland
|
|
|
|
and maybe I'll wallpaper my room with them :). Or maybe not.
|
|
|
|
Linus
|
|
|
|
PS. If you have contacts with hardware suppliers, and would like to get
|
|
things like multi-serial cards/tape streamers etc supported... I just
|
|
might be persuaded to try it out :-)
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Another bug?
|
|
Message-ID: <1992Apr10.203916.27326@klaava.Helsinki.FI>
|
|
Date: 10 Apr 92 20:39:16 GMT
|
|
References: <1992Apr8.090321.7673@klaava.Helsinki.FI> <1992Apr9.200244.28901@wam.umd.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 24
|
|
|
|
|
|
In article <1992Apr9.200244.28901@wam.umd.edu> joel@wam.umd.edu (Joel M. Hoffman) writes:
|
|
>In article <1992Apr8.090321.7673@klaava.Helsinki.FI> torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) writes:
|
|
>>Well, only one known bug so far, but a couple of problems. I thought I'd
|
|
>>mention them before anyone else does, and we'll call them "features" :^)
|
|
>
|
|
>More than once, I've gotten a message about mis-linked processes. I
|
|
>usually get it when I'm compiling from one VC and using Kermit
|
|
>interactively on another, but most of the time I'm compiling and using
|
|
>Kermit....
|
|
|
|
The mis-linked process problem seems to be linked with swapping: I've
|
|
never seen it, and most (all?) that have reported it have only 2M ram -
|
|
it seems to be a race-condition in the exit code, that breaks while
|
|
swapping heavily. I think that running gcc and kermit on a 2M system
|
|
should be enough to swap quite a bit...
|
|
|
|
I have fixed some of the exit-code in 0.95c+ - I'd be very interested to
|
|
hear if this problem is gone with the new kernel. The exit-code was
|
|
"interesting" - I think tytso optimized the sibling linking a bit too
|
|
much, and it broke when paging meant that the kernel sleeps in some new
|
|
circumstances. I might be totally off base - apologies to tytso if I
|
|
am.
|
|
|
|
Linus
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: kernel building problems
|
|
Message-ID: <1992Apr11.095724.8928@klaava.Helsinki.FI>
|
|
Date: 11 Apr 92 09:57:24 GMT
|
|
References: <1992Apr10.153857.28399@CSD-NewsHost.Stanford.EDU> <1992Apr10.162906.21379@ods.com>
|
|
Organization: University of Helsinki
|
|
Lines: 20
|
|
|
|
|
|
In article <1992Apr10.162906.21379@ods.com> david@ods.com (David Engel) writes:
|
|
>
|
|
>Aside to Linus: Would you mind describing how you have your system set
|
|
>up? It might help aleviate problems like this if we knew which compiler
|
|
>and system libraries you are using.
|
|
|
|
I'm still using 2.0 (and an older version at that) as I've been too busy
|
|
to upgrade. I doubt the HJ-patch is really needed - I read through it,
|
|
and I'd guess 0.95c+ should compile pretty cleanly without it. Anybody
|
|
tried it? HJ's patch also assumes you have a 387, and you'll have to
|
|
edit the makefile if you don't.
|
|
|
|
I'll have to upgrade my compiler (probably this weekend), and the next
|
|
real version should have no problems with 2.1. I'm in fact still using
|
|
my original 1.40 for everything but the kernel - I've left the actual
|
|
beta-testing of the new compilers and libraries to everyone else, and
|
|
I'll step in now that they seem stable. Lazyness or prudency, you
|
|
decide :)
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux,alt.os.linux
|
|
Subject: Re: more on my problem(I still haven't got any help) : )
|
|
Message-ID: <1992Apr17.080304.20001@klaava.Helsinki.FI>
|
|
Date: 17 Apr 92 08:03:04 GMT
|
|
References: <1992Apr15.232024.23565@athena.mit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 21
|
|
|
|
|
|
In article <1992Apr15.232024.23565@athena.mit.edu> jgifford@attmail.com writes:
|
|
>Ok, here goes:
|
|
>I had xcomm, it was running fine. suddenly, it started outputting to the
|
|
>screen 2 cr/lf for every one I hit on the keyboard. I went into kermit
|
|
>to see if it was xcomm, or the place I am calling. kermit was doing
|
|
>this:
|
|
>C-Kermit>set line /dev/ttys4
|
|
>
|
|
>C-kermit> set speed 2400
|
|
|
|
At least the double-spacing in kermit is due to login first enabling
|
|
ECHONL on the tty for the password recognition (it naturally wants no
|
|
echo on normal characters, but wants the newline to be echoed), and it
|
|
doesn't disable it afterwards. This doesn't result in any problems for
|
|
most things, but some programs (at least my port of kermit) seem not to
|
|
notice it: kermit disables echoing, but doesn't disable the ECHONL.
|
|
|
|
The cure for kermit is to write "stty -echonl" in your .profile or
|
|
similar - I don't know if this helps xcomm as well.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 850 gig extended*2 partition on 300 meg drive? ;-)
|
|
Message-ID: <1992Apr20.055129.21246@klaava.Helsinki.FI>
|
|
Date: 20 Apr 92 05:51:29 GMT
|
|
References: <k-4jgjf.xtifr@netcom.com>
|
|
Organization: University of Helsinki
|
|
Lines: 18
|
|
|
|
|
|
In article <k-4jgjf.xtifr@netcom.com> xtifr@netcom.com (Chris Waters) writes:
|
|
>
|
|
>Truly inconsequential, but I thought y'all might find this amusing. I
|
|
>just tried the .95c+ bootimage out at tsx-11 (I had been using .95a),
|
|
>and all of a sudden I get the following report from fdisk:
|
|
|
|
[ "somewhat" erraneous output deleted ]
|
|
|
|
The old fdisk messes up extended partitions (as did the old kernel), and
|
|
shouldn't be used. Not that it does any harm, as the old fdisk only
|
|
reads from the disk, but as you saw, it doesn't exactly give good
|
|
results.
|
|
|
|
With 0.95c+, the available partitions are reported at bootup, so the
|
|
need for a fdisk is less, but I hope the next release will contain one
|
|
that works correctly.
|
|
|
|
Linus
|
|
|
|
================================
|
|
================================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: gdb still isn't working
|
|
Message-ID: <1992Apr20.085143.23027@klaava.Helsinki.FI>
|
|
Date: 20 Apr 92 08:51:43 GMT
|
|
References: <Apr.19.22.23.03.1992.17499@dumas.rutgers.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 35
|
|
|
|
|
|
In article <Apr.19.22.23.03.1992.17499@dumas.rutgers.edu> hedrick@dumas.rutgers.edu (Charles Hedrick) writes:
|
|
>I've been trying to get gdb working. The problem is more subtle than
|
|
>I had first thought. It worked fine up to 0.95b. However as of 0.95c
|
|
>and 0.95c+, it stopped working.
|
|
|
|
Yes, it's a bug in the kernel. It was there already in 0.95b and
|
|
earlier, but those had a (buggy) workaround that made it work for most
|
|
things anyway. The problem was that not all kernel mode -> user mode
|
|
changes checked the error conditions, so things like breakpoints didn't
|
|
work too well.
|
|
|
|
My personal version handles this correctly (as well as doing some other
|
|
things in a cleaner manner), but I'm not quite ready for a new release
|
|
yet. I could make YAAR (yet another alpha-release) or just mail
|
|
interested parties the fixes needed - mail me if you're interested, and
|
|
depending on the number of messages I get I'll make it a new release.
|
|
|
|
Here's a preview of 0.96 (* means already implemented):
|
|
|
|
* truncate/ftruncate/fchmod/fchown system calls
|
|
|
|
* io-bitmap allowing user processes controlled access to io-ports (thanks to
|
|
obz - needed for X)
|
|
|
|
* mmap for /dev/mem - (thanks to obz) allows X etc to use the frame buffers
|
|
|
|
* the signal-handling fixes needed for gdb
|
|
|
|
- multiple shared libraries (pmacdona)
|
|
|
|
- cleaned up special files: partly implemented already
|
|
|
|
and probably some other minor fixes.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux,alt.os.linux
|
|
Subject: pre-0.96 (was Re: gdb still isn't working)
|
|
Message-ID: <1992Apr21.231510.5903@klaava.Helsinki.FI>
|
|
Date: 21 Apr 92 23:15:10 GMT
|
|
References: <Apr.19.22.23.03.1992.17499@dumas.rutgers.edu> <1992Apr20.085143.23027@klaava.Helsinki.FI>
|
|
Organization: University of Helsinki
|
|
Lines: 128
|
|
|
|
|
|
In article <1992Apr20.085143.23027@klaava.Helsinki.FI> torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) writes:
|
|
> [ trace not working in gdb ]
|
|
>
|
|
>My personal version handles this correctly (as well as doing some other
|
|
>things in a cleaner manner), but I'm not quite ready for a new release
|
|
>yet. I could make YAAR (yet another alpha-release) or just mail
|
|
>interested parties the fixes needed - mail me if you're interested, and
|
|
>depending on the number of messages I get I'll make it a new release.
|
|
|
|
Ok, the response seems to make a new pre-release appropriate: I have
|
|
uploaded "pre-0.96.tar.Z" to tsx-11 and nic.
|
|
|
|
Here is what the pre-release contains:
|
|
|
|
- truncate/ftruncate/fchmod/fchown system calls
|
|
|
|
note that there aren't any library functions for these, so they
|
|
aren't very useful yet...
|
|
|
|
[f]truncate needed a change in the logic of the internal
|
|
truncate VFS call - anybody that has any nonstandard filesystem
|
|
probably needs to look it up.
|
|
|
|
- io-bitmap syscalls giving root-processes access to selected io ports
|
|
from user space. There is a "ioperm()" system call that lets the
|
|
process select which ports it wants to enable/disable (all ports
|
|
disabled as default) as well as a (standard sysv?) ioctl interface
|
|
that X uses.
|
|
|
|
again, no library stubs, but it allows things like reading and
|
|
setting the cmos clock without using /dev/port, as well as
|
|
control over the VGA registers...
|
|
|
|
- mmap for /dev/mem
|
|
|
|
more things needed for X...
|
|
|
|
- the signal-handling fixes needed for gdb
|
|
|
|
These aren't yet complete: serial lines still send signals under
|
|
interrupts that can result in problems (ie ptrace doesn't
|
|
correctly get them), but that's pretty unlikely (and will be
|
|
fixed in the final 0.96). Breakpoints should work etc..
|
|
|
|
- multiple shared libraries
|
|
|
|
Up to 6 simultaneous shared libraries/process: the patches were
|
|
originally by pmacdona, but they were heavily changed by me, and
|
|
I think they work in a more natural manner now. One user-level
|
|
change is that the libraries are now checked for read and
|
|
execute permissions for safety-reasons.
|
|
|
|
- cleaned up special files.
|
|
|
|
read/write/ioctl no longer has special-case code: it is all
|
|
handled with tables to functions. This will mean that the SCSI
|
|
patches won't patch in quite cleanly into 0.96: you'll need to
|
|
add the code that sets up the functions.
|
|
|
|
Again: device drivers and vfs-filesystem hackers need to look
|
|
into the changes, although they are pretty logical (earlier
|
|
versions just didn't implement all the vfs-routines)
|
|
|
|
Note that the vfs-code for select is still not used: select is
|
|
hardcoded for the devices it supports right now.
|
|
|
|
- ptrace() has a new interface
|
|
|
|
as gdb for versions < 0.95c don't work on the new version, and
|
|
gdb won't work very well at all on 0.95c[+], there was no reason
|
|
not to break ptrace. Thus 0.96 has a new calling convention for
|
|
ptrace, and the old ptrace library function no longer works.
|
|
I'm including the new ptrace library function at the end of this
|
|
post.
|
|
|
|
- mount() takes 4 arguments, and checks that only the super-user can
|
|
mount/umount things.
|
|
|
|
Happily this shouldn't break any old binaries.
|
|
|
|
- some general cleanups
|
|
|
|
I've made the pre-release available only as pure source code: no diffs,
|
|
no binary. The reason is that most people that needed this release want
|
|
it for the gdb-fixes: and they should have no problem recompiling the
|
|
kernel. Others just have to wait for the real 0.96.
|
|
|
|
Changes that are NOT in this pre-release, but which I hope to have in
|
|
the real 0.96:
|
|
|
|
- more include-file cleanups - I'm still working on these
|
|
|
|
- the wd8003 driver and hopefully some other parts of biro's
|
|
config.
|
|
|
|
- select() using the vfs-tables.
|
|
|
|
And possibly bugfixes that people find in this pre-release...
|
|
|
|
Linus
|
|
|
|
---------- library ptrace.c (wants gcc-2.1) ----------
|
|
#define __LIBRARY__
|
|
#include <time.h>
|
|
#include <unistd.h>
|
|
|
|
int ptrace(int request, int pid, int addr, int data)
|
|
{
|
|
long ret;
|
|
long res;
|
|
|
|
if (request > 0 && request < 4)
|
|
(long *)data = &ret;
|
|
__asm__ volatile ("int $0x80"
|
|
:"=a" (res)
|
|
:"0" (__NR_ptrace),"b" (request), "c" (pid),
|
|
"d" (addr), "S" (data)
|
|
: "si","bx","cx","dx");
|
|
if (res >= 0) {
|
|
if (request > 0 && request < 4) {
|
|
errno = 0;
|
|
return (ret);
|
|
}
|
|
return (int) res;
|
|
}
|
|
errno = -res;
|
|
return -1;
|
|
}
|
|
|
|
=============================
|
|
=============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: How to pronounce "Linux"?
|
|
Message-ID: <1992Apr23.123216.22024@klaava.Helsinki.FI>
|
|
Date: 23 Apr 92 12:32:16 GMT
|
|
References: <1992Apr23.044317.3916@nuscc.nus.sg>
|
|
Organization: University of Helsinki
|
|
Lines: 25
|
|
|
|
|
|
In article <1992Apr23.044317.3916@nuscc.nus.sg> npngps@solomon.technet.sg (Ng Pheng Siong) writes:
|
|
>I apologize if this is considered trivial, but what is the
|
|
>proper pronunciation for "Linux"?
|
|
>
|
|
>Li lee or lie?
|
|
>Nux nuks or nerks? Nooks?
|
|
|
|
Oh god. We just hashed this through on alt.os.linux. It /definitely/
|
|
needs to go into the FAQ.
|
|
|
|
'li' is pronounced with a short [ee] sound: compare prInt, mInImal etc.
|
|
'nux' is also short, non-diphtong, like in pUt. It's partly due to
|
|
minix: linux was just my working name for the thing, and as I wrote it
|
|
to replace minix on my system, the result is what it is... linus' minix
|
|
became linux.
|
|
|
|
I originally intended it to be called freax (although buggix was one
|
|
contender after I got fed up with some of the more persistent bugs :)
|
|
and I think the kernel makefiles up to version 0.11 had something to
|
|
that effect ("Makefile for the freax kernel" in a comment). But arl
|
|
called the linux directory at nic.funet.fi pub/OS/Linux, and the name
|
|
stuck. Maybe just as well: freax doesn't sound too good either (freax
|
|
is obviosly free + freak + the obligatory -x).
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: gdb fails on ioctl??
|
|
Keywords: gdb ioctl
|
|
Message-ID: <1992Apr24.215331.16846@klaava.Helsinki.FI>
|
|
Date: 24 Apr 92 21:53:31 GMT
|
|
References: <1992Apr24.085616.29705@cbnewsd.cb.att.com> <1992Apr24.163555.26570@watson.ibm.com>
|
|
Organization: University of Helsinki
|
|
Lines: 27
|
|
|
|
|
|
In article <1992Apr24.163555.26570@watson.ibm.com> rajat@watson.ibm.com (Rajat Datta) writes:
|
|
>I'm getting the same problem. It's related to the under debugging
|
|
>process doing a read from the tty. I guess gdb is doing TIOCSPGRP to
|
|
>set the tty process group to be the same as the process under debug to
|
|
>avoid the stopped input message, but the tty ioctl code is rejecting
|
|
>it because the current process (gdb) does not have the same process
|
|
>group as the one we're setting the tty to (the under debug process).
|
|
|
|
Right. The easy fix if to comment out the session testing in
|
|
tty_ioctl.c: right after the "case TIOCSPGRP:" comment out the two
|
|
lines
|
|
|
|
if (session_of_pgrp(pgrp) != current->session)
|
|
return -EPERM;
|
|
|
|
and gdb should be happy. The session_of_pgrp() code has problems (I
|
|
think I've fixed them now, though).
|
|
|
|
>I would appreciate a solution. Except for this, gdb works fine under
|
|
>95c++ and is an indispensable tool.
|
|
|
|
My version already has this fixed (not the above quick hack - another
|
|
not-quite-as-ugly hack that might even be correct), and the real 0.96
|
|
(out next week? maybe) won't have the above problems. In the meantime,
|
|
just dike out the two lines.
|
|
|
|
Linus
|
|
|
|
==================
|
|
==================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: swapfile on scsi?
|
|
Keywords: does it work?
|
|
Message-ID: <1992Apr25.182734.6720@klaava.Helsinki.FI>
|
|
Date: 25 Apr 92 18:27:34 GMT
|
|
References: <55716@hydra.gatech.EDU>
|
|
Organization: University of Helsinki
|
|
Lines: 22
|
|
|
|
|
|
[ swapon problems ]
|
|
|
|
Ok, I thought I'd mentions this here, as I seem not to have done it in
|
|
the readme's. After doing a "mkswap", it's best to sync the filesystem:
|
|
swapping doesn't use the buffer cache, so before doing a swapon you
|
|
should make sure the swap-space signature and ID bitmaps are correctly
|
|
flushed out to the disk.
|
|
|
|
Note that the above shouldn't result in any filesystem problems even if
|
|
you don't sync: the block numbers are still gotten through the
|
|
filesystem routines. It's just the data blocks themselves that are
|
|
loaded with no regard for buffer cache coherency, as it makes little
|
|
sense to keep swap data in the buffer cache. This is normally no
|
|
problem, but for the fact that the first page (4 blocks) of the swapfile
|
|
contains the signature, and is loaded with the normal swap-routines.
|
|
|
|
The result is that if you see "swap space signature not found" or
|
|
similar errors, it might be a good idea to sync, wait a bit for it to
|
|
complete, and then try swapon again. Swapon should probably do an
|
|
implicit sync, but I didn't think of it when I wrote it.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: My pre-0.96 won't run shared binaries
|
|
Message-ID: <1992Apr27.083131.23100@klaava.Helsinki.FI>
|
|
Date: 27 Apr 92 08:31:31 GMT
|
|
References: <JES.92Apr24145256@mbio.med.upenn.edu> <JES.92Apr26171522@mbio.med.upenn.edu>
|
|
Distribution: comp
|
|
Organization: University of Helsinki
|
|
Lines: 22
|
|
|
|
|
|
In article <JES.92Apr26171522@mbio.med.upenn.edu> jes@mbio.med.upenn.edu (Joe Smith) writes:
|
|
>
|
|
>Well, I'm straight now on the ps patches, but it seems I was wrong
|
|
>about pre-0.96 running ok: even a clean kernel refuses to run
|
|
>shared-lib binaries, even 'hello.c', for a non-root user. They all
|
|
>die with an 'invalid operand... segmentation fault'.
|
|
|
|
Ok, if it works for root, the problem is probably the permissions for
|
|
the shared library: check that /lib/libXXXX is both readable and
|
|
executable by the user (and if you have a symlink, check that the file
|
|
it points to is read/executable)
|
|
|
|
Earlier versions didn't check for read/exec permissions, which is an
|
|
obvious security problem: under 0.95c+ and earlier, you could
|
|
effectively do a "uselib(XXXX)", and be able to read the file XXXX
|
|
(except for the 1024 first bytes) by reading memory at 0x03c00000- in
|
|
your process space. 0.96 (even the pre-version) checks the header of
|
|
the file, and the permissions, to make sure you are trying to use a real
|
|
library file that you have access to, so that this kind of thing
|
|
wouldn't be possible.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: are raw floppy blocks kept in the buffer pool?
|
|
Message-ID: <1992Apr29.064505.23303@klaava.Helsinki.FI>
|
|
Date: 29 Apr 92 06:45:05 GMT
|
|
References: <JES.92Apr28193232@mbio.med.upenn.edu>
|
|
Distribution: comp
|
|
Organization: University of Helsinki
|
|
Lines: 21
|
|
|
|
|
|
In article <JES.92Apr28193232@mbio.med.upenn.edu> jes@mbio.med.upenn.edu (Joe Smith) writes:
|
|
>
|
|
>I was using tar to attempt a backup last night & noticed that after
|
|
>tar finished and I removed the floppy, the drive light came back on
|
|
>(of course that means the Linux is OTL until you put a floppy back in
|
|
>the drive, and I have no idea whether it was reading or writing). It
|
|
>made me wonder whether blocks written to a raw floppy device are
|
|
>buffered by the kernel and if so, whether this is a ``good thing''.
|
|
|
|
Yes, the raw devices are implemented on top of the buffer cache: a
|
|
close() does an automatic sync. It's not standard, but it was easy to
|
|
implement. It might be the reason why tar doesn't like to use
|
|
multiple-disk backups on linux: although if you close the device and
|
|
open it again at a disk-change there should be no problem. Does tar do
|
|
this or just a lseek(0)?
|
|
|
|
Linus
|
|
|
|
PS. A simple fix is to do a "ll_rw_block(WRITE,bh)" in the block-device
|
|
write function: I just did it, so 0.96 won't keep dirty blocks around at
|
|
all. Reading still uses the buffer cache, though.
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Offical windows
|
|
Message-ID: <1992Apr29.091015.27476@klaava.Helsinki.FI>
|
|
Date: 29 Apr 92 09:10:15 GMT
|
|
References: <08VwJB5w161w@grafted.UUCP> <4992@umriscc.isc.umr.edu> <1992Apr29.070932.25201@mnemosyne.cs.du.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 34
|
|
|
|
|
|
In article <1992Apr29.070932.25201@mnemosyne.cs.du.edu> zmbenhal@isis.cs.du.edu (Zeyd M. Ben-Halim) writes:
|
|
>
|
|
>Well, linus has just said on comp.os.minix that X WORKS but is not to be
|
|
>released to the "masses" yet!
|
|
|
|
Don't take it too hard: I'm also part of "masses" - I haven't seen it
|
|
working on my own machine yet... obz has been porting it for a longish
|
|
time (started with the advent of 0.12 I think), and I don't know how
|
|
many problems still remain (not too long ago he still had trouble
|
|
returning to character mode after X exited etc). He's sent me mail that
|
|
he edited in an xterm under linux though, so it's getting there...
|
|
|
|
Some of the results are already visible in the pre-0.96 release: the
|
|
mmap code and the io-port control needed for it. The socket code is
|
|
still not ready: the socket-emulation library on top of pty's had
|
|
problems, as the pty's aren't complete (they don't support hanging up
|
|
etc yet).
|
|
|
|
>The question is WHY NOT? Even if it is not working properly, couldn't we at
|
|
>least hear about the effort involved in porting X (setting modes, reading,
|
|
>writing to the screen memory, switching banks, etc.)
|
|
|
|
I assume obz is nearing completion and alpha-testing: he created a X11
|
|
channel on the original mailing list. Not that there has been any
|
|
activity yet :-)
|
|
|
|
I also assume one reason we haven't heard too much about graphics under
|
|
linux is simply because X11r5 (with the free X386 server) does all the
|
|
mode-setting things by itself, and doesn't need the kernel to do that
|
|
much. So porting X doesn't help other graphical systems that much: it's
|
|
mainly a question of getting the same kind of support as "normal"
|
|
386-unixes allow X, ie mmap/sockets etc.
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: alt.os.linux,comp.os.linux
|
|
Subject: Re: Disk drive performance
|
|
Message-ID: <1992Apr29.091828.27784@klaava.Helsinki.FI>
|
|
Date: 29 Apr 92 09:18:28 GMT
|
|
References: <1992Apr28.220324.25222@spuddy.uucp>
|
|
Organization: University of Helsinki
|
|
Lines: 15
|
|
|
|
|
|
Ok, as several people have written about bad IO performance, I decided
|
|
to finally do some of the simplest optimizations possible under linux,
|
|
so 0.96 will be a bit snappier when copying large files etc. Under very
|
|
extreme circumstances, IO speeds are now 10 times faster according to my
|
|
simple tests, but that's just "marketing info": most things are still
|
|
about the same speed.
|
|
|
|
None of the optimizations are in the driver proper: I just finally
|
|
implemented read-ahead on files, and used the ps-patch that gives IO
|
|
bound processes more time. Thus the speed-increase is most noticeable
|
|
when you do something else in the background. I also changed sync a bit
|
|
so that it doesn't wait around quite so much. Expect a slightly more
|
|
responsive system, but no major changes.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Latin-1 again
|
|
Message-ID: <1992Apr30.075826.7201@klaava.Helsinki.FI>
|
|
Date: 30 Apr 92 07:58:26 GMT
|
|
References: <1992Apr23.205017.6569@casbah.acns.nwu.edu> <JEM.92Apr30092141@sandman.hut.fi>
|
|
Organization: University of Helsinki
|
|
Lines: 19
|
|
|
|
|
|
In article <JEM.92Apr30092141@sandman.hut.fi> jem@niksula.hut.fi (Johan Myreen) writes:
|
|
>
|
|
>A while ago I posted patches to the keyboard driver so it could
|
|
>produce Latin-1 characters. I never uploaded the patches, and they
|
|
>don't work with current versions anyway. I'll dig them up and see what
|
|
>needs to be done for the current version.
|
|
|
|
I actually used the patches to some degree: I didn't use the keyboard
|
|
patches, but I used the console-part, so linux pre-0.96 tries to do
|
|
8-bit latin1 printing. To some degree. I haven't tested it, as I don't
|
|
have anything that uses the 8-bit characters, but it does seem to print
|
|
out most of the correct characters. Try something like
|
|
|
|
$ echo -e "\241"
|
|
|
|
and you should get a inverted "!". It might even have been in 0.95c+, I
|
|
dunno.
|
|
|
|
Linus
|
|
|
|
=============================
|
|
=============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 0.96 out next week
|
|
Message-ID: <1992May4.073803.3222@klaava.Helsinki.FI>
|
|
Date: 4 May 92 07:38:03 GMT
|
|
References: <1992May4.055329.17266@mnemosyne.cs.du.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 61
|
|
|
|
|
|
Ok, the subject says most of it: I'll send out 0.96 sometimes next week
|
|
(ie 92.05.11-17), and this is just an announcement to confirm that.
|
|
|
|
0.96 has a lot of changes (even relative to pre-0.96), and it's entirely
|
|
possible that making it available as cdiffs isn't feasible. It contains
|
|
a lot of new files, as well as some re-organizations in the old ones.
|
|
|
|
Main new things are:
|
|
|
|
- The SCSI distribution is now in the standard package. I (obviously)
|
|
haven't been able to test my patchings, so there might be problems in
|
|
this first release. I had to do some changes "blind" to the cdiffs,
|
|
but most of them were pretty trivial.
|
|
|
|
- X11r5 as ported by obz is supported. It's still in beta-testing (join
|
|
the X11-channel on the original mailing-list), but as I'm writing this
|
|
from an xterm under linux, it works pretty well. Changes to pre-0.96
|
|
are just the socket-code by obz, and some small tweaking by me.
|
|
|
|
- Hopefully better interrupt latency - I've changed select() not to use
|
|
cli-sti, and most IRQ's to enable interrupts, and instead disable just
|
|
their own interrupt-line. The interrupt latency has been noticeable at
|
|
higher serial speeds, and I hope 0.96 will be better in this respect.
|
|
Again, I only have 2400bps, so I've never seen the problems, and
|
|
cannot guarantee the new version will help. (btw, I hope the problems
|
|
with select are gone now)
|
|
|
|
- Reorganisation of the vfs routines and minix filesystem driver. These
|
|
shouldn't bother anyone but people that have implemented their own
|
|
filesystems (I know of just 2 to date), but I hope the current
|
|
vfs-interface will prove to be relatively stable. The new vfs
|
|
interface has made some things much cleaner, and the promised cleanup
|
|
of special devices has happened.
|
|
|
|
- ps/uptime patches + added readahead, so having computationally
|
|
intensive background processes isn't as noticeable any more when doing
|
|
IO.
|
|
|
|
Additionally, there /might/ be a new floppy-driver that supports
|
|
formatting and autodetecting floppies, but I haven't had time to check
|
|
into it yet.
|
|
|
|
There are probably any number of minor changes: I've lost track. People
|
|
have sent me some diffs, and some of them went in, depending on how
|
|
energetic I was that day. I've tried to correct all the bugs I've
|
|
gotten reports on, and hopefully 0.96 will work with just about
|
|
everything (gdb etc).
|
|
|
|
Things I wanted, but didn't have time for:
|
|
|
|
- The config patches aren't there. Sorry everybody. That means still no
|
|
wd8003 driver etc.
|
|
|
|
- Any number of minor patches (quota, auto-SVGA etc)
|
|
|
|
Generally, 0.96 is cleaning some things up, but on the other hand the
|
|
new features can have their share of problems. We'll see. Anyway, most
|
|
things seem to work, and I hope there won't be the same type of problems
|
|
as with the first 0.95 release.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: X386 (Was Re: 0.96 out next week)
|
|
Message-ID: <1992May5.063513.11484@klaava.Helsinki.FI>
|
|
Date: 5 May 92 06:35:13 GMT
|
|
References: <1992May4.055329.17266@mnemosyne.cs.du.edu> <1992May4.073803.3222@klaava.Helsinki.FI> <1992May5.00552.26728@ms.uky.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 28
|
|
|
|
|
|
In article <1992May5.00552.26728@ms.uky.edu> randy@ms.uky.edu (Randy Appleton) writes:
|
|
>> [ X window system ]
|
|
>
|
|
>Here's a question. What CGA cards does it support, and at what
|
|
>resolutions. Also, what's the realistic RAM requirements?
|
|
|
|
X definitely won't work with CGA - it won't even work with normal VGA
|
|
cards: you need SVGA (and even not just any SVGA card will do). The
|
|
supported cards are et[3|4]000 and some others (pvga? tvga?).
|
|
Resolutions range from 640x480 to 1192x900 (or something like that), all
|
|
at 256 colours, depending on what kind of card/monitor combination you
|
|
have.
|
|
|
|
As to memory: I'm using it in 8MB ram, and no swapping (with a couple of
|
|
xterms, xclock and xcalc - nothing major). If I want to recompile the
|
|
kernel in an xterm, I'll have to start up swapping (well, actually I've
|
|
done it without swapping, but it's tight). I assume it's still useable
|
|
in 4MB and a big swap-file, but I'm happy I haven't tested it.
|
|
|
|
Speed probably depends heavily on the SVGA card: on my 386/33 with a
|
|
no-name et4000 card I get totally acceptable performance: scrolling big
|
|
windows is slow with other things going on, but not irritatingly so.
|
|
You don't want to make opaque moves, but I can live without that.
|
|
|
|
Harddisk space is totally up to you: minimum about 10MB for just the
|
|
minimal clients, maximum probably the sky is the limit.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Writing an OS - questions !!
|
|
Message-ID: <1992May5.075817.15984@klaava.Helsinki.FI>
|
|
Date: 5 May 92 07:58:17 GMT
|
|
References: <10685@inews.intel.com>
|
|
Organization: University of Helsinki
|
|
Lines: 136
|
|
|
|
|
|
In article <10685@inews.intel.com> nani@td2cad.intel.com (V. Narayanan) writes:
|
|
>
|
|
>Hi folks,
|
|
> For quite some time this "novice" has been wondering as to how one goes
|
|
>about the task of writing an OS from "scratch". So here are some questions,
|
|
>and I would appreciate if you could take time to answer 'em.
|
|
|
|
Well, I see someone else already answered, but I thought I'd take on the
|
|
linux-specific parts. Just my personal experiences, and I don't know
|
|
how normal those are.
|
|
|
|
>1) How would you typically debug the kernel during the development phase?
|
|
|
|
Depends on both the machine and how far you have gotten on the kernel:
|
|
on more simple systems it's generally easier to set up. Here's what I
|
|
had to do on a 386 in protected mode.
|
|
|
|
The worst part is starting off: after you have even a minimal system you
|
|
can use printf etc, but moving to protected mode on a 386 isn't fun,
|
|
especially if you at first don't know the architecture very well. It's
|
|
distressingly easy to reboot the system at this stage: if the 386
|
|
notices something is wrong, it shuts down and reboots - you don't even
|
|
get a chance to see what's wrong.
|
|
|
|
Printf() isn't very useful - a reboot also clears the screen, and
|
|
anyway, you have to have access to video-mem, which might fail if your
|
|
segments are incorrect etc. Don't even think about debuggers: no
|
|
debugger I know of can follow a 386 into protected mode. A 386 emulator
|
|
might do the job, or some heavy hardware, but that isn't usually
|
|
feasible.
|
|
|
|
What I used was a simple killing-loop: I put in statements like
|
|
|
|
die:
|
|
jmp die
|
|
|
|
at strategic places. If it locked up, you were ok, if it rebooted, you
|
|
knew at least it happened before the die-loop. Alternatively, you might
|
|
use the sound io ports for some sound-clues, but as I had no experience
|
|
with PC hardware, I didn't even use that. I'm not saying this is the
|
|
only way: I didn't start off to write a kernel, I just wanted to explore
|
|
the 386 task-switching primitives etc, and that's how I started off (in
|
|
about April-91).
|
|
|
|
After you have a minimal system up and can use the screen for output, it
|
|
gets a bit easier, but that's when you have to enable interrupts. Bang,
|
|
instant reboot, and back to the old way. All in all, it took about 2
|
|
months for me to get all the 386 things pretty well sorted out so that I
|
|
no longer had to count on avoiding rebooting at once, and having the
|
|
basic things set up (paging, timer-interrupt and a simple task-switcher
|
|
to test out the segments etc).
|
|
|
|
>2) Can you test the kernel functionality by running it as a process on a
|
|
> different OS? Wouldn't the OS(the development environment) generate
|
|
> exceptions in cases when the kernel (of the new OS) tries to modify
|
|
> 'priviledged' registers?
|
|
|
|
Yes, it's generally possible for some things, but eg device drivers
|
|
usually have to be tested out on the bare machine. I used minix to
|
|
develop linux, so I had no access to IO registers, interrupts etc.
|
|
Under DOS it would have been possible to get access to all these, but
|
|
then you don't have 32-bit mode. Intel isn't that great - it would
|
|
probably have been much easier on a 68040 or similar.
|
|
|
|
So after getting a simple task-switcher (it switched between two
|
|
processes that printed AAAA... and BBBB... respectively by using the
|
|
timer-interrupt - Gods I was proud over that), I still had to continue
|
|
debugging basically by using printf. The first thing written was the
|
|
keyboard driver: that's the reason it's still written completely in
|
|
assembler (I didn't dare move to C yet - I was still debugging at
|
|
about instruction-level).
|
|
|
|
After that I wrote the serial drivers, and voila, I had a simple
|
|
terminal program running (well, not that simple actually). It was still
|
|
the same two processes (AAA..), but now they read and wrote to the
|
|
console/serial lines instead. I had to reboot to get out of it all, but
|
|
it was a simple kernel.
|
|
|
|
After that is was plain sailing: hairy coding still, but I had some
|
|
devices, and debugging was easier. I started using C at this stage, and
|
|
it certainly speeds up developement. This is also when I start to get
|
|
serious about my megalomaniac ideas to make "a better minix that minix".
|
|
I was hoping I'd be able to recompile gcc under linux some day...
|
|
|
|
The harddisk driver was more of the same: this time the problems with
|
|
bad documentation started to crop up. The PC may be the most used
|
|
architecture in the world right now, but that doesn't mean the docs are
|
|
any better: in fact I haven't seen /any/ book even mentioning the weird
|
|
386-387 coupling in an AT etc (Thanks Bruce).
|
|
|
|
After that, a small filesystem, and voila, you have a minimal unix. Two
|
|
months for basic setups, but then only slightly longer until I had a
|
|
disk-driver (seriously buggy, but it happened to work on my machine) and
|
|
a small filesystem. That was about when I made 0.01 available (late
|
|
august-91? Something like that): it wasn't pretty, it had no floppy
|
|
driver, and it couldn't do much anything. I don't think anybody ever
|
|
compiled that version. But by then I was hooked, and didn't want to
|
|
stop until I could chuck out minix.
|
|
|
|
>3) Would new linkers and loaders have to be written before you get a basic
|
|
> kernel running?
|
|
|
|
All versions up to about 0.11 were crosscompiled under minix386 - as
|
|
were the user programs. I got bash and gcc eventually working under
|
|
0.02, and while a race-condition in the buffer-cache code prevented me
|
|
from recompiling gcc with itself, I was able to tackle smaller compiles.
|
|
0.03 (October?) was able to recompile gcc under itself, and I think
|
|
that's the first version that anybody else actually used. Still no
|
|
floppies, but most of the basic things worked.
|
|
|
|
Afetr 0.03 I decided that the next version was actually useable (it was,
|
|
kind of, but boy is X under 0.96 more impressive), and I called the next
|
|
version 0.10 (November?). It still had a rather serious bug in the
|
|
buffer-cache handling code, but after patching that, it was pretty ok.
|
|
0.11 (December) had the first floppy driver, and was the point where I
|
|
started doing linux developement under itself. Quite as well, as I
|
|
trashed my minix386 partition by mistake when trying to autodial
|
|
/dev/hd2.
|
|
|
|
By that time others were actually using linux, and running out of
|
|
memory. Especially sad was the fact that gcc wouldn't work on a 2MB
|
|
machine, and although c386 was ported, it didn't do everything gcc did,
|
|
and couldn't recompile the kernel. So I had to implement disk-paging:
|
|
0.12 came out in January (?) and had paging by me as well as job control
|
|
by tytso (and other patches: pmacdona had started on VC's etc). It was
|
|
the first release that started to have "non-essential" features, and
|
|
being partly written by others. It was also the first release that
|
|
actually did many things better than minix, and by now people started to
|
|
really get interested.
|
|
|
|
Then it was 0.95 in March, bugfixes in April, and soon 0.96. It's
|
|
certainly been fun (and I trust will continue to be so) - reactions have
|
|
been mostly very positive, and you do learn a lot doing this type of
|
|
thing (on the other hand, your studies suffer in other respects :)
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: What kernel needed to run X???
|
|
Message-ID: <1992May5.191103.4763@klaava.Helsinki.FI>
|
|
Date: 5 May 92 19:11:03 GMT
|
|
References: <13013@ucdavis.ucdavis.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 9
|
|
|
|
|
|
In article <13013@ucdavis.ucdavis.edu> mayfield@toadflax.UCDavis.EDU (Doug Mayfield) writes:
|
|
>To re-iterate... What version of the kernel is required to
|
|
>run X.
|
|
|
|
You need pre-0.96 with the (pretty small) patches for sockets that are
|
|
included with the X distribution. Alternatively, you can wait a week
|
|
for the real 0.96, which also fixes a couple of minor problems.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: X386 and lame SVGA cards
|
|
Message-ID: <1992May6.220143.13536@klaava.Helsinki.FI>
|
|
Date: 6 May 92 22:01:43 GMT
|
|
References: <PNAKADA.92May6103934@pnakada.oracle.com> <1992May6.151359@hammer.Prime.COM>
|
|
Organization: University of Helsinki
|
|
Lines: 36
|
|
|
|
|
|
In article <1992May6.151359@hammer.Prime.COM> cummings@hammer.Prime.COM (Kevin
|
|
Cummings) and others write:
|
|
> > [ no support for some cards, or even standard 640x480x16, as it's
|
|
> > not "worth it" ]
|
|
>
|
|
>I don't agree with them, but they have the source, and I don't.
|
|
|
|
Well, in fact you /do/ have source: just get the X11r5 distribution and
|
|
hack on it. That's how the original X386 was created (well, it wasn't
|
|
based on r5, but you get the idea). The linux X-server certainly isn't
|
|
based on any proprietary code.
|
|
|
|
There seem to be several drivers that implement standard VGA modes (just
|
|
look at "real" unixes), but sadly, none of them seem to be freely
|
|
distributable, and so aren't part of the standard distribution. The
|
|
X386 drivers included are written by Roell, and it's not really fair to
|
|
criticize him for not writing drivers for all the possible card
|
|
combinations. He did them for free, after all (sadly (for us - I doubt
|
|
he minds) he seems now to get paid for his effors, so he no longer makes
|
|
them available for no chanrge). If you want to lay the blame somewhere,
|
|
do it at IBM who didn't come up with a good standard for video cards.
|
|
|
|
The reason there doesn't seem to exist any 16-colour drivers for free is
|
|
simply because nobody seems to have wanted to write them: 16-colour
|
|
programming isn't fun, and the results aren't as pleasing as 256 colour
|
|
modes. Not surprisingly, 256 colour mode is more popular. Also, not
|
|
surprisingly, chipsets that are easier to program (ie et4000) get the
|
|
drivers.
|
|
|
|
What I'm trying to say is that X386 is free, and that nobody got paid
|
|
for producing it: don't be surprised if it doesn't support all hardware.
|
|
Even as I'm not going to write a PS2 version of linux (unless somebody
|
|
gives me a PS2 + docs etc), I assume roell didn't want to write a
|
|
version that he felt was "uninteresting".
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: pre-0.96 & inaccessable memory as non-root
|
|
Keywords: segmentation fault
|
|
Message-ID: <1992May7.081436.25846@klaava.Helsinki.FI>
|
|
Date: 7 May 92 08:14:36 GMT
|
|
References: <May.6.23.50.41.1992.27825@pilot.njin.net>
|
|
Organization: University of Helsinki
|
|
Lines: 21
|
|
|
|
|
|
In article <May.6.23.50.41.1992.27825@pilot.njin.net> pfaffman@pilot.njin.net (Jay Pfaffman) writes:
|
|
>
|
|
>I installed the pre-0.96 release on two machines and have successfully
|
|
>installed it on one of them. On the other, though, no one but root
|
|
>can login. I played with changing UID, and found that the first
|
|
>memory access after changing to something other than root I get a
|
|
>segmentation fault. Have I done something stupid? It works fine on
|
|
>another machine. (I'm using it now).
|
|
|
|
Ok, this is probably the shared libraries that bite you: pre-0.96 added
|
|
more sanity checks than earlier versions, and won't load in the shared
|
|
libraries unless they are readable and executable by the user. Check
|
|
that the shared libraries in /lib/libXX.YY.ZZ all have the correct
|
|
permissions.
|
|
|
|
Due to a bug in the early crt0.s, not being able to load the shared
|
|
library results in a segmentation fault: this should be fixed in the
|
|
newer gcc-2.1 versions, but programs compiled with the old ones will
|
|
fail without any error-message.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Wow! X is great!
|
|
Message-ID: <1992May7.174038.16552@klaava.Helsinki.FI>
|
|
Date: 7 May 92 17:40:38 GMT
|
|
References: <PNAKADA.92May7083854@pnakada.oracle.com>
|
|
Distribution: comp
|
|
Organization: University of Helsinki
|
|
Lines: 51
|
|
|
|
|
|
In article <PNAKADA.92May7083854@pnakada.oracle.com> pnakada@oracle.com (Paul Nakada) writes:
|
|
>
|
|
>a serious bug. If I pull down the xterm middle menu (control +
|
|
>middlebutton (both buttons)) my screen gets shifted ~30% with the
|
|
>right side wrapping to the left side. wierd.
|
|
|
|
Yes, this is one of the bugs that is still in the pre-0.96 release with
|
|
the X patches: it's due to the fact that error messages get printed to
|
|
the console, and the pre-0.96 kernel didn't notice that things were in
|
|
graphics mode, so it prints out the message and changes various VGA
|
|
regs, thinking it writes to a normal text-screen. This obviously doesn't
|
|
work too well when in garphics mode.
|
|
|
|
Other bugs relate to the pty's: when scrolling in an xterm it sometimes
|
|
stops, and you have to hit a key to get it to wake up. I've also found
|
|
it's possible to freeze the machine with ^C under some circumstances
|
|
when writing heavily to pty's. Don't try it without syncing first, and
|
|
avoid testing it at all if possible :)
|
|
|
|
All the above bugs should be fixed in next weeks release, so I'm not
|
|
making patches available right now. Additionally, 0.96 has the TIOCCONS
|
|
ioctl that allows a pty to get the output intended for the console (so
|
|
that you see whan processes write directly to /dev/tty0 etc), as well as
|
|
a syslog() system call (syscall nr 103) that reads the messages printed
|
|
with printk(). The syslog syscall means you can get the kernel warning
|
|
messages to a window under X. Of course, the really bad messages
|
|
(notably kernel panics) don't get printed, but hopefully those aren't
|
|
that usual.
|
|
|
|
TIOCCONS was easy to add due to the better vfs routines. Similarly, 0.96
|
|
now supports dropping DTR when a serial line is finally closed. Thank
|
|
abc for goading me into adding the trivial fix.
|
|
|
|
In an earlier post I mentioned that 0.96 might have a new floppy-driver:
|
|
I just patched it in today, and it seems to work, so that's official.
|
|
The new floppy-driver finally allows formatting, and also has
|
|
auto-detect floppies (much nicer than under minix: they are quite as
|
|
fast as the non-auto versions from my limited testing) as well as
|
|
user-defined floppy-types (ie you can define 20-sector formats on the
|
|
fly etc..). The patches were courtesy of Werner Almesberger, so send
|
|
him a kind thought.
|
|
|
|
>is libobz.a going to be part of the 0.96 release? it's missing from
|
|
>the pre 96 + X patches release, making building any X apps impossible.
|
|
|
|
Hlu has already added them to the library: the newest version should
|
|
have them and some other syscalls ([f]truncate etc). I also think it now
|
|
supports multiple shared libraries: practical for X and math. I haven't
|
|
had time to try it out myself yet.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: fsck and inode
|
|
Keywords: filesystem,inode
|
|
Message-ID: <1992May8.055503.1211@klaava.Helsinki.FI>
|
|
Date: 8 May 92 05:55:03 GMT
|
|
References: <rickw.705271825@sfu.ca>
|
|
Organization: University of Helsinki
|
|
Lines: 30
|
|
|
|
|
|
In article <rickw.705271825@sfu.ca> rickw@fraser.sfu.ca (Rick Wong) writes:
|
|
>
|
|
>I am new to filesystems in unix, so please bear with me.
|
|
>
|
|
>when I ran the following command
|
|
>fsck -m /dev/hda7
|
|
>I got these output
|
|
>
|
|
>inode 266 not cleared
|
|
[ etc ]
|
|
|
|
This is normal under linux: the "-m" flag stands for minix, and means
|
|
fsck will do extra checking in the inode like the minix fsck does. The
|
|
linux filesystem is almost completely the same as the minix one, but
|
|
there are a few very minor differences. The main one is that linux
|
|
doesn't clear the i_mode field of an inode that is no longer used, and
|
|
minix does.
|
|
|
|
The result is that if you use minix' fsck, it gives warnings of the
|
|
above type after you have used linux for a while. Just so I could get
|
|
the same warnings if I wanted, I added the '-m' switch - it's there but
|
|
you aren't supposed to use it.
|
|
|
|
This was mentioned in early readme's, when you actually had to use minix
|
|
to set linux up, and people probably used the two systems side by side.
|
|
Now I assume most people are running just one or the other, so I haven't
|
|
even mentioned it in the readme's any more, as the feature no longer has
|
|
any meaning.
|
|
|
|
Linus
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Test-image of 0.96 available at banjo
|
|
Summary: just the binary
|
|
Message-ID: <1992May8.220544.832@klaava.Helsinki.FI>
|
|
Date: 8 May 92 22:05:44 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 37
|
|
|
|
|
|
As 0.96 has some changes in harddisk IO handling (interrupts, timings
|
|
etc), I'd like for people that have ever had problems with the harddisk
|
|
driver under linux to try out the last test-image of the 0.96 kernel
|
|
before the official release - I'd rather not have the same types of
|
|
problems that we had with 0.95.
|
|
|
|
The image (no sources - wait till next week) is available at
|
|
banjo.concert.net: pub/Linux/Incoming/testimage.Z, and is just my
|
|
current bootimage that I'd like some feedback on.
|
|
|
|
The changes to the harddisk driver (which is the main reason I want to
|
|
make sure this version works) are just:
|
|
|
|
- interrupts enabled most of the time
|
|
- inb_p / outb_p changes
|
|
|
|
The first one is to lessen interrupt latency, the second one hopefully
|
|
helps people who had problems with the driver at high speeds. Both
|
|
changes work well for me, but then my machine seems to accept almost
|
|
anything... I hope 0.96 will work without any "a" releases.
|
|
|
|
I'd also be interested to hear if this image removes the problems with
|
|
serial lines at high speeds under X, as well as /any/ other problems. I
|
|
can still make minor bug-fixes if something turns up, but I'd want
|
|
reports by early next week or so (preferably with "testimage" in the
|
|
subject line).
|
|
|
|
The image is compiled with the us keyboard maps, and with the
|
|
floppy-device as root. It should be binary compatible with all old
|
|
versions, as well as the interim X version, so you just plug in the new
|
|
kernel and you're (hopefully) off.
|
|
|
|
Ignore this post if you don't have time to check out the image this
|
|
weekend: the image is only meant as a quick test-release to get some
|
|
fast feedback.
|
|
|
|
Linus
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Sources (IMPORTANT to managers of LINUX ftp sites)
|
|
Message-ID: <1992May11.083344.3440@klaava.Helsinki.FI>
|
|
Date: 11 May 92 08:33:44 GMT
|
|
References: <1992May9.165404.20041@leland.Stanford.EDU> <7!jkhpq.aclark@netcom.com> <1992May10.202916.26781@news.Hawaii.Edu>
|
|
Organization: University of Helsinki
|
|
Lines: 24
|
|
|
|
|
|
In article <1992May10.202916.26781@news.Hawaii.Edu> lee@uhunix.uhcc.Hawaii.Edu (Greg Lee) writes:
|
|
>
|
|
>Since we are so heavily indebted to fsf, it would make sense to think first
|
|
>about what is courteous and much later about what we could get away with.
|
|
|
|
Indeed. I hope people try to follow the /intent/ of the GPL first, and
|
|
then start worrying about the legal implications. I don't feel too
|
|
strongly about the legalese: it's there just because it's required to
|
|
uphold that intent in a court of law, and wouldn't even be needed
|
|
otherwise. I'd suggest not reading the GPL searching for loopholes -
|
|
but on the other hand not being unnecessarily strict about it either.
|
|
Use a bit of common sense in it all (until somebody starts threatening
|
|
with legal action: but in that case you have probably not been following
|
|
the GPL even in intent).
|
|
|
|
There are probably quite a few binaries that should be removed from the
|
|
linux archives: especially the older ones that needed a bit more porting
|
|
than they need now with the better compiler/library, and that might not
|
|
have source (I think my original gcc-1.40 and bash-1.05 should probably
|
|
be removed: I've had to delete my sources to get X running.. Nobody
|
|
uses them any more anyway). It might even result in some general
|
|
cleanup of old binaries...
|
|
|
|
Linus
|
|
|
|
==============================
|
|
==============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: RTS/CTS flow control on serial ports
|
|
Message-ID: <1992May11.184925.7185@klaava.Helsinki.FI>
|
|
Date: 11 May 92 18:49:25 GMT
|
|
References: <1992May10.101454.28203@colorado.edu> <57233@hydra.gatech.EDU>
|
|
Organization: University of Helsinki
|
|
Lines: 32
|
|
|
|
|
|
In article <57233@hydra.gatech.EDU> gt0178a@prism.gatech.EDU (Jim Burns) writes:
|
|
>in article <1992May10.101454.28203@colorado.edu>, drew@romeo.cs.colorado.edu (Drew Eckhardt) says:
|
|
>
|
|
>> Linux pre-.96 or before does not support hard flow control.
|
|
>
|
|
>Will it ever?
|
|
|
|
Well, I did some hacking this Sunday, and the serial driver is now
|
|
completely rewritten in C - the file rs_io.s no longer exists. That
|
|
also made it easy to implement hangup upon loosing carrier, so that too
|
|
is now supported by the 0.96 kernel (which I'll probably send out
|
|
tomorrow (Tuesday)).
|
|
|
|
The rewrite in C is a pretty straightforward translation from the
|
|
algorithm I used in assembler, but it should make things very much
|
|
easier to change and understand for people not familiar with asm (and
|
|
it's easier for me too, I have to admit). Even though flow control
|
|
still isn't supported, I'd guess it's now just a matter of a few lines
|
|
of C to get it into the kernel, so I expect I'll get patches for it
|
|
eventually (or I'll implement it myself when I get bored enough).
|
|
|
|
The rewrite might mean there are new bugs, and it certainly makes the
|
|
interrupts a few instructions slower, but I hope performance won't
|
|
suffer noticeably. And adding support for 16550 as well as for
|
|
non-standard interrupts should be much easier now, even for people that
|
|
aren't heavily into assembly.
|
|
|
|
The only unnecessary assembler still found in the kernel is the keyboard
|
|
driver: I expect I'll clean that up too in a not too distant future.
|
|
That one won't be in 0.96, though.
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: filesystems
|
|
Message-ID: <1992May11.203853.9747@klaava.Helsinki.FI>
|
|
Date: 11 May 92 20:38:53 GMT
|
|
References: <IP208.92May11134756@bille.ii.uib.no> <1992May11.141929.25283@klaava.Helsinki.FI> <IP208.92May11212855@puppe.ii.uib.no>
|
|
Organization: University of Helsinki
|
|
Lines: 36
|
|
|
|
|
|
In article <IP208.92May11212855@puppe.ii.uib.no> magnus@hsr.no writes:
|
|
>I may be chewing an old bone here, but is 28 characters in a file name
|
|
>really enough..? It's a lot better than what we have now, of course -
|
|
>but why not go for the 256 at once?
|
|
|
|
The reason I chose 30 (or 28) chars is that I don't want to move away
|
|
from the fixed-length directory structure for the first "non-minix" vfs
|
|
system I write: that way I can avoid some of the troubles, while still
|
|
getting a reasonable system. Having a 256-char fixed-length directory
|
|
structure is a bit too wasteful even for my taste.
|
|
|
|
Why fixed-length? It's partly because it's slightly easier (not that
|
|
it's that noticeable: I think the vfs routines will have no problem at
|
|
all with variable-sized names), but mostly because it can be gotten
|
|
almost for free with only minor tweaking of the current minix
|
|
vfs-sources. Thus it will serve as an example of having different
|
|
filesystems at the same time, while not actually adding very much code
|
|
to the kernel.
|
|
|
|
> Or does what you said imply that I
|
|
>can make a few simple changes (additions) in the source and build my
|
|
>own filesystem? I still would like 256 ch/filename to be a standard..
|
|
|
|
Yes, it should be pretty easy to change the sources to add a filesystem
|
|
of your own with any filename length (255 chars max due to an arbitrary
|
|
limit: I think that will be enough for everybody). It will be a lot
|
|
easier when you have some examples, I think.
|
|
|
|
Also, even if you made this change just on your own system, it isn't
|
|
visible on a user level at all, except for the fact that you can create
|
|
longer filenames of course. This means that you can run any binaries
|
|
you want on the new filesystem, and as long as they have been compiled
|
|
with the new gcc-2.1 that supports readdir(), they will work on any
|
|
system, including your own specialized fs.
|
|
|
|
Linus
|
|
|
|
=============================
|
|
=============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: ESDI drive compatibility
|
|
Message-ID: <1992May11.141929.25283@klaava.Helsinki.FI>
|
|
Date: 11 May 92 14:19:29 GMT
|
|
References: <34836@darkstar.ucsc.edu> <1992May10.013723.7373@spuddy.uucp> <IP208.92May11134756@bille.ii.uib.no>
|
|
Organization: University of Helsinki
|
|
Lines: 31
|
|
|
|
|
|
In article <IP208.92May11134756@bille.ii.uib.no> magnus@hsr.no writes:
|
|
>In article <1992May10.013723.7373@spuddy.uucp> sweh@spuddy.uucp (Stephen Harris) writes:
|
|
> My next problem is when I plug in my SECOND disk (same size) I'll be forced
|
|
> to have 10x64Mb partitions because of the current FS restrictions :-(
|
|
>
|
|
>Don't worry - the Minix file system is *not* here to stay. I just hope
|
|
>it will be easy to transfer files from a minix fs to the new one. Will
|
|
>you do 'mount x x [minix|vfs|msdos\..]' in 0.96..? Linus?
|
|
|
|
0.96 still won't have other filesystems than the old minix one, although
|
|
I did get patches to implement longer names and long block-numbers. I'm
|
|
pretty certain 0.97 will support 4GB disks and at least 28 character
|
|
filenames: the vfs routines finally seem to be pretty logical and I no
|
|
longer feel the urge to change a lot of things on that level any more.
|
|
|
|
And yes, it will be very easy to move around different filesystems: you
|
|
can mount them as any normal minix partition, and copy things around
|
|
transparently. The only problem will be old binaries that still read
|
|
directories directly: those won't be able to handle longer filenames. I
|
|
assume that by the time 0.97 comes out, this won't be that much of a
|
|
problem any more (assuming new versions at the same rate as before, 0.97
|
|
will be out by midsummer or so: I'll continue on linux during the
|
|
summer).
|
|
|
|
The idea behind the vfs routines is that all this can happen without any
|
|
major trauma: people can go on using the old filesystem if they wish, or
|
|
use several different types at the same time, mounting and umounting
|
|
them as they see fit. I haven't done it myself, but I know the routines
|
|
work, as others have tried it out.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 0.96 uploaded
|
|
Summary: new release
|
|
Message-ID: <1992May12.165112.24234@klaava.Helsinki.FI>
|
|
Date: 12 May 92 16:51:12 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 71
|
|
|
|
|
|
Well, the title says it all: I've sent off 0.96 to banjo.concert.net,
|
|
where it can be found in pub/Linux/Linus along with a new bootimage and
|
|
a program for formatting floppies under linux (which works only under
|
|
0.96).
|
|
|
|
I've also sent it to tsx-11.mit.edu and I'll send it to nic as soon as
|
|
the lines clear up.
|
|
|
|
General warning about 0.96:
|
|
|
|
- the scsi code is in the kernel, but I haven't personally tested it,
|
|
so who knows... The SCSI code also results in a 4-5 second pause at
|
|
bootup with the current bootimage, while it searches for an adapter:
|
|
if you find this disturbing, you have to recompile the kernel with the
|
|
appropriate changes to config.h.
|
|
|
|
- The harddisk timings have changed: the testimage got a generally good
|
|
review, but it hasn't been tested very much. The changes seem to help
|
|
at least some "HD times out" problems, but there might be new bugs..
|
|
|
|
- The serial code was totally rewritten this weekend, and I haven't
|
|
tested it out under any heavier load. I found one bug as late as
|
|
today, and there might be others lurking around.
|
|
|
|
- There have been generally pretty heavy rewrites: it's binary
|
|
compatible with the old kernels, but the changes might not all be
|
|
correct. Oh, well.
|
|
|
|
That said, I hope 0.96 will be an improvement on earlier versions, and
|
|
most of the old bugs corrected. If the new version still has some
|
|
problem - please mail me with a new bugreport. Otherwise I'll just
|
|
assume the problem went away: I'm afraid don't have time to go through
|
|
old mail searching for any bugs that might still be in there.
|
|
|
|
Partial list of features:
|
|
|
|
- automatic floppy detection. Please add the following devices:
|
|
|
|
mknod /dev/fd0 b 2 0
|
|
mknod /dev/fd1 b 2 1
|
|
|
|
which act as A and B floppies respectively, finding out automatically
|
|
what kind of disk there is.
|
|
|
|
The floppy driver now also contains a timeout, so an empty diskdrive
|
|
no longer results in a floppy driver hang.
|
|
|
|
- serial lines now support dropping DTR on closing, and sending SIGHUP
|
|
to the process group that is logged in on a serial line. It's also a
|
|
lot easier to change the interrupts etc of the lines.
|
|
|
|
- unix sockets supported for X, as well as mmap() on /dev/mem etc.
|
|
|
|
- pty's corrected. Hopefully no more hangs under X due to pty trouble.
|
|
|
|
- better IO-performance when there are computationally intensive jobs in
|
|
the background or on another VC. Partly due to new scheduler
|
|
mechanism, partly due to read-ahead on normal files.
|
|
|
|
- cleaned up vfs layer.
|
|
|
|
- no more mismatched children
|
|
|
|
- minor corrections all over the place.
|
|
|
|
The new release is in fact different enough that there is no use trying
|
|
to make context diffs: files have disappeared, others are new, others
|
|
have simply changed a lot. Even compared to pre-0.96 there has been
|
|
quite a lot of changes.
|
|
|
|
Linus
|
|
|
|
==================
|
|
==================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Testers wanted... new 0.96 image
|
|
Message-ID: <1992May14.132345.12095@klaava.Helsinki.FI>
|
|
Date: 14 May 92 13:23:45 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 15
|
|
|
|
|
|
I've put a new testimage on banjo.concert.net:
|
|
|
|
pub/Linux/Linus/boot92.05.14.Z
|
|
|
|
and I hope people that have problems with 0.96 could try it out. I've
|
|
mainly tried to remove some races in the serial code, but I hope this
|
|
image also corrects the bootup problems experienced by some people.
|
|
|
|
If you have problems booting the original 0.96, or are seeing more
|
|
errors with the new serial lines, please try it out. As with the
|
|
earlier testimage, it's no use to me if you can't test it out in a day
|
|
or two: by that time I'll probably release 0.96a or a new testimage
|
|
depending on the success of this one.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: pcomm95c
|
|
Message-ID: <1992May17.112630.28674@klaava.Helsinki.FI>
|
|
Date: 17 May 92 11:26:30 GMT
|
|
References: <smp.0gdb@myamiga.mixcom.COM> <1992May16.035813.832@uniwa.uwa.edu.au>
|
|
Organization: University of Helsinki
|
|
Lines: 23
|
|
|
|
|
|
In article <1992May16.035813.832@uniwa.uwa.edu.au> oreillym@tartarus.uwa.edu.au (Michael O'Reilly) writes:
|
|
>
|
|
>Hmmm. I have the same problem that the original poster had. i.e. haveing
|
|
>type a few keys after control-A 0 before the help screen flashes, and
|
|
>then it does just that, flashes. Looking deeping, I find that the time
|
|
>is actaully spent in the kernel. Somehow (I couldn find it. ) it is
|
|
>setting VMIN in the termios structure to be 4. so you have to type 4
|
|
>keys before the kernel will return on the read() call.
|
|
>
|
|
>Fixing this is a matter of finding where the VMIN feild is set. But the
|
|
>original program has been hacked so badly, I put it aside for now..
|
|
|
|
This sounds like a problem I had with some version of kermit: some of
|
|
the programs seem to have the c_cc offsets hardcoded into numbers
|
|
instead of using VMIN/VEOF etc.. Very bad programming style, and I
|
|
think it breaks under linux which doesn't have exactly the same c_cc
|
|
offsets as most other unices it seems.
|
|
|
|
Linux has distinct VEOF (4) and VMIN (6), while for example SunOS seems
|
|
to use the same value (4) for both of these. I don't know if the latter
|
|
is actually what posix specifies, but I doubt it. Can anybody confirm?
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: minix
|
|
Message-ID: <1992May18.111600.26984@klaava.Helsinki.FI>
|
|
Date: 18 May 92 11:16:00 GMT
|
|
References: <1992May18.101044.26717@athena.mit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 50
|
|
|
|
|
|
In article <1992May18.101044.26717@athena.mit.edu> J.Jagger@sheffield-city-poly.ac.uk writes:
|
|
>Hello, Linux newbee JJ here. I'm still waiting for a hard disk to
|
|
>arrive in the post to install linux, so while I was waiting I thought
|
|
>I'd have a quick read of Tanenbaums book 'Operating Systems,
|
|
>Design and Implementation.' (This contains the source code to
|
|
>MINIX). Two things.
|
|
>
|
|
>1. The source code for init and the shell are not included (in the
|
|
>book). How different are the linux versions from the 'original' MINIX
|
|
>versions?
|
|
|
|
I get the feeling you think linux evolved from minix? This is not true:
|
|
linux was written under minix, and while linux superficially resembles
|
|
minix386, it's really not that close to minix in any way... The most
|
|
minix-like feature in linux is the filesystem: due to practical reasons
|
|
I wanted to have the same physical layout of the disk as in minix.
|
|
|
|
Reading Tanenbaum is good for a general idea of operating systems, but
|
|
it's generally not worth it to read the minix specific bits in order to
|
|
understand linux (reading the minix source code in order to understand
|
|
the genera idea might be worth it). While the filesystem has the same
|
|
physical layout, multithreading means locking etc needs to be done
|
|
totally differently etc. The kernel proper also uses totally different
|
|
design ideals, and the device drivers are also very different (ie they
|
|
use interrupts directly instead of waiting for hardware messages etc).
|
|
|
|
Lastly, minix and linux memory management is fundamentally different:
|
|
linux uses paging on a very low level for everything: minix uses a
|
|
heap-like memory management strategy, I think.
|
|
|
|
As to the shell under linux: there are several (although bash is the
|
|
only one I use), and the same shells are generally available for minix
|
|
as well (not standard PC-minix: it can't run tcsh/bash due to the 64kB
|
|
limit). The standard minix shell isn't available for linux (not that
|
|
big a loss: the minix shell doesn't do your mental sanity much good):
|
|
ash is probably the closest thing.
|
|
|
|
I don't know about /bin/init: I never looked at the sources under minix,
|
|
and I haven't exactly dissected it under linux either.
|
|
|
|
> [ Lions book ]
|
|
>Is this booklet still available ?
|
|
>If so does anyone know where I can get a copy of it ?
|
|
|
|
I doubt you'll find a copy of the Lions book: I think the only way to
|
|
get your hands on it would be to find somebody who did the course and
|
|
photocopy it off him. I don't think AT&T allows that kind of thing any
|
|
more, so it's probably illegal.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: gdb postmortem debugging...
|
|
Message-ID: <1992May18.142534.6381@klaava.Helsinki.FI>
|
|
Date: 18 May 92 14:25:34 GMT
|
|
References: <1992May14.165106.8531@m.cs.uiuc.edu> <1992May18.123608.8795@fwi.uva.nl>
|
|
Organization: University of Helsinki
|
|
Lines: 15
|
|
|
|
|
|
In article <1992May18.123608.8795@fwi.uva.nl> lankeste@fwi.uva.nl (Branko Lankester) writes:
|
|
>
|
|
>You can replace do_exit(11) in die() in kernel/traps.c with
|
|
>send_sig(SIGSEGV, current, 0), linux versions before 0.96 had
|
|
>to use do_exit() because the old trap handlers didn't do signal
|
|
>recognition.
|
|
|
|
Yes, this will fix the problem, but it's not completely safe: if the
|
|
error occurs in the kernel, it will probably lock up. Most of the
|
|
errors occur in user space, but if syscalls are given bad arguments or
|
|
similar you can induce general protection errors in kernel space:
|
|
send_sig will not work in that case, while do_exit() always terminates
|
|
the process cleanly (but doesn't work for gdb).
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Harddisk problems, new testrelease
|
|
Message-ID: <1992May18.165317.11176@klaava.Helsinki.FI>
|
|
Date: 18 May 92 16:53:17 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 23
|
|
|
|
|
|
I've put out the latest test-image on banjo.concert.net in the file
|
|
pub/Linux/Linus/boot92.05.18.Z: it should hopefully correct the harddisk
|
|
problems some people have had with plain 0.96. I'll make it official by
|
|
calling it 0.96a if there are no more problems (and make source
|
|
available as well. Later this week).
|
|
|
|
If you had fs corruption problems or similar with 0.96, try out the new
|
|
version: unless I get feedback on it, I can't try to correct any
|
|
remaining hardware-related bugs.
|
|
|
|
It seems the harddisk interrupts have to run to completion with all
|
|
other interrupts disabled: I haven't found out exactly where the problem
|
|
is, but that's how it looks right now. Thus interrupt latency went up
|
|
again :(. It's still better than 0.95, I hope.
|
|
|
|
The above testimage (and the upcoming 0.96a release) contains the kill
|
|
fix (and the same serial fixes as in the last testimage), and uses the
|
|
rewritten keyboard handler by Johan Myreen (essentially the same driver,
|
|
but rewritten in C).
|
|
|
|
Linus
|
|
|
|
PS. boot92.05.18.Z on saatavilla my|s klaavassa: /usr/tmp/linux
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: linux as only bootable partition
|
|
Keywords: linux, boot, shoelace
|
|
Message-ID: <1992May21.063838.3334@klaava.Helsinki.FI>
|
|
Date: 21 May 92 06:38:38 GMT
|
|
References: <1992May21.053756.13081@cs.ubc.ca>
|
|
Organization: University of Helsinki
|
|
Lines: 16
|
|
|
|
|
|
In article <1992May21.053756.13081@cs.ubc.ca> edmonds@cs.ubc.ca (Brian Edmonds) writes:
|
|
[ just answering the PS - I don't have DOS, but I still boot from floppy
|
|
just because I want to have several different kernel images... ]
|
|
>
|
|
>PS: when is 16550 support expected? I specificly ordered serial
|
|
>ports with these, as the FIFO seems an especially elegant solution to
|
|
>too many interrupts at high data rates.
|
|
|
|
I'd love to support a 16550, but I don't have any data on it (and no
|
|
chip). The optimal solution would be that somebody else writes the
|
|
changes to the serial driver, but I can certainly try to do it blind if
|
|
I could get docs. So if somebody has good technical dosumentation on
|
|
the 16550 in machine-readable format, please mail it to me: I won't
|
|
promise anything, but I might get it to work.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 0.96a out today/tomorrow
|
|
Message-ID: <1992May21.121955.1485@klaava.Helsinki.FI>
|
|
Date: 21 May 92 12:19:55 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 49
|
|
|
|
|
|
The subject say it all: I haven't heard any bad results (except somewhat
|
|
worse performance on the serial lines) from the testimage testers, so
|
|
I'll make 0.96a available tonight (Finnish time: EST) or tomorrow.
|
|
tsx-11, nic and banjo will be the sites I'll upload it to.
|
|
|
|
0.96a doesn't have any major new features: I just tried to correct known
|
|
bugs and get a stable version out the door. I hope 0.96 won't need any
|
|
more interim releases, but we'll see.
|
|
|
|
0.96a has gone back to non-interruptible hd-interrupts, and as long as
|
|
I'm not sure about the reason for the need of this, it's going to stay
|
|
that way. I hope this new version will run on all drives that have been
|
|
supported in the past, and the only known remaining problem is the Kalok
|
|
drives which have spurious interrupts. That's definitely a hardware
|
|
problem, and Branko Lankaster has patches that fake away these..
|
|
|
|
0.96a should also correct most of the serial line problems, and the
|
|
keyboard driver is now in C - I expect somebody will change it to allow
|
|
run-time keyboard changing. Additionally, there are various minor fixes
|
|
in various places:
|
|
|
|
- the kill fix by tytso that allows any process to wake up a stopped
|
|
process as long as it's in the same session.
|
|
|
|
- chown fix by card and me. Users can chgrp files they own to any group
|
|
they belong to etc - _POSIX_CHOWN_RESTRICTED should now be implemented
|
|
correctly. Also, chown() on a symlink now actually chown's the symlink
|
|
and not the file it points to (but GNU fileutils don't seem to want to
|
|
chown symlinks anyway - or maybe I have an older version)
|
|
|
|
- SIGSEGV fix by lankaster (?) which allows for better debugging after
|
|
protection faults. Most such errors are now trappable in gdb
|
|
(although some circumstances can still result in the process exiting
|
|
at once: out-of-memory errors etc)
|
|
|
|
I have also changed the memory manager to check for illegal memory
|
|
references (ie using the area between brk and stack), so debugging bad
|
|
pointer references should be much easier. This fix will hopefully also
|
|
trap the uncompress problem with bad files, but I haven't tried it out.
|
|
Programs can still call brk() with any value, so it doesn't mean that
|
|
you can't use up all available memory, but at least this should fix
|
|
/bad/ memory references. My limited tests with gdb seems to indicate it
|
|
all works nicely.
|
|
|
|
Core files are still not generated (I haven't got the slightest idea
|
|
what format they should have), so debugging isn't perfect yet, but it
|
|
should certainly be much easier.
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: VFS - Where can I read about it?
|
|
Message-ID: <1992May22.050933.22701@klaava.Helsinki.FI>
|
|
Date: 22 May 92 05:09:33 GMT
|
|
References: <BoMFDB.6wD@ais.org>
|
|
Organization: University of Helsinki
|
|
Lines: 49
|
|
|
|
|
|
In article <BoMFDB.6wD@ais.org> lcd@ais.org (Leon Dent) writes:
|
|
>I read comp.os.linux, but don't (can't) yet run it. The VFS concept
|
|
>interests me, but I don't know what books or papers explain it.
|
|
>Pointers anyone?
|
|
|
|
As with the rest of the kernel internals, linux VFS doesn't exactly look
|
|
like anything else: the ideas are the same as in SunOS etc, but the
|
|
implementation is linux-specific (the first alpha-release used similar
|
|
macros as SunOS I think, but after my rewrites...)
|
|
|
|
So the only place to learn about linux VFS is the source code. It's not
|
|
really that bad: it's pretty simple. The different routines are
|
|
selected by following pointers to structures containg function-pointers.
|
|
For example if you want to find out which inode the name "/usr" points
|
|
to, you can use something like this (simplified, but you get the idea):
|
|
|
|
...
|
|
dir = current->root;
|
|
if (!dir->i_ops || !dir->i_ops->lookup)
|
|
return -ENOTDIR;
|
|
inode = dir->i_ops->lookup(dir,"usr");
|
|
...
|
|
|
|
Similarly, if you wanted to create the directory of "src/linux" relative
|
|
to the current pwd, you'd use something like this:
|
|
|
|
dir = current->pwd;
|
|
if (!dir....
|
|
inode = dir->i_ops->lookup(dir,"src");
|
|
if (!inode || !inode->i_ops || !inode->i_ops->mkdir)
|
|
return -ENOENT;
|
|
return inode->i_ops->mkdir(inode,"linux");
|
|
|
|
(when I use a string in the above, the real routines actually use a
|
|
pointer+length combination instead of the normal C strings. This means
|
|
there is no need to copy names around: we use the name the user supplied
|
|
directly, and the VFS routines parse away the slashes.. And as the
|
|
pointers are relative to the %fs segment, we can choose user/kernel
|
|
space strings just by changing the segment)
|
|
|
|
So the VFS layer just translates the unix system calls to these kinds of
|
|
indirect calls, keeping track of mount points/root/pwd etc. Thus the fs
|
|
is effectively in two separate pieces: the VFS which parses complete
|
|
filenames, and the filesystem-specific parts which just work on one part
|
|
at a time. The VFS doesn't care about the disk layout, and the
|
|
fs-specific parts don't have to know anything about mount-points/current
|
|
root/pwd etc idiosyncracies.
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: VFS - Where can I read about it?
|
|
Message-ID: <1992May22.201941.13737@klaava.Helsinki.FI>
|
|
Date: 22 May 92 20:19:41 GMT
|
|
References: <BoMFDB.6wD@ais.org> <1992May22.050933.22701@klaava.Helsinki.FI> <JES.92May22124113@mbio.med.upenn.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 29
|
|
|
|
|
|
In article <JES.92May22124113@mbio.med.upenn.edu> jes@mbio.med.upenn.edu (Joe Smith) writes:
|
|
>
|
|
>What happens with mkfs & fsck? Can these be written using standard
|
|
>Unix system calls (through the VFS, and thus are indifferent to fs
|
|
>changes), or will we need a separate executable (or switch) for each
|
|
>fs? Are we still without source for fsck and if so, will the old one
|
|
>work with a 30-char-filename fs? How about mount?
|
|
|
|
mkfs/fsck will have to be written especially for each filesystem: these
|
|
are purely user-level programs which operate directly on the block
|
|
device. mkfs is usually very simple to write: the only thing needed is
|
|
to set up an empty filesystem so that the kernel can then start
|
|
operating on it and fill it with data, but fsck is a very complicated
|
|
program, and getting it right is not easy (the current linux fsck is not
|
|
very good, and does only a half-hearted job which isn't good enough in
|
|
many situations)
|
|
|
|
As to mount(), this is a kernel primitive, and is part of the filesystem
|
|
drivers. Mount is given a extra parameter that indicates which type of
|
|
filesystem to mount (the name of the filesystem type), and then
|
|
"bootstraps" the filesystem information by filling in the appropriate
|
|
inode operations for the root inode of the new filesystem etc.
|
|
|
|
So to mount a DOS filesystem (if/when it is finally implemented), you'd
|
|
use something like "mount /dev/hdb3 /local DOS". The current mount just
|
|
gives a NULL for the filesystem name, which the kernel takes to be the
|
|
default minix filesystem.
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 0.96a available
|
|
Message-ID: <1992May22.210159.14611@klaava.Helsinki.FI>
|
|
Date: 22 May 92 21:01:59 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 36
|
|
|
|
|
|
Oh, well, no use in delaying it any more, so I sent out my latest
|
|
release to nic.funet.fi, tsx-11.mit.edu and banjo.concert.net. They
|
|
should show up in the next couple of days (they are already visible on
|
|
banjo: /pub/Linux/Linus). I hope all the bugs got fixed, but I did
|
|
something potentially stupid:
|
|
|
|
I had expected that lankaster wouldn't get his hd-speedup patches ready
|
|
for 0.96a, and I was resigned to the same hd-performance as with all
|
|
older releases. But when I saw them on the newsgroup today I thought
|
|
I'd try them out just in case, as I could always use my backup-version
|
|
if they backfired...
|
|
|
|
The point here is that the patch ended up in 0.96a after some minor
|
|
edits by me (one benign bug and some editing due to changed files). So
|
|
now hd-performance is much better on most operations. I just hope it
|
|
doesn't result in yet another release just to fix new bugs (but I doubt
|
|
it: the patches were really minor and clean - no ugly hacks needed I'm
|
|
happy to say). Branko already posted benchmarks, and I can only confirm
|
|
that it's indeed snappier, especially on writes. syncing is no longer a
|
|
pain even after heavy writing.
|
|
|
|
Other than the hd-performance, there are no new features I haven't
|
|
already mentioned in other posts. Bug-fixes, rewrites in C, better
|
|
debugging. I haven't made the cdiffs yet, so right now the new release
|
|
is only available as complete source and as a binary, but I'll try to
|
|
get patches done tonight. Possibly tomorrow. The patches will be
|
|
against the original 0.96, and shouldn't be too big.
|
|
|
|
Linus
|
|
|
|
PS. No need for more 16550 info: even if somebody doesn't implement it
|
|
for the next release, I think I can get it going. Doesn't seem too
|
|
hard. I'll also start to look into core-files. Eventually. Promise.
|
|
|
|
PPS. Ja 0.96a on taas saatavilla klaavasta /usr/tmp/linux'ssa
|
|
yliopistolla kirjoilla oleville.
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Unable to boot 0.96a
|
|
Message-ID: <1992May23.195321.4721@klaava.Helsinki.FI>
|
|
Date: 23 May 92 19:53:21 GMT
|
|
References: <2A1E9A99.25394@ics.uci.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 22
|
|
|
|
|
|
Oh boy. I saw the subject line and thought "here it starts again...".
|
|
Happily, this is a problem that should be easily solveable..
|
|
|
|
In article <2A1E9A99.25394@ics.uci.edu> bvickers@bonnie.ics.uci.edu (Brett J. Vickers) writes:
|
|
> The "Loading..." came up, and after
|
|
>several more "."s, it went into an endless (debugging?) loop of
|
|
>some sort, putting the following on my screen over and over again:
|
|
>
|
|
>@X: 1009
|
|
>AX: 0212
|
|
>BX: 7E00
|
|
>CX: 0901
|
|
>DX: 0000
|
|
|
|
This just indicates that the floppy seems to be bad, or some similar
|
|
problem. The bootup sequence is pretty unstable, and if there are any
|
|
problems at all reading in the system, it usually goes into a loop
|
|
printing out the error-messages.
|
|
|
|
Make sure the floppy is high-density, reformat, and try again.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Patches...
|
|
Message-ID: <1992May24.104310.16221@klaava.Helsinki.FI>
|
|
Date: 24 May 92 10:43:10 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 28
|
|
|
|
|
|
I finally got around to doing the cdiffs against 0.96, and uploaded them
|
|
to the usual ftp-archives (nic,tsx and banjo). The patches are actually
|
|
about 35kB compressed, but they aren't as big as that sounds: it's
|
|
mainly due to the serial line changes and the fact that the keyboard
|
|
driver was changed to C. I don't know if somebody is actually going to
|
|
get the patches instead of the whole distribution, but at least it's
|
|
available if somebody does want it.
|
|
|
|
If you decide to get 0.96a by patching from 0.96, get the patch-file
|
|
(diff0.96-0.96a.Z), apply it, and remove the old keyboard.S driver: it
|
|
is no longer needed. You should also do a "make dep" to get the
|
|
dependencies up-to-date: I removed those from the cdiffs.
|
|
|
|
I am also going to upload the first set of patches against 0.96a later
|
|
today. The reason is that the faster harddisk driver had problems with
|
|
error situations, which I think I've fixed now. The patches also
|
|
correct the VC restoration with X11 after exiting (but see later). The
|
|
bugs aren't big enough to require a new version (so far I haven't had a
|
|
single bug-report on 0.96a: does it really work that well or are people
|
|
afraid to try it out?), so I'm just making the cdiffs available.
|
|
|
|
As to X: if you are using 0.1 it I'd suggest getting the new version.
|
|
It corrects the text-mode restoring bug, and with 0.96a with patch 1
|
|
applied I haven't seen any problems at all. xterm now handles resizing
|
|
correctly, and has shrunk considerably due to the multiple shared
|
|
libraries (from 570kB to 115kB).
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: linux-0.96a.patch1
|
|
Message-ID: <1992May24.114643.17027@klaava.Helsinki.FI>
|
|
Date: 24 May 92 11:46:43 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 257
|
|
|
|
|
|
Here is the patch to 0.96a that corrects the harddisk error bug, dup2()
|
|
and X11 text-mode restoration. Thanks to Rick Sladkey for finding the
|
|
dup2() bug.
|
|
|
|
This patch has also been sent to the ftp-archives.
|
|
|
|
Linus
|
|
----------
|
|
*** 0.96a/linux/fs/fcntl.c Fri Apr 24 18:36:09 1992
|
|
--- linux/fs/fcntl.c Sat May 23 23:24:24 1992
|
|
***************
|
|
*** 37,42 ****
|
|
--- 37,44 ----
|
|
|
|
int sys_dup2(unsigned int oldfd, unsigned int newfd)
|
|
{
|
|
+ if (oldfd >= NR_OPEN || !current->filp[oldfd])
|
|
+ return -EBADF;
|
|
if (newfd == oldfd)
|
|
return newfd;
|
|
sys_close(newfd);
|
|
*** 0.96a/linux/kernel/chr_drv/console.c Thu May 14 17:40:19 1992
|
|
--- linux/kernel/chr_drv/console.c Sun May 24 04:03:01 1992
|
|
***************
|
|
*** 56,64 ****
|
|
INIT_C_CC \
|
|
}
|
|
|
|
- static void blank_screen(void);
|
|
- static void unblank_screen(void);
|
|
-
|
|
/*
|
|
* These are set up by the setup-routine at boot-time:
|
|
*/
|
|
--- 56,61 ----
|
|
***************
|
|
*** 223,229 ****
|
|
{
|
|
if (video_type != VIDEO_TYPE_EGAC && video_type != VIDEO_TYPE_EGAM)
|
|
return;
|
|
! if (currcons != fg_console)
|
|
return;
|
|
cli();
|
|
outb_p(12, video_port_reg);
|
|
--- 220,226 ----
|
|
{
|
|
if (video_type != VIDEO_TYPE_EGAC && video_type != VIDEO_TYPE_EGAM)
|
|
return;
|
|
! if (currcons != fg_console || vt_cons[currcons].vt_mode == KD_GRAPHICS)
|
|
return;
|
|
cli();
|
|
outb_p(12, video_port_reg);
|
|
***************
|
|
*** 584,593 ****
|
|
printk("con_write: illegal tty\n\r");
|
|
return;
|
|
}
|
|
- if (vt_cons[currcons].vt_mode == KD_GRAPHICS) {
|
|
- flush(tty->write_q);
|
|
- return; /* no output in graphics mode */
|
|
- }
|
|
while (!tty->stopped && (c = GETCH(tty->write_q)) >= 0) {
|
|
if (c == 24 || c == 26)
|
|
state = ESnormal;
|
|
--- 581,586 ----
|
|
***************
|
|
*** 834,841 ****
|
|
state = ESnormal;
|
|
}
|
|
}
|
|
- set_cursor(currcons);
|
|
timer_active &= ~(1<<BLANK_TIMER);
|
|
if (currcons == fg_console)
|
|
if (console_blanked) {
|
|
timer_table[BLANK_TIMER].expires = 0;
|
|
--- 827,836 ----
|
|
state = ESnormal;
|
|
}
|
|
}
|
|
timer_active &= ~(1<<BLANK_TIMER);
|
|
+ if (vt_cons[currcons].vt_mode == KD_GRAPHICS)
|
|
+ return;
|
|
+ set_cursor(currcons);
|
|
if (currcons == fg_console)
|
|
if (console_blanked) {
|
|
timer_table[BLANK_TIMER].expires = 0;
|
|
***************
|
|
*** 1129,1136 ****
|
|
|
|
if (currcons<0 || currcons>=NR_CONSOLES)
|
|
currcons = 0;
|
|
- if (vt_cons[currcons].vt_mode == KD_GRAPHICS)
|
|
- return; /* no output in graphics mode */
|
|
while (c = *(b++)) {
|
|
if (c == 10) {
|
|
cr(currcons);
|
|
--- 1124,1129 ----
|
|
*** 0.96a/linux/kernel/chr_drv/vt.c Wed May 6 21:00:29 1992
|
|
--- linux/kernel/chr_drv/vt.c Sun May 24 03:50:43 1992
|
|
***************
|
|
*** 15,20 ****
|
|
--- 15,21 ----
|
|
|
|
#include <linux/sched.h>
|
|
#include <linux/tty.h>
|
|
+ #include <linux/timer.h>
|
|
#include <linux/kernel.h>
|
|
|
|
#include "vt_kern.h"
|
|
***************
|
|
*** 121,127 ****
|
|
default:
|
|
return -EINVAL;
|
|
}
|
|
! vt_cons[console].vt_mode = arg;
|
|
return 0;
|
|
case KDGETMODE:
|
|
verify_area((void *) arg, sizeof(unsigned long));
|
|
--- 122,138 ----
|
|
default:
|
|
return -EINVAL;
|
|
}
|
|
! if (vt_cons[console].vt_mode == (unsigned char) arg)
|
|
! return 0;
|
|
! vt_cons[console].vt_mode = (unsigned char) arg;
|
|
! if (console != fg_console)
|
|
! return 0;
|
|
! if (arg == KD_TEXT)
|
|
! unblank_screen();
|
|
! else {
|
|
! timer_active &= 1<<BLANK_TIMER;
|
|
! blank_screen();
|
|
! }
|
|
return 0;
|
|
case KDGETMODE:
|
|
verify_area((void *) arg, sizeof(unsigned long));
|
|
*** 0.96a/linux/kernel/blk_drv/hd.c Fri May 22 20:56:49 1992
|
|
--- linux/kernel/blk_drv/hd.c Sat May 23 17:03:41 1992
|
|
***************
|
|
*** 424,430 ****
|
|
return;
|
|
if (++CURRENT->errors >= MAX_ERRORS)
|
|
if (CURRENT->bh && CURRENT->nr_sectors > 2) {
|
|
! CURRENT->nr_sectors &= ~1;
|
|
next_buffer(0);
|
|
} else
|
|
end_request(0);
|
|
--- 424,435 ----
|
|
return;
|
|
if (++CURRENT->errors >= MAX_ERRORS)
|
|
if (CURRENT->bh && CURRENT->nr_sectors > 2) {
|
|
! CURRENT->nr_sectors--;
|
|
! CURRENT->sector++;
|
|
! if (CURRENT->nr_sectors & 1) {
|
|
! CURRENT->nr_sectors--;
|
|
! CURRENT->sector++;
|
|
! }
|
|
next_buffer(0);
|
|
} else
|
|
end_request(0);
|
|
***************
|
|
*** 530,536 ****
|
|
cli();
|
|
if (++CURRENT->errors >= MAX_ERRORS)
|
|
if (CURRENT->bh && CURRENT->nr_sectors > 2) {
|
|
! CURRENT->nr_sectors &= ~1;
|
|
next_buffer(0);
|
|
} else
|
|
end_request(0);
|
|
--- 535,546 ----
|
|
cli();
|
|
if (++CURRENT->errors >= MAX_ERRORS)
|
|
if (CURRENT->bh && CURRENT->nr_sectors > 2) {
|
|
! CURRENT->nr_sectors--;
|
|
! CURRENT->sector++;
|
|
! if (CURRENT->nr_sectors & 1) {
|
|
! CURRENT->nr_sectors--;
|
|
! CURRENT->sector++;
|
|
! }
|
|
next_buffer(0);
|
|
} else
|
|
end_request(0);
|
|
*** 0.96a/linux/kernel/blk_drv/blk.h Fri May 22 20:56:49 1992
|
|
--- linux/kernel/blk_drv/blk.h Sat May 23 17:00:10 1992
|
|
***************
|
|
*** 149,174 ****
|
|
wake_up(&bh->b_wait);
|
|
}
|
|
|
|
- extern inline void next_buffer(int uptodate)
|
|
- {
|
|
- struct buffer_head *tmp;
|
|
-
|
|
- CURRENT->bh->b_uptodate = uptodate;
|
|
- unlock_buffer(CURRENT->bh);
|
|
- if (!uptodate) {
|
|
- printk(DEVICE_NAME " I/O error\n\r");
|
|
- printk("dev %04x, block %d\n\r",CURRENT->dev,
|
|
- CURRENT->bh->b_blocknr);
|
|
- }
|
|
- tmp = CURRENT->bh;
|
|
- CURRENT->bh = CURRENT->bh->b_reqnext;
|
|
- tmp->b_reqnext = NULL;
|
|
- if (!CURRENT->bh)
|
|
- panic("next_buffer: request buffer list destroyed\r\n");
|
|
- CURRENT->buffer = CURRENT->bh->b_data;
|
|
- CURRENT->errors = 0;
|
|
- }
|
|
-
|
|
extern inline void end_request(int uptodate)
|
|
{
|
|
struct request * tmp;
|
|
--- 149,154 ----
|
|
***************
|
|
*** 188,193 ****
|
|
--- 168,195 ----
|
|
wake_up(&tmp->waiting);
|
|
tmp->dev = -1;
|
|
wake_up(&wait_for_request);
|
|
+ }
|
|
+
|
|
+ extern inline void next_buffer(int uptodate)
|
|
+ {
|
|
+ struct buffer_head *tmp;
|
|
+
|
|
+ tmp = CURRENT->bh;
|
|
+ CURRENT->bh = tmp->b_reqnext;
|
|
+ tmp->b_reqnext = NULL;
|
|
+ tmp->b_uptodate = uptodate;
|
|
+ unlock_buffer(tmp);
|
|
+ if (!uptodate) {
|
|
+ printk(DEVICE_NAME " I/O error\n\r");
|
|
+ printk("dev %04x, block %d\n\r",tmp->b_dev, tmp->b_blocknr);
|
|
+ }
|
|
+ if (!CURRENT->bh) {
|
|
+ printk("next_buffer: request buffer list destroyed\r\n");
|
|
+ end_request(0);
|
|
+ return;
|
|
+ }
|
|
+ CURRENT->buffer = CURRENT->bh->b_data;
|
|
+ CURRENT->errors = 0;
|
|
}
|
|
|
|
#ifdef DEVICE_INTR
|
|
*** 0.96a/linux/include/linux/tty.h Wed May 20 12:15:42 1992
|
|
--- linux/include/linux/tty.h Sun May 24 03:46:56 1992
|
|
***************
|
|
*** 195,200 ****
|
|
--- 195,202 ----
|
|
void copy_to_cooked(struct tty_struct * tty);
|
|
|
|
void update_screen(int new_console);
|
|
+ void blank_screen(void);
|
|
+ void unblank_screen(void);
|
|
|
|
int kill_pg(int pgrp, int sig, int priv);
|
|
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Linux X question
|
|
Message-ID: <1992May25.093156.8405@klaava.Helsinki.FI>
|
|
Date: 25 May 92 09:31:56 GMT
|
|
References: <13489@umd5.umd.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 37
|
|
|
|
|
|
In article <13489@umd5.umd.edu> colbert@astro.umd.edu (Edward J.M. Colbert) writes:
|
|
>I would like to occasionally open an xterm and log in as root --
|
|
>without having to shutdown X11 completely. Normally, one could
|
|
>login as root, but for some reason, when I have X loaded, the only
|
|
>user I can 'login' as is the one I started X from. What's the
|
|
>solution?
|
|
|
|
Add the pty devices to your /etc/securetty (or whatever), or root won't
|
|
be able to log in on a xterm. Also, make login setuid. I /think/ that
|
|
should do it, but I haven't tried it myself..
|
|
|
|
As an aside to persons that are having problems with xterm or anything
|
|
else that uses pty's: make sure your /dev has the correct pty entries.
|
|
They were wrong on the 0.12 root-disk, I think, and some people have had
|
|
problems with it. The correct entries are:
|
|
|
|
ptyp0 c 4 128
|
|
ptyp1 c 4 129
|
|
...
|
|
|
|
ttyp0 c 4 192
|
|
ttyp1 c 4 193
|
|
...
|
|
|
|
(also note that the standard kernel has only 4 pty's compiled into it,
|
|
and if you want more you have to recompile the kernel. Getting 0.96(a)
|
|
is a good idea: there were bugs in the pty-code in earlier versions that
|
|
caused the kernel to hang under certain circumstances)
|
|
|
|
>Also, when X shuts down, I lose my text screen and all of my virtual
|
|
>consoles. What's going on here?
|
|
|
|
This is an X11 bug and has been corrected in the new version - if you
|
|
aren't on the X11 mailing-list you won't have seen the message. Shame
|
|
on you.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: X386 dies prematurely
|
|
Keywords: linux X386
|
|
Message-ID: <1992May25.100710.9861@klaava.Helsinki.FI>
|
|
Date: 25 May 92 10:07:10 GMT
|
|
References: <1992May25.040712.17267@infonode.ingr.com>
|
|
Organization: University of Helsinki
|
|
Lines: 26
|
|
|
|
|
|
In article <1992May25.040712.17267@infonode.ingr.com> pitaka@infonode.ingr.com (Anucha Pitak) writes:
|
|
>I got the following message when I ran startx,
|
|
>
|
|
>---------------------------------------------------------------
|
|
>X386 Version 1.2 / X Windows System [linux version]
|
|
>(protocol Version 11, revision 0, vendor release 5000)
|
|
>
|
|
>
|
|
>giving up
|
|
>xinit: Invalid argument (errno 22): unable to connect to X server
|
|
>xinit: No such process (errno 3) : server error.
|
|
>---------------------------------------------------------------
|
|
>
|
|
>I have 386-25 (DTK mother board), paradise WD90C00, and microsoft
|
|
>compatible serial mouse.
|
|
|
|
With these kinds of problems it's usually a good idea to redirect stderr
|
|
to a file: otherwise some of the error-messages might get lost if they
|
|
are printed while linux is in graphics mode (this is corrected by the
|
|
patch1 to 0.96a). X386 usually tries to tell you the reason why it's
|
|
giving up: it might be due to a missing Xconfig or just bad
|
|
configuration (ie X doesn't find the fonts where it expected them etc).
|
|
Try to do a "startx 2&> tmp" and "cat tmp" to see if you get some more
|
|
information.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: porting screen3.2: possible kernel/library bugs?
|
|
Message-ID: <1992May25.092323.8195@klaava.Helsinki.FI>
|
|
Date: 25 May 92 09:23:23 GMT
|
|
References: <58717@hydra.gatech.EDU> <58836@hydra.gatech.EDU>
|
|
Organization: University of Helsinki
|
|
Lines: 65
|
|
|
|
|
|
In article <58836@hydra.gatech.EDU> gt0178a@prism.gatech.EDU (BURNS) writes:
|
|
>
|
|
>Before I start a flame war on vc's vs. screen(1) here like we just had in
|
|
>comp.unix.bsd, I'm only interested in the learning experience of what port-
|
|
>ing a moderately featureful package to linux entails, not using it (except
|
|
>on serial port logins, of course). Vc's are fine for me.
|
|
>
|
|
>Background: screen(1) forks into two processes - screen, & SCREEN.
|
|
>
|
|
>1) Compiles crawl if there is a SCREEN running anywhere, even on another
|
|
>vc. Crawl means 2-3x slower. Kind of surprising, since top(1) shows SCREEN
|
|
>spends most of its time in do_select. It's real easy to chew up memory too.
|
|
>Screen(1) takes up 200-300k, plus ~200k for each bash (tho' that may be
|
|
>comparable to bash on a vc). I would have expected the COW paging to be
|
|
>more efficient than that. Makes compiling *impossible* after a while
|
|
>(signal 11).
|
|
>
|
|
>Q1) are select() and COW working well?
|
|
|
|
COW - yes, select() don't know. You don't mention which kernel you are
|
|
running, but select() shouldn't be a problem on 0.96. X uses select()
|
|
all the time, and I certainly don't see the above kinds of problems.
|
|
|
|
I think both your problems are due to memory limitations: gcc certainly
|
|
starts to crawl when memory gets tight, and linux starts discarding
|
|
clean (ie code) pages. Note that linux doesn't give the signal 11 at
|
|
once when memory is down: first it tries to run the processes by
|
|
discarding all pages that aren't needed and can be re-demand-loaded in.
|
|
|
|
COW and demand-loading works very well indeed: I routinely have 2MB
|
|
shared pages when running X or similar. But if you are running on a 2MB
|
|
or 4MB machine, and are tight for memory, the clean pages are the first
|
|
thing that linux starts re-using for other things: and as the clean
|
|
pages are also what can be shared among processes, sharing is no longer
|
|
as efficient.
|
|
|
|
The above just means that with 4MB of ram, you have 2.5MB free for
|
|
processes. Assuming you run gcc, that isn't too much, and linux will
|
|
try to keep only dirty pages in memory. In fact enabling swapping can
|
|
/improve/ performance in this kind of circumstance: that gives linux a
|
|
chance to swap out dirty pages, and give more room to code-pages that
|
|
otherwise would have to be on disk.
|
|
|
|
>Q2) do named pipes have an upper limit on the amount of data that can be
|
|
>written (2092 bytes above), and is this configurable? (I don't believe the
|
|
>pipe is being opened w/O_NONBLOCK, but I haven't read the code for the
|
|
>reader. The writer did not.)
|
|
|
|
Named pipes don't exist in the normal linux kernel, so it's no wonder
|
|
you can't do anything with them. You can create a special file that
|
|
looks like a named pipe (the mknod() system call works ok), but there
|
|
are no routines to actually handle IO on them. If you try, you will get
|
|
an EINVAL error code, and the kernel will print out a small message
|
|
telling you why (ie "(read): inode->i_mode = 010600" or similar)
|
|
|
|
>3) if I understand the man page correctly, you should be able to use
|
|
>setreuid(2) to swap your real & effective uids all day long. The test
|
|
>program below shows this fails after the FIRST setreuid(2).
|
|
>
|
|
>Q3) Why?
|
|
|
|
I haven't got the setreuid manual, and it seems there is a bug in the
|
|
kernel. I'll have to check it out eventually.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 0.96 and 0.96a comments (and a bug report)
|
|
Keywords: kernel bug 0.96 0.96a
|
|
Message-ID: <1992May25.153807.17572@klaava.Helsinki.FI>
|
|
Date: 25 May 92 15:38:07 GMT
|
|
References: <mper.706768401@uipsuxb> <1992May25.151353.4083@cbnewsj.cb.att.com>
|
|
Organization: University of Helsinki
|
|
Lines: 14
|
|
|
|
|
|
In article <1992May25.151353.4083@cbnewsj.cb.att.com> nhc@cbnewsj.cb.att.com (n.h.chandler) writes:
|
|
>
|
|
>Same here, the "bogus do_no_page" messages are annoying. I
|
|
>wonder, are they benign or is something nasty happening here?
|
|
|
|
The "bogus do_no_page" message seems to be related to older 386-chips,
|
|
and right now I'm assuming it's due to a bug in early 386's. Anyway,
|
|
the 0.96 version seems to handle them cleanly, so you should be able to
|
|
just uncomment the offending printk() in the sources, and recompile.
|
|
|
|
I left the message in, as I wasn't sure it is 100% ok even in the new
|
|
version, and I'd rather have too many debugging messages than too few.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: problems with ps, pcomm95c+1 and more...
|
|
Message-ID: <1992May26.055800.4646@klaava.Helsinki.FI>
|
|
Date: 26 May 92 05:58:00 GMT
|
|
References: <1992May24.195213.1118@colorado.edu> <N04BLB2w164w@starcom.UUCP>
|
|
Organization: University of Helsinki
|
|
Lines: 20
|
|
|
|
|
|
In article <N04BLB2w164w@starcom.UUCP> mattm@starcom.UUCP (Matt Mosley) writes:
|
|
>> [ ps database ]
|
|
>> This must be built from the unstripped kernel binary.
|
|
>
|
|
>Yes, but *how* do you build it?
|
|
|
|
"ps U XXXX" works for most kernel releases (where XXXX is the name of
|
|
the unstripped system binary), but with some kernel releases (including
|
|
the next one) you also have to recompile ps as the kernel structures
|
|
change. If 'ps U' doesn't work, and you have updated to a new version,
|
|
this can be the problem: the task-structure has probably changed betweem
|
|
versions.
|
|
|
|
Note that the next version of linux will use itimers instead of the old
|
|
alarm interface, and thus the ps sources actually have to be edited a
|
|
bit, as the alarm structure no longer exists. (No other binaries break,
|
|
and itimers means you can run xneko...). [ itimers implemented by
|
|
Darren Senn ]
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: What files to grab ?
|
|
Message-ID: <1992May27.113053.4804@klaava.Helsinki.FI>
|
|
Date: 27 May 92 11:30:53 GMT
|
|
References: <1992May27.072415.23819@ccds3.ntu.edu.tw>
|
|
Organization: University of Helsinki
|
|
Lines: 47
|
|
|
|
|
|
In article <1992May27.072415.23819@ccds3.ntu.edu.tw> kcsu@ccds2.cc.ntu.edu.tw (Kuo-Chun Su) writes:
|
|
>
|
|
> I am new to Linux. When I connect to tsx-11, I find a lot of files
|
|
> which I don't quite know. Would anyone tell me what files are needed if
|
|
> I want to install Linux, including Linux's sources and executables, X11,
|
|
> GCC, and every other things required to do X programming ?
|
|
|
|
X and gcc are in a constant flux right now: before getting the binaries
|
|
it's a good idea to join the X11 and gcc mailing-lists. The newest
|
|
version of gcc is a pre-release of gcc-2.2, and the libraries change
|
|
almost daily if you really want to keep up. It's a bit of a bother, but
|
|
the result of it all is that most of the library bugs seem to have been
|
|
fixed.
|
|
|
|
Other than the compiler and X11, the easiest way to install linux right
|
|
now is to get the mcc-interim version, and then upgrading to the newest
|
|
kernel image. The mcc-interim version had some problems with the login
|
|
binary, but I think they got fixed. The mcc distribution contains most
|
|
of the basic unix utilities.
|
|
|
|
> Another question. Could anyone describe the pros and cons of Linux
|
|
> and Coherent 386 for me ?
|
|
|
|
Well, coh386 isn't available for a couple of weeks yet, but this is how
|
|
I've understood all the hype:
|
|
|
|
Linux pros:
|
|
|
|
- virtual memory, page sharing. VERY BIG pro.
|
|
- free, full source.
|
|
- X11 and a lot of other good software already ported.
|
|
- good support from hackers
|
|
|
|
Coh386 pros:
|
|
|
|
- manual. Easier installation. BIG pro.
|
|
- runs standard text-mode 386-unix and coh286 binaries.
|
|
- support from MWC
|
|
|
|
> Also, if Linux more reliable and stable than
|
|
> BSD386 ?
|
|
|
|
Haven't tested 386BSD, but I assume it will be pretty good in a month or
|
|
two, and it's probably quite useable already. If you want NFS and full
|
|
networking, it's the way to go. Comments, anyone?
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: longer filenames dilemma
|
|
Message-ID: <1992May27.190815.15318@klaava.Helsinki.FI>
|
|
Date: 27 May 92 19:08:15 GMT
|
|
References: <SCHMID.92May27105513@fb3-s2.fb3-s7.math.TU-Berlin.DE> <1992May27.102933@tioga.ucsc.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 37
|
|
|
|
|
|
In article <1992May27.102933@tioga.ucsc.edu> sinster@scintilla.capitola.ca.us writes:
|
|
>In article <SCHMID.92May27105513@fb3-s2.fb3-s7.math.TU-Berlin.DE>, schmid@fb3-s7.math.TU-Berlin.DE (Gregor Schmid) writes:
|
|
>> Changing this value to s.th. else (preferred 2^n - 2) and recompiling
|
|
>> should give you a kernel that handles longer filenames (right Linus ?).
|
|
>> The problem: You have to rebuild mkfs with the new header and remake
|
|
>> your file system. That's inconvenient but unavoidable.
|
|
>
|
|
>Here's the problem bothering me: why does the filesystem have to be rebuilt?
|
|
>This implies that the full MAX_NAME bytes of space are allocated on the
|
|
>filesystem for file names. This is very bad. BSD, for instance, uses
|
|
>a linked-list of filename/inode pairs to represent directories on disk.
|
|
>This is read into memory and converted to an array of char * for efficiencies'
|
|
>sake.
|
|
|
|
I'll try to clarify once more about the linux filesystem implementation:
|
|
|
|
Nothing in the linux vfs depends on any particular name-length or on the
|
|
fact that names are fixed-length: it's just the minix filesystem that
|
|
doesn't support anything else. You /can/ just change the current
|
|
routines to use longer names, but this isn't a good idea: as Gregor
|
|
Schmid noted, this means the old filesystem no longer works.
|
|
|
|
Adding a second filesystem type that doesn't have the minix limitations
|
|
isn't that difficult: Remy Card did it even in 0.95 as he needed longer
|
|
filenames in order to compile mach under linux. In 0.96 vfs is a bit
|
|
better suppoted, so it should be even easier as long as you know what
|
|
you are doing. Card is now working on a better filesystem (his first
|
|
one was essentially the minix one, but using 30-character names, I
|
|
believe), and I hope it will make it into 0.97.
|
|
|
|
When you add a new filesystem by way of the vfs routines, it means that
|
|
old filesystems are still supported - no need to re-mkfs everything, and
|
|
copying between filesystems is totally transparent, as long as the
|
|
underlying filesystem doesn't have some requirements (like 8+3 filenames
|
|
or similar).
|
|
|
|
Linus
|
|
|
|
=============================
|
|
=============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Linux swapping
|
|
Message-ID: <1992May29.171214.8939@klaava.Helsinki.FI>
|
|
Date: 29 May 92 17:12:14 GMT
|
|
References: <9spkbss6@cck.coventry.ac.uk> <235kl7h.james@netcom.com>
|
|
Organization: University of Helsinki
|
|
Lines: 65
|
|
|
|
|
|
In article <235kl7h.james@netcom.com> james@netcom.com (James L. Paul) writes:
|
|
>In article <9spkbss6@cck.coventry.ac.uk> csg203@cch.coventry.ac.uk (Bluebeard) writes:
|
|
>>
|
|
>>I have 2megs of memory and 4megs of swap.
|
|
>>
|
|
>>Does this give me a total of 6megs or only 4 ?
|
|
|
|
It gives you 6MB of memory (but remember that 1MB is used by the kernel).
|
|
|
|
>>A unix expert, told me that the actual memory maps onto the swap, so only the
|
|
>>swap space above the system memory is available.
|
|
>>Is this true on linux ?
|
|
|
|
This is true on some unixes (I think SunOS does it that way), but linux
|
|
uses swap as /additional/ memory. (well, one page of the swap-space is
|
|
used for the good-page bitmap and the swapspace signature).
|
|
|
|
>>I'm considering upgrading to 4meg of RAM, but as I've only got a 40meg
|
|
>>partition, I wasn't intending to increase the swap space.
|
|
|
|
I'd sertainly suggest upgrading to 4MB ram and 4MB swap: you'll notice
|
|
everything is much snappier, especially compiles.
|
|
|
|
>As another Linux beginner, I'd like to hear the answer to this too.
|
|
>My question is, does Linux swap or page? The use of the term swap is
|
|
>prevalent in Linux (ie, swap space, swapon) but I also saw descriptions
|
|
>of swap space given in pages?
|
|
|
|
Linux does only paging, no swapping in the meaning "write out one whole
|
|
process to disk".
|
|
|
|
The reason I have called it swapping is that linux used paging for
|
|
memory management on a low level from the first version (0.01), but
|
|
didn't page to disk at all until version 0.12 (well, there was a
|
|
testversion out for 0.11, but 0.12 was the first version that did it
|
|
"officially"). So when paging to disk came along, I called it swapping
|
|
to distinguish it from the memory management paging linux has done all
|
|
along.
|
|
|
|
> And is demand paging different from paging? How?
|
|
|
|
Demand-paging is really "demand-loading of executables" and is totally
|
|
independent of the page-swapping algorithms, although they obviously
|
|
have similarities. When linux starts up a process, no actual code space
|
|
is loaded: I let the page exceptions load in the executable as needed.
|
|
Thus linux demand-loads the code and initialized data it needs.
|
|
|
|
Demand-loading has a couple of very good points: (1) it simplifies the
|
|
exec system call, (2) it means page-sharing between processes that have
|
|
executed the same file is easy to implement, and (3) it cuts down on the
|
|
amount of memory required. When linux runs out of real memory, it
|
|
starts to look for pages it can swap out: but if it notices that the
|
|
page is clean, it just forgets about it, and demand-loads it when it's
|
|
needed again. That means the swap-file isn't needed as much, especially
|
|
when running big binaries like gcc, where the code-pages can be
|
|
demand-loaded as you wish.
|
|
|
|
Point (3) means that even without any swapspace, you can usually run
|
|
slightly larger programs than your memory setup would actually permit.
|
|
I've noticed this while running X and doing a kernel compile + something
|
|
else when I've forgotten to turn on swapping: free reports 0 pages
|
|
available, but things still work, although performance is of course
|
|
slightly down..
|
|
|
|
Linus
|
|
|
|
==============================
|
|
==============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Linux swapping
|
|
Message-ID: <1992Jun1.181745.15703@klaava.Helsinki.FI>
|
|
Date: 1 Jun 92 18:17:45 GMT
|
|
References: <235kl7h.james@netcom.com> <1992May29.171214.8939@klaava.Helsinki.FI> <1992Jun1.134501.3210@bwdls61.bnr.ca>
|
|
Organization: University of Helsinki
|
|
Lines: 40
|
|
|
|
|
|
In article <1992Jun1.134501.3210@bwdls61.bnr.ca> mleech@bnr.ca (Marcus Leech) writes:
|
|
>In article <1992May29.171214.8939@klaava.Helsinki.FI>, torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) writes:
|
|
>|> When linux runs out of real memory, it
|
|
>|> starts to look for pages it can swap out: but if it notices that the
|
|
>|> page is clean, it just forgets about it, and demand-loads it when it's
|
|
>|> needed again. That means the swap-file isn't needed as much, especially
|
|
>|> when running big binaries like gcc, where the code-pages can be
|
|
>|> demand-loaded as you wish.
|
|
>
|
|
>A problem with this scheme is that your page-fault latency is limited by the
|
|
> efficiency of the filesystem. Other OS/UNIX implementations that support
|
|
> "demand load" executables copy demand-loaded pages into the paging
|
|
> area after they've been faulted in. Once that's happened, subsequent
|
|
> faults for the same page come out of the paging area. Paging-area
|
|
> I/O is typically faster than filesystem I/O by quite a bit, which is
|
|
> why it's done this way.
|
|
|
|
Yes, paging from a dedicated page-partition is faster than reading in
|
|
the file from the filesystem, but there were a couple of compelling
|
|
reasons to do it the linux way.
|
|
|
|
- less wasted resources: why write out the page to a swap-partition when
|
|
we know it can be found on the filesystem anyway? With gcc and similar
|
|
big programs, swap-space need is probably reduced a lot by not using
|
|
swapping for clean pages.
|
|
|
|
- Ease of programming: the linux mm is very simple (1300 lines of C),
|
|
and I took shortcuts like not keeping track of old pages to get it
|
|
that way.
|
|
|
|
- If the swapspace is a file, not a partition (which seems pretty usual:
|
|
I have it set up that way myself), demand-loading is faster: no need
|
|
to write out the pages, and loading is quite as fast/slow.
|
|
|
|
That said, the current memory manager might have other problems which
|
|
makes it non-optimal as well: not keeping track of pages very much also
|
|
means the page-replacement algorithm is somewhat limited (understatement
|
|
of the year). I felt the simplicity made it worth it.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Is it possible to disable ctrl-alt-del while running linux?
|
|
Message-ID: <1992Jun2.055143.27888@klaava.Helsinki.FI>
|
|
Date: 2 Jun 92 05:51:43 GMT
|
|
References: <KREJ.92Jun1205739@gaia.electrum.kth.se> <1992Jun1.203352.3388@src.umd.edu>
|
|
Distribution: comp
|
|
Organization: University of Helsinki
|
|
Lines: 52
|
|
|
|
|
|
In article <1992Jun1.203352.3388@src.umd.edu> chad@src.umd.edu (R Michael McMahon) writes:
|
|
>Yes. From kernel/sys.c:
|
|
>
|
|
>/*
|
|
> * this indicates wether you can reboot with ctrl-alt-del: the deault is yes
|
|
> */
|
|
>static int C_A_D = 1;
|
|
>
|
|
>Mike chad@src.umd.edu
|
|
|
|
Indeed. Here is a snippet of code that should enable/disable ctrl-alt-del:
|
|
|
|
----------
|
|
#define __LIBRARY__
|
|
#include <linux/unistd.h>
|
|
#include <stdio.h>
|
|
|
|
static _syscall3(int,reboot,int,magic,int,magigtoo,int,flag)
|
|
|
|
int main(int argc,char ** argv)
|
|
{
|
|
if (argc == 2)
|
|
if (!strcmp("on",argv[1])) {
|
|
reboot(0xfee1dead,672274793,1);
|
|
return 0;
|
|
} else if (!strcmp("off",argv[1])) {
|
|
reboot(0xfee1dead,672274793,0);
|
|
return 0;
|
|
} else if (!strcmp("now",argv[1])) {
|
|
for (argc=0 ; argc < 5 ; argc++) {
|
|
sync();
|
|
sleep(5);
|
|
}
|
|
reboot(0xfee1dead,672274793,0x01234567);
|
|
return 0;
|
|
}
|
|
fprintf(stderr,"usage: reboot [on|off|now]\n");
|
|
return 1;
|
|
}
|
|
----------
|
|
|
|
The program can only be run as root, or nothing will happen. Usage is:
|
|
|
|
reboot on - accept ctrl-alt-del (default)
|
|
reboot off - ctrl-alt-del is ignored
|
|
reboot now - reboot after syncing and waiting 25 seconds (so that you can ^C it)
|
|
|
|
And as with most code I write, none of the above has ever been tested: I
|
|
only guarantee that this is how I intended the reboot system call to
|
|
work.
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Is it possible to disable ctrl-alt-del while running linux?
|
|
Message-ID: <1992Jun2.055143.27888@klaava.Helsinki.FI>
|
|
Date: 2 Jun 92 05:51:43 GMT
|
|
References: <KREJ.92Jun1205739@gaia.electrum.kth.se> <1992Jun1.203352.3388@src.umd.edu>
|
|
Distribution: comp
|
|
Organization: University of Helsinki
|
|
Lines: 52
|
|
|
|
|
|
In article <1992Jun1.203352.3388@src.umd.edu> chad@src.umd.edu (R Michael McMahon) writes:
|
|
>Yes. From kernel/sys.c:
|
|
>
|
|
>/*
|
|
> * this indicates wether you can reboot with ctrl-alt-del: the deault is yes
|
|
> */
|
|
>static int C_A_D = 1;
|
|
>
|
|
>Mike chad@src.umd.edu
|
|
|
|
Indeed. Here is a snippet of code that should enable/disable ctrl-alt-del:
|
|
|
|
----------
|
|
#define __LIBRARY__
|
|
#include <linux/unistd.h>
|
|
#include <stdio.h>
|
|
|
|
static _syscall3(int,reboot,int,magic,int,magigtoo,int,flag)
|
|
|
|
int main(int argc,char ** argv)
|
|
{
|
|
if (argc == 2)
|
|
if (!strcmp("on",argv[1])) {
|
|
reboot(0xfee1dead,672274793,1);
|
|
return 0;
|
|
} else if (!strcmp("off",argv[1])) {
|
|
reboot(0xfee1dead,672274793,0);
|
|
return 0;
|
|
} else if (!strcmp("now",argv[1])) {
|
|
for (argc=0 ; argc < 5 ; argc++) {
|
|
sync();
|
|
sleep(5);
|
|
}
|
|
reboot(0xfee1dead,672274793,0x01234567);
|
|
return 0;
|
|
}
|
|
fprintf(stderr,"usage: reboot [on|off|now]\n");
|
|
return 1;
|
|
}
|
|
----------
|
|
|
|
The program can only be run as root, or nothing will happen. Usage is:
|
|
|
|
reboot on - accept ctrl-alt-del (default)
|
|
reboot off - ctrl-alt-del is ignored
|
|
reboot now - reboot after syncing and waiting 25 seconds (so that you can ^C it)
|
|
|
|
And as with most code I write, none of the above has ever been tested: I
|
|
only guarantee that this is how I intended the reboot system call to
|
|
work.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Second patch to 0.96a
|
|
Message-ID: <1992Jun4.225621.23893@klaava.Helsinki.FI>
|
|
Date: 4 Jun 92 22:56:21 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 43
|
|
|
|
|
|
I have just sent off the second patch to 0.96a: it should be on the
|
|
normal ftp-sites (nic, tsx-11 and banjo), although the only site which I
|
|
can make it directly readable on is banjo, so on the other sites it will
|
|
take the site-managers to make the patch available.
|
|
|
|
Patch 2 implements:
|
|
|
|
- itimers (by Darren Senn), which are now also used to implement the
|
|
alarm() system call.
|
|
|
|
- ultrastor scsi driver patches (by gentzel)
|
|
|
|
- [f]statfs() system call is implemented (so df can be made fs-
|
|
independent). Also some other minor fs-changes for the upcoming new
|
|
filesystem. Patches by Remy Card.
|
|
|
|
- preliminary core-file dumping code (linux creates a core-file, but
|
|
it's not in the correct format yet [*]).
|
|
|
|
- minor changes/bugfixes.
|
|
|
|
While patching in patch1 is a good idea for anybody, patch 2 isn't
|
|
really vital. I've made it available just so kernel hackers can keep up
|
|
with the kernel I have right now if they wish. Patch 2 is relative to
|
|
patch 1: you have to patch that in first.
|
|
|
|
[*] The current core-file is very simple, and the kernel code is there
|
|
just so that some enterprising character can expand it. A core-file
|
|
looks like this right now:
|
|
|
|
offset data
|
|
0x0000 "core-dump: regs=\n"
|
|
0x0040 struct pt_regs (see <sys/ptrace.c>)
|
|
0x0400 "floating-point regs:\n"
|
|
0x0440 struct i387 (see <linux/sched.h>)
|
|
0x0800 the first 1kB of user-space
|
|
|
|
Not very practical, but it /might/ help if the X-server dies of a
|
|
segmentation fault or similar (you can use pt_regs.eip to see where it
|
|
happened). The kernel code is very easy to change to accomodate for the
|
|
real core-file format, I just didn't know what it should be.
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: fsck flags to fix ailing filesystems?
|
|
Message-ID: <1992Jun5.083629.4527@klaava.Helsinki.FI>
|
|
Date: 5 Jun 92 08:36:29 GMT
|
|
References: <1992Jun4.222401.5390@mercury.unt.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 46
|
|
|
|
|
|
In article <1992Jun4.222401.5390@mercury.unt.edu> kenc@sol (Ken Corey - Operator) writes:
|
|
>
|
|
>Interesting, fsck reports that larvsm are the flags it understands,
|
|
>but my man page on my (Sun4.1.1a) Unix machine a t work, and on
|
|
>my (mac)Minix don't show all those arguements.
|
|
|
|
Linux fsck is a quick hack, and not a very good program. I had hoped
|
|
somebody would expand it to do all the things a real fsck should do, but
|
|
it seems nobody else thinks it's an interesting project either.
|
|
|
|
The flags are similar to the minix fsck flags (as that's the only fsck
|
|
I've ever used), and are roughly as follows:
|
|
|
|
l - list all the files on the partition as you fsck. Not very practical,
|
|
but maybe you want to see what's going on.
|
|
|
|
r - repair any inconsistencies found, asking first if it's ok.
|
|
|
|
a - automatic repairs. Very simpleminded, but doing it by hand is
|
|
usually not worth it. If the problems are big enough that a doesn't
|
|
work, you might as well give up anyway under most circumstances.
|
|
|
|
v - verbose: print out some statistics.
|
|
|
|
s - show some super-block info
|
|
|
|
m - warn about the minix "mode not cleared" error: don't do this under
|
|
linux.
|
|
|
|
> The problem is that
|
|
>when I first got Linux, I also downloaded the unzip program.
|
|
> In the course of unzipping something, it trashed by /usr/root
|
|
>directory. Messing up the pointers somehow, so that the /usr/root
|
|
>directory could not be romoved.
|
|
|
|
Fsck doesn't handle bad directories at all, so the only thing you can do
|
|
in this case is to back up everything that seems ok, re-mkfs and
|
|
re-install that partition. If somebody has hacked fsck to work better
|
|
in these kinds of circumstances, I'd be interested to know.
|
|
|
|
As to why the errors happened, it certainly seems like a problem with
|
|
the scsi driver: I don't think it's a race in the fs-code, as this
|
|
doesn't seem to be a normal occurence. Could drew & co please
|
|
double-check?
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Problem with 0.96a Patch1 + Patch2
|
|
Keywords: linux
|
|
Message-ID: <1992Jun8.205908.20273@klaava.Helsinki.FI>
|
|
Date: 8 Jun 92 20:59:08 GMT
|
|
References: <arumble.707915342@extro.ucc.su.OZ.AU> <1992Jun7.142244.27874@ucunix.san.uc.edu> <1992Jun8.120946@banner.ucsc.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 27
|
|
|
|
|
|
In article <1992Jun8.120946@banner.ucsc.edu> sinster@scintilla.capitola.ca.us writes:
|
|
>In article <1992Jun7.142244.27874@ucunix.san.uc.edu>, zuazaga@ucunix.san.uc.edu (Humberto Ortiz-Zuazaga) writes:
|
|
>>
|
|
>> What about itimer.c? I kept mine in kernel, and changed the lib/Makefile.
|
|
>
|
|
>What? What about itimer.c? There should be _two_ files called itimer.c.
|
|
>One is lib/itimer.c (this is the library interface to itimers) and the
|
|
>other is kernel/itimer.c (this actually implements the itimers).
|
|
>
|
|
>Is there something odd about the patch?
|
|
|
|
Yes, there is something odd about the patch - lib/itimer.c isn't there.
|
|
It's not really needed (it's not really kernel code at all), and the
|
|
only problem is that the lib/Makefile mentions it. I didn't really look
|
|
through the patch when I made it...
|
|
|
|
As people have noticed, there are several ways to overcome this problem
|
|
with patch2: the preferred method is just to do a "touch lib/itimer.c"
|
|
which should make everything work ok. Alternatively, you can edit the
|
|
makefile and remove "itimer.o" from the OBJS-line.
|
|
|
|
Linus
|
|
|
|
PS. I sometimes get mail I cannot respond to: the latest was from Paul
|
|
Fraley. If your mailer doesn't set the correct from or reply-to fields,
|
|
please add a known good email-address to the body of the mail. While it
|
|
won't guarantee an answer, it at least makes it possible.
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: itimer bit me yet again!
|
|
Message-ID: <1992Jun10.061543.27737@klaava.Helsinki.FI>
|
|
Date: 10 Jun 92 06:15:43 GMT
|
|
References: <1992Jun10.023016.24003@mercury.unt.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 20
|
|
|
|
|
|
In article <1992Jun10.023016.24003@mercury.unt.edu> kenc@sol (Ken Corey - Operator) writes:
|
|
>Okay, I give up. I got the itimer.c file sent out by Dean the other
|
|
>day...put it in /usr/src/linux/kernel, made sure there WAS a reference to it
|
|
>in kernel/Makefile, and that there WASN'T a reference to it in lib/Makefile.
|
|
|
|
You did all three things that could fix the problem on their own, but
|
|
when done all together they break the kernel horribly, as you saw.
|
|
|
|
The original kernel/itimer.c shouldn't be moved: it's indeed a kernel
|
|
source-file, and contains the sys_[get|set]itimer system call
|
|
definitions.
|
|
|
|
lib/itimer.c should either (a) not exists: only in that case you should
|
|
remove the itimer.o from the Makefile, (b) be empty or (c) be the file
|
|
sinister sent out yesterday. Whichever of these you choose, it's not
|
|
linked into the kernel anyway, so it doesn't matter from a kernel
|
|
standpoint: but you can use lib/itimer.o from user space as it
|
|
implements the itimer library stubs.
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: logging the printk output
|
|
Message-ID: <1992Jun11.102559.295@klaava.Helsinki.FI>
|
|
Date: 11 Jun 92 10:25:59 GMT
|
|
References: <3195@sicsun.epfl.ch>
|
|
Organization: University of Helsinki
|
|
Lines: 64
|
|
|
|
|
|
In article <3195@sicsun.epfl.ch> lecom@slhp1.epfl.ch (Claude Lecommandeur) writes:
|
|
>
|
|
> How can one log the output of all the printk output in a file
|
|
>(some kind of syslog) ? I'm trying to debug a driver, but all the
|
|
>good things disapear above the screen.
|
|
|
|
There is no 100% sure way to log the printk() messages, as printk() may
|
|
not sleep or even pause, but there is already a syslog capability in the
|
|
kernel that captures everything printed under normal load. It may fail
|
|
if the buffer fills up without being read by some process, but that is
|
|
usually not a problem.
|
|
|
|
|
|
Here is a program that uses the kernel logging features:
|
|
|
|
#define __LIBRARY__
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include <errno.h>
|
|
|
|
static _syscall3(int,syslog,int,type,char *,buf,int,size)
|
|
|
|
char buffer[1024];
|
|
|
|
int main(int argc, char ** argv)
|
|
{
|
|
int i;
|
|
|
|
errno = 0;
|
|
if (argc == 2 && !strcmp("off",argv[1]))
|
|
syslog(0,0,0);
|
|
else if (argc == 2 && !strcmp("on",argv[1]))
|
|
syslog(1,0,0);
|
|
else if (argc == 1)
|
|
while (1) {
|
|
i = syslog(2,buffer,1024);
|
|
if (i < 0)
|
|
if (errno == EINTR)
|
|
continue;
|
|
else
|
|
break;
|
|
write(1,buffer,i);
|
|
}
|
|
if (errno)
|
|
perror("syslog");
|
|
return errno;
|
|
}
|
|
|
|
Usage is:
|
|
|
|
syslog on - start logging
|
|
syslog off - end logging
|
|
syslog - print the log-messages to stdout until interrupted.
|
|
|
|
for example, under X you can use it to see the log-messages like this:
|
|
|
|
# syslog on
|
|
# xterm -e syslog &
|
|
|
|
Which will make you a log-window that you can use to see what the kernel
|
|
prints out while using X.
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: what's the kernel need for v 1.0
|
|
Message-ID: <1992Jun12.090719.24960@klaava.Helsinki.FI>
|
|
Date: 12 Jun 92 09:07:19 GMT
|
|
References: <1992Jun11.203410.15552@athena.mit.edu> <1992Jun12.074133.17546@mnemosyne.cs.du.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 57
|
|
|
|
|
|
In article <1992Jun12.074133.17546@mnemosyne.cs.du.edu> zmbenhal@isis.cs.du.edu (Zeyd M. Ben-Halim) writes:
|
|
>Thomas Dunbar <tdunbar@vttcf.cc.vt.edu> writes:
|
|
>>What is expected in the kernel in v. .97 ... 1.0? Back in v .11, i felt i
|
|
>>knew more-or-less what was going to be done. Now, other than stablization of
|
|
>>GCC, X and the kernel, what's needed? Other than tcp/ip, which i don't care
|
|
>>much about myself (but who IS working on this?), what's missing?
|
|
>> i'd like to see a version number soon that suggests Linux, as a whole,
|
|
>>is no longer in beta-test.
|
|
|
|
Ok, I already answered tdunbar by mail, but in case others are
|
|
interested:
|
|
|
|
>How about finished VFS layer (or is it already?)
|
|
|
|
The vfs layer is already pretty finished: there should be no more big
|
|
rewrites as in the 0.95-0.96 diffs. Tweaking etc will naturally go on
|
|
(as with any other kernel feature), but it's mostly there.
|
|
|
|
>shared memory
|
|
>semaphores
|
|
>ipc messages
|
|
|
|
I'd like these eventually, and I might try to implement them during the
|
|
summer, but no promises. In any case these certainly aren't required for
|
|
a 1.0 version.
|
|
|
|
>file and memory locks
|
|
|
|
Well... I'm not too hot about file locking, but we'll see.
|
|
|
|
>named pipes
|
|
|
|
This is already available as a patch. I haven't applied it yet, but I
|
|
will as soon as the author feels it's ready (and I agree).
|
|
|
|
>STREAMS
|
|
>screen mapping with page faults on bank crossing (video card dependant :-(
|
|
>AF_INET sockets
|
|
|
|
Not me. Hopefully somebody else implements it so cleanly that I cannot
|
|
do other than accept it :-)
|
|
|
|
>Any fs besides minix
|
|
|
|
Definitely. This is one of the points keeping linux beta. 0.97 should
|
|
contain it.
|
|
|
|
>What Linux NEEDS is a stable GCC (one that does not evolvo every 2 days) and
|
|
>an easy method of updated shared libs (jump tables or whatever)
|
|
|
|
Yes. And easier installation. And manuals/guides/whetever. I know I
|
|
have been hoping to make 1.0 available for a long time - right now I
|
|
expect it to be here by the end of summer. By that time gcc and the
|
|
libraries should have stabilized, and hopefully the ABC-release or
|
|
similar is ready.
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Patch2 is a bad patch if it doesn't compile
|
|
Message-ID: <1992Jun13.074121.21900@klaava.Helsinki.FI>
|
|
Date: 13 Jun 92 07:41:21 GMT
|
|
References: <myddryn.707907410@hal> <1992Jun9.163918@dana.ucsc.edu> <1992Jun12.143353.2356@aw2.fsl.ca.boeing.com>
|
|
Organization: University of Helsinki
|
|
Lines: 28
|
|
|
|
|
|
In article <1992Jun12.143353.2356@aw2.fsl.ca.boeing.com> vds7789@aw2.fsl.ca.boeing.com (Vincent D. Skahan) writes:
|
|
>
|
|
>Could Linus please either release a patch3 so that we're up at the
|
|
>current version and can just hit 'make' or release a patched-up 'good'
|
|
>set of sources ???
|
|
|
|
Patch3 won't be out before there is some good reason for it: right now I
|
|
haven't changed the sources enough to warrant it.
|
|
|
|
>I thought the whole point of releasing a patch was to permit people
|
|
>to get to the same baseline version to work off of...
|
|
>
|
|
>I'm not installing anything above patch1 if I have to tweak anything
|
|
>to get it to compile...
|
|
|
|
This is the normal reasons for patches, but patch2 was a bit special,
|
|
and documented as such: the /major/ reason for the release was just to
|
|
make the preliminary core-dumping code available to kernel hackers, so
|
|
that somebody who had better docs etc than me could implement the
|
|
correct format for core-files. This indeed happened, and the next
|
|
release will have post-morted debugging (and hopefully attach and
|
|
detach).
|
|
|
|
So if people don't feel comfortable with patching, patch2 can safely be
|
|
left out (although it does fix some minor bugs as well: the open()
|
|
error-value etc).
|
|
|
|
Linus
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Linux and Me II
|
|
Message-ID: <1992Jun13.081917.22210@klaava.Helsinki.FI>
|
|
Date: 13 Jun 92 08:19:17 GMT
|
|
References: <BURLEY.92Jun12181253@geech.gnu.ai.mit.edu> <BURLEY.92Jun12193201@geech.gnu.ai.mit.edu>
|
|
Distribution: comp
|
|
Organization: University of Helsinki
|
|
Lines: 14
|
|
|
|
|
|
In article <BURLEY.92Jun12193201@geech.gnu.ai.mit.edu> burley@geech.gnu.ai.mit.edu (Craig Burley) writes:
|
|
>
|
|
>The upshot is that it looks like the files are all okay on disk, but that
|
|
>sometimes Linux misreads the data, convincing diff that files are different
|
|
>when they aren't. The differences seem more suggestive to me of block-level
|
|
>(OS-interface-level) problems, though since I haven't looked at how diff is
|
|
>implemented, I cannot be sure it isn't a diff bug (though it'd have to be
|
|
>a random bug).
|
|
|
|
It's something in the SCSI drivers, and I'd suggest getting the newest
|
|
drivers from headrest.woz.colorado.edu: they might correct the problem.
|
|
Obviously, I haven't tested them...
|
|
|
|
Linus
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: mtools question
|
|
Message-ID: <1992Jun15.105210.7613@klaava.Helsinki.FI>
|
|
Date: 15 Jun 92 10:52:10 GMT
|
|
References: <1992Jun14.025750.2388@CSD-NewsHost.Stanford.EDU> <1992Jun14.190521.12355@bernina.ethz.ch> <1992Jun14.225856.27315@unixland.natick.ma.us>
|
|
Organization: University of Helsinki
|
|
Lines: 13
|
|
|
|
|
|
In article <1992Jun14.225856.27315@unixland.natick.ma.us> bill@unixland.natick.ma.us (Bill Heiser) writes:
|
|
>almesber@nessie.cs.id.ethz.ch (Werner Almesberger) writes:
|
|
>>>> Hard links have the advantage that they only occupy an inode each while
|
|
>>>> symbolic links additionally consume one disk block (1kB).
|
|
>
|
|
>Is this meant to imply that LINUX has symbolic links?
|
|
|
|
Indeed. Has had them since 0.12 I do believe. I think the original
|
|
0.12 didn't allow symlinks that contained other symlinks as part of
|
|
them, but later versions have had a loop count of five, which is quite
|
|
enough for everything I have yet seen.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: anyone using 20 MB RAM?
|
|
Message-ID: <1992Jun15.191710.20349@klaava.Helsinki.FI>
|
|
Date: 15 Jun 92 19:17:10 GMT
|
|
References: <PNAKADA.92Jun15101715@pnakada.oracle.com>
|
|
Distribution: comp
|
|
Organization: University of Helsinki
|
|
Lines: 22
|
|
|
|
|
|
In article <PNAKADA.92Jun15101715@pnakada.oracle.com> pnakada@oracle.com (Paul Nakada) writes:
|
|
>
|
|
>Linux Hackers -
|
|
>
|
|
> I'd like to add 4 4MB SIMMS to my system for a total of 20 MB RAM.
|
|
>Does anyone have Linux running with this amount of memory? Are there
|
|
>any gotchas I should know about? Thanks.
|
|
|
|
The standard linux distribution uses memory only up to the 16MB mark;
|
|
you'd have 4MB unused (but it's still a great idea). There is a 32MB
|
|
patch (mainly just sets up a few more page tables), but it won't work
|
|
with the current SCSI-drivers I think.
|
|
|
|
The reason 16MB is a problem is that DMA won't go beyond that, and
|
|
although the floppy-driver is coded to take care of this, I don't think
|
|
the scsi drivers are (there was a problem with going above 2MB with the
|
|
0.95 scsi release with some card). If you don't use swapping (and with
|
|
20MB you can run a lot even without swapping), linux won't try to copy
|
|
directly to the >16MB pages anyway, so the 32MB patch is safe in that
|
|
case. Likewise if you aren't using scsi.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: patch3....
|
|
Keywords: patch 0.96a
|
|
Message-ID: <1992Jun15.200454.21058@klaava.Helsinki.FI>
|
|
Date: 15 Jun 92 20:04:54 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 43
|
|
|
|
|
|
Ok, I already announced it on the kernel mailing-list, but I might as
|
|
well go all the way. I put out patch3 to 0.96a yesterday, and it's
|
|
available on banjo in pub/Linux/Linus, and I'll upload it to the other
|
|
normal ftp-sites tonight.
|
|
|
|
NOTE! Patch3 is (like patch2) more of a kernel-hacker patch: it's just
|
|
in case you want to keep up with my kernel. It has some problems with
|
|
some serial lines, and if you experience them, I'd like to know what
|
|
type of chip you are running (and what linux reports on bootup). If you
|
|
don't think patching the kernel is fun, you might as well forget this
|
|
and wait for a real release (next month?).
|
|
|
|
Patch 3 contains:
|
|
|
|
- support for attaching and detaching processes under gdb (but you need
|
|
a gdb that knows about this).
|
|
- 16550A support
|
|
- full core-dumping (again, you need a gdb that supports it)
|
|
- sockets have no problems with non-root binding etc
|
|
- /dev/zero implemented (mknod /dev/zero c 1 5)
|
|
|
|
None of the patches are very big (the whole patch is 17kB compressed,
|
|
most of it attach/detach code), but they are all pretty useful.
|
|
|
|
The 16550A support means that with the appropriate chip you now should
|
|
be able to use the serial ports at much higher speeds, but as mentioned,
|
|
it seems to break on some machines.
|
|
|
|
The detaching isn't perfect yet (I noticed only after making the diffs
|
|
that I had forgotten to do some cleanups), but it's not generally a
|
|
problem (the code just forgets to give the process back to it's rightful
|
|
father).
|
|
|
|
The patch is relative to the pl2 kernel, so you have to use the earlier
|
|
patches first. This time, I've added the lib/itimer.c code.
|
|
|
|
16550A support was written by tdavis, the correct format of the
|
|
core-dumps was written by eric (who also wrote the attach/detach code I
|
|
used as an example when implementing it), /dev/zero was written by
|
|
almesber. Nice to see good patches: I just did the socket-thing and
|
|
rewrote the attaching to suit me.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: get/setitimer()
|
|
Message-ID: <1992Jun15.223433.23669@klaava.Helsinki.FI>
|
|
Date: 15 Jun 92 22:34:33 GMT
|
|
References: <708635438snx@hectic.demon.co.uk>
|
|
Organization: University of Helsinki
|
|
Lines: 23
|
|
|
|
|
|
In article <708635438snx@hectic.demon.co.uk> mike@hectic.demon.co.uk (Mike Davies) writes:
|
|
>Now that X seems to be well established on Linux ... (flame proof
|
|
>suit at the ready) ... I've tried to compile a couple of contributions,
|
|
>with a varying amount of success.
|
|
>
|
|
>However, a stumbling block in at least one case is setitimer().
|
|
>Have I missed something (quite likely), or this still missing in Linux ?
|
|
>If so, is it likely to appear shortly ? If not, is there a work-round ?
|
|
|
|
set/getitimer doesn't exist in the basic 0.96a kernel, but after
|
|
applying all the patches (1-3) it should work well. The only thing I
|
|
have which actually uses it is xneko, so I haven't tested it to
|
|
exhaustion.. Note that code that uses get/setitimer also often assume
|
|
the BSD signal() behavior instead of the linux (posix) stuff, so you
|
|
might have to edit the sigblocking functions and rewrite signal() calls
|
|
to use sigaction().
|
|
|
|
The get/setitimer() library stubs are now in patch3, and you have to add
|
|
them to the library in order for programs using them to link ok (ie add
|
|
the lib/itimer.o file that gets created by a kernel make to the static
|
|
libc.a. Maybe the newer gcc-2 libraries already have it).
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: linux scheduling
|
|
Message-ID: <1992Jun15.231313.24182@klaava.Helsinki.FI>
|
|
Date: 15 Jun 92 23:13:13 GMT
|
|
References: <PNAKADA.92Jun15132016@pnakada.oracle.com>
|
|
Organization: University of Helsinki
|
|
Lines: 99
|
|
|
|
|
|
In article <PNAKADA.92Jun15132016@pnakada.oracle.com> pnakada@oracle.com (Paul Nakada) writes:
|
|
>
|
|
>Could someone (linus?) please give a high level description of the
|
|
>scheduling mechanism in Linux?
|
|
|
|
The scheduler in linux is pretty simple, but does a reasonably good job
|
|
at giving good IO response while not being too unfair against cpu-bound
|
|
processes. Simply put:
|
|
|
|
Linux gets a timer-interrupt at every jiffy (100 Hz), and decrements the
|
|
current->counter. If current->counter is zero, and the process isn't
|
|
running in kernel mode, the scheduler() is called. Also, when a process
|
|
is woken up and it's counter is greater than the current process, a flag
|
|
is set, which forces the re-scheduling.
|
|
|
|
The scheduling is pretty simple: when schedule() is called, the process
|
|
that has the highest non-zero counter and is runnable is run. If no
|
|
runnable process exists, task[0] ("swapper") gets to run, but it
|
|
currently doesn't do anything. In the future, the swapper task might do
|
|
page-aging or similar.
|
|
|
|
If all runnable processes have a zero counter, the schedule() algorithm
|
|
goes through all processes once more, giving them a new counter-value of
|
|
"priority+counter/2". It might seem useless to add the counter/2, as
|
|
counter is 0, but in fact this is done to /all/ processes, including
|
|
sleeping ones, which thereby get higher counter-values for when they
|
|
wake up.
|
|
|
|
The above algorithm seems to be pretty fair, and works well while being
|
|
very easy to understand. It also gives much snappier response than many
|
|
systems I've seen. And it's all done without any queues at all, which I
|
|
find clean and simple. In fact, the scedule() algorithm isn't more than
|
|
a couple of lines in C, and going to sleep or waking up is just a matter
|
|
of setting the process status and calling schedule().
|
|
|
|
>a) a process calls a kernel trap;
|
|
>b) process enters kernel mode, current processor state saved.
|
|
|
|
In fact, the current processor state is never saved anywhere as in
|
|
"normal" unices. A kernel trap under linux is very much like a system
|
|
call: registers get saved on the stack as needed, but we don't mess
|
|
around with updating task-structures etc.
|
|
|
|
>c) pop return address from stack and save
|
|
|
|
No, let it lie on the stack: when the process returns it gets restored.
|
|
Why save it anywhere else?
|
|
|
|
>d) kernel initiates disk i/o and places process on i/o queue
|
|
>e) get next active process
|
|
>f) push return address on stack and return from handler to new process
|
|
>g) process times out
|
|
> etc etc etc.
|
|
|
|
It's all much simpler than this: the process, running in kernel mode,
|
|
does what it wants, and if it wants to sleep, it just does
|
|
|
|
current->state = TASK_INTERRUPTIBLE;
|
|
schedule();
|
|
|
|
assuming it has made sure it will wake up some way (due to signals or
|
|
the kernel time-out feature or by putting the task-struct address in a
|
|
wait-variable). The other processes run happily in between, and when
|
|
something causes the process to wake up, it just continues after the
|
|
schedule() call.
|
|
|
|
When it's done all the things the system call (or page-exception or
|
|
whetever) required it to do, it just does a return, and it's back in
|
|
user mode.
|
|
|
|
As to how schedule() switches tasks, it's builtin in the 386, so it's
|
|
actually just a couple machine-code instructions. It's slightly more
|
|
complicated than just a jump through a task-segment, as it checks that
|
|
it's not the same task, and for minimal 387-saving by testing the
|
|
"last_task_used_math" variable and doing a clts if possible, but it's
|
|
still less than 10 insns. To understand what /really/ goes on, you'd
|
|
better read a 386 book, but it's not too complicated if you just care
|
|
about the general idea.
|
|
|
|
>why do i ask this? I've been studying the scheduling code for a
|
|
>couple days, trying to absorb enough to take a stab at improving
|
|
>response time under heavy disk i/o. I can understand the parts as
|
|
>separate modules, but it's not obvious to me how they work together as
|
|
>a system. I imagine it's second nature to Linus and other veteran
|
|
>kernel hackers, but all I've got is an OS class from a few years back.
|
|
|
|
I doubt the scheduler is the problem when it comes to response-time
|
|
under heavy disk i/o. It's probably at least partly because of the way
|
|
buffer-cache blocks are locked, which sometimes forces the buffer
|
|
algorithms to sleep on them unnecessarily. Thus if a buffer-request
|
|
comes through when blocks are locked due to actual IO, the request
|
|
sometimes blocks just to make sure there are no races.
|
|
|
|
I'd take a look at fs/buffer.c before doing anything else. But be
|
|
/very/ careful when changing buffer.c: it's very easy to add a
|
|
race-condition if you don't think of all the possible things that can
|
|
happen due to interrupts etc while a buffer is searced for.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Size-change of ino_t
|
|
Message-ID: <1992Jun16.161638.20159@klaava.Helsinki.FI>
|
|
Date: 16 Jun 92 16:16:38 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 37
|
|
|
|
|
|
With the eventual advent of bigger filesystems (and a DOS filesystem is
|
|
being developed), ino_t (currently unsigned short) is no longer really
|
|
big enough. 65535 (0 is reserved) inode numbers might be too little on
|
|
bigger filesystems, and the DOS filesystem will use sparse inode numbers
|
|
that will require more than 16 bits in order to be efficient.
|
|
|
|
No problem: just change it. Right? Wrong. That will also change the
|
|
size and offsets in the 'stat' struct (<sys/stat.h>), which is used by
|
|
almost every program currently in use. While recompiling /everything/
|
|
might be a good idea, even gcc won't probably run, so it would have to
|
|
be done by a kind of cross-compilation from the current linux version to
|
|
the new version. That's simply not practical.
|
|
|
|
What I intend to do is to keep the old stat() system call and return
|
|
just the low 16 bits of the inode number in it (might still break under
|
|
bigger fs's, but it's very unlikely, and only on a user level), and
|
|
create a new stat (and fstat) system call that has the full information.
|
|
Ugly, but with the current installed base it's impractical to do any
|
|
other way (in 0.11 I would probably have gone all the way and simply
|
|
recompiled everything).
|
|
|
|
Why post here? Two reasons: (1) I want to know if people feel there are
|
|
other structures that really /need/ to be upgraded (for future
|
|
expansion), so that I won't have to have several different stat()
|
|
interfaces, and (2) just to warn people about it, and maybe get some
|
|
comments.
|
|
|
|
Note that while a lot of programs use the stat() system call, they
|
|
usually don't actually care about the inode number, so it's not
|
|
essential that all programs be recompiled. Things that actually /need/
|
|
the full inode number include tar (uses i to verify if two files are
|
|
actually had-linked together), pwd (find the root that way) and and to a
|
|
lesser extent things like cpp ('#pragma once' uses it, I believe). Old
|
|
binaries of these programs might become unreliable when/if somebody
|
|
actually gets a filesystem that uses more than 65535 inodes.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Floppy errors at end of disk (Re: Aachen binaries now at rs6000.cmp.ilstu.edu)
|
|
Message-ID: <1992Jun16.195611.24568@klaava.Helsinki.FI>
|
|
Date: 16 Jun 92 19:56:11 GMT
|
|
References: <1992Jun15.180815.12006@rs6000.cmp.ilstu.edu> <1992Jun16.152453.29511@tc.cornell.edu> <1992Jun16.192910.17381@rs6000.cmp.ilstu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 14
|
|
|
|
|
|
In article <1992Jun16.192910.17381@rs6000.cmp.ilstu.edu> jliddle@rs6000.cmp.ilstu.edu (Jean Liddle) writes:
|
|
>
|
|
>Anyone know why this might be? I am using the Adaptec 1542b floppy
|
|
>controller built into the card, and get block read errors at the end of
|
|
>each disk. This also happened during mkfs at block 65536 on my hard drive,
|
|
>even though I specified "mkfs -c /dev/sd02 65535." Its as though linux
|
|
>doesn't stop reading/writing when it reaches the end of the disk...
|
|
|
|
Yes, it's a problem with the read-ahead routines that read ahead past
|
|
the end of the disk... It's fixed in patch2, I think (and if it isn't
|
|
it's in patch3), but it's totally harmless except for the error
|
|
messages, so you can ignore them if you wish.
|
|
|
|
Linus
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 32-bit inodes: patch4
|
|
Message-ID: <1992Jun18.145012.17636@klaava.Helsinki.FI>
|
|
Date: 18 Jun 92 14:50:12 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 12
|
|
|
|
|
|
Ok, patch4 implements 32-bit inode numbers (and thus the new
|
|
stat/lstat/fstat system calls), as well as correcting the bad
|
|
rs-performance on some machines that showed up in patch3. It's
|
|
currently only on banjo, but I'll copy it around eventually.
|
|
|
|
Again, you don't miss much if you don't use this patch: it's mainly for
|
|
(a) the serial problems and (b) for hlu etc that want to test out the
|
|
32-bit interface. It does some other magical tricks as well (uses less
|
|
memory in the low 1M region by moving the screen and tty buffer to high
|
|
memory), if anybody is interested.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: ET4000 speedup (was Re: 16 bit video access on systems with additional monochrome adapter)
|
|
Message-ID: <1992Jun19.124336.8707@klaava.Helsinki.FI>
|
|
Date: 19 Jun 92 12:43:36 GMT
|
|
References: <1992Jun18.201538.15449@athena.mit.edu> <1992Jun18.210717.19512@serval.net.wsu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 28
|
|
|
|
|
|
In article <1992Jun18.210717.19512@serval.net.wsu.edu> hlu@phys1.physics.wsu.edu (Hongjiu Lu) writes:
|
|
>In article <1992Jun18.201538.15449@athena.mit.edu>, arybicki.lax1b@xerox.com writes:
|
|
>|>
|
|
>|> While on the subject. Does X386 for Linux have the ET4000 speedups from
|
|
>|> export.lcs.mit.edu? I've heard that they greatly improve the performance of
|
|
>|> X386 drawing. They would definitely make xmartin work quicker.
|
|
>
|
|
>I don't if I want it. From my understanding, it only supports 1024x1024.
|
|
|
|
No, they only limit the /virtual/ screen size to 1024xXXX, which means
|
|
that you can't run with screens wider than 1024 pixels, but that's
|
|
usually no problem. Having a 800x600 resolution mode should be quite
|
|
possible tiwh the speedup patches (but you'll need 1MB video-ram, as
|
|
minimum virtual resolution is 1024x600 in that case).
|
|
|
|
The reason for the above limit is that that there are no pixel-lines
|
|
that are partly in one segment, and partly in another, so checking for
|
|
VGA segments is much reduced, giving faster routines. The original X386
|
|
routines as more general, but have the obvious speed disadvantages:
|
|
(S)VGA isn't a very good graphics implementation.
|
|
|
|
I think the speedup patch is actually in the X386-1.2e version that is
|
|
currently in beta-testing (not under linux yet, though), so eventually
|
|
we'll see a release that supports the faster ET4000 modes as well. I
|
|
don't know if obz has the beta-test release, or if he will be able to
|
|
use it in the near future, so don't hold your breath.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Linux v 0.96b available
|
|
Keywords: new version 0.96b
|
|
Message-ID: <1992Jun21.231223.18826@klaava.Helsinki.FI>
|
|
Date: 21 Jun 92 23:12:23 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 59
|
|
|
|
|
|
I have uploaded my newest kernel sources and a US-keyboard image to both
|
|
tsx-11.mit.edu and nic.funet.fi. I'll put it on banjo too as soon as
|
|
banjo wakes up (that's when I'll do the patches too: I'll need access to
|
|
banjo to get a 0.96a.pl4 kernel to make patches against..). As usual,
|
|
it will probably be a day or two until the files have been moved from
|
|
the incoming directory to their proper places.
|
|
|
|
0.96b is not a new major release: it's pretty close to 0.96a with all my
|
|
patches (1-4). However, as there has been 4 patches already, I decided
|
|
it would be time for a full kernel release along with a bootimage, so
|
|
that people who don't feel confident with patching can use the new
|
|
features.
|
|
|
|
If you already have 0.96a patchlevel 4, 0.96b will offer you these new
|
|
features:
|
|
|
|
- the math-emulation now handles fsqrt, as gcc-2.2.2 generates that
|
|
inline. I haven't tested the kernel code at all: I tested the
|
|
algorithm in user space, but I'm lazy, so I never turned off my 387
|
|
to do real testing. I hope it works.
|
|
- better vt100 terminal emulation thanks to Mika Liljeberg.
|
|
- I removed a possible race-condition in the buffer-cache code.
|
|
- minor fixes
|
|
|
|
The vt100 emulation should now be complete enough for almost everything
|
|
(including vt100 test suites): as a result the setterm utility had to be
|
|
changed (as the old setterm codes aren't compatible with the full vt100
|
|
codes). setterm-0.96b.tar.Z contains the new setterm.
|
|
|
|
The soon-to-be-released gcc-2.2.2 will need the 0.96b kernel: (a) due to
|
|
the fsqrt emulation and (b) it uses the new stat() system call. So
|
|
upgrading is a good idea. (If you have a co-processor, (a) isn't used,
|
|
but (b) still stands)
|
|
|
|
If you have an unpatched 0.96a, the differences to 0.96b are roughly
|
|
(not counting the above-mentioned new things):
|
|
|
|
- corrected the disk-buffer-list bug with read/write-errors
|
|
- fixed read-ahead warning messages at end of disk
|
|
- better support for text-mode restoration after running MGR and X
|
|
- full core-dumping, attach/detach etc debugging features
|
|
- 16550A support
|
|
- less low 1MB memory used for kernel structures
|
|
- various minor fixes
|
|
|
|
Note that the fact that new versions (pl4 and above) use more memory in
|
|
the 1M+ area means that linux will report less free memory (it's used
|
|
for buffer-cache instead). This could concievably be a problem on 2MB
|
|
machines. The standard kernel comes with only 4 pty's though, and if
|
|
you use the standard 80x25 text modes instead of svga modes, the VC
|
|
buffers will be smaller. Please contact me if there are problems even
|
|
with this minimal setup.
|
|
|
|
0.96b does /not/ contain: the new scsi drivers, new filesystems or some
|
|
other patches I have gotten (ibm character set mode, loop-devices etc).
|
|
If you have sent me any other patch, you might want to remind me about
|
|
it.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 32-bit i-nodes???
|
|
Message-ID: <1992Jun22.211849.15768@klaava.Helsinki.FI>
|
|
Date: 22 Jun 92 21:18:49 GMT
|
|
References: <1992Jun22.191501.5047@athena.mit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 30
|
|
|
|
|
|
In article <1992Jun22.191501.5047@athena.mit.edu> williamsem"%mrgate."netspo.a1.decnet@space.laafb.af.mil writes:
|
|
>
|
|
>A few days ago, I saw the announcement of 0.96a patch 4 that included (among
|
|
>other things) 32-bit i-nodes. I looked in the patch and saw the new stat
|
|
>functions and the new syscall numbers, but couldn't really see what had
|
|
>changed.
|
|
|
|
Not too surprising: the changes are just to make future filesystems
|
|
easier to write. The current filesystem still uses only 16 bits for the
|
|
inode numbers, and the changes were just the internal representation
|
|
(and the new system call interface so that things will work when the new
|
|
filesystems arrive).
|
|
|
|
> In particular, what impact does this have on the disk itself? What
|
|
>really confused me is that the 32-bit i-node feature was not listed in the
|
|
>0.96b announcement today! Could someone please clarify what the 32-bit I-node
|
|
>change really did?
|
|
|
|
Sorry about the lack of mention in the 0.96b announcement: the 32bit
|
|
inode numbers are definitely in, and I just forgot to mention it (it
|
|
wasn't any of the really /new/ features.
|
|
|
|
What the 32-bit change really did was to make it possible for persons
|
|
writing new filesystems to use more info to specify an inode: this was
|
|
needed at least for the DOS fs. I hope this means that 1.0 will be able
|
|
to mount DOS filesystems, and the mtools package will be a thing of the
|
|
past. It has no immediate impact on anybody else than hlu, who had to
|
|
update the libraries (gcc-2.2.2 will use the new interface).
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Too much uneaten serial causes system hang?
|
|
Keywords: LINUX serial ports, uneaten characters
|
|
Message-ID: <1992Jun23.172824.16843@klaava.Helsinki.FI>
|
|
Date: 23 Jun 92 17:28:24 GMT
|
|
References: <1992Jun23.140938.5621@cseg03.uark.edu> <arumble.709312764@extro.ucc.su.OZ.AU>
|
|
Organization: University of Helsinki
|
|
Lines: 26
|
|
|
|
|
|
In article <arumble.709312764@extro.ucc.su.OZ.AU> arumble@extro.ucc.su.OZ.AU (Anthony Rumble) writes:
|
|
>
|
|
>YES! I have noticed this VERY exact thing also!
|
|
|
|
Oh, well: it's a bug in the serial drivers that I have already fixed,
|
|
but I haven't done the c-diffs yet. I have rewritten big parts of the
|
|
serial line code to be more easily configured for different IRQ numbers,
|
|
and I noticed the bug while doing that. I'll make patch1 for 0.96b
|
|
available later today or tomorrow.
|
|
|
|
patch1 will be mostly just the serial driver code: it allows changing
|
|
the irq's (and port addresses) of serial devices on the fly (with an
|
|
ioctl call), so people that have ser4 on irq5 etc shouldn't have to
|
|
recompile the kernel. It also returns EBUSY if you try to open a serial
|
|
line that shares the irq-line with another line etc.
|
|
|
|
Another change in patch1 will the the handling of ctrl-alt-del: it will
|
|
send a SIGINT to the init process if the reset-function is disabled.
|
|
This makes it ideal for a controlled shutdown, but it does need a
|
|
/bin/init that knows about this.
|
|
|
|
Linus
|
|
|
|
PS. It seems both the DOS-fs and the extended fs will be out for
|
|
alpha-testing next week, so I assume 0.97 will have them both if things
|
|
work out ok.
|
|
|
|
==================
|
|
==================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: FAQ-finding mission 2: demand paging
|
|
Message-ID: <1992Jun24.100236.5849@klaava.Helsinki.FI>
|
|
Date: 24 Jun 92 10:02:36 GMT
|
|
References: <Bq9DvI.GD9@world.std.com> <1992Jun22.215658.13564@colorado.edu> <HERMIT.92Jun23185304@dastari.uucp>
|
|
Organization: University of Helsinki
|
|
Lines: 25
|
|
|
|
|
|
In article <HERMIT.92Jun23185304@dastari.uucp> hermit%dastari.uucp@devon.lns.pa.us writes:
|
|
>
|
|
>You shouldn't be able to write to a demand-paged executable that is
|
|
>being executed. An open for writing should return ETXTBSY in that
|
|
>case. (creat() should also fail, I imagine.)
|
|
|
|
Linux doesn't care, and indeed there is no difference between opening a
|
|
normal file and opening a file for demand-paging. I don't think ETXTBSY
|
|
is worth any extra code: (a) it doesn't happen in practice and (b) if it
|
|
does: so what. If you have write permissions to your executables and
|
|
overwrite them with something else, you deserve everything that's coming
|
|
to you. If somebody writes patches to add the ETXTBSY detection, I
|
|
might use them if I feel they are clean enough, but I certainly am not
|
|
going to implement it. I've used demand-paging on linux for six months
|
|
(that's pretty exactly how long it has been in there), and I have never
|
|
seen any problem with it.
|
|
|
|
Similarly with the swap-space file (and shared libraries). If somebody
|
|
overwrites swap data the kernel doesn't care: your user-space programs
|
|
might not do too well, though. Swapspace and binaries should be
|
|
non-writeable by normal users (and at least swapspace should be
|
|
non-readable), and if you are root you can hose the system more easily
|
|
than by overwriting binaries.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Problems compiling & escape sequences
|
|
Message-ID: <1992Jun24.131806.10059@klaava.Helsinki.FI>
|
|
Date: 24 Jun 92 13:18:06 GMT
|
|
References: <92175.235813U30207@uicvm.uic.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 26
|
|
|
|
|
|
In article <92175.235813U30207@uicvm.uic.edu> U30207@uicvm.uic.edu (Harry Georgopoulos) writes:
|
|
>
|
|
> [ sending escape sequences to the printer ]
|
|
|
|
Assuming you have bash, the easiest way to send escape-sequences to the
|
|
printer is:
|
|
|
|
$ echo -e -n "\033E" > /dev/lp1
|
|
|
|
sends the sequence ESC + 'E' (usually "emphasize on") to thelp device.
|
|
The "-e" means that echo uses the escape sequences (\033 = dec 27 = esc
|
|
= ^[), and the "-n" means that the echo doesn't send a newline.
|
|
|
|
>gcc -O -g -o basename basename.o ../lib/libshu.a version.o
|
|
>ld:No such file or directory for libg.a
|
|
>make[1]: *** [basename] Error 1
|
|
|
|
This comes up with some regularity: 2.2.2 has a libg.a, but earlier
|
|
versions didn't. You can either compile without the "-g" flag, which
|
|
makes debugging pretty much impossible (but makes the binaries much
|
|
smaller), or create a dummy libg.a in the library subdirectory (which is
|
|
different depending on which gcc version you have: try /usr/lib/static
|
|
or /usr/lib/lib-gcc/i386-linux/2.2 or similar depending on the version.
|
|
The dummy libg.a is created with "ar cvs libg.a".
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Bug in fsqrt emulation
|
|
Message-ID: <1992Jun25.115206.8160@klaava.Helsinki.FI>
|
|
Date: 25 Jun 92 11:52:06 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 35
|
|
|
|
|
|
I won't make a patch2 for this one, but 0.96b(.pl1) has a one-character
|
|
bug in the fsqrt emulation code that results in fsqrt resulting in zero
|
|
all the time. The following patch corrects it (thanks to Rick Sladkey
|
|
for noting it: I hadn't tested the code, so I never saw it...)
|
|
|
|
---------- cut cut ----------
|
|
--- sqrt.c.orig Thu Jun 25 00:00:00 1992
|
|
+++ sqrt.c Wed Jun 24 23:59:37 1992
|
|
@@ -55,7 +55,7 @@
|
|
src[3] = s->b;
|
|
d->exponent = 0;
|
|
d->a = d->b = 0;
|
|
- if (exponent) /* fsqrt(0.0) = 0.0 */
|
|
+ if (!exponent) /* fsqrt(0.0) = 0.0 */
|
|
return;
|
|
if (!src[2] && !src[3])
|
|
return;
|
|
---------- cut cut ----------
|
|
|
|
That is, add the missing '!' and recompile the kernel. This bug
|
|
naturally doesn't show up on machines with a co-processor, and isn't
|
|
noticeable unless you have programs compiled with gcc versions > 2.1, as
|
|
earlier versions didn't use the fsqrt instruction.
|
|
|
|
At least one other known bug in 0.96b.pl1 is that a serial line open
|
|
that fails due to EBUSY (ie another serial line using the same irq-line
|
|
is active) will still incorrectly add 1 to the tty->count. You don't
|
|
usually see this bug, but it can result in bogus EBUSY errors later on.
|
|
This and the fsqrt bug are already fixed in my version, and I'll make
|
|
patch2 available when I have some more fixes.
|
|
|
|
Other things added by patch2 will include correct CS5-8 and parity
|
|
handling on the serial lines (and HUP on setting the speed to 0).
|
|
|
|
Linus
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Logitech mice problem revisited.
|
|
Message-ID: <1992Jun25.123636.9214@klaava.Helsinki.FI>
|
|
Date: 25 Jun 92 12:36:36 GMT
|
|
References: <3264@sicsun.epfl.ch>
|
|
Organization: University of Helsinki
|
|
Lines: 29
|
|
|
|
|
|
In article <3264@sicsun.epfl.ch> lecom@slhp1.epfl.ch (Claude Lecommandeur) writes:
|
|
>
|
|
> I did much investigation on why my logitech mouse (MouseMan M-MC13)
|
|
>doesn't work with X11. This mouse is supposed to be Microsoft compatable
|
|
>but isn't. The normal sequence (microsoft) for button1 click without
|
|
>moving is hexa : 60 0 0 (seven bits, no parity, 2 stop bits) i verified
|
|
>it is true with another microsoft compatable mouse (genius). But the
|
|
>logitech one send, (or at least i read on /dev/ttys1) : 60 40 40.
|
|
>
|
|
> This mean that the seventh bit on the 2 last bytes are set to one
|
|
>and they should be set 0. I was told by Logitech that actually, there
|
|
>is a difference between their mice and microsoft : there is only one
|
|
>stop bit instead of two. But setting -cstopb does nothing at all.
|
|
|
|
Ok, it does indeed seem to be the bad support for CS7 in the linux
|
|
kernel. It seems I'll have to make patch2 available earlier than I
|
|
thought: I have implemented full CS7 support now, and if that is what it
|
|
takes to get some mice to work with linux, patch2 should correct it.
|
|
Expect the new patch tomorrow.
|
|
|
|
Thanks for a good report: these kinds of things really help when it
|
|
comes to correcting kernel features. As it happened, I added the
|
|
support before I saw this post, but that's just luck.
|
|
|
|
Patch 2 also supports the CSTOPB bit, which earlier linux versions
|
|
ignore (along with PARENB/PARODD and the CSx settings). I hope the mice
|
|
problems will be gone after this patch.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 0.96b PL2 Pty's broken?
|
|
Message-ID: <1992Jun28.071057.14601@klaava.Helsinki.FI>
|
|
Date: 28 Jun 92 07:10:57 GMT
|
|
References: <1992Jun27.202738.7487@bmerh85.bnr.ca>
|
|
Organization: University of Helsinki
|
|
Lines: 20
|
|
|
|
|
|
In article <1992Jun27.202738.7487@bmerh85.bnr.ca> dgraham@bmers30.bnr.ca (Douglas Graham) writes:
|
|
>Was there a reason why the following patch was applied to the read_chan
|
|
>code in 0.96b PL2? Now, a "cat /dev/ttyp0" will return immediately after
|
|
>having read 0 bytes, instead of hanging waiting for something to be
|
|
>written to the master side. Among other things, this breaks "script".
|
|
|
|
[ patch which returns 0 in read() if the other end of a pty is not open ]
|
|
|
|
I got a report that the above was the correct behaviour, so when I
|
|
implemented it and nothing I used broke, I added it to patch2. It seems
|
|
it wasn't the right thing to do. I'd like to know the correct
|
|
behaviour, so if you have documentation, please tell me how a pty should
|
|
react to read, write and open when the other end isn'c open yet.
|
|
|
|
I also changed the open() on a pty slave to wait until the master is
|
|
opened, but I put a #if 0 ... #endif around it (see chr_drv/pty.c), so
|
|
it isn't used right now. Could someone please mail me the correct
|
|
semantics for these cases?
|
|
|
|
Linus
|
|
|
|
==============================
|
|
==============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: writing 96b image to floppy
|
|
Message-ID: <1992Jun28.065802.14240@klaava.Helsinki.FI>
|
|
Date: 28 Jun 92 06:58:02 GMT
|
|
References: <74577@ut-emx.uucp> <709500596snx@hectic.demon.co.uk>
|
|
Organization: University of Helsinki
|
|
Lines: 15
|
|
|
|
|
|
In article <709500596snx@hectic.demon.co.uk> mike@hectic.demon.co.uk (Mike Davies) writes:
|
|
>
|
|
>I'm getting worried about this. I always do 'cp Image /dev/PS0',
|
|
>and it works fine. Everybody else uses dd. Can someone tell me
|
|
>if I'm doing a *very bad* thing ?
|
|
|
|
cp works fine, but dd was a /lot/ faster with the old floppy driver that
|
|
didn't do track buffering. With the current kernel there's not too much
|
|
difference between cp and dd, so you can safely use cp now. (Another
|
|
reason I use dd in the kernel Makefile is that some old version of GNU
|
|
cp "optimized" the copying by not copying zeros (doing a lseek() over
|
|
them instead), which works fine on regular files but breaks on special
|
|
files like /dev/PS0. Newer cp's don't have this problem)
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: FIFO's
|
|
Keywords: A
|
|
Message-ID: <1992Jun30.172600.7661@klaava.Helsinki.FI>
|
|
Date: 30 Jun 92 17:26:00 GMT
|
|
References: <1992Jun30.154421.20029@ucc.su.OZ.AU>
|
|
Organization: University of Helsinki
|
|
Lines: 21
|
|
|
|
|
|
In article <1992Jun30.154421.20029@ucc.su.OZ.AU> chrisa@extro.ucc.su.OZ.AU (C. G. Albone) writes:
|
|
>Hello *
|
|
> What is the latest news on FIFO's? Will there be anything
|
|
>near ready for release soon?
|
|
|
|
I got the patches for named pipes from Paul Hargrove, and while I had
|
|
some problems with them (you don't want to know), they are now corrected
|
|
and seem to work well in my system. I edited them a bit while searching
|
|
for the bug, and I haven't really tested them extensively yet, but at
|
|
least they should be in the next release. Right now I'm wondering if I
|
|
should make a small patch3 that contains mainly that code and some other
|
|
minor fixes, or if I should do the alpha extended filesystem patches
|
|
first and try to have 0.96b.pl3 support 4TB fs's and long filenames. It
|
|
depends on how the ext-fs patches seem.
|
|
|
|
Assuming the extended filesystem poses no problems, next week should see
|
|
a patch that contains them. After that I'll do the DOS fs patches, and
|
|
then I'll probably relax a bit and let people work on the new file
|
|
systems to find the bugs. We'll see.
|
|
|
|
Linus
|
|
|
|
================================
|
|
================================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Patches.. (Was re: <none>)
|
|
Message-ID: <1992Jun30.210216.12584@klaava.Helsinki.FI>
|
|
Date: 30 Jun 92 21:02:16 GMT
|
|
References: <1992Jun30.004140.4543@athena.mit.edu> <CORYWEST.92Jun29215604@rio-grande.rice.edu> <1992Jun30.155048.6563@spuddy.uucp>
|
|
Organization: University of Helsinki
|
|
Lines: 98
|
|
|
|
|
|
In article <1992Jun30.155048.6563@spuddy.uucp> sweh@spuddy.uucp (Stephen Harris) writes:
|
|
>
|
|
>However, the problem I forsee with projects like this is a lack of
|
|
>(i) co-oridnation
|
|
>(ii) quality control
|
|
|
|
Indeed. I try to keep both these going, but it's not exactly easy. The
|
|
biggest problems are (a) features that I haven't used too much before
|
|
(and thus don't know the exact semantics), (b) hardware peculiarities or
|
|
simply hardware I don't have and finally (c) lack of infinite time and
|
|
energy. (a) can result in some weird behaviour (like the pty change in
|
|
pl2) while (b) results in code I cannot check. (c) is pretty obvious :)
|
|
|
|
>I'm sure Linus would hate to have to rigorously check EVERY patch that
|
|
>goes to him - he'd never have any time to program himself :-)
|
|
|
|
Most of the patches I get and apply are quite thoroughly checked by me
|
|
both by reading the actual cdiffs (which is why I often insist on diffs
|
|
instead of new files even if the diff is about the same size) and by
|
|
then reading and possibly modifying the code. And several patches
|
|
either aren't used or are heavily modified.
|
|
|
|
The biggest patch that I didn't check is the SCSI drivers: it's
|
|
essentially useless to wade through code when you can't change it anyway
|
|
for being afraid you break something. It shows pretty well in the
|
|
sources too: the scsi drivers look quite different from the rest of the
|
|
kernel.
|
|
|
|
Most other patches have gone through pretty rigorous checking: some have
|
|
looked definitely different after I have had my way with them. So, if
|
|
you do kernel patches, and want them included in a future release, here
|
|
are a few points that can make it go faster:
|
|
|
|
- mail it to me. If it's more than a couple of hundred of lines of
|
|
compressed uuencoded patches, you had better talk with me about it
|
|
first: patching more than that is definitely not something I like to do
|
|
without a very good reason. I won't fetch patches from ftp-sites unless
|
|
there is some good reason for it.
|
|
|
|
- do it in small separate parts. If you fix a lot of things, send
|
|
several small patches rather than one big one. That way I can (a) more
|
|
easily see what the patch does, and (b) select and edit the patches more
|
|
easily.
|
|
|
|
- follow the same programming style as the rest of the kernel (not
|
|
counting the scsi drivers). That means tabs and the normal linux brace
|
|
placing. If I like the look of the code, it's easier for me to follow
|
|
and I'm definitely not above disliking a patch just for visual reasons.
|
|
|
|
Even when the above holds true, I might not patch it in for several
|
|
reasons:
|
|
|
|
- If I don't like the way something is implemented, I usually skip it
|
|
completely, or then I might write my own version if I find it an
|
|
interesting and useful patch. Not liking it can be due to several
|
|
reasons: bad special case checking, bad coding style, weird and long
|
|
functions and uncomprehensible algorithms. Or any number of things.
|
|
|
|
- hardware reasons: if I don't have the hardware I'm less likely to
|
|
patch it in. The scsi drivers went in because they were obviously
|
|
needed (and didn't clutter the rest of the kernel). This is definitely
|
|
why I still haven't looked at the ethernet patches nor the bus-mouse
|
|
driver: both might be vital to some, but...
|
|
|
|
- if I'm busy with other things or the patch doesn't go in cleanly due
|
|
to other patches, I might just forget about it and hope the patcher
|
|
makes a new version for the next release. Some patches have had to wait
|
|
for several releases until I implemented them.
|
|
|
|
- simply because I don't feel it's important enough. Bug-fixes and
|
|
important fundamental new features definitely get priority, as well as
|
|
some things I simply consider interesting.
|
|
|
|
- they don't fit well with something I've been thinking of doing. This
|
|
goes for the VM86 patch: it's an interesting concept, but to make it go
|
|
in cleanly I'll have to re-write the mm a bit first. The current mm
|
|
patches for VM86 are something of a hack, and might make it difficult to
|
|
correct the mm later. And while VM86 is good, a clean mm is more
|
|
important right now.
|
|
|
|
The result of all this is that if you want a patch to go in, you have to
|
|
(a) tell me about it (b) make me understand that it's really nifty (the
|
|
itimers patch went in the day I noticed xneko wanted them :-) (c) do it
|
|
cleanly: linux is a hackers kernel, but that definitely doesn't mean
|
|
ugly hacks are encouraged (d) tell me about it some more. If you feel
|
|
something needs bigger changes (like the msdos filesystem needing 32-bit
|
|
inode numbers), it's a better bet to mail me and ask about it, and I
|
|
might do it myself just because I feel better about it after that.
|
|
|
|
Also note that the fact that I don't use it doesn't really matter: some
|
|
patches are quite useable just as patches. Or as complete systems from
|
|
somebody else than me: if somebody thinks a linux system with
|
|
"unofficial" patches would be useful, it's certainly a good idea.
|
|
Several packages have come with kernel patches just because the standard
|
|
kernel didn't support them (the original X and ps095 both had kernel
|
|
patches in the distribution to add the necessary features.)
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Logitech mice
|
|
Message-ID: <1992Jul2.225253.7764@klaava.Helsinki.FI>
|
|
Date: 2 Jul 92 22:52:53 GMT
|
|
References: <3300@sicsun.epfl.ch>
|
|
Organization: University of Helsinki
|
|
Lines: 31
|
|
|
|
|
|
In article <3300@sicsun.epfl.ch> lecom@slhp1.epfl.ch (Claude Lecommandeur) writes:
|
|
>
|
|
> For all the people (like me) who lost hope of making their logitech
|
|
>mice, Apply right now the patch2 to 0.96b. It works perfertly. Thanks to
|
|
>Linux.
|
|
|
|
I'm happy that the second patch does indeed seem to correct the problems
|
|
(or at least most of them) people had with some mice. I just wanted to
|
|
say that there is a pretty bad bug in patch2, which happily is easy to
|
|
correct (even without an additional patch).
|
|
|
|
The problem occurs if you try to open a tty special file that doesn't
|
|
have any device connected to it: ie if you try to open /dev/ttyp4 and
|
|
the kernel has been compiled for just 4 pty devices (ttyp0-ttyp3). The
|
|
result of the open is an instant reboot.
|
|
|
|
The above holds true for all other "undefined" tty devices as well: if
|
|
you have created a nonexistent /dev/tty9 (the ninth virtual console when
|
|
only 8 are defined by the kernel) and try to open it, things don't work
|
|
too well. Most people haven't defined any extra special devices, but
|
|
those who have should remove them.
|
|
|
|
The problem is in the tty_ioctl.c file: in the functions
|
|
flush_[in|out]put() which don't check that the queue's actually exist
|
|
sufficiently. I have corrected it already, and patch3 (probably out
|
|
Saturday) will contain this fix as well as some other new features (the
|
|
alpha code of the extfs, named pipes, corrected console handling etc).
|
|
In the meantime everybody who uses patch2 should make sure they have no
|
|
bad tty special files (major = 4) in their /dev directory.
|
|
|
|
Linus
|
|
|
|
=============================
|
|
=============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: To Linus, Lions book?
|
|
Message-ID: <1992Jul3.113506.20524@klaava.Helsinki.FI>
|
|
Date: 3 Jul 92 11:35:06 GMT
|
|
References: <1992Jul3.090424.15207@athena.mit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 96
|
|
|
|
|
|
In article <1992Jul3.090424.15207@athena.mit.edu> J.Jagger@sheffield-city-poly.ac.uk writes:
|
|
>
|
|
>How did you get all your now how to create Linux?
|
|
>Was hands on learning, which books/mags/articles/code
|
|
>did you read? Go on Linus, give us a potted life history :-)
|
|
|
|
Heh. I can't let these ego-building posts go by, so I'll have to answer
|
|
it.
|
|
|
|
Linux started for several different reasons: originally just to learn
|
|
the 386, and for this the book "Programming the 80386" by Crawford and
|
|
Gelsinger is a must. At least I haven't found anything better (although
|
|
admittedly bookstores in Finland probably don't have the plethora of
|
|
books available over in the US etc).
|
|
|
|
The 386 book info has been used for all the 386 details: the lowest
|
|
level of the task-switching code, memory manager, floating point
|
|
emulations etc. It doesn't even mention the AT hardware, so for device
|
|
drivers you'll need more info, but it does contain everything on the
|
|
386/387 chips (even if it's a bit hard to read: read it through several
|
|
times before starting to look into details).
|
|
|
|
The device drivers have been written mostly by trial and error: I
|
|
haven't found a single good source of info on the standard AT hardware.
|
|
Helpful sources have been (a) the AT Technical Reference Manual (notably
|
|
the BIOS listing) (b) actual data-sheets for the 8250 etc chips used in
|
|
the AT hardware (c) other sources (mach drivers and to a lesser extent
|
|
minix drivers) (d) various books like "IBM Microcomputers: a programmers
|
|
manual", "The PC Sourcebook" etc.
|
|
|
|
Even though there are a lot of books on the AT hardware, none of them
|
|
seem to approach the information content of the 80386 books. I can't
|
|
recommend any of the sources I've used, and the best bet is probably to
|
|
have a lot of books and hope they together cover most of it.
|
|
|
|
Then there is naturally the hardware-independent parts of the kernel:
|
|
general filesystem/process/memory management. The two books I
|
|
originally used were "The Design of the Unix Operating System" by Bach,
|
|
and "OS Design and Implementation" by Tanenbaum. Tanenbaum's book
|
|
should be read a couple of times: ignore the details (especially about
|
|
minix), but get the general picture clear. The Bach book has a few nice
|
|
algorithms in it, and I'd suggest reading them too: many of the actual
|
|
ideas on how something could be implemented came from that.
|
|
|
|
Still, OS design is mostly common sense: it doesn't need complicated
|
|
algorithms like a compiler does or similar. A lot of thought, careful
|
|
programming and some good decisions. And unix is a very simple OS
|
|
really: I first came in contact with it 2 years ago when I did the
|
|
"C-kieli ja unix ohjelmointiymp{rist|" course in the fall of -90. By
|
|
early -91 I had bought a PC, and linux v0.01 was ready in August -91.
|
|
That wouldn't have been possible with some other systems I could mention
|
|
(VMS.. arghh).
|
|
|
|
The most difficult parts are:
|
|
|
|
- device drivers: you can go crazy trying to find why something doesn't
|
|
work on some machines (especially if you can't even test it out).
|
|
|
|
- filesystem: trying to make it clean and well designed, as well as
|
|
getting rid of all race conditions. The current linux vfs layer seems
|
|
to work well enough, but my original design wasn't too good. Rewriting
|
|
big parts isn't fun when something works.
|
|
|
|
The kernel proper is pretty simple in fact, although you have to keep
|
|
track of a lot of things. The memory manager has also survived pretty
|
|
well all the changes, and although I'll have to change it to use
|
|
different page directories for different processes some day it will
|
|
probably look pretty similar even after that.
|
|
|
|
>Also could you mail me a few lines, grouping the source code
|
|
>files into chunks. I.e., which files make up the lowest most
|
|
>basic layer of the OS 'onion', which ones make up the next layer?
|
|
>This would make it lot easirt to peruse the code in an orderly fashion
|
|
>so I can try to understand it.
|
|
|
|
Hmm. To get a good general idea of the different pieces, I'd suggest
|
|
reading linux/*/*.c - all the memory management sources, the normal
|
|
kernel sources and the vfs routines. They are pretty modular: you can
|
|
generally understant linux/fs/*.c without having to understand the
|
|
kernel and vice versa (for a general picture, that is. For the details
|
|
you usually have to read it all).
|
|
|
|
The linux device drivers (linux/kernel/chr_drv and linux/kernel/blk_drv)
|
|
are a pain to read: they don't actually give you any more info on the
|
|
kernel itself, so reading them is only needed if you really want to know
|
|
how a block is loaded into memory etc. Similarly for the math-emulator
|
|
(linux/kernel/math).
|
|
|
|
The special filesystems (linux/fs/minix and now linux/fs/ext) can be
|
|
read if you are interested in the actual lay-out of the disk, or if you
|
|
want to see how some of the fs races are handled. Note that most
|
|
race-conditions are handled directly by the buffer-cache routines or the
|
|
vfs layer, but some races are inherent to the actual fs implementation
|
|
(renaming a file etc).
|
|
|
|
Linus
|
|
|
|
=============================
|
|
=============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Speed of GCC
|
|
Message-ID: <1992Jul3.180739.26258@klaava.Helsinki.FI>
|
|
Date: 3 Jul 92 18:07:39 GMT
|
|
References: <1992Jul3.133741.18573@tc.cornell.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 31
|
|
|
|
|
|
In article <1992Jul3.133741.18573@tc.cornell.edu> elan@tasha.cheme.cornell.edu (Elan Feingold) writes:
|
|
>
|
|
>This may be a stupid question, but I'm wondering why GCC is so Slooow...
|
|
>All my MSDOS (yech) compilers (i.e. Borland) compile things very much
|
|
>quicker. I could understand a RISC compiler being much slower, as it
|
|
>has to handle many more things, but under 386 LINUX I would think it
|
|
>should be faster...
|
|
|
|
There are several reasons for gcc being slow under linux:
|
|
|
|
- it's big: if you haven't got much memory (4M or less), it generally
|
|
swaps, and doesn't fit in the buffer cache. With 8MB or more, gcc is
|
|
pretty ok speedwise.
|
|
|
|
- it's good: it does a lot of things that many DOS compilers don't do.
|
|
|
|
- as all GNU software, it has been mostly developed on big and fast
|
|
machines: size and speed of the compiler has been very much a
|
|
secondary issue.
|
|
|
|
- it's general: it has been written to work on several different
|
|
platforms and produce code for many different processors. As with
|
|
most problems, that automatically means it's slower than something
|
|
that is specially written for one architecture.
|
|
|
|
Also, IO etc can in many cases be faster under DOS than under linux: a
|
|
single-tasking system can make shortcuts that aren't possible under a
|
|
"real" OS. (Not that djgpp under DOS is faster than gcc under linux:
|
|
but that's because djgpp has to do a lot of ugly things to work at all).
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Compiling 0.96b kernel with gcc 2.2.2
|
|
Message-ID: <1992Jul3.212912.29760@klaava.Helsinki.FI>
|
|
Date: 3 Jul 92 21:29:12 GMT
|
|
References: <23300@castle.ed.ac.uk> <23334@castle.ed.ac.uk> <1992Jul3.191439.12493@nwnexus.WA.COM>
|
|
Organization: University of Helsinki
|
|
Lines: 30
|
|
|
|
|
|
In article <1992Jul3.191439.12493@nwnexus.WA.COM> vince@halcyon.com (Vince Skahan) writes:
|
|
> [ deleted ]
|
|
>/dev/hda1: Function not implemented
|
|
>Couldn't stat root device.
|
|
>make: *** [Image] Error 1
|
|
>
|
|
>
|
|
>....the (sadly) interesting thing is that if I use the 2.2.2 compiler
|
|
> to make the shellutils, textutils, etc, there are certain
|
|
> of those programs that, when executed, give the 'Function not
|
|
> implemented' message listed above...
|
|
|
|
Well, the reason is very simple: the gcc-2.2.2 library uses the new
|
|
stat() system call, which isn't (surprise surprise) implemented in
|
|
kernel versions 0.96a.pl3 and below. Thus the very logical "Function
|
|
not implemented". The gcc docs do mention the fact that you must be
|
|
running 0.96a.pl4 or above.
|
|
|
|
The solution is (a) to get the 0.96b image from the ftp sites and use
|
|
that while compiling the new kernel (or utilities) or (b) to use an
|
|
older gcc while running the old kernels. (a) is preferable.
|
|
|
|
If somebody missed the discussion, the reason the stat() system call was
|
|
changed was to make a new 'struct stat' available that supports 32-bit
|
|
inode numbers as well as the st_blocks fields (although they are
|
|
actually 0 in linux-0.96b.pl2 and below). And while all old binaries
|
|
work fine under the new kernel, newly compiled binaries automatically
|
|
use the new stat() system call.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Anyone collecting bugs out there?
|
|
Message-ID: <1992Jul4.202540.21929@klaava.Helsinki.FI>
|
|
Date: 4 Jul 92 20:25:40 GMT
|
|
References: <1992Jul4.184224.24930@dg-rtp.dg.com>
|
|
Organization: University of Helsinki
|
|
Lines: 28
|
|
|
|
|
|
In article <1992Jul4.184224.24930@dg-rtp.dg.com> welshm@mirage.rtp.dg.com (Matt Welsh) writes:
|
|
>I've got a question-- is there anyone who's been collecting the many
|
|
>various bug reports for Linux posted to this group?
|
|
>I was just thinking, it might be a nice idea to have someone in charge
|
|
>of getting bug reports (either by e-mail directly for from postings
|
|
>to this group), compiling them into one big report (that could be
|
|
>kept updated) so that new (as well as experienced) Linux users could
|
|
>grab a copy of the most recent bug report and see if the problems they're
|
|
>having are true verified "bugs" in Linux or have workarounds (and are
|
|
>due to different setups, i.e using the wrong version of GCC with
|
|
>a certain patchlevel).
|
|
|
|
This was tried a while back: there was a whopping bug-file available at
|
|
tsx-11.mit.edu at some time. The problem was that most of the
|
|
bugsreports were very quickly outdated (and, as you say, due to
|
|
installation problems in some cases). I doubt the bug-list ever got
|
|
very useful, even though the idea was good. As with many things, the
|
|
speed of linux development makes documentation difficult.
|
|
|
|
Most bugs reported on the net are (a) either hardware-related and thus
|
|
very difficult to check out or (b) the bug-report is followed by a fix,
|
|
and thus keeping the report is not very practical. The best way to
|
|
avoid bugs is generally to have the newest kernel (even though some bugs
|
|
are introduced with new versions.. on the whole things get better with
|
|
higher version numbers). I hope that 0.96c (ie 0.96b.pl3 - out later
|
|
today) will fix all known non-hardware bugs. Knock wood.
|
|
|
|
Linus
|
|
|
|
=============================
|
|
=============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 0.96c out
|
|
Keywords: kernel release
|
|
Message-ID: <1992Jul4.232540.25763@klaava.Helsinki.FI>
|
|
Date: 4 Jul 92 23:25:40 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 41
|
|
|
|
|
|
The latest kernel version is 0.96c: the binary and sources can be found
|
|
on banjo.concert.net: pub/Linux/Linus as usual. I haven't made the
|
|
cdiffs yet, and I'll upload those tomorrow (at the same time I'll put it
|
|
on the other sites as well).
|
|
|
|
0.96c is actually what I called patch3 earlier this week, but as the new
|
|
features were pretty big and the cdiff's are probably going to be bigger
|
|
than the normal patches, I decided I might as well make it a totally new
|
|
minor release and make a bootimage and complete source available.
|
|
|
|
0.96c contains:
|
|
- bugfixes (tty, console driver, pty's, sockets)
|
|
- fifo's (names pipes - Paul Hargrove & editing by me)
|
|
- the alpha extended filesystem (Remy Card)
|
|
- st_blocks implemented (ie du, ls give reasonable if not exact values
|
|
for disk-space used)
|
|
- Makefile cleanups and warnings at compile-time removed
|
|
|
|
Note that while the extended filesystem code is there, and this kernel
|
|
successfully mounts and uses the new filesystem (with long filenames and
|
|
>64MB partitions), it's still under testing: I haven't made the mkefs
|
|
program available, and the extended filesystem features shouldn't be
|
|
used for other than testing right now.
|
|
|
|
Some of the changes are just cleanups: most of the warnings when
|
|
compiling the new kernel should be gone (not counting the scsi code
|
|
which is still the old non-cleaned-up version), and the make'ing of the
|
|
kernel is more logical now.
|
|
|
|
The bugfixes include the corrected console.c driver, the socket
|
|
corrections (without which X sometimes locks up), some pty semantics
|
|
corrections (although I'm still not certain it's correct) and some
|
|
editing in the general tty driver (including fixing the bug introduced
|
|
in 0.96b.pl2 that caused a reboot with uninitialized tty devices).
|
|
|
|
While the extended filesystem support isn't "official" yet, I can
|
|
happily report that my limited testing hasn't found any problems with
|
|
long filenames etc. It still needs a fsck program, but 1.0 looks like a
|
|
real possibility soon.
|
|
|
|
Linus
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 0.96c out
|
|
Keywords: kernel release
|
|
Message-ID: <1992Jul5.074120.3661@klaava.Helsinki.FI>
|
|
Date: 5 Jul 92 07:41:20 GMT
|
|
References: <1992Jul4.232540.25763@klaava.Helsinki.FI>
|
|
Organization: University of Helsinki
|
|
Lines: 18
|
|
|
|
|
|
Earlier I wrote:
|
|
>The latest kernel version is 0.96c: the binary and sources can be found
|
|
>on banjo.concert.net: pub/Linux/Linus as usual.
|
|
|
|
I have had one report that 0.96c won't compile with an older gcc even
|
|
though 0.96b does ok. The solution is to get gcc-2.2.2: that's what I
|
|
use (the problem was the console.c file, specifically the asm statement
|
|
in scrup() - some gcc versions seem not to be able to keep enough
|
|
registers free for it).
|
|
|
|
If you are unwilling to get the new compiler, you might have to stay
|
|
with 0.96b.pl2 (or just get the new binary). Also note that if somebody
|
|
uses the extended-fs features, you'd want to recompile most programs
|
|
with 2.2.2 anyway: that way they use the correct vfs readdir() function
|
|
(reading a directory directly won't work on the ext-fs) and the new
|
|
stat() functions.
|
|
|
|
Linus
|
|
|
|
=============================
|
|
=============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Bug in 96c!
|
|
Message-ID: <1992Jul8.090104.29648@klaava.Helsinki.FI>
|
|
Date: 8 Jul 92 09:01:04 GMT
|
|
References: <13d04pINN8fo@matt.ksu.ksu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 23
|
|
|
|
|
|
In article <13d04pINN8fo@matt.ksu.ksu.edu> probreak@matt.ksu.ksu.edu (James Michael Chacon) writes:
|
|
>Just an annoying bug I found with 96c. When I run X and then exit from it, the
|
|
>system hangs. Not completely, the keyboard comes back, but typing on it does
|
|
>nothing. (i.e. characters appear, but no response from linux)
|
|
|
|
Yes, it's a bug, but it's already corrected in my version: the weekly
|
|
patch (probably out this weekend) will correct it. The problem is the
|
|
TIOCCONS ioctl: if you use "xterm -C" to get console output redirected,
|
|
the redirection doesn't stop correctly when the pty is closed. What you
|
|
are seeing is a linux system with the output redirected to a pty that is
|
|
no longer in use.
|
|
|
|
The reason it showed up in 0.96c is that the pty usage-counts changed a
|
|
bit in order for the pty's to have the correct behaviour when one end is
|
|
closed: but I forgot about redirection which depended on the old
|
|
behaviour. The bug isn't too bad: the system doesn't actually crash,
|
|
and if you wait 30 secs, update does it's job and you can reboot safely.
|
|
Or you can avoid it altogether by not using "-C" with 0.96c for now.
|
|
|
|
(patch1 will mostly be internal changes for the irq-lines, although
|
|
there are a few patches in there and the above fix).
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: ftruncate bug
|
|
Message-ID: <1992Jul8.175040.10667@klaava.Helsinki.FI>
|
|
Date: 8 Jul 92 17:50:40 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 32
|
|
|
|
|
|
There is a typo in fs/open.c: sys_ftruncate() where the
|
|
write-permissions are checked from the f_flags entry instead of the
|
|
f_mode structure-entry. It results in ftruncate() failing on files
|
|
opened with O_RWONLY. This resulted in the weird behaviour for the GNU
|
|
'cp' command when it's compiled with all the new libraries etc.
|
|
|
|
The problem shows itself when GNU cp copies a file that ends with
|
|
zero's, and cp tries to make a hole in the file. GNU cp writes one byte
|
|
past the end, and then uses ftruncate() to get the right file-length. On
|
|
0.96c and earlier this results in EACCES, and cp reports someting like
|
|
|
|
cp: Permission denied
|
|
|
|
and exits. The file is mostly good: it's just one byte too long and
|
|
doesn't get the right permissions (as cp gives up before doing the
|
|
chmod). As this only happens with files that have zero's at the end,
|
|
you don't usually notice it even if you have a new version of cp.
|
|
|
|
The fix is easy: either wait for patch1 (still out this weekend), or fix
|
|
it yourself. I haven't made patches yet, but it looks something like
|
|
this (line 94 in fs/open.c, function sys_ftruncate()):
|
|
|
|
if (S_ISDIR(inode->i_mode) || !(file->f_flags & 2))
|
|
return -EACCES;
|
|
|
|
Just change the f_flags to f_mode, and everything is well.
|
|
|
|
Also note that this bug doesn't matter for older binaries: ftruncate is
|
|
a pretty new system call in linux, so few binaries actually use it. It
|
|
also happens to work correctly if the file is opened with O_RDWR.
|
|
|
|
Linus
|
|
|
|
==================
|
|
==================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Disk cacheing
|
|
Message-ID: <1992Jul10.091409.20803@klaava.Helsinki.FI>
|
|
Date: 10 Jul 92 09:14:09 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 19
|
|
|
|
|
|
Oh, boy. >10 messages today about the fs cache - a totally unnecessary
|
|
waste of space. This is my $0.02:
|
|
|
|
- the buffer cache stays the same.
|
|
|
|
That's it. If somebody wants to get rid of caching, change the source
|
|
and see if you really want it to stay that way. I'm not going to remove
|
|
cacheing even if I get patches, but maybe you can make a non-cache
|
|
release on your own.
|
|
|
|
If somebody wants more frequent sync's: the update program is 10 lines
|
|
long, and changing it to update every other second or so would certainly
|
|
effectively disable the write-cache. Or add the automatic sync to bash:
|
|
"PROMPTCMD=sync" or similar. Or use DOS.
|
|
|
|
I don't know where people get their numbers, but I do know that gcc runs
|
|
at least twice as fast if you have a decent cache. End of discussion.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Patch1 to 0.96c out
|
|
Keywords: 0.96c patch
|
|
Message-ID: <1992Jul11.204011.21601@klaava.Helsinki.FI>
|
|
Date: 11 Jul 92 20:40:11 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 62
|
|
|
|
|
|
[ I already sent this to the normal mailing-list, so you can skip this
|
|
if you already got it by mail ]
|
|
|
|
I have sent off my first patch to 0.96c: as usual it's available
|
|
directly from banjo.concert.net while nic.funet.fi and tsx-11.mit.edu
|
|
might take a day or two to put it into the right directories.
|
|
|
|
linux-0.96c.patch1 contains more changes than I originally envisioned: I
|
|
changed the IRQ routines and the serial code to be easier and cleaner
|
|
(and hopefully more efficient) and I thought that would be it. I was
|
|
wrong.
|
|
|
|
I got several patches (and one bug-report) again, and while I haven't
|
|
had time to check them all, some of them are in. Fixes:
|
|
|
|
- Remy Cards correction to the out-of-space problem with the extended
|
|
fs is here. Most people using the ext-fs might already have applied
|
|
this patch, in which case you might have problems patching.
|
|
|
|
- my ftruncate() fix is here. Again, if you already did the trivial
|
|
patch by hand, you'll get errors when patching.
|
|
|
|
- almesber's implementation of read-only filesystems is here (after
|
|
editing by yours truly). The mount() system call now accepts a flags
|
|
integer as well as a pointer to some arbitraty data in user space for
|
|
some special mount() calls. The general flags allow (a) read-only
|
|
mounting, (b) disabling of suid executables (c) disabling of device
|
|
special files and (d) total disabling of executables on a per-filesystem
|
|
basis. The filesystem specific mount() info isn't currently used by any
|
|
fs, but can be used to specify additional information that depends on a
|
|
special fs type (a password or similar would be possible..)
|
|
|
|
- the rename() system call had a bug in that it allowed moving over a
|
|
directory: I think the code to handle this was lost in the vfs editing,
|
|
and although the GNU mv utility checked it, a malicious (or just
|
|
unsuspecting) program can destroy the fs using this. Thanks for the
|
|
bug-report: it was very easy to add once I saw the problem.
|
|
|
|
- support for vesa-standard svga cards in setup.S. I'm unable to test
|
|
this, but my svga card still works after the patch, so I left it in in
|
|
the hope that it doesn't break for anybody else.
|
|
|
|
- various minor editing by me, or minor patches sent in by others.
|
|
|
|
The full cdiff is almost 50kB compressed, so this is a bigger-than-usual
|
|
patch. Hope there are no problems. People who are using the new SCSI
|
|
drivers might have problems with my changes to the SCSI irq-setup
|
|
changes, so be careful (actually using the original sources might be a
|
|
good idea, and then upgrading again). I hope to get the new SCSI
|
|
drivers into the kernel soon (definitely in time for 0.98).
|
|
|
|
I'd be interested to hear comments on serial line performance, bugs,
|
|
features, etc. As usual, I'm hoping this release won't contain any new
|
|
bugs while fixing all the old ones, but I guess that's likely to happen
|
|
right after the first winter olympics in Hell.
|
|
|
|
Linus
|
|
|
|
PS. Maybe nobody noticed, but I actually never made the patches to
|
|
0.96c available. As nobody has complained, I assume everybody just got
|
|
the complete kernel sources and used that. Unless somebody actually
|
|
asks for them, I don't think there is any point in making them any more.
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Floppies (was Re: File system issues!)
|
|
Message-ID: <1992Jul12.104841.2039@klaava.Helsinki.FI>
|
|
Date: 12 Jul 92 10:48:41 GMT
|
|
References: <PSHUANG.92Jul9232005@m4-035-10.mit.edu> <1992Jul10.140622.4927@email.tuwien.ac.at> <1992Jul10.164650.2229@rs6000.cmp.ilstu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 44
|
|
|
|
|
|
In article <1992Jul10.164650.2229@rs6000.cmp.ilstu.edu> jliddle@rs6000.cmp.ilstu.edu (Jean Liddle) writes:
|
|
>
|
|
>Doesn't the autodetect feature on fd0, fd1 already detect when a floppy has
|
|
>been changed. I know under mtools I often get a message to the effect that
|
|
>"the floppy is undefined because it has been changed". Mtools does not
|
|
>leave the motor running. Perhaps this feature could be incorporated into
|
|
>the standard linux floppy read/writes, if it hasn't already.
|
|
|
|
Floppy change detection has been there since the beginning of the floppy
|
|
driver (linux-0.11, I think. Note that the harddisk driver was there
|
|
from the beginning), but only the autodetect floppies actually say
|
|
something about it (as they have to re-detect the media, and the
|
|
debugging info was a good way to make sure it detected them correctly).
|
|
|
|
The main problem has been (a) some hardware simply doesn't send the
|
|
correct floppy-changed signal (notably old drives: at least some 360kB
|
|
5.25" drives) (b) some bugs in the early code (linux in fact thought a
|
|
disk had been changed even when it hadn't in some circumstances).
|
|
|
|
(b) should be corrected now (thanks to almesber: the floppy-changed
|
|
signal is reset by seeking a bit), while (a) is still a problem on some
|
|
(very few) drives.
|
|
|
|
[ Note: the floppy-change signal is checked only when opening and
|
|
mounting a floppy: if you change the floppy while the device is open or
|
|
mounted you are in for some surprises ]
|
|
|
|
>On another note, has anyone considered making 1.72 MB disks a la fdformat
|
|
>for DOS readable under Linux?
|
|
|
|
Check out the floppy ioctl()'s: along with the auto-detecting, almesber
|
|
added support for forcing the floppy to use a user-defined setup, which
|
|
can include these kinds of user-defined sizes (but note that the
|
|
track-buffer is used only if there are <= 18 sectors per track, so you
|
|
get bad performance with nonstandard formats beyond that).
|
|
|
|
That said, the floppy driver is a mess. It's been changed and hacked on
|
|
like the other drivers, but as it's a pain in the *** (and very boring)
|
|
to program floppies, nobody has really cleaned it up. It's gotten
|
|
better performance and features over time, but it's one of the pieces
|
|
that should be taken out and shot. But I'm not going to, as writing a
|
|
new one is just too depressing.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Device names (was Re: ttys2 not responding)
|
|
Message-ID: <1992Jul12.181359.6939@klaava.Helsinki.FI>
|
|
Date: 12 Jul 92 18:13:59 GMT
|
|
References: <710808938.F00117@remote.halcyon.com>
|
|
Organization: University of Helsinki
|
|
Lines: 54
|
|
|
|
|
|
In article <710808938.F00117@remote.halcyon.com> Rob.Levin@f217.n3802.z1.fidonet.org (Rob Levin) writes:
|
|
>
|
|
>Well, if we're going to be consistent, shouldn't we *then* change the
|
|
>*local* consoles to tty[0-7]? Otherwise, we have tty[1-8], but
|
|
>ttys[0-3], which isn't terribly consistent....
|
|
|
|
If you don't have tty0, your installation is lacking: tty0-8 are
|
|
perfectly valid console devices. BUT tty0 is special: it's not limited
|
|
to just one of the virtual consoles, but is always the current one.
|
|
tty0 should be used if you have some important message that you want to
|
|
make /sure/ is printed on the console regardless of which VC is in use
|
|
(the same way kernel messages are always printed to the current console)
|
|
|
|
If you don't have the tty0 device, you should create it with
|
|
|
|
# mknod /dev/tty0 c 4 0
|
|
|
|
and also make the /dev/console the same device (either by linking or
|
|
making a similar special file for it).
|
|
|
|
>Well, far be it from me to splash water, doesn't the existence of
|
|
>/dev/fd0 and /dev/fd1 sort of render all this complication *moot*? Are
|
|
>there any situations where autodetect could *not* be used successfully?
|
|
>If not, are there any situations where one would *want* to use the more
|
|
>cumbersome forms simply for consistency purposes?
|
|
|
|
There are some circumstances where the auto-detect floppies cannot be
|
|
used: the most obvious of these is when formatting disks, as there is no
|
|
way for the driver to auto-detect an unformatted floppy.
|
|
|
|
Also, if somebody wants to make his own floppy formats and code them
|
|
into the kernel (and it's not too hard to do), the new floppy naming
|
|
scheme will hopefully give him/her obvious names for the non-standard
|
|
devices even though the auto-detect code doesn't recognize them. Having
|
|
a fairly obvious naming standard for these kinds of devices shouldn't
|
|
hurt.
|
|
|
|
>P.S. Shouldn't we consider starting our hard disk partitions with
|
|
>/dev/hda0...? If not, why not...? ;-)
|
|
|
|
Actually, the current /dev/hda is a kind of /dev/hda0 (check the minor
|
|
device numbers) - but in order to make doubly sure that nobody confuses
|
|
the device with a normal partition (/dev/hda is the whole first HD), I
|
|
decided on the current numbering when I finally chucked the minix naming
|
|
over-board. I haven't regretted it: while there were no end of problems
|
|
with the old names, everybody seems to understand the new naming
|
|
conventions.
|
|
|
|
[ For those that don't remember the old minix naming mess: /dev/hd0 was
|
|
the current /dev/hda, /dev/hd1 was /dev/hda1... /dev/hd5 was /dev/hdb,
|
|
/dev/hd6 was /dev/hdb1. The numbers were directly linked with the minix
|
|
minor numbers, and resulted in major confusion ]
|
|
|
|
Linux
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: selecting irq's
|
|
Message-ID: <1992Jul12.200240.8864@klaava.Helsinki.FI>
|
|
Date: 12 Jul 92 20:02:40 GMT
|
|
References: <1992Jul11.043103.28342@athena.mit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 38
|
|
|
|
|
|
In article <1992Jul11.043103.28342@athena.mit.edu> Brad.Midgley@m.cc.utah.edu writes:
|
|
>
|
|
>How do I tell linux about the strange irq's which my serial ports above
|
|
>2 use? Can anything go wrong if I don't tell it these irq numbers but
|
|
>don't use those ports either?
|
|
|
|
Even if the ports have weird IRQ setups, that shouldn't hurt if you
|
|
don't use them (unless they are /truly/ weird and interfere with the
|
|
harddisk or something, but that's not very probable (understatement of
|
|
the year)).
|
|
|
|
>I haven't looked at the source yet, but I assume that linux will not let
|
|
>you open two serial ports which SHARE the same irq, but once you let it
|
|
>know that, say, port 3 uses irq 2, it will let you open both at the same
|
|
>time, no?
|
|
|
|
Yes, you can have as many serial ports open as you wish, as long as they
|
|
don't share IRQ's. 0.96c + patch1 should be truly free about the serial
|
|
IRQ's: it should be possible to set them up to anything as long as it
|
|
doesn't interfere with anything else. Of course, I have used the
|
|
"Linus' Extended Testing System" (pat.pend.) on all this, so it's
|
|
(almost) guaranteed to work (*).
|
|
|
|
Note that earlier versions (a) required kernel patches to use any
|
|
non-standard IRQ's, or (b) only supported a limited number of different
|
|
serial IRQ's (0.96b.pl2 handled irq2,3,4 and 5). 0.96c+patch1 should be
|
|
dynamically configurable to use /any/ free IRQ line (and port address).
|
|
|
|
Linus
|
|
|
|
(*) "Linus' Extended ...", (ie LETS) is a revolutionary concept: you
|
|
write the code, pray to God it works, and if God doesn't contradict you,
|
|
you release it as an "Official Patch" (tm) after which you pray none of
|
|
the beta-testers contradict you either. It doesn't always work, but it
|
|
sure cuts down on the time needed for testing. (**)
|
|
|
|
(**) No, I'm not totally serious. Ha Ha. I've just been on the lines
|
|
too much. I'm much better now. Really.
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: race condition if minixfs??
|
|
Message-ID: <1992Jul13.103705.25008@klaava.Helsinki.FI>
|
|
Date: 13 Jul 92 10:37:05 GMT
|
|
References: <1992Jul12.041727.24125@news.Hawaii.Edu>
|
|
Organization: University of Helsinki
|
|
Lines: 30
|
|
|
|
|
|
In article <1992Jul12.041727.24125@news.Hawaii.Edu> oles@spectra (Shawn Oles) writes:
|
|
>
|
|
>I can't figure out how the following race condition(?) is avoided in
|
|
>Linux's <minix file system>:
|
|
>
|
|
>What happens if two processes, (A & B), are trying to find a free block
|
|
>on the same device. If process A interupts at <interupt T> and B
|
|
>comes into "minix_new_block", aren't they both going to grap the same
|
|
>block, which would result in a system panic on the set_bit ?
|
|
|
|
Processes cannot be interrupted by another process (only a hardware
|
|
interrupt - and they don't switch tasks) when they are running in kernel
|
|
mode unless they actually sleep. And as no interrupt calls
|
|
minix_new_block, there is no need to check for races.
|
|
|
|
Things that can sleep and thus be interrupted by another process:
|
|
|
|
Obvious:
|
|
scedule()
|
|
[un]interruptble_sleep_on()
|
|
any IO except printk()
|
|
Not so obvious:
|
|
accessing user-space memory
|
|
(remember: it might swapped out or not be loaded)
|
|
|
|
As minix_new_block doesn't do any of the above (the buffers that it
|
|
searches are already loaded), it doesn't sleep -> no other process runs
|
|
during that time.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Disk cacheing
|
|
Message-ID: <1992Jul13.101550.24190@klaava.Helsinki.FI>
|
|
Date: 13 Jul 92 10:15:50 GMT
|
|
References: <1992Jul10.091409.20803@klaava.Helsinki.FI> <1992Jul12.071717.20019@cheshire.oxy.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 22
|
|
|
|
|
|
In article <1992Jul12.071717.20019@cheshire.oxy.edu> rafetmad@cheshire.oxy.edu (David Giller) writes:
|
|
>
|
|
>Agreed. But... Could we please have a second thought about at least
|
|
>upgrading the existing buffer cache?
|
|
|
|
Oh, I didn't mean I wouldn't be open to changing implementation details,
|
|
algorithms etc. Even to disable write-caching for one partition or so
|
|
is no problem: add a flag to the mount() call (easy in 0.96c.pl1) that
|
|
is the equvalent of O_SYNC for a file (which isn't implemented either).
|
|
It will take some code to actually implement it, but probably not too
|
|
much (and note that it wouldn't be default, but people might do
|
|
something like "mount -t ext /dev/hdb1 /usr/spool sync" to get it to
|
|
work).
|
|
|
|
What I just reacted against were the big number of posts that wanted "a
|
|
better DOS than DOS" or something similar. Frankly, as long as the
|
|
arguments are on that level, I essentially ignore them. That doesn't
|
|
mean I don't understand arguments like "I'd like to run linux as a
|
|
newsfeed, and write-through would help". Although actual patches are an
|
|
even more convincing argument :-).
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Splitting the comp.os.linux group
|
|
Message-ID: <1992Jul13.213830.13210@klaava.Helsinki.FI>
|
|
Date: 13 Jul 92 21:38:30 GMT
|
|
References: <1992Jul13.093121.27993@wega.rz.uni-ulm.de> <1992Jul13.150727.7923@cl.cam.ac.uk>
|
|
Organization: University of Helsinki
|
|
Lines: 45
|
|
|
|
|
|
In article <1992Jul13.150727.7923@cl.cam.ac.uk> qs101@cl.cam.ac.uk (Quentin Stafford-Fraser) writes:
|
|
> [ comp.os.linux subgrouping ]
|
|
>|> Is there anyone out there of the same opinion?
|
|
>
|
|
>I think almost everyone is - There have been several postings to this
|
|
>effect, with slight variations on the names of suggested groups, and I
|
|
>have seen no dissenters. Any split would be an improvement - let's get
|
|
>on with it. Who do we need to persuade to actually get the thing done?
|
|
|
|
No, everybody does not think this is a good idea: admittedly the traffic
|
|
on comp.os.linux has been high and varied, but I don't think we really
|
|
need more newsgroups. I don't really think the traffic is big enough to
|
|
support several groups, and I think the right solution is to try to find
|
|
a threading newsreader if at all possible (like trn).
|
|
|
|
Most of the discussion is (a) how/where to get linux and beginners
|
|
questions: this shouldn't require a newsgroup of it's own but just
|
|
better docs etc. (Not that I'm about to write them :-) (b) general
|
|
discussion that would have to be in comp.os.linux anyway. The number of
|
|
questions relating to a limited area (like X11) isn't really that high,
|
|
and it has dropped (in the case of X) lately, or so I think.
|
|
|
|
One argument for newsgroups has been that there are mailing-lists that
|
|
people feel would be nicer to have as a newsgroup: but the mailing-lists
|
|
and the newsgroup really have different uses, and should be separate
|
|
(for one thing having a mailing-list for a well-defined area like the
|
|
standards-list cuts down the noise-level a bit when compared to a
|
|
newsgroup).
|
|
|
|
A newsgroup like comp.os.linux.beginners may sound like a good idea, but
|
|
I doubt it would actually work: people would crosspost to the "real"
|
|
group anyway, and while it's sometimes irritating to see the same
|
|
questions over and over, I don't think we can get rid of them. (Well,
|
|
other than by making everybody afraid of posting because they get
|
|
flamed, which I don't feel is a good idea: some of the replies have been
|
|
a bit acerbic, and I've gotten a few mails directly to me, because
|
|
people actually don't like posting due to that. Not good.)
|
|
|
|
As to something like comp.os.linux.X11 - the idea is to get X working so
|
|
well under linux that no such group should be needed: the normal X group
|
|
should answer most questions. Hopefully the same goes for things like
|
|
"rm ./-i" that should really be in comp.unix.wizards (heh. Try it some
|
|
time :-)
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Badblocks revisited (**sigh**)
|
|
Message-ID: <1992Jul14.105705.7189@klaava.Helsinki.FI>
|
|
Date: 14 Jul 92 10:57:05 GMT
|
|
References: <1992Jul13.054522.15674@cc.umontreal.ca> <Jul.13.14.46.48.1992.12686@dartagnan.rutgers.edu> <mper.711085997@uipsuxb>
|
|
Organization: University of Helsinki
|
|
Lines: 12
|
|
|
|
|
|
In article <mper.711085997@uipsuxb> mper@uipsuxb.ps.uiuc.edu (Michael Pereckas) writes:
|
|
>
|
|
>Is it possible for the read-ahead code to read ahead into some bad
|
|
>blocks?
|
|
|
|
Yes, it's possible. It shouldn't happen when using the device as a
|
|
filesystem, but it can happen when doing a fsck or reading from the raw
|
|
device. In that case you should be able to ignore the messages: if you
|
|
don't feel comfortable with that, you can remove the read-ahead code on
|
|
block devices altogether.
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: [comp.os.linux]: Re: File system issues!
|
|
Message-ID: <1992Jul14.112136.7798@klaava.Helsinki.FI>
|
|
Date: 14 Jul 92 11:21:36 GMT
|
|
References: <9207131519.AA14556@optical.bms.com> <cy7uNB1w165w@ssg.com>
|
|
Organization: University of Helsinki
|
|
Lines: 40
|
|
|
|
|
|
[ sorry if the attributions are wrong: the included file was a bit messy ]
|
|
|
|
In article <cy7uNB1w165w@ssg.com> unixsys@ssg.com (Rick Emerson) writes:
|
|
> From: davidsen@ariel.crd.GE.COM (william E Davidsen)
|
|
>>
|
|
>> Perhaps that class of user should be using fsync() to force their data
|
|
>> out.
|
|
|
|
fsync() under linux isn't implemented right now: although a fsync() that
|
|
just does a sync() is possible.
|
|
|
|
>'Splain me why a "fscache -writeback 0" (or something equivalent) is so
|
|
>distasteful? Please, let's not debate the pros and cons of write-back
|
|
>caching.
|
|
|
|
Ok, ok, ok. Here is a simple patch (not cdiff, but you can do it by
|
|
hand) that essentially implements write-through. I won't put it into
|
|
the standard kernel (unless somebody pays me $$$ - anybody? I'm /very/
|
|
corruptible.) but you might try it out if you want to..
|
|
|
|
In the function brelse(), in fs/buffer.c:
|
|
|
|
void brelse(struct buffer_head * buf)
|
|
{
|
|
if (!buf)
|
|
return;
|
|
+ ll_rw_block(WRITE,buf);
|
|
wait_on_buffer(buf);
|
|
if (!(buf->b_count--))
|
|
panic("Trying to free free buffer");
|
|
wake_up(&buffer_wait);
|
|
}
|
|
|
|
One line to add, and voila. Magic.
|
|
|
|
I still like the fsync() and O_SYNC ideas better, but the above is so
|
|
simple anybody can try it out. DISCLAIMER: I used my usual rigorous
|
|
testing techniques on the above, ie none.
|
|
|
|
Linus
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: problems with the new mount(2)
|
|
Message-ID: <1992Jul14.105210.6964@klaava.Helsinki.FI>
|
|
Date: 14 Jul 92 10:52:10 GMT
|
|
References: <1992Jul11.230357.13628@daffy.cs.wisc.edu> <1992Jul13.145414.7357@bernina.ethz.ch> <1992Jul14.053132.910@daffy.cs.wisc.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 45
|
|
|
|
|
|
Before you flame each other to death, I'd just like to point out that
|
|
the kernel interface to mount() and the actual mount() system call can
|
|
(and in this case should) be totally different things. I used the new
|
|
kernel-level interface because it's simple and relatively clean from a
|
|
kernel standpoint, but that does /not/ mean the actual mount() library
|
|
function has to conform exactly to the kernel parameters. There is
|
|
precedent for this: some system calls (like readdir()) have arguments
|
|
that are totally different from the user-level library interface.
|
|
|
|
The mount() library would probably look something like this (you could
|
|
even do bit-twiddling to get the flags to have the same meaning as in
|
|
BSD, although I really doubt it's worth it):
|
|
|
|
#define __LIBRARY__
|
|
#include <unistd.h>
|
|
|
|
#define __NR_sys_mount __NR_mount
|
|
|
|
static inline _syscall5(int,sys_mount,const char *,device,const char *,dir,
|
|
const char *,type,int,flags,void *,data)
|
|
|
|
int mount(const char * device, const char * dir,
|
|
const char * type, void * data)
|
|
{
|
|
unsigned long flags = 0xC0ED0000; /* magic number */
|
|
int result;
|
|
|
|
if (data) {
|
|
flags |= 0xffff & *(long * data);
|
|
data += 4;
|
|
}
|
|
return sys_mount(device,dir,type,flags,data);
|
|
}
|
|
|
|
That way the library interface would be simple and automatically insert
|
|
the magic numbers that mean it's using the new format. And to the
|
|
person who complained about magic numbers: there is currently only two
|
|
magic numbers like this in the kernel - for reboot and mount. Reboot
|
|
obviously wants magic numbers (and they shouldn't even be hardcoded into
|
|
the library): otherwise it would be easy for root to reboot by accident
|
|
in case some user-level program gets confused. And yes, I could have
|
|
made a new mount() system call, but there is not really much difference
|
|
between that and the current implementation.
|
|
|
|
Linus
|
|
|
|
==============================
|
|
==============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: FAQ addition: (was Re: Badblocks revisited (**sigh**))
|
|
Message-ID: <1992Jul16.220318.15436@klaava.Helsinki.FI>
|
|
Date: 16 Jul 92 22:03:18 GMT
|
|
References: <9207160920.AA00919@optical.bms.com> <uR5ZNB6w165w@ssg.com>
|
|
Organization: University of Helsinki
|
|
Lines: 48
|
|
|
|
|
|
In article <uR5ZNB6w165w@ssg.com> unixsys@ssg.com (Rick Emerson) writes:
|
|
>u31b3hs@cip-s02.informatik.rwth-aachen.de (Michael Haardt) writes:
|
|
>>
|
|
>> Linux does not mark bad blocks, so you have to do that. It's not really
|
|
>> difficult, it is just that you need MINIX to do the job. Don't yell at
|
|
>> me ...
|
|
|
|
That was true of linux versions 0.10 and below: I think 0.11 already had
|
|
a mkfs that did the mapping out of bad blocks (this can be confusing to
|
|
minix users: in minix, you use a special program for it, under linux you
|
|
just use "mkfs -c" (or "mkfs -l" if you know the bad blocks)).
|
|
|
|
Linux maps out bad blocks by putting them in a ".badblocks" file in the
|
|
root directory (although you can naturally rename this later) that has
|
|
inode nr 2. Minix used several small files, as the minix badblocks
|
|
program was too stupid to understand about indirection in an inode, so
|
|
it created a inode for every 7 bad blocks (minix inodes have 7 direct
|
|
pointers in them).
|
|
|
|
So if you have a .badblocks file, you should be careful not to try to
|
|
back it up if you are doing a full system backup: it will result in no
|
|
end of read errors (not too surprisingly).
|
|
|
|
Also note that linux doesn't do bad-block mapping at a device level:
|
|
It's done by the filesystem. Mapping bad blocks on a lower level is
|
|
complicated, and often not worth it (as most new controllers do it in
|
|
hardware).
|
|
|
|
> You
|
|
> must
|
|
> be
|
|
> joking!
|
|
|
|
No, this was standard practice with the early versions of linux. I
|
|
hadn't written a mkfs or a fsck, so you actually needed minix to set
|
|
things up. Happily, this is no longer true, and hasn't been for about 8
|
|
months or so.
|
|
|
|
>Install another OS to fix this one? (Yes, yes, yes, I know Linux is
|
|
>descended from Minix)
|
|
|
|
Actually, "descended" is too strong a word: I just used minix as the
|
|
platform I wrote it on, and that has made its mark mostly on the
|
|
original filesystem layout. Minix and linux are worlds apart
|
|
internally: totally different principles in all things from interrupt
|
|
handling to process control and memory management.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux,comp.os.coherent
|
|
Subject: Re: Are Linux executables compatable with Coherent 4.0?
|
|
Message-ID: <1992Jul16.222559.16115@klaava.Helsinki.FI>
|
|
Date: 16 Jul 92 22:25:59 GMT
|
|
References: <SJE.92Jul16142750@xylos.ma30.bull.com>
|
|
Distribution: comp
|
|
Organization: University of Helsinki
|
|
Lines: 34
|
|
|
|
|
|
In article <SJE.92Jul16142750@xylos.ma30.bull.com> sje@xylos.ma30.bull.com writes:
|
|
>The beta version of MWC Coherent 4.0 (32 bit flat addressing for the
|
|
>386+ CPU family) claims that it has SCO executable compatability for
|
|
>character I/O programs at the Intel Binary Interoperatibility Level
|
|
>(or whatever). MWC has gotten gcc to run allowing the production of
|
|
>ASNI C applications. However, there are only a limited number (less
|
|
>than 10) of officially converted applications. Given the apparently
|
|
>large number of programs now working under Linux, I was wondering if
|
|
>any of the Linux binaries, particularly gcc, may be run under Coherent
|
|
>4.0 without modification. Also, it would be interesting if the
|
|
>reverse was true.
|
|
|
|
No, linux binaries won't work under Coh4.0 nor vice versa. I don't know
|
|
if the actual header is a problem (linux uses the standard a.out header
|
|
that gcc produces), but system calls aren't handled the same way. I
|
|
personally think binary compatability is evil (or at least unnecessary)
|
|
and in most cases just forces old mistakes on a new product etc (just
|
|
look at DOS). And as there aren't any binaries available with the
|
|
standard i386 ABI anyway that I could afford and want to run, I saw no
|
|
reason to even try.
|
|
|
|
[ Not to mention the fact that I haven't got any information at all on
|
|
the "standard" binary interface - which makes things a bit hard to
|
|
program :-) ]
|
|
|
|
Of course, somebody might try to write a system call emulator that does
|
|
the necessary translations, but it would probably be pretty ugly. I
|
|
don't even know how a system call is handled under normal i386 unices:
|
|
linux uses "int $0x80" with all the necessary info in the registers, but
|
|
there are several other possibilities available (jumping through a
|
|
trap-gate with or without stack copying etc), and the chances that I
|
|
would hit on the same interface as other 386-unices are pretty slim.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Good comm program?
|
|
Message-ID: <1992Jul17.194456.8136@klaava.Helsinki.FI>
|
|
Date: 17 Jul 92 19:44:56 GMT
|
|
References: <1992Jul17.142447.16334@athena.mit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 27
|
|
|
|
|
|
In article <1992Jul17.142447.16334@athena.mit.edu> chchen@stat.fsu.edu writes:
|
|
>
|
|
>3.kermit is good but no rz, sz. I have tried to use them in kermit's
|
|
> command line (! rz) but it seems that rz can not find the com port
|
|
> , just waiting there.
|
|
|
|
The way I have rz/sz set up is to get one of the newer versions that
|
|
open "/dev/tty" explicitly in rbsb.c, and change that open to
|
|
"/dev/modem". After that, you can link /dev/modem to whatever device
|
|
you use, and rz/sz will happily use it directly. The normal rz/sz
|
|
behaviour requires the communication program to know about controlling
|
|
terminals, and setting it up correctly for rz/sz.
|
|
|
|
Additionally, making /tmp/rzlog and /tmp/szlog (usually symbolic) links
|
|
to /dev/tty means you get the verbose output to the screen: at a kermit
|
|
session I just type "^\ C" to get to the kermit prompt, and then "! rz
|
|
-vv" to receive using zmodem (or "! sz -bvv xxxx" to send). After
|
|
having set up things like the above, I get a nice verbose output (thanks
|
|
to the 'vv' flags) of how far the down/up-load has progressed.
|
|
|
|
Naturally, there are other ways you can set things up, and this just
|
|
happens to be the way I use it. Having hardcoded /dev/modem to be the
|
|
device sz/rz uses may not work in all circumstances (ie rz/sz won't work
|
|
if you have several dial-in lines or similar), but it works for me and
|
|
simplifies a lot of things.
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Floppies (was Re: File system issues!)
|
|
Message-ID: <1992Jul15.180004.20299@klaava.Helsinki.FI>
|
|
Date: 15 Jul 92 18:00:04 GMT
|
|
References: <1992Jul10.164650.2229@rs6000.cmp.ilstu.edu> <1992Jul12.104841.2039@klaava.Helsinki.FI> <1992Jul14.150258.29853@hubcap.clemson.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 26
|
|
|
|
|
|
In article <1992Jul14.150258.29853@hubcap.clemson.edu> dawill@hubcap.clemson.edu (david williams) writes:
|
|
>
|
|
> I'll say one thing for the floppy driver - it's much faster than the
|
|
>MS_DOG floppy. I was exceeding pissed at my 386 floppy performance,
|
|
>and had pretty much given up on my controller as the problem. Not so!
|
|
>Running floppy I/O under Linux is a breath of fresh air, so it's not my
|
|
>hardware... It's a problem with MS_LOSS. Once more, proof that Linux
|
|
>is a really nice system.
|
|
|
|
This is due to the track-buffering: linux is pretty good at reading
|
|
sequential data (as in tar-files etc), but performance isn't that good
|
|
if you use the floppy for a filesystem (although the buffer cache does
|
|
help in that case).
|
|
|
|
> Anybody have an idea why MS-DOG is so slow in comparison with Linux
|
|
>if the floppy drivers for Linux are in such a sad state?
|
|
|
|
It's not that the driver isn't good: the linux drivers work pretty well
|
|
(with the exception of some problems), and they do a lot of smart
|
|
things: it's just that the actual code to do it isn't pretty. That
|
|
means potential bugs are hard to find, but it doesn't necessarily mean
|
|
the driver is slow. I'd like to start over on a clean slate, but it's
|
|
hard to find the energy when the current driver works as well as it
|
|
does.
|
|
|
|
Linus
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: problems with the kernel mathcode ?
|
|
Keywords: irit 3.0 modelling program with X11-Interface
|
|
Message-ID: <1992Jul14.165646.14572@klaava.Helsinki.FI>
|
|
Date: 14 Jul 92 16:56:46 GMT
|
|
References: <1992Jul14.090231.25102@Informatik.TU-Muenchen.DE>
|
|
Organization: University of Helsinki
|
|
Lines: 25
|
|
|
|
|
|
In article <1992Jul14.090231.25102@Informatik.TU-Muenchen.DE> menes@Informatik.TU-Muenchen.DE (Rainer Menes) writes:
|
|
>
|
|
>Yesterday I complied the 0.96cpl1 kernel, and with this kernel the program
|
|
>hang in all sitiations (without gdb, with gdb and stepi).
|
|
|
|
If you are using a 386-387 combination, there is a bug in the
|
|
IRQ13-handling code of 0.96c.pl1 - when I changed the IRQ's, I didn't
|
|
remember about the (stupid IBM-imposed) special handling of the 387
|
|
errors on the AT architecture. This particular bug leads to hangups at
|
|
math-errors in some circumstances. It shouldn't happen on 486 machines,
|
|
although I'm not 100% sure.
|
|
|
|
Other known problems with 0.96c.pl1 are: you can't use IRQ9 for the
|
|
serial lines due to a typo in irq.c. And due to a thinko in serial.c,
|
|
the IRQ switching of the serial lines doesn't actually work. I assume
|
|
this was to be expected, as the IRQ code was totally rewritten, but it's
|
|
a pity in any case: I had hoped c.pl1 would be reasonably stable.
|
|
|
|
As it is, I'll have to make pl2 available soonish: I hope to get the
|
|
select() code finally cleaned up before that, but I'll make the patch
|
|
available again the upcoming weekend if possible. The 0.96c.pl2 kernel
|
|
will contain the bus-mouse driver and the bug-fixes: if the SCSI drivers
|
|
can be updated, I might do that too. No real new features.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: New Bus Mouse Driver patches for 96c-patchlevel1
|
|
Message-ID: <1992Jul15.180739.20524@klaava.Helsinki.FI>
|
|
Date: 15 Jul 92 18:07:39 GMT
|
|
References: <63336@hydra.gatech.EDU> <63338@hydra.gatech.EDU>
|
|
Organization: University of Helsinki
|
|
Lines: 12
|
|
|
|
|
|
In article <63338@hydra.gatech.EDU> gt7080a@prism.gatech.EDU (Nathan I. Laredo) writes:
|
|
>I should probably mention that the mouse driver is on
|
|
>banjo.concert.net as mouse96c1.tar.Z in /pub/Linux/Incoming
|
|
>and should be on tsx-11 sometime or other (I sent it there
|
|
>as well) in the next few weeks.
|
|
|
|
He also sent it to me by mail (correct procedure), and as I was cleaning
|
|
up the IRQ and select() code anyway, it went in with my changes. Expect
|
|
the mouse-driver in 0.96c.pl2 (out Saturday as usual). I'll want to
|
|
hear if the select() routines work for the mouse as well.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 0.96c second patch
|
|
Summary: it's out
|
|
Keywords: 0.96c patch
|
|
Message-ID: <1992Jul18.205448.25947@klaava.Helsinki.FI>
|
|
Date: 18 Jul 92 20:54:48 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 92
|
|
|
|
|
|
[ This already went out to the normal linux-activists list, so if you
|
|
got it that way, you can ignore this post. BTW, I have some reports
|
|
that some messages from over here don't make it all the way to the US,
|
|
so if you don't see this, mail me :-]
|
|
|
|
The subject pretty much says it all: I've sent out the "weekly patch"
|
|
and I'd be very interested in comments. As with patch1, there are some
|
|
very fundamental changes in the kernel, and they might have some
|
|
problems. I'd want as many as possible to test out linux-0.96c.pl2, as
|
|
that has always been the best way to test out the changes. Everything
|
|
works on my machine, but that doesn't guarantee it will work on other
|
|
setups...
|
|
|
|
The MAJOR change in 0.96c.pl2 is the totally rewritten sleep/wakeup
|
|
code. That, together with the IRQ code introduced in pl1 and slightly
|
|
edited in pl2, means that two very fundamental things in the linux
|
|
kernel have changed in the last two weeks. The code is cleaner, easier
|
|
to add devices to, and hopefully faster, but it's still a bit risky to
|
|
change this kind of very low-level behaviour.
|
|
|
|
Select() is now implemented using the vfs jump tables, and thanks to the
|
|
better sleep/wakup interface, select() performance should be noticeably
|
|
better. At least xload seems to give lower load-averages, and I hope
|
|
ka9q will work better with the new kernel. Note that things like the
|
|
tty code doesn't yet take full advantage of the new features the
|
|
rewritten sleep offers, but I wanted to get a good testing-release out
|
|
before actually tweaking all the routines to use the new interface.
|
|
|
|
The IRQ routines have changed slightly, and all known bugs are fixed.
|
|
|
|
While I'm most interested to hear comments about the IRQ and
|
|
select/sleep/wakup code, there are a few other changes in pl2:
|
|
|
|
- Swiss keyboard support.
|
|
|
|
- Screen blanking now only reacts to key-presses and kernel messages:
|
|
normal tty output doesn't make the screen unblank.
|
|
|
|
- DOS-fs version 5 is in. It wouldn't hurt to try it out. It's
|
|
somewhat alpha still, but it seems to work. mtools should be a thing of
|
|
the past once the dosfs is a bit more tested.
|
|
|
|
- core-file magic number, and a minor bug in ptrace is fixed
|
|
|
|
- a bus-mouse is supported. I'd like to hear if it still works after I
|
|
did the select() patches "blind" (I can't test it on my machine).
|
|
|
|
- iopl changing is possible (but requires root priviledges): this
|
|
allows access to all IO ports, as well as the interrupt flag. Don't use
|
|
it unless /absolutely/ necessary: a bug in your program will most likely
|
|
crash the machine if you are running with IO priviledges. It's needed
|
|
for some X VGA drivers.
|
|
|
|
As a result of all the changes, the diff is pretty big. Apply and build
|
|
it with something like:
|
|
|
|
cd /usr/src
|
|
zcat linux-0.96c.patch2.Z | patch -p0
|
|
cd linux
|
|
make dep
|
|
make clean
|
|
make Image
|
|
|
|
assuming you have the 0.96c.pl1 kernel in /usr/src/linux. I've had some
|
|
reports that my patches won't always go in cleanly: I know for a fact
|
|
that patch1 patches cleanly (I rebuilt 0.96c.pl1 by downloading it all
|
|
from banjo), so the error is in your end.
|
|
|
|
Possible problems:
|
|
|
|
- The VESA code in setup.S has some problems. I haven't even looked
|
|
into it yet, so if it won't work for you, please either (a) use the
|
|
unpatched setup.S from 0.96c, or (b) try to find the problem and tell
|
|
me. (b) is preferable, of course. I'd like to have VESA support, but
|
|
if the bug isn't found, I'll have to use the non-VESA version for 0.97.
|
|
|
|
- The IRQ code in 0.96c.pl1 could overrun the stack if linux got
|
|
un-ending interrupt requests, resulting in a re-boot. With pl2, this
|
|
shouldn't happen: linux should print out something like "Recursive
|
|
interrupt on IRQx. Shutting down" and simply disable the problematic
|
|
IRQ line. If you see this message, I'd be very interested to hear about
|
|
it (which IRQ, what devices you have, etc).
|
|
|
|
- And any new or old bugs I haven't found yet.
|
|
|
|
I have one report that 0.96c.pl1 has problems with the inode table, and
|
|
panics on bootup with a "no more inodes in mem" report. Can anybody
|
|
confirm this sighting? I haven't found the reason for it, and haven't
|
|
seen it myself. I'm hoping it's an installation problem, but if anybody
|
|
else sees the same behaviour, I'm SOL.
|
|
|
|
Linus
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 0.96c second patch
|
|
Keywords: 0.96c patch
|
|
Message-ID: <1992Jul18.224304.19011@klaava.Helsinki.FI>
|
|
Date: 18 Jul 92 22:43:04 GMT
|
|
References: <1992Jul18.205448.25947@klaava.Helsinki.FI>
|
|
Organization: University of Helsinki
|
|
Lines: 7
|
|
|
|
|
|
Oops. I forgot to mention that the sleep/wakeup code changes in patch2
|
|
change the kernel data structures enough to freak out 'ps' etc programs
|
|
that go mucking around with /dev/kmem. It is not enough just to do a
|
|
"ps U" to update the nametables: you actually have to recompile the ps
|
|
package.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Termios question: Semantics of VMIN/VTIME on Linux/SunOS ?
|
|
Message-ID: <1992Jul19.201601.13942@klaava.Helsinki.FI>
|
|
Date: 19 Jul 92 20:16:01 GMT
|
|
References: <9207151400@gandalf.moria> <arumble.711530378@extro.ucc.su.OZ.AU>
|
|
Organization: University of Helsinki
|
|
Lines: 39
|
|
|
|
|
|
In article <arumble.711530378@extro.ucc.su.OZ.AU> arumble@extro.ucc.su.OZ.AU (Anthony Rumble) writes:
|
|
>michael@gandalf.moria (Michael Haardt) writes:
|
|
>
|
|
>> buff.c_cc[VMIN]=5;
|
|
>> buff.c_cc[VTIME]=1;
|
|
>> tcsetattr(file,TCSANOW,&buff);
|
|
|
|
>>I am no termios expert, but this code is intended to let a
|
|
|
|
>> read(file,buffer,sizeof(buffer));
|
|
>>
|
|
>>read as much characters as available, max sizeof(buffer) and return
|
|
>>after a short timeout if there are none. Ok?
|
|
|
|
The way linux does this is (a) wait for at least one character (VMIN > 0
|
|
and VTIME > 0), (b) read as many characters as possible, with a timeout
|
|
of max 0.10 seconds between any of the first 5 characters. Thus the
|
|
read can return:
|
|
|
|
-1:
|
|
EINTR - a signal happened (but you usually don't see this: the
|
|
read is mostly re-tried after the signal is handled)
|
|
|
|
1-5:
|
|
linux got one character, followed by four characters within the
|
|
inter-character timeout given (VTIME = 1 -> 0.1 sec).
|
|
|
|
6-sizeof(buffer):
|
|
after the fifth character there was actually more data
|
|
available, without any timeout.
|
|
|
|
>I was under the impression that this should actually return on
|
|
>either 5 characters recieved, or sizeof(buffer), or timeout..
|
|
|
|
The only thing that I have that explains this all is the SunOS manpage,
|
|
so I cannot actually guarantee the above behaviour by linux is correct.
|
|
Could somebody with the POSIX standard available actually check it out?
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Termios question: Semantics of VMIN/VTIME on Linux/SunOS ?
|
|
Message-ID: <1992Jul21.183946.9138@klaava.Helsinki.FI>
|
|
Date: 21 Jul 92 18:39:46 GMT
|
|
References: <arumble.711530378@extro.ucc.su.OZ.AU> <1992Jul19.201601.13942@klaava.Helsinki.FI> <arumble.711729320@extro.ucc.su.OZ.AU>
|
|
Organization: University of Helsinki
|
|
Lines: 60
|
|
|
|
|
|
In article <arumble.711729320@extro.ucc.su.OZ.AU> arumble@extro.ucc.su.OZ.AU (Anthony Rumble) writes:
|
|
>torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) writes:
|
|
>
|
|
>>The way linux does this is (a) wait for at least one character (VMIN > 0
|
|
>>and VTIME > 0), (b) read as many characters as possible, with a timeout
|
|
>>of max 0.10 seconds between any of the first 5 characters. Thus the
|
|
>>read can return:
|
|
>
|
|
>Errm.. Question.. Can you think of a possible USE of this?
|
|
>It dosen't seem quite logical to do it this way, it would be
|
|
>much more usefull to return on either 5 chars OR timeout regardless
|
|
>on the first character..
|
|
|
|
Ours is not to wonder why... Frankly, the above is what the SunOS
|
|
man-pages seem to say, and as that's the only info I have on the
|
|
subject, that's how linux does things. SunOS seems to be pretty close
|
|
to posix, and following the man-pages has so far worked pretty well. I
|
|
don't know the reasons for the POSIX behaviour, and the man-pages might
|
|
be wrong (and I might even have misunderstood), but I'd rather be
|
|
conforming to weird standards than have problems porting programs later
|
|
on when they expect that behaviour.
|
|
|
|
As I already mentioned, I'm very open to changing the behaviour: but I
|
|
need to have actual "chapter and verse" from the posix standard before I
|
|
start changing things. The current behaviour works with a lot of
|
|
programs, and conforms to the only docs I have, so I really need some
|
|
strong arguments to change it.
|
|
|
|
The VMIN/VTIME arguments are currently understood by linux as (note:
|
|
this info is only used when not in canonical mode):
|
|
|
|
VTIME = 0 VMIN = 0
|
|
Instant return, reading as many characters as possible from the
|
|
terminal.
|
|
|
|
VTIME = 0 VMIN > 0
|
|
No timeout, and we return once VMIN characters have been read.
|
|
We still might return before that in case of signals etc, and if
|
|
there are more characters available, they will be read.
|
|
|
|
VTIME > 0 VMIN = 0
|
|
This is a simple timeout-read: we wait VTIME*0.1 seconds or
|
|
until at least one character has arrived. The read will not
|
|
take more than VTIME*0.1 sec, not counting scheduling etc
|
|
overhead.
|
|
|
|
VTIME > 0 VMIN > 0
|
|
VTIME*0.1 seconds is an inter-character timer that is started
|
|
after the first character is received, and restarted at each new
|
|
character until VMIN characters have been received. The read()
|
|
returns at least one character (again not counting signals), as
|
|
the timer comes into play only /between/ characters.
|
|
|
|
All the above have an upper limit of the given buffer-size: none have a
|
|
true lower limit (as they can return less than VMIN characters). VMIN
|
|
isn't meant to be used for packet-sized communication: it's just used to
|
|
help decide when/how to accept timeouts. Can somebody please confirm if
|
|
the above is actually the correct behaviour?
|
|
|
|
Linus
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Better serial throughput: another approach
|
|
Message-ID: <1992Jul21.201858.11059@klaava.Helsinki.FI>
|
|
Date: 21 Jul 92 20:18:58 GMT
|
|
References: <Jul.19.16.41.19.1992.22509@dumas.rutgers.edu> <2A6C23D4.5D7F@tct.com>
|
|
Organization: University of Helsinki
|
|
Lines: 56
|
|
|
|
|
|
In article <2A6C23D4.5D7F@tct.com> chip@tct.com (Chip Salzenberg) writes:
|
|
>According to hedrick@dumas.rutgers.edu (Charles Hedrick):
|
|
>>I've finally concluded that there's just too much code being
|
|
>>executed per character.
|
|
>
|
|
>There is another way, as SCO does:
|
|
>
|
|
> At serial interrupt: just store the character in a queue and return.
|
|
> Don't go through scheduler, just return.
|
|
>
|
|
> At clock interrupt: pull characters off the queues and do the rest
|
|
> of the processing that is currently happening at serial interrupt
|
|
> time. Then run the scheduler, _once_.
|
|
>
|
|
>Presto: minimum-overhead serial I/O.
|
|
|
|
This is in fact how linux does it already: the problem has been to find
|
|
the offending code. As I haven't actually seen the character loss, I
|
|
originally thought it was either bad interrupt latency or simply too
|
|
slow serial interrupt routines. After more testing (mainly thanks to
|
|
hedrick), it seems the problem is actually the clock interrupt routine:
|
|
it's too slow.
|
|
|
|
"Why would the system care how slow the clock interrupt is?" - the
|
|
reason is simple: interrupts are enabled while the serial interrupt
|
|
happens, so the following can happen:
|
|
|
|
serial interrupt received: handler started
|
|
timer interrupt received: immediate response
|
|
timer interrupt does the serial copying, returns
|
|
serial handler returns.
|
|
|
|
The result is that while the serial code is fast enough, it can get
|
|
interrupted by the timer interrupt (which happens 100 times a second:
|
|
not too surprising if it happens while the serial handler is active
|
|
every now and then).
|
|
|
|
The timer interrupt isn't that complicated, but it does do the
|
|
copy_to_cooked routine, which can take some time. So, there are four
|
|
possibilities: (a) make the serial interrupt handler atomic or (b) speed
|
|
up the copy_to_cooked routine or (c) move copy_to_cooked from within the
|
|
timer-interrupt to some less time-critical place and (d) rewrite the
|
|
general tty handlers totally to have less need for the copy-to-cooked
|
|
routines.
|
|
|
|
I'm in fact looking into all four possibilities, and 0.97 will contain
|
|
one or several of the fixes. One way of getting slightly better
|
|
performance already is to use the patch by hedrick, which essentially
|
|
speeds up copy_to_cooked by making some of the help-function inline etc.
|
|
|
|
[ Note that you cannot right now use SA_INTERRUPT to install a serial
|
|
handler that is totally atomic: it's still interruptible in the general
|
|
IRQ handling code. I'll have to change this for the next version
|
|
anyway, as the old problems with some (buggy?) harddisks are back ]
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: /dev/ttys? not responding
|
|
Message-ID: <1992Jul23.103716.29243@klaava.Helsinki.FI>
|
|
Date: 23 Jul 92 10:37:16 GMT
|
|
References: <1992Jul22.235626.17486@ncsu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 24
|
|
|
|
|
|
In article <1992Jul22.235626.17486@ncsu.edu> doogie@garfield.catt.ncsu.edu (Jeff House) writes:
|
|
>
|
|
>I did the following: [ edited ]
|
|
>
|
|
>echo "ATDT5551111" > /dev/ttys0
|
|
>
|
|
> [ some more editing ] Neither case dialed, and
|
|
>when I did:
|
|
>
|
|
>cat /dev/ttys0
|
|
>
|
|
>"ATDT5551111" was echoed. My modem seems not to be accepting commands.
|
|
|
|
This is pretty much what should happen: hayes-compatible modems expect a
|
|
carriage return ('\r') after the command, and the above just sends the
|
|
normal unix line-feed instead. As the modem is echoing you, you do have
|
|
a good connection to it, so things should work after correcting the
|
|
above to:
|
|
|
|
$ echo -e -n "atdt5551111\015"
|
|
|
|
or similar. Or get kermit, and type the above in directly.
|
|
|
|
Linus
|
|
|
|
==================
|
|
==================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: sigaction sys-call
|
|
Message-ID: <1992Jul25.114912.17913@klaava.Helsinki.FI>
|
|
Date: 25 Jul 92 11:49:12 GMT
|
|
References: <1992Jul25.110852.24366@fwi.uva.nl>
|
|
Organization: University of Helsinki
|
|
Lines: 14
|
|
|
|
|
|
In article <1992Jul25.110852.24366@fwi.uva.nl> vesseur@fwi.uva.nl (Joep JJ Vesseur) writes:
|
|
>
|
|
>Looking around in the include files, i came across a line that said
|
|
> "Ok, I haven't implemented sigactions, but trying to keep headers POSIX"
|
|
> (/usr/include/signal.h)
|
|
>but in the kernel source file signal.c there is code to implement
|
|
>sigaction. Is this some sort of dummy code, or is signal.h out of date and
|
|
>is sigaction fully functional?
|
|
|
|
Sorry: I don't write too many comments, and when I do they seem to
|
|
become obsolete. sigaction() is completely implemented, and has been
|
|
since 0.12 or something like that..
|
|
|
|
Linus
|
|
|
|
=============================
|
|
=============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: C_A_D=0
|
|
Message-ID: <1992Jul27.185353.5771@klaava.Helsinki.FI>
|
|
Date: 27 Jul 92 18:53:53 GMT
|
|
References: <1992Jul27.180447.28246@ifi.uio.no>
|
|
Organization: University of Helsinki
|
|
Lines: 38
|
|
|
|
|
|
In article <1992Jul27.180447.28246@ifi.uio.no> janl@ifi.uio.no (Jan Nicolai Langfeldt) writes:
|
|
>
|
|
>I have mucked about with the kernel lately (0.96cpl2). When I set the
|
|
>C_A_D varaible to 0 (to avoid reboot on pressing C-A-D) (and compile,
|
|
>reboot :-). After login in and executing sync I press C-A-D and the
|
|
>system locks, completely... Anyone with similar experiences?
|
|
|
|
Setting 'C_A_D = 0' results in init being sent a SIGINT instead of a
|
|
instant reboot when ctrl-alt-del is pressed. If you have the old init
|
|
that doesn't handle a SIGINT, you get a very dead system: init dies, and
|
|
everything essentially locks.
|
|
|
|
There are two possible solutions to this:
|
|
|
|
(a) get one of the newer init packages that handle SIGINT gracefully,
|
|
and do a clean shutdown.
|
|
|
|
(b) apply this "patch" (or wait for my next release):
|
|
|
|
in linux/kernel/sys.c, ctrl_alt_del():
|
|
|
|
! if (task[1])
|
|
send_sig(SIGINT,task[1],1);
|
|
|
|
should be:
|
|
|
|
! if (task[1] && task[1].sigaction[SIGINT-1].sa_handler)
|
|
send_sig(SIGINT,task[1],1);
|
|
|
|
The patch essentially checks that a signal handler is present before
|
|
sending the SIGINT. That way old init packages won't be surprised.
|
|
|
|
Linus
|
|
|
|
PS. I'll probably make patch3 to 0.96c available sometime later this
|
|
week: the main new feature is a dynamic buffer-cache. The original
|
|
patches were by oreilly, but have been almost totally rewritten by me.
|
|
The IRQ code has also been edited and is hopefully stable now.
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: C_A_D=0
|
|
Message-ID: <1992Jul27.191256.6181@klaava.Helsinki.FI>
|
|
Date: 27 Jul 92 19:12:56 GMT
|
|
References: <1992Jul27.180447.28246@ifi.uio.no> <1992Jul27.185353.5771@klaava.Helsinki.FI>
|
|
Organization: University of Helsinki
|
|
Lines: 21
|
|
|
|
|
|
Never write in a patch by hand: it usually gets messed up...
|
|
|
|
In article <1992Jul27.185353.5771@klaava.Helsinki.FI> I wrote:
|
|
>
|
|
>(b) apply this "patch" (or wait for my next release):
|
|
>
|
|
> in linux/kernel/sys.c, ctrl_alt_del():
|
|
>
|
|
>! if (task[1])
|
|
> send_sig(SIGINT,task[1],1);
|
|
>
|
|
> should be:
|
|
>
|
|
>! if (task[1] && task[1].sigaction[SIGINT-1].sa_handler)
|
|
^^^
|
|
> send_sig(SIGINT,task[1],1);
|
|
|
|
the 'task[1].sigaction' should obviously be a 'task[1]->sigaction', or
|
|
it won't even compile...
|
|
|
|
Linus "shamefaced" Torvalds
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: MicroSoft Bus Mouse v.s. Linux 0.96c(pl2)
|
|
Message-ID: <1992Jul29.092511.18926@klaava.Helsinki.FI>
|
|
Date: 29 Jul 92 09:25:11 GMT
|
|
References: <1992Jul27.191720.2986@uwm.edu> <2835@ariel.its.unimelb.EDU.AU>
|
|
Organization: University of Helsinki
|
|
Lines: 20
|
|
|
|
|
|
In article <2835@ariel.its.unimelb.EDU.AU> rab@ariel.its.unimelb.EDU.AU (Richard Alan Brown) writes:
|
|
>
|
|
>I have a Microsoft InPort mouse, and it certainly doesn't work. However,
|
|
>Nathan Laredo advises me that InPort mice are really just serial mice.
|
|
>My InPort mouse card uses IRQ 5 and according to the docs uses port address
|
|
>0x23C-0x23F, so i tried:
|
|
>
|
|
> % setserial /dev/tty2 0x23C 5
|
|
>
|
|
>and locked up the system quite nicely! I have no idea what to do next...
|
|
>any ideas ??
|
|
|
|
setserial got broken in pl1 or pl2: it locks the machine under some
|
|
circumstances (actually, anything that opens a serial device that has
|
|
the wrong parameters will do it). I'll make 0.97 available this weekend
|
|
(dynamic buffers and the new SCS drivers), and the problem should be
|
|
corrected. I'm still testing out some bug that seems to occur when
|
|
memory is tight, but 0.97 should be pretty stable.
|
|
|
|
Linus
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Problem with ld?
|
|
Summary: 0.97 out soon
|
|
Message-ID: <1992Jul30.001305.5863@klaava.Helsinki.FI>
|
|
Date: 30 Jul 92 00:13:05 GMT
|
|
References: <NEGAARD.92Jul29095314@fungus.aero.org> <NEGAARD.92Jul29141913@fungus.aero.org>
|
|
Organization: University of Helsinki
|
|
Lines: 42
|
|
|
|
|
|
In article <NEGAARD.92Jul29141913@fungus.aero.org> negaard@aero.org (Eric Negaard) writes:
|
|
>
|
|
>At the time I was doing the compiles I was running X, xclock, x11emacs, and
|
|
>a couple of xterm's. Free was reporting somewhat less than 1 Mb physical
|
|
>memory free. So I killed off a bunch of processes and the compiles/links
|
|
>started running fine. At that time, another program that I was having
|
|
>trouble with started working too, so apparantly there is a real problem
|
|
>with virtual memory. This is all happening with a 0.96c pl 2 kernel.
|
|
|
|
There is indeed a problem with VM and disk-intensive tasks - it's a
|
|
race-condition where the page-IO requests can get re-ordered, resulting
|
|
in weird error results. Linking big programs is one of the better ways
|
|
to see this problem. The problem manifests itself as bad user-level
|
|
pages, and often results in a segmentation fault or just incorrect data.
|
|
|
|
The solution is to wait 2 days or so for 0.97 that corrects it (I just
|
|
/love/ finding bugs before any beta-tester does, and being able to come
|
|
up with an instant fix). 0.97 also contains the new SCSI drivers, the
|
|
dynamic buffer code and some other nifty and nice tricks. I don't know
|
|
about serial performance, but limited tests (yes, I have actually tested
|
|
something) have indicated that it's finally starting to get better.
|
|
|
|
( BTW: I won't make patches from 0.96c.pl2 -> 0.97 available unless
|
|
somebody explicitly asks for them: they are going to be big. If you
|
|
think you /need/ patches, mail me, and I'll do them. Maybe a couple of
|
|
days late, but I'll do them )
|
|
|
|
0.97 will likely be out Friday or Saturday, and has these changes:
|
|
- The new SCSI drivers (drew & co)
|
|
- IRQ code should finally be stable
|
|
- faster, smaller, atomic serial interrupts: better performance
|
|
- bynamic buffer-cache (original diffs by oreilly, but I rewrote them)
|
|
- removed races in VM code
|
|
- multiple minor changes in hd.c/floppy.c/efxfs/dosfs
|
|
- hooks for different-size buffers (but it's not actually ready yet)
|
|
|
|
Some things aren't there: I've gotten more patches than I could keep up
|
|
with, so if your patch was only partly used or not used at all, please
|
|
re-send. I haven't got time to go through archives or old mail finding
|
|
things I overlooked :-(
|
|
|
|
Linus
|
|
|
|
================
|
|
================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: New root disk utils compiled with new diraddr()?
|
|
Message-ID: <1992Jul31.202911.26270@klaava.Helsinki.FI>
|
|
Date: 31 Jul 92 20:29:11 GMT
|
|
References: <CORYWEST.92Jul31121404@lost.rice.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 38
|
|
|
|
|
|
In article <CORYWEST.92Jul31121404@lost.rice.edu> corywest@rice.edu (Cory West) writes:
|
|
>
|
|
> Will the utils on the next release of the root disk be
|
|
>compiled with the correct readdr() so that they will be able to
|
|
>deal with the new ext file system?
|
|
|
|
The current (0.96) rootdisk (and mcc-interim) should already be compiled
|
|
with gcc-2.2.2, using the readdir() syscall. Most binaries that have
|
|
been made available in the last month should be good: looking at the
|
|
date-information at the ftp-sites is generally a a good indication
|
|
(although not 100% sure).
|
|
|
|
> I was trying to test out the
|
|
>ext file system, but I don't have the resources to recompile
|
|
>everything. When might we see this? When might the extfs move from
|
|
>beta to production?
|
|
|
|
The problem with the extended fs is now mostly a performance thing: the
|
|
fs might still be changed to use bigger block-sizes for faster
|
|
operation. Remy Card has shown interest, and I don't know if the final
|
|
ext-fs will be compatible with the current one. Having a 4kB blocksize
|
|
should speed up operations considerably, but while the kernel doesn't
|
|
yet completely support different sized buffers I can't promise anything
|
|
(0.97 has much code for it, but still some way to go).
|
|
|
|
The buffer-code changes in 0.97 might eventually also mean the DOS
|
|
interface gets faster: a 512-byte block-size is more natural for some
|
|
DOS operations, so it might be possible that you'll eventually see a
|
|
system that uses 512-byte buffers for msdos floppies, 1024-byte buffers
|
|
for the minix fs and bigger buffers for the extended fs.
|
|
|
|
The block drivers have to be made aware of the dynamic buffer-sizes etc,
|
|
and I'll have to write some code to stop the mixing of differently sized
|
|
buffers on the same device (which leads to madness). Right now (ie in
|
|
version 0.97) only the low-level buffer-code knows about the dynamic
|
|
sizes.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Birthday (was Re: Uptime found. Thanks to all)
|
|
Message-ID: <1992Jul31.221520.27288@klaava.Helsinki.FI>
|
|
Date: 31 Jul 92 22:15:20 GMT
|
|
References: <1992Jul30.211132.20101@cc.umontreal.ca>
|
|
Organization: University of Helsinki
|
|
Lines: 398
|
|
|
|
|
|
In article <1992Jul30.211132.20101@cc.umontreal.ca> duperval@ERE.UMontreal.CA (Duperval Laurent) writes:
|
|
>
|
|
>P.S. BTW, noone answered yet: when is Linux's birthday? Let's have a
|
|
>party!
|
|
|
|
I couldn't for the life of me remember when it all happened, and I don't
|
|
keep a diary, so I can't give you any exact dates for when linux "was
|
|
born". But I did start to wonder, so I started ftp'ing around for
|
|
archives of the comp.os.minix group (where I announced it), and this is
|
|
what I came up with (with some editing).
|
|
|
|
This is just a sentimental journey into some of the first posts
|
|
concerning linux, so you can happily press 'n' now if you actually
|
|
thought you'd get anything technical.
|
|
|
|
> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
> Newsgroups: comp.os.minix
|
|
> Subject: Gcc-1.40 and a posix-question
|
|
> Message-ID: <1991Jul3.100050.9886@klaava.Helsinki.FI>
|
|
> Date: 3 Jul 91 10:00:50 GMT
|
|
>
|
|
> Hello netlanders,
|
|
>
|
|
> Due to a project I'm working on (in minix), I'm interested in the posix
|
|
> standard definition. Could somebody please point me to a (preferably)
|
|
> machine-readable format of the latest posix rules? Ftp-sites would be
|
|
> nice.
|
|
|
|
The project was obviously linux, so by July 3rd I had started to think
|
|
about actual user-level things: some of the device drivers were ready,
|
|
and the harddisk actually worked. Not too much else.
|
|
|
|
> As an aside for all using gcc on minix - [ deleted ]
|
|
|
|
Just a success-report on porting gcc-1.40 to minix using the 1.37
|
|
version made by Alan W Black & co.
|
|
|
|
> Linus Torvalds torvalds@kruuna.helsinki.fi
|
|
>
|
|
> PS. Could someone please try to finger me from overseas, as I've
|
|
> installed a "changing .plan" (made by your's truly), and I'm not certain
|
|
> it works from outside? It should report a new .plan every time.
|
|
|
|
So I was clueless - had just learned about named pipes. Sue me. This
|
|
part of the post got a lot more response than the actual POSIX query,
|
|
but the query did lure out arl from the woodwork, and we mailed around
|
|
for a bit, resulting in the Linux subdirectory on nic.funet.fi.
|
|
|
|
Then, almost two months later, I actually had something working: I made
|
|
sources for version 0.01 available on nic sometimes around this time.
|
|
0.01 sources weren't actually runnable: they were just a token gesture
|
|
to arl who had probably started to despair about ever getting anything.
|
|
This next post must have been from just a couple of weeks before that
|
|
release.
|
|
|
|
> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
> Newsgroups: comp.os.minix
|
|
> Subject: What would you like to see most in minix?
|
|
> Summary: small poll for my new operating system
|
|
> Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
|
|
> Date: 25 Aug 91 20:57:08 GMT
|
|
> Organization: University of Helsinki
|
|
>
|
|
>
|
|
> Hello everybody out there using minix -
|
|
>
|
|
> I'm doing a (free) operating system (just a hobby, won't be big and
|
|
> professional like gnu) for 386(486) AT clones. This has been brewing
|
|
> since april, and is starting to get ready. I'd like any feedback on
|
|
> things people like/dislike in minix, as my OS resembles it somewhat
|
|
> (same physical layout of the file-system (due to practical reasons)
|
|
> among other things).
|
|
>
|
|
> I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
|
|
> This implies that I'll get something practical within a few months, and
|
|
> I'd like to know what features most people would want. Any suggestions
|
|
> are welcome, but I won't promise I'll implement them :-)
|
|
>
|
|
> Linus (torvalds@kruuna.helsinki.fi)
|
|
>
|
|
> PS. Yes - it's free of any minix code, and it has a multi-threaded fs.
|
|
> It is NOT protable (uses 386 task switching etc), and it probably never
|
|
> will support anything other than AT-harddisks, as that's all I have :-(.
|
|
|
|
Judging from the post, 0.01 wasn't actually out yet, but it's close. I'd
|
|
guess the first version went out in the middle of September -91. I got
|
|
some responses to this (most by mail, which I haven't saved), and I even
|
|
got a few mails asking to be beta-testers for linux.
|
|
|
|
After that just a few general answers to quesions on the net:
|
|
|
|
> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
> Newsgroups: comp.os.minix
|
|
> Subject: Re: What would you like to see most in minix?
|
|
> Summary: yes - it's nonportable
|
|
> Message-ID: <1991Aug26.110602.19446@klaava.Helsinki.FI>
|
|
> Date: 26 Aug 91 11:06:02 GMT
|
|
> Organization: University of Helsinki
|
|
>
|
|
> In article <1991Aug25.234450.22562@nntp.hut.fi> jkp@cs.HUT.FI (Jyrki Kuoppala) writes:
|
|
> >> [re: my post about my new OS]
|
|
> >
|
|
> >Tell us more! Does it need a MMU?
|
|
>
|
|
> Yes, it needs a MMU (sorry everybody), and it specifically needs a
|
|
> 386/486 MMU (see later).
|
|
>
|
|
> >
|
|
> >>PS. Yes - it's free of any minix code, and it has a multi-threaded fs.
|
|
> >>It is NOT protable (uses 386 task switching etc)
|
|
> >
|
|
> >How much of it is in C? What difficulties will there be in porting?
|
|
> >Nobody will believe you about non-portability ;-), and I for one would
|
|
> >like to port it to my Amiga (Mach needs a MMU and Minix is not free).
|
|
>
|
|
> Simply, I'd say that porting is impossible. It's mostly in C, but most
|
|
> people wouldn't call what I write C. It uses every conceivable feature
|
|
> of the 386 I could find, as it was also a project to teach me about the
|
|
> 386. As already mentioned, it uses a MMU, for both paging (not to disk
|
|
> yet) and segmentation. It's the segmentation that makes it REALLY 386
|
|
> dependent (every task has a 64Mb segment for code & data - max 64 tasks
|
|
> in 4Gb. Anybody who needs more than 64Mb/task - tough cookies).
|
|
>
|
|
> It also uses every feature of gcc I could find, specifically the __asm__
|
|
> directive, so that I wouldn't need so much assembly language objects.
|
|
> Some of my "C"-files (specifically mm.c) are almost as much assembler as
|
|
> C. It would be "interesting" even to port it to another compiler (though
|
|
> why anybody would want to use anything other than gcc is a mystery).
|
|
|
|
[ editors note: linux has in fact gotten more portable with newer
|
|
versions: there was a lot more assembly in the early versions. Not that
|
|
anybody in their right mind would try to port it even now ]
|
|
|
|
> Unlike minix, I also happen to LIKE interrupts, so interrupts are
|
|
> handled without trying to hide the reason behind them (I especially like
|
|
> my hard-disk-driver. Anybody else make interrupts drive a state-
|
|
> machine?). All in all it's a porters nightmare.
|
|
>
|
|
> >As for the features; well, pseudo ttys, BSD sockets, user-mode
|
|
> >filesystems (so I can say cat /dev/tcp/kruuna.helsinki.fi/finger),
|
|
> >window size in the tty structure, system calls capable of supporting
|
|
> >POSIX.1. Oh, and bsd-style long file names.
|
|
>
|
|
> Most of these seem possible (the tty structure already has stubs for
|
|
> window size), except maybe for the user-mode filesystems. As to POSIX,
|
|
> I'd be delighted to have it, but posix wants money for their papers, so
|
|
> that's not currently an option. In any case these are things that won't
|
|
> be supported for some time yet (first I'll make it a simple minix-
|
|
> lookalike, keyword SIMPLE).
|
|
>
|
|
> Linus (torvalds@kruuna.helsinki.fi)
|
|
>
|
|
> PS. To make things really clear - yes I can run gcc on it, and bash, and
|
|
> most of the gnu [bin/file]utilities, but it's not very debugged, and the
|
|
> library is really minimal. It doesn't even support floppy-disks yet. It
|
|
> won't be ready for distribution for a couple of months. Even then it
|
|
> probably won't be able to do much more than minix, and much less in some
|
|
> respects. It will be free though (probably under gnu-license or similar).
|
|
|
|
Well, obviously something worked on my machine: I doubt I had yet gotten
|
|
gcc to compile itself under linux (or I would have been too proud of it
|
|
not to mention it). Still before any release-date.
|
|
|
|
Then, October 5th, I seem to have released 0.02. As I already
|
|
mentioned, 0.01 didn't actually come with any binaries: it was just
|
|
source code for people interested in what linux looked like. Note the
|
|
lack of announcement for 0.01: I wasn't too proud of it, so I think I
|
|
only sent a note to everybody who had shown interest.
|
|
|
|
> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
> Newsgroups: comp.os.minix
|
|
> Subject: Free minix-like kernel sources for 386-AT
|
|
> Message-ID: <1991Oct5.054106.4647@klaava.Helsinki.FI>
|
|
> Date: 5 Oct 91 05:41:06 GMT
|
|
> Organization: University of Helsinki
|
|
>
|
|
> Do you pine for the nice days of minix-1.1, when men were men and wrote
|
|
> their own device drivers? Are you without a nice project and just dying
|
|
> to cut your teeth on a OS you can try to modify for your needs? Are you
|
|
> finding it frustrating when everything works on minix? No more all-
|
|
> nighters to get a nifty program working? Then this post might be just
|
|
> for you :-)
|
|
>
|
|
> As I mentioned a month(?) ago, I'm working on a free version of a
|
|
> minix-lookalike for AT-386 computers. It has finally reached the stage
|
|
> where it's even usable (though may not be depending on what you want),
|
|
> and I am willing to put out the sources for wider distribution. It is
|
|
> just version 0.02 (+1 (very small) patch already), but I've successfully
|
|
> run bash/gcc/gnu-make/gnu-sed/compress etc under it.
|
|
>
|
|
> Sources for this pet project of mine can be found at nic.funet.fi
|
|
> (128.214.6.100) in the directory /pub/OS/Linux. The directory also
|
|
> contains some README-file and a couple of binaries to work under linux
|
|
> (bash, update and gcc, what more can you ask for :-). Full kernel
|
|
> source is provided, as no minix code has been used. Library sources are
|
|
> only partially free, so that cannot be distributed currently. The
|
|
> system is able to compile "as-is" and has been known to work. Heh.
|
|
> Sources to the binaries (bash and gcc) can be found at the same place in
|
|
> /pub/gnu.
|
|
>
|
|
> ALERT! WARNING! NOTE! These sources still need minix-386 to be compiled
|
|
> (and gcc-1.40, possibly 1.37.1, haven't tested), and you need minix to
|
|
> set it up if you want to run it, so it is not yet a standalone system
|
|
> for those of you without minix. I'm working on it. You also need to be
|
|
> something of a hacker to set it up (?), so for those hoping for an
|
|
> alternative to minix-386, please ignore me. It is currently meant for
|
|
> hackers interested in operating systems and 386's with access to minix.
|
|
>
|
|
> The system needs an AT-compatible harddisk (IDE is fine) and EGA/VGA. If
|
|
> you are still interested, please ftp the README/RELNOTES, and/or mail me
|
|
> for additional info.
|
|
>
|
|
> I can (well, almost) hear you asking yourselves "why?". Hurd will be
|
|
> out in a year (or two, or next month, who knows), and I've already got
|
|
> minix. This is a program for hackers by a hacker. I've enjouyed doing
|
|
> it, and somebody might enjoy looking at it and even modifying it for
|
|
> their own needs. It is still small enough to understand, use and
|
|
> modify, and I'm looking forward to any comments you might have.
|
|
>
|
|
> I'm also interested in hearing from anybody who has written any of the
|
|
> utilities/library functions for minix. If your efforts are freely
|
|
> distributable (under copyright or even public domain), I'd like to hear
|
|
> from you, so I can add them to the system. I'm using Earl Chews estdio
|
|
> right now (thanks for a nice and working system Earl), and similar works
|
|
> will be very wellcome. Your (C)'s will of course be left intact. Drop me
|
|
> a line if you are willing to let me use your code.
|
|
>
|
|
> Linus
|
|
>
|
|
> PS. to PHIL NELSON! I'm unable to get through to you, and keep getting
|
|
> "forward error - strawberry unknown domain" or something.
|
|
|
|
Well, it doesn't sound like much of a system, does it? It did work, and
|
|
some people even tried it out. There were several bad bugs (and there
|
|
was no floppy-driver, no VM, no nothing), and 0.02 wasn't really very
|
|
useable.
|
|
|
|
0.03 got released shortly thereafter (max 2-3 weeks was the time between
|
|
releases even back then), and 0.03 was pretty useable. The next version
|
|
was numbered 0.10, as things actually started to work pretty well. The
|
|
next post gives some idea of what had happened in two months more...
|
|
|
|
> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
> Newsgroups: comp.os.minix
|
|
> Subject: Re: Status of LINUX?
|
|
> Summary: Still in beta
|
|
> Message-ID: <1991Dec19.233545.8114@klaava.Helsinki.FI>
|
|
> Date: 19 Dec 91 23:35:45 GMT
|
|
> Organization: University of Helsinki
|
|
>
|
|
> In article <469@htsa.htsa.aha.nl> miquels@maestro.htsa.aha.nl (Miquel van Smoorenburg) writes:
|
|
> >Hello *,
|
|
> > I know some people are working on a FREE O/S for the 386/486,
|
|
> >under the name Linux. I checked nic.funet.fi now and then, to see what was
|
|
> >happening. However, for the time being I am without FTP access so I don't
|
|
> >know what is going on at the moment. Could someone please inform me about it?
|
|
> >It's maybe best to follow up to this article, as I think that there are
|
|
> >a lot of potential interested people reading this group. Note, that I don't
|
|
> >really *have* a >= 386, but I'm sure in time I will.
|
|
>
|
|
> Linux is still in beta (although available for brave souls by ftp), and
|
|
> has reached the version 0.11. It's still not as comprehensive as
|
|
> 386-minix, but better in some respects. The "Linux info-sheet" should
|
|
> be posted here some day by the person that keeps that up to date. In
|
|
> the meantime, I'll give some small pointers.
|
|
>
|
|
> First the bad news:
|
|
>
|
|
> - Still no SCSI: people are working on that, but no date yet.
|
|
> Thus you need a AT-interface disk (I have one report that it
|
|
> works on an EISA 486 with a SCSI disk that emulates the
|
|
> AT-interface, but that's more of a fluke than anything else:
|
|
> ISA+AT-disk is currently the hardware setup)
|
|
|
|
As you can see, 0.11 had already a small following. It wasn't much, but
|
|
it did work.
|
|
|
|
> - still no init/login: you get into bash as root upon bootup.
|
|
|
|
That was still standard in the next release.
|
|
|
|
> - although I have a somewhat working VM (paging to disk), it's not
|
|
> ready yet. Thus linux needs at least 4M to be able to run the
|
|
> GNU binaries (especially gcc). It boots up in 2M, but you
|
|
> cannot compile.
|
|
|
|
I actually released a 0.11+VM version just before Christmas -91: I
|
|
didn't need it myself, but people were trying to compile the kernel in
|
|
2MB and failing, so I had to implement it. The 0.11+VM version was
|
|
available only to a small number of people that wanted to test it out:
|
|
I'm still surprised it worked as well as it did.
|
|
|
|
> - minix still has a lot more users: better support.
|
|
>
|
|
> - it hasn't got years of testing by thousands of people, so there
|
|
> are probably quite a few bugs yet.
|
|
>
|
|
> Then for the good things..
|
|
>
|
|
> - It's free (copyright by me, but freely distributable under a
|
|
> very lenient copyright)
|
|
|
|
The early copyright was in fact much more restrictive than the GNU
|
|
copyleft: I didn't allow any money at all to change hands due to linux.
|
|
That changed with 0.12.
|
|
|
|
> - it's fun to hack on.
|
|
>
|
|
> - /real/ multithreading filesystem.
|
|
>
|
|
> - uses the 386-features. Thus locked into the 386/486 family, but
|
|
> it makes things clearer when you don't have to cater to other
|
|
> chips.
|
|
>
|
|
> - a lot more... read my .plan.
|
|
>
|
|
> /I/ think it's better than minix, but I'm a bit prejudiced. It will
|
|
> never be the kind of professional OS that Hurd will be (in the next
|
|
> century or so :), but it's a nice learning tool (even more so than
|
|
> minix, IMHO), and it was/is fun working on it.
|
|
>
|
|
> Linus (torvalds@kruuna.helsinki.fi)
|
|
>
|
|
> ---- my .plan --------------------------
|
|
> Free UNIX for the 386 - coming 4QR 91 or 1QR 92.
|
|
>
|
|
> The current version of linux is 0.11 - it has most things a unix kernel
|
|
> needs, and will probably be released as 1.0 as soon as it gets a little
|
|
> more testing, and we can get a init/login going. Currently you get
|
|
> dumped into a shell as root upon bootup.
|
|
>
|
|
> Linux can be gotten by anonymous ftp from 'nic.funet.fi' (128.214.6.100)
|
|
> in the directory '/pub/OS/Linux'. The same directory also contains some
|
|
> binary files to run under Linux. Currently gcc, bash, update, uemacs,
|
|
> tar, make and fileutils. Several people have gotten a running system,
|
|
> but it's still a hackers kernel.
|
|
>
|
|
> Linux still requires a AT-compatible disk to be useful: people are
|
|
> working on a SCSI-driver, but I don't know when it will be ready.
|
|
>
|
|
> There are now a couple of other sites containing linux, as people have
|
|
> had difficulties with connecting to nic. The sites are:
|
|
> Tupac-Amaru.Informatik.RWTH-Aachen.DE (137.226.112.31):
|
|
> directory /pub/msdos/replace
|
|
> tsx-11.mit.edu (18.172.1.2):
|
|
> directory /pub/linux
|
|
>
|
|
> There is also a mailing list set up 'Linux-activists@niksula.hut.fi'.
|
|
> To join, mail a request to 'Linux-activists-request@niksula.hut.fi'.
|
|
> It's no use mailing me: I have no actual contact with the mailing-list
|
|
> (other than being on it, naturally).
|
|
>
|
|
> Mail me for more info:
|
|
>
|
|
> Linus (torvalds@kruuna.Helsinki.FI)
|
|
>
|
|
> 0.11 has these new things:
|
|
>
|
|
> - demand loading
|
|
> - code/data sharing between unrelated processes
|
|
> - much better floppy drivers (they actually work mostly)
|
|
> - bug-corrections
|
|
> - support for Hercules/MDA/CGA/EGA/VGA
|
|
> - the console also beeps (WoW! Wonder-kernel :-)
|
|
> - mkfs/fsck/fdisk
|
|
> - US/German/French/Finnish keyboards
|
|
> - settable line-speeds for com1/2
|
|
|
|
As you can see: 0.11 was actually stand-alone: I wrote the first
|
|
mkfs/fsck/fdisk programs for it, so that you didn't need minix any more
|
|
to set it up. Also, serial lines had been hard-coded to 2400bps, as that
|
|
was all I had.
|
|
|
|
> Still lacking:
|
|
> - init/login
|
|
> - rename system call
|
|
> - named pipes
|
|
> - symbolic links
|
|
|
|
Well, they are all there now: init/login didn't quite make it to 0.12,
|
|
and rename() was implemented as a patch somewhere between 0.12 and 0.95.
|
|
Symlinks were in 0.95, but named pipes didn't make it until 0.96.
|
|
|
|
> 0.12 will probably be out in January (15th or so), and will have:
|
|
> - POSIX job control (by tytso)
|
|
> - VM (paging to disk)
|
|
> - Minor corrections
|
|
|
|
Actually, 0.12 was out January 5th, and contained major corrections. It
|
|
was in fact a very stable kernel: it worked on a lot of new hardware,
|
|
and there was no need for patches for a long time. 0.12 was also the
|
|
kernel that "made it": that's when linux started to spread a lot faster.
|
|
Earlier kernel releases were very much only for hackers: 0.12 actually
|
|
worked quite well.
|
|
|
|
That's all I found for 1991 - maybe it answered some questions.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Linux v. 0.97 is out
|
|
Summary: new version release
|
|
Keywords: 0.97 kernel
|
|
Message-ID: <1992Aug1.150838.11254@klaava.Helsinki.FI>
|
|
Date: 1 Aug 92 15:08:38 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 99
|
|
|
|
|
|
[ I already sent this to the mailing-list, and it's the same
|
|
release-note, so if you already saw it, you can skip this ]
|
|
|
|
Linux version 0.97 is available as both a complete source-tree
|
|
(linux-0.97.tar.Z) and a bootimage (bootimage-0.97.Z) on the normal
|
|
ftp-sites. It's in incoming on tsx-11.mit.edu, so it will take a day or
|
|
two to actually show up, but it's available right now on
|
|
|
|
nic.funet.fi:
|
|
pub/OS/Linux/testing/Linus/
|
|
banjo.concert.net:
|
|
pub/Linux/Linus/
|
|
|
|
The nic.funet.fi-directory is under 'testing' not so much because this
|
|
would be a testing-release, but because the directory-setup is in
|
|
testing :-). I think 'testing' is unreadable, so you have to cd to the
|
|
directory blindly.
|
|
|
|
There is also a kernel-compilation README (written by Lars Wirzenius),
|
|
as well as a COPYING (which is just a pointer to the GNU copyleft). The
|
|
latter not because anything has changed, but because I got a few mails
|
|
pointing out that the copyright of linux wasn't too clear. That also
|
|
resulted in changing the '(C)'s in the source to 'Copyright'.
|
|
|
|
Changes in 0.97:
|
|
|
|
- The VESA-support was removed. I'd be happy to put it back once it
|
|
works on all hardware. Instead of the VESA-code, I finally put in
|
|
the automatic SVGA setup patches. See the top-level Makefile.
|
|
|
|
- The IRQ code has solidified, and should work on all machines. Not
|
|
all of the SCSI drivers use it yet, so I expect patches for that..
|
|
|
|
- Serial interrupts are handled slightly differently, and performance
|
|
should be up. I've sent out a few alpha-releases, and testing seems
|
|
to indicate that's actually true this time. Reactions have ranged
|
|
from "nice" to "wonderful" :-)
|
|
|
|
- The buffer-cache and memory management code has been edited quite a
|
|
bit. ps/free etc programs that reads kernel memory directly no
|
|
longer work, and even a recompilation won't be enough. They actually
|
|
need editing before they work.
|
|
|
|
The buffer-cache now grows and shrinks dynamically depending on how
|
|
much free memory there is. Shift+PrintScreen will give some memory
|
|
statistics. (Ctrl+PrSc gives task-info, ALT+PrSc gives current
|
|
register values).
|
|
|
|
The mm code changes removed some race-conditions in the VM code, and
|
|
I also tried to make the Out-of-swapspace error less severe (better
|
|
thrashing-detection etc).
|
|
|
|
- The super-block code has been cleaned up. Especially the extended fs
|
|
needs to be edited a bit to take advantage of the new setup, and I
|
|
expect Remy Card will have a patch out eventually.
|
|
|
|
- include-files have been moved around some more: there are still some
|
|
names that clash with the standard headers, but not many.
|
|
|
|
- Unswappable processes implemented: by default only 'init' is
|
|
unswappable. This is a bit safer in low-memory conditions, as at
|
|
least init won't die due to low memory. I also made killing init
|
|
impossible: if init doesn't recognize a signal, it simply won't get
|
|
it. Some other changes ("while (1) fork();" won't kill the machine
|
|
for non-root users etc)
|
|
|
|
- The new SCSI drivers are in. These make the kernel noticeably
|
|
bigger, but you can leave them out if you don't want them.
|
|
|
|
- The floppy- and hd-drivers print out more debugging-info in case of
|
|
errors: this might be irritating if you have hardware that works, but
|
|
often gives soft-errors. On the other hand, some old debugging-info
|
|
was removed - notably for user-level protection errors etc.
|
|
|
|
- Various minor fixes. I haven't made cdiffs (and I haven't gotten any
|
|
requests for them, so I probably never will), but they would be
|
|
pretty big.
|
|
|
|
Things that I didn't have time for:
|
|
|
|
- I wanted to rewrite the tty drivers to be more "streams-like" (ie not
|
|
an actual streams-implementation, but some of the ideas from
|
|
streams). I never got around to it: there was simply too much else
|
|
to do.
|
|
|
|
- I got a lot of patches, and some went in, others didn't. If you
|
|
think your patch was important, please re-send it relative to the new
|
|
version.
|
|
|
|
I'd like comments on the new system: performance / clarity of code etc.
|
|
0.97 should correct all known bugs (at least the ones I know about), but
|
|
I guess that's just wishful thinking.
|
|
|
|
Note that the dynamic buffer-code also handles differently-sized
|
|
buffers, but that the rest of the system (block device drivers,
|
|
filesystem code etc) cannot yet take advantage of this - there is still
|
|
some coding needed.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Compiling linux 0.97
|
|
Message-ID: <1992Aug2.195402.29445@klaava.Helsinki.FI>
|
|
Date: 2 Aug 92 19:54:02 GMT
|
|
References: <YeT31Ie00WB30491Qd@andrew.cmu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 25
|
|
|
|
|
|
In article <YeT31Ie00WB30491Qd@andrew.cmu.edu> tj2n+@andrew.cmu.edu (Tao Jiang) writes:
|
|
>
|
|
>When I tried compiling linux 0.97, every thing worked fine, except that
|
|
>the operation speed is too slow compare to the previous version of
|
|
>linux.
|
|
|
|
I wrote a kernel profiling utility for this, and sent the patches
|
|
(small) and a user-level program to print out results (even smaller) to
|
|
the kernel mailing-list. If anybody sees this slow-down problem, and
|
|
tries out the profiling code, I'd be interested to have some sample
|
|
output.
|
|
|
|
If you aren't on the kernel list, I can make the patches available on
|
|
the net.
|
|
|
|
>This morning, I tried to compile it with DRAMDISK=512 defined in the Makefile,
|
|
>then error came out as:
|
|
|
|
My mistake: I never tried the ramdisk code in 0.97. The fix is
|
|
extremely simple (and is included in the above-mentioned profiling
|
|
diffs, I think): move the #include <linux/string.h> to be the last of
|
|
the include-statements. The reason is that <linux/string.h> wants some
|
|
standard types defined, and they get defined in the other include-files.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: gid strangeness
|
|
Message-ID: <1992Aug2.221640.971@klaava.Helsinki.FI>
|
|
Date: 2 Aug 92 22:16:40 GMT
|
|
References: <1992Aug2.201320.9109@ifi.uio.no>
|
|
Organization: University of Helsinki
|
|
Lines: 33
|
|
|
|
|
|
In article <1992Aug2.201320.9109@ifi.uio.no> janl@ifi.uio.no (Jan Nicolai Langfeldt) writes:
|
|
>
|
|
>Hm, this is strange (and seems to happen only on my machine??), anyone
|
|
>seen anything similar?
|
|
>
|
|
>This happens with 0.96bpl2 and 0.96cpl2 (haven't tried 0.97 yet).
|
|
|
|
It's standard, and it happens on 0.97 too. Explanation to follow...
|
|
|
|
>I make a new group, 'test', give it number - say - 1000, ok, make a
|
|
>file, and chgrp it to test. 'ls -l' (or 'v') correctly shows 'test' in
|
|
>the group field. But not for long, suddenly (after 30 sec?) it changes
|
|
>to something else, gid = oldgid%512; it seems. Which is _very_
|
|
>strange. The most remarkable thing about my machine is that it has a
|
|
>aha1542 scsi disk controller.
|
|
|
|
It's not the controller, it's the minix filesystem. Minix uses only an
|
|
8-bit value for the gid value of a file - so although linux internally
|
|
(and the extended-fs) can handle real gids, the minix fs cannot. There
|
|
was nothing I could do about it - there simply isn't any room in the
|
|
minix inode on the disk. So when the inode is eventually read back,
|
|
only the low 8 bits are correct. The solution is either to use the
|
|
extended filesystem (which is still alpha, might change and might have
|
|
bugs) or only use gid's in the 0-255 range.
|
|
|
|
Another similar problem you can see with the minix filesystem is that
|
|
only the modify-time of a file can be stored on the disk (for the same
|
|
reason as the gid problem). So again, after the inode is read in from
|
|
disk, the other times are reset (to the same time as the modification
|
|
time). This problem is harder to see, and as programs seldom use the
|
|
other times it's not likely to be a problem.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Am I incorrect in assuming that my root partition can be an ext fs?
|
|
Message-ID: <1992Aug2.222619.1068@klaava.Helsinki.FI>
|
|
Date: 2 Aug 92 22:26:19 GMT
|
|
References: <CORYWEST.92Aug2144042@rio-grande.rice.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 29
|
|
|
|
|
|
In article <CORYWEST.92Aug2144042@rio-grande.rice.edu> corywest@rice.edu (Cory West) writes:
|
|
> It seems that
|
|
>using bootlin and the 96c-pl2 kernel, I can't mount an extended
|
|
>partition as a root partition. I have the partition marked ok in
|
|
>my fstab and I can mount it if I boot from floppy, but I can't
|
|
>mount it as the root partition.
|
|
> Is this known and expected bahavior or should I fiddle
|
|
>with it some more? I am booting with bootlin.com from DOS using
|
|
>boot.sys as a multiplexer.
|
|
|
|
0.96c doesn't mount any other type of filesystem than the original minix
|
|
one as root - you have to get 0.97. 0.97 should be able to mount any
|
|
type of filesystem (you could even have a msdos fs as your
|
|
root-partition if you are evil and perverse - but don't tell anyone or
|
|
they'll whisper about you behind your back).
|
|
|
|
Note that I (surprise, surprise) haven't tested the new root-mounting
|
|
features. I don't see why it shouldn't work, but assuming it doesn't,
|
|
please mail me about it.
|
|
|
|
0.97 also finally cleans up the 'struct super_block' information - it's
|
|
no longer at all minix-specific. I got tired of hearing about it, and
|
|
when liljeber noticed problems with the msdos-fs in a pre-release I
|
|
decided to clean it up once and for all. So now the minix filesystem is
|
|
in no way special: but it happens to be well tested, and should have no
|
|
bugs (famous last words), so it's the way to go if you aren't too
|
|
adventurous.
|
|
|
|
Linus
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Linux 0.97 kernel compile problems
|
|
Keywords: 0.97 kernel
|
|
Message-ID: <1992Aug3.162747.25511@klaava.Helsinki.FI>
|
|
Date: 3 Aug 92 16:27:47 GMT
|
|
References: <1992Aug1.150838.11254@klaava.Helsinki.FI> <1992Aug3.062434.1600@uhura1.uucp>
|
|
Organization: University of Helsinki
|
|
Lines: 66
|
|
|
|
|
|
In article <1992Aug3.062434.1600@uhura1.uucp> bryan%uhura1@uunet.uu.net writes:
|
|
>>
|
|
>>There is also a kernel-compilation README (written by Lars Wirzenius),
|
|
>>as well as a COPYING (which is just a pointer to the GNU copyleft).
|
|
>
|
|
>Where are these files? They don't seem to be included in my copy
|
|
>of linux-0.97.tar.Z. If there's a kernel-compilation README, I need
|
|
>to read it, since I'm having kernel-compilation problems.
|
|
|
|
Lasu already sent out a copy of the README he wrote - and the COPYING
|
|
file was indeed only a pointer to the GNU copyleft, so you should get
|
|
that if you are interested in the copyright conditions.
|
|
|
|
[ My comment in the README that the symlink from /usr/include/linux to
|
|
/usr/src/linux/include/linux possibly wasn't needed was incorrect - you
|
|
do need the symlink ]
|
|
|
|
>>Changes in 0.97:
|
|
>>
|
|
>> - include-files have been moved around some more: there are still some
|
|
>> names that clash with the standard headers, but not many.
|
|
>
|
|
>There are only three files left under include/sys: kd.h, mman.h, and
|
|
>vt.h. Everything else that used to be under include/sys is now under
|
|
>include/linux. This means that all of the source you pull off of the
|
|
>net that includes files like <sys/types.h> and <sys/dirent.h> will
|
|
>require additional tweaking before compiling under Linux. What was
|
|
>wrong with leaving things under include/sys?
|
|
|
|
The problem with include/sys was that the kernel-specific things clashed
|
|
with the library things and vice versa. What 0.97 does is to move all
|
|
(or at least 99%) the kernel definitions into include/linux - while this
|
|
may result in problems for a while, the ides is that eventually (1.0 or
|
|
so), the user-level include-files use the kernel include-files for
|
|
kernel-specific things, and just add the library stuff.
|
|
|
|
So when there before was a <termios.h> in both /usr/include and
|
|
/usr/src/linux/include, I moved the kernel-specific things into
|
|
<linux/termios.h> - this contains the #defines and the data structures
|
|
the kernel uses (and thus the library functions need in some cases).
|
|
This allows me to add new #defines as new features are added, and if the
|
|
/usr/include/termios.h does a #include <linux/termios.h>, they are
|
|
automatically updated. In the above you can put files like errno.h,
|
|
signal.h etc instead of termios.h.
|
|
|
|
Note that the above isn't true yet: the kernel headers probably still
|
|
contain some things the user-level headers don't want and the user-level
|
|
headers don't include them yet, but I hope it will be true in a release
|
|
or two.
|
|
|
|
>(Side note: Not all of the Makefiles use "-I/usr/src/linux/include",
|
|
>if I recall correctly it was the SCSI code that tried to compile using
|
|
>my 0.96c header files under /usr/include.)
|
|
>
|
|
>Also, struct stat is now undefined. Not unnaturally, this means the
|
|
>kernel (with everything installed) won't compile. The file
|
|
>include/linux/stat.h defines struct old_stat and struct new_stat,
|
|
>but doesn't define either of them to be struct stat.
|
|
|
|
The kernel will compile without changes, so if you have problems, it's
|
|
due to the setup: make sure you have the /usr/include/linux symlink, and
|
|
a reasonably new 'make' that correctly inherits the CFLAGS etc. I'll
|
|
make the readme a bit more prominent next time (inside the actual
|
|
tar-file), so maybe kompiling will be easy by 0.98. Or maybe not.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Help! Install linux
|
|
Message-ID: <1992Aug3.173204.26700@klaava.Helsinki.FI>
|
|
Date: 3 Aug 92 17:32:04 GMT
|
|
References: <1992Aug3.164607.11322@njitgw.njit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 36
|
|
|
|
|
|
In article <1992Aug3.164607.11322@njitgw.njit.edu> shang@irss.uucp (shang wen-chung) writes:
|
|
>
|
|
>I've tried to install linux without success.
|
|
>The boot image(bootimage-0.97) goes fine and detect the system
|
|
>configuration correctly(SCSI HD, 2 FD, 2 serial line etc).
|
|
>But after I insert Root(rootimage-0.96) diskett, I got the following
|
|
>and system halt.
|
|
|
|
It seems the root diskette is not a valid minix filesystem - make sure
|
|
you used rawrite correctly on the diskette. It should be written to
|
|
disk the same way the boot-disk was made.
|
|
|
|
First linux tries to mount the disk using the minix filesystem - but
|
|
that fails, due to a bad magic number. The result is:
|
|
|
|
>magic match failed
|
|
|
|
So linux continues, and tries to mount the floppy using the extended fs.
|
|
Sadly, that try also fails for the same reason:
|
|
|
|
>magic match failed
|
|
|
|
Finally linux tries to mount the floppy as a msdos fs, and succeeds:
|
|
|
|
>MS-DOS FS Rel. alpha.6 FAT 12, conv=6, check=n
|
|
>No bmap suport
|
|
|
|
But as there is no bmap support for 512-byte sectors, you cannot execute
|
|
binaries from this filesystem. Even if there were any linux binaries on
|
|
it, which I doubt.
|
|
|
|
So either the floppy you give linux is a msdos floppy, or then the linux
|
|
msdos-recognition routines as bad, and the floppy doesn't contain
|
|
anything linux can use. Try to re-rawrite the root filesystem.
|
|
|
|
Linus
|
|
|
|
=============================
|
|
=============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 0.97 slowdown (Re: .97 (new buffer allocation code))
|
|
Keywords: new kernel
|
|
Message-ID: <1992Aug4.102113.14238@klaava.Helsinki.FI>
|
|
Date: 4 Aug 92 10:21:13 GMT
|
|
References: <1992Aug3.035648.7296@cs.tulane.edu> <5292@vtserf.cc.vt.edu> <1992Aug4.015452.26877@uniwa.uwa.edu.au>
|
|
Organization: University of Helsinki
|
|
Lines: 57
|
|
|
|
|
|
In article <1992Aug4.015452.26877@uniwa.uwa.edu.au> toivo@ucs.uwa.OZ.AU (Toivo Pedaste) writes:
|
|
>
|
|
>Well I did a test by compiling the 0.97 kernal (after a make clean) under both
|
|
>0.96 and 0.97. I have a 386-40 with 8meg memory and ran the test in an xterm
|
|
>on an otherwise idle machine (xclock was the only other X application running).
|
|
>
|
|
>0.96 kernal
|
|
> 730s real 448s user 127s system
|
|
>
|
|
>0.97 kernal
|
|
> 1521s real 449s user 166s system
|
|
>
|
|
>It took twice as long, I assume this was increased disk traffic (hence the
|
|
>higher system time). Is there a problem with dirty disk blocks filing
|
|
>up memory?
|
|
|
|
The problem with the 0.97 dynamic buffer cache is that when memory gets
|
|
tight, the buffer-cache is the first to go. Only after the buffer-cache
|
|
has been minimized does 0.97 start to swap. Thus under conditions where
|
|
there isn't too much free memory (running X and compiling), the buffer
|
|
cache is actually smaller than before - on a 8MB machine the buffers in
|
|
0.96 were about 1.3MB, but in 0.97 they shrink to about 300kB when
|
|
memory gets tight. And that means gcc effectively flushes the cache
|
|
every time it's run - thus the slowdown.
|
|
|
|
I've worked a bit on this (0.97 was the first version with dynamic
|
|
buffers, after all, so I didn't expect it all to be perfectly tuned),
|
|
and I've made the following changes to my new version:
|
|
|
|
- swapping and buffer-cache shrinking are interleaved: under extreme
|
|
circumstances linux still shrinks the buffers down to 300kB, but it
|
|
tries to swap out a bit before that.
|
|
|
|
- NRU (Not Recently Used) swapping algorithm with the idle-task helping
|
|
the swapping algorithm find good pages. It's not a full LRU, but it
|
|
does help to select the pages to be swapped.
|
|
|
|
With the original 0.97 I got a time of 32 minutes for a kernel build
|
|
under X11 (386-33, 8MB + 8MB swap, two xterms, syslog in a third xterm,
|
|
xclock and xeyes). After the latest kernel changes the time is down to
|
|
19 minutes: clearly the above helps a lot. The original 0.97 had buffer
|
|
usage around 300-800kB depending on how much memory the kernel make used
|
|
up, and the new kernel had about 900-1600kB buffers (and swapped out
|
|
un-needed pages more efficiently).
|
|
|
|
Note that in the above test I had actually less memory when testing the
|
|
new versions: the profiling-code in the new version eats up 300kB when
|
|
active. But also note that the above speedup (32 min -> 19 min) might
|
|
not be accurate on all machines - the changes migh not be as useful on
|
|
machines with a different setup or with programs that have different
|
|
memory/buffer behaviour.
|
|
|
|
I'll make patches to 0.97 available this evening or tomorrow - the
|
|
patches should also fix the 486 lockups that some people have
|
|
experienced.
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Problems with 0.97 kernel
|
|
Message-ID: <1992Aug4.165748.17556@klaava.Helsinki.FI>
|
|
Date: 4 Aug 92 16:57:48 GMT
|
|
References: <1992Aug4.153021.24129@dfv.rwth-aachen.de>
|
|
Organization: University of Helsinki
|
|
Lines: 19
|
|
|
|
|
|
In article <1992Aug4.153021.24129@dfv.rwth-aachen.de> mj@dfv.rwth-aachen.de (Martin Junius) writes:
|
|
>I just compiled the new 0.97 kernel and ran into the following
|
|
>problems:
|
|
>
|
|
>- Right after the floppy disk detect message it says:
|
|
> "floppy: unexpected interrupt"
|
|
>
|
|
>- When listing a tar archive on a floppy disk it says:
|
|
> "floppy: Over/Underrun - retrying". Retrying seems to work,
|
|
> the contents is listed correctly. Nevertheless these messages
|
|
> are annoying.
|
|
|
|
The problems aren't new - there is just some added debugging code in the
|
|
floppy driver (and in the harddisk driver as well - if it gets errors,
|
|
you are likely to see some debug-info printed out). The simple fix is
|
|
just to comment out all the printk's in the drivers - they aren't
|
|
needed, although they can be practical at times.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Signals are screwing up my tty reads.
|
|
Message-ID: <1992Aug4.192759.28334@klaava.Helsinki.FI>
|
|
Date: 4 Aug 92 19:27:59 GMT
|
|
References: <BsGKE1.Cp@Nyongwa.CAM.ORG>
|
|
Organization: University of Helsinki
|
|
Lines: 34
|
|
|
|
|
|
In article <BsGKE1.Cp@Nyongwa.CAM.ORG> steve@Nyongwa.CAM.ORG (Steve M. Robbins) writes:
|
|
>
|
|
>I have a program which reads in lines from a terminal using fgets().
|
|
>Normally this means I can use the backspace key for editing, and my program
|
|
>doesn't see this; it simply gets the edited line.
|
|
>
|
|
>Then, I wanted some daemons executed periodically, regardless of what the
|
|
>user is doing, so I used alarm(). All my SIGALRM handler does is call
|
|
>signal() and alarm() again. Suddenly line-editing no longer works.
|
|
>
|
|
>That is, it works between alarms, but as soon as the signal hits, I can no
|
|
>longer backspace over what is already in the buffer.
|
|
|
|
Sorry - it's a kernel bug that probably creapt in in 0.96c or so. Here
|
|
is a easy fix that should clear it up (I hope - untested as usual):
|
|
|
|
in linux/kernel/chr_drv/tty_io.c: function read_chan()
|
|
|
|
else if (L_CANON(tty))
|
|
wait_for_canon_input(tty);
|
|
|
|
should read:
|
|
|
|
else if (L_CANON(tty)) {
|
|
wait_for_canon_input(tty);
|
|
if (current->signal & ~current->blocked)
|
|
return -ERESTARTSYS;
|
|
}
|
|
|
|
The same bug exists in 0.97 (but no longer in my version).
|
|
|
|
I'd like to hear if the above clears up the problem.
|
|
|
|
Linus
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: .97 (new buffer allocation code)
|
|
Message-ID: <1992Aug5.120359.16381@klaava.Helsinki.FI>
|
|
Date: 5 Aug 92 12:03:59 GMT
|
|
References: <1992Aug4.145621.26421@crd.ge.com> <1992Aug5.023248.1639@uniwa.uwa.edu.au> <1992Aug5.102706.15668@colorado.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 57
|
|
|
|
|
|
In article <1992Aug5.102706.15668@colorado.edu> drew@ophelia.cs.colorado.edu (Drew Eckhardt) writes:
|
|
>In article <1992Aug5.023248.1639@uniwa.uwa.edu.au> oreillym@tartarus.uwa.edu.au (Michael O'Reilly) writes:
|
|
>>
|
|
>>The 386 chip has a feature that lets you acomplish the same idea without
|
|
>>any fancy schemes like that. The basic idea is that when a page is
|
|
>>accessed for the first time, a bit is set in the page tables. WHen it is
|
|
>>written, a different bit is set.
|
|
|
|
The accessed bit will be used in the soon-to-be-made (I didn't get them
|
|
together yesterday, but I'll try again today) first patch to 0.97. It's
|
|
very practical, and didn't need any additional state information. While
|
|
the current routine isn't a real LRU (Least Recently Used) which needs
|
|
some actual calculations, it's NRU (Not Recently Used) which is a simple
|
|
approximation that can do with just the one bit that is already provided
|
|
by the hardware.
|
|
|
|
A closer approximation to LRU would be some aging mechanism (the 386
|
|
page tables even have room for a 3-bit wide aging or somthing like that
|
|
in the unused bits), and it might be worth implementing eventually.
|
|
|
|
>>So the way to do this is to clear all the bits, and then cycle through
|
|
>>doing.
|
|
>> is bit set?
|
|
>> yes -> clear it and go to next
|
|
>> no -> it can be swapped, swap it and move on.
|
|
|
|
This is similar to what the 0.97+patch1 algorithm does - it's simple,
|
|
and while it's not perfect it works relatively well. Or at least that's
|
|
the early indications from my tests. I won't be able to do exhaustive
|
|
tuning of the algorithms, so the patch1 algorithm might not be perfect.
|
|
We'll see.
|
|
|
|
>Yes and no. When determining what pages you want out, you want to
|
|
>deal with the hits for each incore page. There isn't a 1:1
|
|
>correspondance between a page in the page table, and a physical
|
|
>page. Instead, two or more processes may have the same page mapped,
|
|
>making the effect cumulative.
|
|
|
|
It's a bit more work to actually go through the pages and take this into
|
|
account, so I currently don't. But you are right: this is how it should
|
|
(and will) be done.
|
|
|
|
>Some one should see what times are for
|
|
>looking at every page in every dirty 4M range in every address
|
|
>space compared to what it takes to look at every page in physical
|
|
>memory, ie using a reverse hash function.
|
|
|
|
Actually, it's not a very time-critical check: it's done by the idle
|
|
task anyway (which is the reason I originally made task[0] special: it
|
|
just hasn't been used up till now). That way the machine does something
|
|
useful even when waiting for disk accesses etc. In patch1 the algorithm
|
|
just searches for non-accessed pages so that the system doesn't have to
|
|
do those calculations every time it wants to swap something out. It
|
|
should be relatively easy to enhance to do aging and check on the same
|
|
page being used by several different processes.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: =.97 patch1 available on nic
|
|
Message-ID: <1992Aug6.104732.16893@klaava.Helsinki.FI>
|
|
Date: 6 Aug 92 10:47:32 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 26
|
|
|
|
|
|
It seems all connections to Finland are down (or at least some server is
|
|
acting up), so patch1 is available only on nic.funet.fi:
|
|
|
|
pub/OS/Linux/testing/Linus/linux-0.97.patch1.Z
|
|
|
|
I'll upload it to the other sites when I get a working ftp-connection.
|
|
|
|
Patch 1 is essentially a performance-release, but it also contains some
|
|
other patches: Ross Biro's tcp-ip stubs are there (but not the tcpip
|
|
subdirectory: alpha-testers should know where to find that), as are the
|
|
ext-fs superblock cleanups. The first header-file patch by hlu is also
|
|
in there.
|
|
|
|
The resulting patch is pretty big - it's also not as cleaned up as I'd
|
|
like it to be. The swapping/buffer-block handling heuristics are
|
|
better, but could still do with some tuning. Also, the idle task in
|
|
this version doesn't do very much: it will be expanded to do some more
|
|
page-table calculations.
|
|
|
|
I will be unable to hack on linux for a couple of weeks (I'll still
|
|
answer mails, read the newsgroup and fix bugs, but no heavy-duty
|
|
hacking) due to some "circumstances beyond my control". That probably
|
|
means that this patch is the last one for a while (three weeks) unless
|
|
some bad bugs show up.
|
|
|
|
Linus
|
|
|
|
==================
|
|
==================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Groff binary problems
|
|
Message-ID: <1992Aug8.104841.18911@klaava.Helsinki.FI>
|
|
Date: 8 Aug 92 10:48:41 GMT
|
|
References: <1992Aug7.123725.8121@vax.oxford.ac.uk>
|
|
Organization: University of Helsinki
|
|
Lines: 30
|
|
|
|
|
|
In article <1992Aug7.123725.8121@vax.oxford.ac.uk> tony@vax.oxford.ac.uk writes:
|
|
>Dear Linux Gurus,
|
|
> I'm having problems with the groff binaries from tsx. Having
|
|
>installed all the bits in /usr/local/ then moved them /usr (OK, so I got it
|
|
>wrong to start off with :-) I get the following error message when I try & read
|
|
>any of the man pages.
|
|
>
|
|
>using groff -man -T ascii /usr/man/man1/gtroff.1
|
|
>I get the following on /dev/tty (not stderr !) :-
|
|
> d9f2 fxxx not implemented
|
|
|
|
This is printed by the 387-emulator inside the kernel: the opcode 0xd9f2
|
|
means "fptan" which isn't emulated. Thus linux sends the process a
|
|
SIGILL, and groff prints
|
|
|
|
>& this on stderr :-
|
|
> groff: groff: Signal 4
|
|
|
|
(SIGILL == 4). As the first message is a kernel error message (and not
|
|
printed by the groff binary, it automatically goes to the currently
|
|
active virtual console (you can run groff in another VC, and still see
|
|
the message on the console you are currently using).
|
|
|
|
Either the groff binaries are statically linked with the hard-math
|
|
library (in which case you either have to recompile them or buy a 387)
|
|
or then your shared libraries are incorrectly set up (ie you have used
|
|
libhard.2.2.2 for /lib/libm.2.2.2 at installation instead of
|
|
libsoft.2.2.2).
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: patch1 blues
|
|
Message-ID: <1992Aug9.080811.6566@klaava.Helsinki.FI>
|
|
Date: 9 Aug 92 08:08:11 GMT
|
|
References: <1992Aug9.033453.21711@athena.mit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 37
|
|
|
|
|
|
In article <1992Aug9.033453.21711@athena.mit.edu> Epstein@DOCKMASTER.NCSC.MIL writes:
|
|
>
|
|
>To compile ps-0.97 (3 Aug newer version) I had to rm .depend make
|
|
>.depend (as stddef.h is in /usr/lib/gcc/...2.2.2/include/ vice
|
|
>/usr/include/ as per distribution .depend did a make and make install
|
|
>did a ps -U /usr/src/linux/tools/system /dev/swap this generated a new
|
|
>psdatabase HOWEVER get message symbol '_main_memory_start' not found
|
|
>trying to read invalid address
|
|
|
|
Make sure you have removed all the old object files: main_memory_start
|
|
no longer exists, and you should replace all occurences with just
|
|
"memory_start".
|
|
|
|
>I also get symbol '_paging_pages' not found trying to read invalid
|
|
>address when execute free [just like other people]
|
|
|
|
Rewrite free to use
|
|
|
|
memory_start = get_kword(k_addr("_memory_start"));
|
|
memory_end = get_kword(k_addr("_memory_end"));
|
|
paging_pages = (memory_end-memory_start)>>12;
|
|
|
|
These are constant (decided at boot-up), and will not change during a
|
|
linux session.
|
|
|
|
Other useful (dynamic) information is:
|
|
|
|
nr_buf = get_kword(k_addr("_nr_buffers"));
|
|
|
|
which tells you the current number of buffers in use, and
|
|
|
|
nr_free_pages = get_kword(k_addr("_nr_free_pages"));
|
|
|
|
which tells you how many free pages there are (this should be close to 0
|
|
as they should mostly be used for free buffers).
|
|
|
|
Linus
|
|
|
|
==================
|
|
==================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 0.97 (and pl1) memory use
|
|
Message-ID: <1992Aug10.073841.28831@klaava.Helsinki.FI>
|
|
Date: 10 Aug 92 07:38:41 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 32
|
|
|
|
|
|
[ I already sent this out to the mailing-list, but here goes... ]
|
|
|
|
[ And yes, this is a /really/ silly bug, and I'm only glad nobody else
|
|
found it first :-]
|
|
|
|
There is a very silly bug in 0.97 (and pl1) which results in the dynamic
|
|
buffer cache being badly used: when the buffers are grown, only half of
|
|
the actual space reserved for them is used. The offending code is in
|
|
linux/fs/buffer.c, in the function grow_buffers():
|
|
|
|
There is a for-loop something like this:
|
|
|
|
for (i = 0 ; i+size <= 4096 ; i += size) {
|
|
.....
|
|
bh->b_size = size;
|
|
- i += size;
|
|
}
|
|
|
|
Note that i is updated twice (both at the end of the for-statement and
|
|
in the for-block) which results in only every other buffer-area being
|
|
actually used - half the available memory is simply ignored. The easy
|
|
bug-fix is to remove either of the "i += size" statements, and I'd
|
|
suggest you remove the latter one (marked with a "-" above).
|
|
|
|
So if somebody wondered why there were only 3000 buffers although "free"
|
|
reported that over 6MB was used, this is the reason. I didn't really
|
|
look at the values that free returned until today, so I never noticed
|
|
(Lars Wirzenius can tell about the time I "lost" 4MB or my 8MB memory
|
|
for a week due to a programming thinko like the above. I didn't notice
|
|
anything until I had to make him a 4MB version of the kernel :-)
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: unix clones for the pc abound
|
|
Message-ID: <1992Aug11.091230.141@klaava.Helsinki.FI>
|
|
Date: 11 Aug 92 09:12:30 GMT
|
|
References: <1992Aug10.174226.20085@daimi.aau.dk> <1992Aug10.214854.17763@unislc.uucp>
|
|
Organization: University of Helsinki
|
|
Lines: 34
|
|
|
|
|
|
In article <1992Aug10.214854.17763@unislc.uucp> erc@unislc.uucp (Ed Carp) writes:
|
|
>
|
|
>I see references to minix sprinkled through the kernel, through comp.os.linux,
|
|
>and through lots of the utilities. Some say that "such-and-such" utility was
|
|
>ported from minix, or was derived from minix. Here there be dragons...
|
|
|
|
Not really.. but read on.
|
|
|
|
>According to current copyright law in the U.S., a derivation of a copyrighted
|
|
>program (like the minix kernel, file system, or utilities) made without
|
|
>permission of the copyright holder is a violation of copyright law. So, either
|
|
>the linux kernel and utilities need to be 'sanitized', or someone's got to
|
|
>get assurances from Prentice-Hall that someone won't get sued for what is called
|
|
>"derivitive copyright infringement".
|
|
|
|
The minix kernel is well-documented ("OS design and implementation" by
|
|
Tanenbaum) and linux hasn't really got too much to do with minix anyway.
|
|
Although I have called linux a "minix-clone", it's no longer true in any
|
|
way, and never meant linux used very many ideas from minix. It just
|
|
looked more like minix-386 than any other OS. Note the past tense: now
|
|
even that isn't true (I'd say it's closer to either a "real" sysv or bsd
|
|
box than to minix).
|
|
|
|
There are a few things in the kernel that have been influenced by minix:
|
|
the original minix filesystem is the main one. Even that is a total
|
|
rewrite (and much better it is, if I may say so :-) and just keeps the
|
|
old physical layout on disk. Things like select() and VC's were also
|
|
originally influenced by their respective minix-patches (*).
|
|
|
|
Linus
|
|
|
|
(*) Note: these aren't even part of minix, but are available as patches
|
|
to minix written by others. Even if linux had used their code instead
|
|
of just their ideas, P-H has nothing to do with them.
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: root disk vs. mj disk, also hd.c patch
|
|
Message-ID: <1992Aug12.225636.5039@klaava.Helsinki.FI>
|
|
Date: 12 Aug 92 22:56:36 GMT
|
|
References: <1992Aug12.011334.17155@ultb.isc.rit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 37
|
|
|
|
|
|
In article <1992Aug12.011334.17155@ultb.isc.rit.edu> axi0349@ultb.isc.rit.edu (A.X. Ivasyuk ) writes:
|
|
>
|
|
>
|
|
>First of all, how do you get the executables to be so tiny on the root disk
|
|
>and the mj distribution? I can't get mine under 9K, even a 'hello, world'
|
|
>program. I'd like to be able to squeeze my 80MB drive to the max.
|
|
>It can't be just the -O flag on gcc.
|
|
|
|
By using shared libraries, and the "-N" flag, and stripping the result
|
|
you can often make trivial binaries that are much less than 9kB. BUT
|
|
they won't demand-load nor share pages, so it's worth it only if the
|
|
binary is truly small. Using "-N" on bigger binaries will result in bad
|
|
performance and memory waste when running it.
|
|
|
|
> [ Q two deleted ]
|
|
>Third, where is the one-line patch to hd.c (0.97) that everyone has been talking
|
|
>about? I think I missed it on the net. Could someone send it to me, please?
|
|
>(I already applied patch1 and the buffer patch, and it did improve performance
|
|
>noticeably, esp. patch1 - Thanks Linus!!!)
|
|
|
|
It's not to hd.c but to linux/fs/buffer.c - in the function
|
|
grow_buffers(). 0.97.pl1 has code that looks something like this:
|
|
|
|
for (i = 0 ; i+size <= 4096 ; i += size) {
|
|
bh = get_unused_buffer_head();
|
|
....
|
|
- i += size;
|
|
}
|
|
|
|
As you can see, 'i' is updated twice ('i += size' both inside the
|
|
for-loop and as the terminating expression), resulting in using only
|
|
half the available space in a page for buffers. The fix is to remove
|
|
the line I have marked with a "-". The above simple fix results in much
|
|
better free memory utilization, and a marked improvement in performance
|
|
under some circumstances.
|
|
|
|
Linus
|
|
|
|
=============================
|
|
=============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Linux history...
|
|
Message-ID: <1992Aug13.095315.18548@klaava.Helsinki.FI>
|
|
Date: 13 Aug 92 09:53:15 GMT
|
|
References: <1992Aug3.003404.6928@athena.mit.edu> <1992Aug3.165201.26088@klaava.Helsinki.FI> <1992Aug12.173725.21885@news.uni-stuttgart.de>
|
|
Organization: University of Helsinki
|
|
Lines: 14
|
|
|
|
|
|
In article <1992Aug12.173725.21885@news.uni-stuttgart.de> haible@izfm386i.fertigungstechnik.uni-stuttgart.de (Pascal Haible) writes:
|
|
>In article <1992Aug3.165201.26088@klaava.Helsinki.FI> wirzeniu@klaava.Helsinki.FI (Lars Wirzenius) writes:
|
|
>[...]
|
|
>>
|
|
>>Linus is currently about 22 years and 7 months young. He speaks
|
|
> ^^^^^^^^
|
|
>That is already well (?) known - at least to kernel source readers
|
|
>-- or did he harcode in his girl friend's birth day?
|
|
>(hint: it's no use grep'ing for 1969 or 1970, it's a bit hidden)
|
|
|
|
No, it's my birthday, and I'm surprised anybody found it. I thought I
|
|
had hidden it well enough :-). And I'm not giving hints.
|
|
|
|
Linus
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Linux CDROM (Was stabilizing Linux)
|
|
Message-ID: <1992Aug13.095529.18687@klaava.Helsinki.FI>
|
|
Date: 13 Aug 92 09:55:29 GMT
|
|
References: <3284@ra.nrl.navy.mil> <1992Aug12.020246.22166@wimsey.bc.ca> <1992Aug12.164546.13304@crd.ge.com>
|
|
Organization: University of Helsinki
|
|
Lines: 18
|
|
|
|
|
|
In article <1992Aug12.164546.13304@crd.ge.com> davidsen@crd.ge.com (bill davidsen) writes:
|
|
>In article <1992Aug12.020246.22166@wimsey.bc.ca>, bhenning@wimsey.bc.ca (Bill Henning) writes:
|
|
>| 3.75Gb/process would be great! I am not likely to need that ofcourse, nor will
|
|
>| I likely have a swap partition much greater than 10-20Mb, but fewer limitations
|
|
>| are allways welcome.
|
|
>|
|
|
>| Now if the number of processes are also increased from 64 to say 1024 that would
|
|
>| be great! (yes, I can see running out of 64 processes)
|
|
>
|
|
> I can see running out of 64 processes a lot faster than running out of
|
|
>64MB address space. I certainly am not running that much memory and
|
|
>swap.
|
|
|
|
The things are related: the 64 process maximum will be gone the same day
|
|
the 64MB limit is gone. It will just take a bit of coding on my part,
|
|
so don't expect it tomorrow..
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Why GNU cp is flakey under Linux
|
|
Message-ID: <1992Aug13.132338.8532@klaava.Helsinki.FI>
|
|
Date: 13 Aug 92 13:23:38 GMT
|
|
References: <1992Aug12.060338.24805@ennews.eas.asu.edu> <1992Aug12.063534.4178@muddcs.claremont.edu> <JRS.92Aug12190300@lepton.world.std.com>
|
|
Organization: University of Helsinki
|
|
Lines: 23
|
|
|
|
|
|
In article <JRS.92Aug12190300@lepton.world.std.com> jrs@world.std.com (Rick Sladkey) writes:
|
|
>
|
|
>An examination of the source code shows that GNU cp only performs this
|
|
>optimization if it thinks that the original file also had holes. The
|
|
>way GNU cp determines this is by comparing the number of blocks used
|
|
>with the actual file size. Furthermore, it only does this when it is
|
|
>compiled without ST_BLOCKS_MISSING defined. Note that the kernel is
|
|
>created by build and does not have any holes.
|
|
|
|
Yes, but GNU cp looks /only/ at the st_blocks field, and seems to ignore
|
|
st_blksize altogether, assuming it's a constant (usually 512). Or
|
|
that's what it looks like when just taking a quick look at the source.
|
|
And as the current linux kernel happens to use st_blksize = 1024 (and
|
|
thus also st_blocks is only half of what GNU cp seems to expect), the
|
|
test doesn't work very well. The result being that GNU cp creates holes
|
|
even if there were none in the original image.
|
|
|
|
I'll probably change the default st_blksize to 512 - easy enough to
|
|
change the math in linux/fs/stat.c, and it seems that's what some
|
|
programs expect. Programs which understand about st_blksize shouldn't
|
|
care one way or the other.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: executables in linux
|
|
Message-ID: <1992Aug13.133700.9139@klaava.Helsinki.FI>
|
|
Date: 13 Aug 92 13:37:00 GMT
|
|
References: <1992Aug12.225538.16085@usenet.ins.cwru.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 23
|
|
|
|
|
|
In article <1992Aug12.225538.16085@usenet.ins.cwru.edu> mdr4@po.CWRU.Edu (Mark D. Rutherford) writes:
|
|
>
|
|
>I'm currently running linux .95. Several times now, I've FTP'd
|
|
>something, tar'd it to floppy, and then untar'd from linux,
|
|
>and tried to execute what I've untar'd. I get the message,
|
|
>"Cannot execute binary file" The directory listing for the file
|
|
>says that it's executable, and it's docs say it's executable.
|
|
>I'm sure it's something simple that I'm missing. Can anyone help?
|
|
|
|
While I have tried to keep each new kernel backwardsly compatible (ie
|
|
running most old binaries, excepting things like ps and in some cases
|
|
gdb), it's /not/ the case the other way around - binaries compiled with
|
|
a new compiler may not work on an older kernel. There have been several
|
|
changes in this direction: the header information changed somewhere
|
|
along the way (the old headers were still accepted, but old kernel
|
|
versions didn't accept the new headers) and new features (extended stat
|
|
structure etc) have made binaries unrunnable on older kernel versions.
|
|
|
|
So the answer is to upgrade your kernel: if possible all the way to
|
|
0.97.pl1 + the one-line patch due to performance reasons, but 0.96c or
|
|
similar should work very well for your needs.
|
|
|
|
Linus
|
|
|
|
================
|
|
================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: The Third Degree
|
|
Message-ID: <1992Aug14.205408.13958@klaava.Helsinki.FI>
|
|
Date: 14 Aug 92 20:54:08 GMT
|
|
References: <pz91Ht-g*8@atlantis.psu.edu> <1992Aug13.124939.16680@kth.se> <7gh1Hm#z&8@atlantis.psu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 28
|
|
|
|
|
|
In article <7gh1Hm#z&8@atlantis.psu.edu> bairstow@copland.psu.edu (Steven Bairstow) writes:
|
|
>In article <1992Aug13.124939.16680@kth.se> d88-jwn@blofeld.nada.kth.se (Johan W}hlin) writes:
|
|
>>bairstow@copland.psu.edu (Steven Bairstow) writes:
|
|
>>: ...
|
|
>>: - Has anyone noticed free inodes being left around? I think
|
|
>>: halt/shutdown is doing it. (This is what I was trying to figure
|
|
>>: out when it crashed.)
|
|
>>Yes I've been having this problem at least with reboot
|
|
>>
|
|
>
|
|
>Okay, so does anyone know where the code is for these programs so I can take
|
|
>a look at them, or who the author is?
|
|
|
|
I doubt it's either reboot or shutdown that results in the fsck errors:
|
|
what you are probably seeing is a normal result of the filesystem setup
|
|
under unix. I assume the problem is that fsck reports "inode XXX marked
|
|
in use: no file uses it" and "block XXXX marked in use: no file uses
|
|
it".
|
|
|
|
This can happen if you install a new version of a running program (like
|
|
'init') and reboot. The old 'init' is removed from the directory tree,
|
|
but as it's still in use, neither the inode nor the blocks are actually
|
|
reclaimed until the program is exited. And in many cases (like /bin/sh
|
|
or init or update), the program is never exited until the reboot has
|
|
happened. "fsck -a" should clear up the problem - or you should be more
|
|
careful when rebooting with "deleted" programs still running.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Linux Standards (was: Stabilizing Linux)
|
|
Message-ID: <1992Aug16.073340.11418@klaava.Helsinki.FI>
|
|
Date: 16 Aug 92 07:33:40 GMT
|
|
References: <1992Aug6.125441.22427@klaava.Helsinki.FI> <Bt1u3u.3zv@world.std.com> <danielce.713926038@munagin>
|
|
Organization: University of Helsinki
|
|
Lines: 43
|
|
|
|
|
|
In article <danielce.713926038@munagin> danielce@mullian.ee.mu.OZ.AU (Daniel AMP Carosone) writes:
|
|
>
|
|
>May one presume that if Linus has any objections to what someone is
|
|
>doing with his work (and, by proxy, the work others have contributed)
|
|
>he will make them known and clear? If he does have some objection, and
|
|
>that is not heeded, he is free to change the terms of the License for
|
|
>later releases if he deems it necessary.
|
|
|
|
Well, I've answered this by email and earlier in the newsgroup, but I
|
|
guess it won't hurt to say it once more: I have no objection whatsoever
|
|
to any commercial use of linux that abides by the copyright. Not only
|
|
because I wouldn't have a legal leg to stand on, but simply because
|
|
there isn't any point in it. I'm not making any money off linux, so I
|
|
cannot lose anything by letting others do it - it's not as if they were
|
|
competing in the same market-place.
|
|
|
|
Also, if people sell linux, it certainly won't hurt the "free" status of
|
|
linux: it won't make all the free releases go away. So there isn't
|
|
really anything to get excited about - a commersial linux won't hurt the
|
|
linux users in the slightest, and might make linux available to people
|
|
that otherwise didn't have the possibility of getting it.
|
|
|
|
The earliest versions of linux had a more restrictive copyright: any
|
|
commercial activity was prohibited by it. That was mostly due to (a) an
|
|
overreaction to the price I had to pay for minix ($169 may not be much,
|
|
but it's still more than I can afford: I'm still paying monthly
|
|
installments on my machine) and (b) protection: linux wasn't well-known
|
|
then, and I didn't think it was ready for commercial use anyway.
|
|
|
|
(a) is silly, (b) went away with 0.12 - the copyright essentially
|
|
changed when I got the first query about selling linux (with just a
|
|
small delay to make sure there were no objections from people that had
|
|
made patches available. There weren't).
|
|
|
|
And as to the price: it doesn't really matter. If somebody wants to
|
|
make linux availabe for $ 995.95 ("special price just for you, amigo"),
|
|
I'd certainly be interested to hear how well it sells, but it won't
|
|
bother me. And bickering over whether $60 is too much is silly: people
|
|
buy it if they feel it's worth it. Actually, a nicely priced product
|
|
may sell better than a cheap one: it's illogical, but some people feel
|
|
that a product cannot be very good if it's cheap.
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: a patch for free in the ps-0.97 package
|
|
Message-ID: <1992Aug16.114537.9026@klaava.Helsinki.FI>
|
|
Date: 16 Aug 92 11:45:37 GMT
|
|
References: <SHARMAN.92Aug16012235@sharman.Software.Mitel.COM>
|
|
Organization: University of Helsinki
|
|
Lines: 14
|
|
|
|
|
|
Just in case anybody wonders: yes, the next patch will again break all
|
|
programs (well, most of them) that read kernel memory directly. In
|
|
fact, some things, notably the command line snooping that 'ps' does and
|
|
the page-counting ("ps m") will break totally: they have to be
|
|
rewritten, and will need kernel support. The reason is that /dev/mem is
|
|
no longer able to read the data in other processes: the memory
|
|
management has changed to use different page tables for each process.
|
|
|
|
I either have to implement some kind of /proc filesystem or support
|
|
some "get_ps_info()" system call - the get_ps_info() way is easier, but
|
|
a /proc fs might be a good idea and is more general. It will have to
|
|
wait for 0.98 or so, though: 0.97.pl2 won't have a good ps interface.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Whining...I don't want to hack on the kernel
|
|
Message-ID: <1992Aug18.062556.6342@klaava.Helsinki.FI>
|
|
Date: 18 Aug 92 06:25:56 GMT
|
|
References: <1992Aug12.225538.16085@usenet.ins.cwru.edu> <1992Aug13.133700.9139@klaava.Helsinki.FI> <1992Aug18.011305.27223@access.usask.ca>
|
|
Organization: University of Helsinki
|
|
Lines: 20
|
|
|
|
|
|
In article <1992Aug18.011305.27223@access.usask.ca> dzubin@skorpio.usask.ca (Thomas Dzubin) writes:
|
|
>
|
|
>Sorry if this is sacreligious, but I DON'T WANT TO HACK THE KERNEL. It
|
|
>would be absolutely *wonderful* if someone (ANYONE!?) would put the
|
|
>binary of 0.97.pl1 somewhere FTP-able.
|
|
|
|
It's a valid gripe, and I'll probably make a binary available when I
|
|
release patch2 (this weekend). patch1 was a very hurried release: I
|
|
wouldn't have released it if it wasn't for the fact that I wanted to
|
|
hear comments about the speed-up (if any). As it turned out, patch1 is
|
|
perfectly ok (especially after the 1-line patch), and doesn't have any
|
|
more problems than any other release, but I wasn't sure when I made it.
|
|
|
|
There still seems to be some problems with 0.97.pl1: the buffer-cache
|
|
corruption is the worst one. I haven't seen it myself, and it seems to
|
|
be a SCSI problem, but I'm not sure. I'll probably try the test-program
|
|
somebody posted if I can find the disk-space for it. I doubt the
|
|
problem will be fixed by patch2: especially if I'm unable to see it.
|
|
|
|
Linus
|
|
|
|
==================
|
|
==================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: A question about Kernel system call mechanism
|
|
Keywords: linux, kernel, system call
|
|
Message-ID: <1992Aug20.122051.24901@klaava.Helsinki.FI>
|
|
Date: 20 Aug 92 12:20:51 GMT
|
|
References: <1992Aug19.174117.21233@ramsey.cs.laurentian.ca>
|
|
Organization: University of Helsinki
|
|
Lines: 102
|
|
|
|
|
|
In article <1992Aug19.174117.21233@ramsey.cs.laurentian.ca> ron@ramsey.cs.laurentian.ca (Ron Prediger [Velociraptor]) writes:
|
|
>I am relatively new to Linux and have been examining the kernel source.
|
|
>
|
|
>1) Does anyone know how linux passes parameters from the user process to the
|
|
>kernel service routine ? Below is what I think is happening and where I
|
|
>am confused.
|
|
>
|
|
>It appears that system calls are handled using interrupt or trap gates
|
|
>resident in the Interrupt descriptor table (IDT). From reading the Intel
|
|
>386 ref. manual I understand that a stack switch occurs automatically when
|
|
>a less privileged process accesses a gate for a more privileged subroutine.
|
|
|
|
Correct so far...
|
|
|
|
>What I can't see is how the kernel service routine gets the system call
|
|
>parameters (ie. addresses, etc) from the user process. Is there code
|
|
>somewhere which copies these parameters from the original (level 3) stack to
|
|
>the more privileged (level 0) stack ? If linux had used call gates to
|
|
>implement system calls, the parameters would automatically be copied to the
|
|
>privileged routine's stack by the 386. (This automatic
|
|
>copy of parameters does not occur when referencing interrupt/trap gates.)
|
|
|
|
I didn't like system call gates: they are too complicated for my taste
|
|
(besides, you have to know how many arguments to copy, or have a
|
|
specific system call gate for each type of argument: maybe not a bad
|
|
idea, but...). Anyway, things are easier than you make them out to be:
|
|
the arguments are simply passed in the normal registers.
|
|
|
|
Passing arguments in the registers allows you 6 (32-bit) direct
|
|
arguments (not counting %eax, which is used to tell which system call
|
|
you want handled), and more if you simply set up a pointer to a block in
|
|
user space. And the beauty of it all is that they are automatically put
|
|
on the stack in as arguments to the system calls when the registers are
|
|
saved - see the file linux/kernel/sys_call.S, which saves all the
|
|
necessary state information. It's the simplest and fastest way I could
|
|
find: linux doesn't even save the state in some special task-structure
|
|
like other unices seem to do, but just leaves the regs on the stack,
|
|
ready for popping when the process returns from the interrupt.
|
|
|
|
>2) It appears that Linux is making use of segment registers (FS,GS) and the
|
|
>LDT/GDT to transfer the actual data (ie. from a read system call) between
|
|
>user and kernel address spaces. Is this observation correct ?
|
|
|
|
Actually, only %fs is used: it points to the user-space segment when in
|
|
a system call. Thus linux never needs to check any bounds when copying
|
|
from/to user space: it's automatically handled by the hardware. The
|
|
get_fs_XXX() and put_fs_XXX() (XXX=byte, word, long) inline functions
|
|
can be used to transfer bytes from/to user space, and memcpy_tofs() or
|
|
memcpy_fromfs() can be used to move bigger blocks between kernel and
|
|
user segments.
|
|
|
|
What happens at a system call is roughly:
|
|
|
|
user space:
|
|
- load the arguments into registers (%eax contains the system call
|
|
index, %ebx... contain the parameters)
|
|
- do an "int $0x80", moving to kernel mode:
|
|
|
|
kernel space:
|
|
- clear the direction-flag, as gcc assumes this
|
|
- save the system call number: a negative number means the interrupt
|
|
was caused by a hardware IRQ or trap.
|
|
- save all the segment registers
|
|
- save %eax (which happens to be the same number we saved earlier if
|
|
this is a normal system call)
|
|
- save the other registers: they automatically form the stack frame for
|
|
the system call.
|
|
- call the appropriate system call handler by indexing the appropriate
|
|
table with %eax.
|
|
|
|
The handler does it's stuff - it /can/ change the stack frame if it
|
|
wants to, and thus return information in any registers it wants to, but
|
|
that is really discouraged, and all system calls currently just return
|
|
their result in %eax as part of their normal return.
|
|
|
|
- check if there were any signals, and change the return stack (both in
|
|
kernel and user space) appropriately if so, invoking the signal
|
|
handler instead of returning directly.
|
|
- pop all the saved registers, and do an iret, returning to user mode.
|
|
|
|
While the system call runs, the %ds and %es registers point to kernel
|
|
data space, and %fs points to user space. But the system calls may
|
|
change %fs for their own needs: for example symbolic links result in
|
|
changing %fs to kernel space for a while as the name is parsed directly
|
|
from the kernel buffers instead of from user space etc.
|
|
|
|
Note that normal faults/traps and IRQ's do essentially exactly the same,
|
|
except for "fast" IRQ's, which just save a minimal amount of information
|
|
and don't do the signal checking (used by things like the serial
|
|
handlers). Also, they naturally haven't got any "system call number",
|
|
but have their own routine that is called after the stack is set up.
|
|
|
|
As to the GDT: the GDT contains just two normal segment entries: GDT[1]
|
|
is the kernel code segment descriptor, and GDT[2] is the kernel data
|
|
descriptor. The rest of the global descriptor table is filled with TSS
|
|
and LDT descriptors. The local descriptor tables normally contain just
|
|
the user-space code/data descriptors in LDT[1] and LDT[2], but it's
|
|
flexible enough to be extended if something wants to have more segments
|
|
in user space (I think the xenix emulator uses this, although I haven't
|
|
looked at the code yet).
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Paying off Linus' PC (was: Linux Standards)
|
|
Message-ID: <1992Aug21.065950.8463@klaava.Helsinki.FI>
|
|
Date: 21 Aug 92 06:59:50 GMT
|
|
References: <1992Aug16.073340.11418@klaava.Helsinki.FI> <1992Aug18.070709.16015@trl.oz.au> <1992Aug19.162616.3357@news.acns.nwu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 39
|
|
|
|
|
|
I hate to follow up to a thread that might actually be profitable for
|
|
me, but I felt I had to clarify a few points - especially if there are
|
|
new linux users out there reading the thread.
|
|
|
|
If people feel they want to send me money (indirectly or directly) as a
|
|
token of appreciation, that's very much ok by me (surprise, surprise),
|
|
but a token of appreciation is all it is going to be. Yes, I'll be able
|
|
to pay off my machine more quickly or even get a bigger harddisk or
|
|
whatever, but sending me money won't get you any better service - this
|
|
is definitely not a "registration fee" or anything like that.
|
|
|
|
The above just means that (a) even if you don't send any money I won't
|
|
mind in the least that you use linux, and when I answer questions etc I
|
|
won't check if you sent me money first. And (b) even if you sent me
|
|
money, any features you propose/want will get no extra priority. In
|
|
fact, trying to make me feel guilty over money ("after all, I paid you
|
|
$20 for this") is likely to get the exact opposite reaction.
|
|
|
|
Finally, I won't give any guarantees of what the money will be used for:
|
|
if you add some kind of message giving preferences ("use it to pay off
|
|
your computer"), I'll naturally follow them within reasonable limits,
|
|
but I might just use them to pay off my "beer&pizza"-debts (*), which
|
|
might be against your religion or whatever.
|
|
|
|
So, the result of all this? If somebody thought I was despairing about
|
|
my monthly payments, that's not true, and frankly, I'll get the computer
|
|
paid off even if nobody sends me a cent, even if it might take me a bit
|
|
longer. Also, there are others that have contributed to linux, and I
|
|
won't give them anything (not because I'm a selfish bastard, but simply
|
|
due to practical reasons).
|
|
|
|
If any of the above reasons made you decide I don't really need the
|
|
money, I just ask you not to mail me about it. I /don't/ want to know
|
|
about any money I might have gotten, but didn't.
|
|
|
|
Linus
|
|
|
|
(*) Yes, beer is reasonably costly over here in Finland, but no, my
|
|
debts aren't really that big. Quite small, in fact, considering..
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: A technical question on CONTEXT (TASK) SWITCHING by the Kernel
|
|
Keywords: task switch, context switch, task state segment, kernel
|
|
Message-ID: <1992Aug21.072548.10633@klaava.Helsinki.FI>
|
|
Date: 21 Aug 92 07:25:48 GMT
|
|
References: <1992Aug20.164928.24749@ramsey.cs.laurentian.ca>
|
|
Organization: University of Helsinki
|
|
Lines: 80
|
|
|
|
|
|
In article <1992Aug20.164928.24749@ramsey.cs.laurentian.ca> ron@ramsey.cs.laurentian.ca (Ron Prediger [Velociraptor]) writes:
|
|
>Here is another technical question about the Linux kernel. Context
|
|
>switching in particular.
|
|
|
|
Ok, more answers...
|
|
|
|
> #define switch_to(n) {\
|
|
> struct {long a,b;} __tmp;\
|
|
|
|
This just fools gcc to get 8 bytes of space on the stack, so that we
|
|
don't have to get them anywhere else..
|
|
|
|
> __asm__("cmpl %%ecx,_current\n\t"\
|
|
> "je 1f\n\t
|
|
|
|
%ecx is set up with the task we want to switch to when we enter the
|
|
inline assembly statement, so this is obviosuly testing whether we are
|
|
trying to switch to the current task, in which case nothing is done.
|
|
Besides being an obvious optimization, I don't think the 386 allows a
|
|
tss-jump to the current task (but not having my books around me, I can't
|
|
check).
|
|
|
|
> "movw %%dx, %1\n\t"\
|
|
|
|
This just moves %dx (which contains the tss-selector) into the word at
|
|
__tmp+4. So ___tmp looks like this:
|
|
|
|
__tmp+0: undefined long
|
|
__tmp+4: tss-selector word
|
|
__tmp+6: undefined word
|
|
|
|
> "xchgl %%ecx,_current\n\t"\
|
|
|
|
This exchanges %ecx and 'current' - %ecx will contain the task we are
|
|
now executing in, and 'current' will contain the task we are just about
|
|
to jump to.
|
|
|
|
> "ljmp %0\n\t"\
|
|
|
|
This does the actual task switch: we do an indirect long-jump to __tmp.
|
|
This is also the reason we updated just the word at __tmp+4: a long jump
|
|
to a new tss-selector will ignore all other values. It will
|
|
automatically jump to the place indicated by the tss segment.
|
|
|
|
> "cmpl %%ecx,_last_task_used_math\n\t"\
|
|
|
|
Yes, this looks illogical: we just did an unconditional jump, and this
|
|
should never be reached. Right? Wrong. The ljmp will return once some
|
|
other task does it's own ljmp to this task. Now %ecx contains the
|
|
current task, so we check if this is the task that used the math
|
|
coprocessor last...
|
|
|
|
> "jne 1f\n\t"\
|
|
> "clts\n"\
|
|
|
|
...in which case we can clear the TS flag, giving better
|
|
math-performance. Due to these three lines, linux never saves math state
|
|
unnecessarily.
|
|
|
|
> "1:"\
|
|
> "::"m" (*&__tmp.a),"m" (*&__tmp.b), \
|
|
|
|
This just sets up %0 - pointing to '__tmp', and %1, pointing to
|
|
'__tmp+4'.
|
|
|
|
> "d" (_TSS(n)), "c" ((long) task[n]) \
|
|
|
|
%dx contains the tss-descriptor for the task we want to switch to, and
|
|
%ecx contains the task-pointer of the task we want to switch to.
|
|
|
|
> :"cx");\
|
|
|
|
And this just tells gcc that %ecx is changed by the inline-asm.
|
|
|
|
That's it: 8 lines of assembly does the linux context switch with
|
|
math-state optimizations. Note that newer sources should have a cli-sti
|
|
pair around the "xchg %%ecx,_current ; ljmp %0", so that 'current' is
|
|
always up-to-date, even when running under interrupts.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: shared libs - can everyone be happy with this?
|
|
Message-ID: <1992Aug21.075538.12640@klaava.Helsinki.FI>
|
|
Date: 21 Aug 92 07:55:38 GMT
|
|
References: <1992Aug17.152210.23427@riacs.edu> <1992Aug18.023010.6841@colorado.edu> <TED.92Aug20103404@pylos.nmsu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 27
|
|
|
|
|
|
In article <TED.92Aug20103404@pylos.nmsu.edu> ted@nmsu.edu writes:
|
|
>
|
|
>writable code segments or executable data segments are _very_
|
|
>important to programs that would like to do dynamic loading.
|
|
>
|
|
>of these two options, the second is preferable.
|
|
|
|
Right now, linux accepts both: early versions of linux didn't allow
|
|
executable data-segments (the code segment was only as long as indicated
|
|
by the executable header), but I changed that as gcc-2 actually assumes
|
|
data space is executable (it can build small functions on the stack).
|
|
Another reason was actually to get 'crashme' to run: without an
|
|
executable data-segment crashme won't run at all (without
|
|
modifications). And while it might sound weird to change the kernel to
|
|
/help/ crashme, that's what I did. After all, the idea of crashme is to
|
|
test whether a system is stable, and if crashme fails for the silly
|
|
reason that it cannot execute the code it has just set up, it's not
|
|
anything to brag about. The fact that crashme /still/ seems to fail
|
|
despite being able to try, is a good thing (tm).
|
|
|
|
Writable code might go away eventually: there is no longer any good
|
|
reason for it now that the standard library should be well-behaved. But
|
|
I'm not in any hurry about it: if somebody /wants/ to write
|
|
self-modifying code, maybe it should be permissible. I don't dislike
|
|
goto's either.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: problem compiling 0.97pl1.5 with gcc2.2.2d
|
|
Message-ID: <1992Aug22.200046.25400@klaava.Helsinki.FI>
|
|
Date: 22 Aug 92 20:00:46 GMT
|
|
References: <1992Aug22.164625.772@rock.concert.net>
|
|
Organization: University of Helsinki
|
|
Lines: 35
|
|
|
|
|
|
In article <1992Aug22.164625.772@rock.concert.net> cole@concert.net (Derrick C. Cole) writes:
|
|
>
|
|
>Using the 96c bootimage, and after installing gcc2.2.2d and the 0.97 source
|
|
>and patches, I am able to compile the kernel sans problem.
|
|
>
|
|
>However, after the unix socket init, I get an unstoppable list of
|
|
>
|
|
>[ ...lots of error stuff deleted... ]
|
|
>kernel panic: no free inodes in mem
|
|
>[ ...lots of error stuff deleted... ]
|
|
|
|
Sounds like the infamous problem with shoelace and a kernel image with
|
|
holes in it. The fix is either not to use shoelace, or make sure
|
|
/vmunix (or whatever you call it) has no holes. The latter can be done
|
|
by using "cat /usr/src/linux/Image > /vmunix" instead of using 'cp' (or
|
|
you can use 'dd' or any number of other things).
|
|
|
|
While I'm orating, I might as well mention that 0.97.pl2 will be out
|
|
tomorrow: it contains mostly the memory management rewrite, but also has
|
|
some bigger vfs patches (mostly with symbolic links, but also some
|
|
general fixes). The changes will mostly not be seen on a user level:
|
|
some error-codes have been corrected, and linux gives each task 3GB
|
|
address space, but normal programs won't notice anything. The memory
|
|
management cleanup also allowed a clean vm86-mode, so that's in.
|
|
|
|
pl2 is relative to (unpatched) pl1, so people who have applied the
|
|
1-line fix will get patch errors.
|
|
|
|
Also, while I haven't been totally out of touch, I've not answered all
|
|
my mail (or answered very tersely) the last weeks, due to work. I also
|
|
haven't had time to check out all the patches I've gotten etc. I should
|
|
have more time for linux the upcoming weeks, so hopefully I'll try to
|
|
catch up a bit.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: linux-0.97 patchlevel 2
|
|
Message-ID: <1992Aug23.221741.6989@klaava.Helsinki.FI>
|
|
Date: 23 Aug 92 22:17:41 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 56
|
|
|
|
|
|
As promised, 0.97.pl2 is out today (well, over here it's already
|
|
tomorrow, so I guess I'm 35 minutes late. Naughty, naughty). Right
|
|
now, the patch (and full source for those that don't like to patch up
|
|
the system) is available at "nic.funet.fi: pub/OS/Linux/testing/Linus",
|
|
but I'll try to put it on some other sites as well if I'm able and
|
|
energetic enough. Probably tomorrow - together with a binary for those
|
|
that aren't willing to comple the kernel on their own.
|
|
|
|
0.97.2 has mostly my mm/fs patches, along with some relatively minor
|
|
diffs by others (including file locking by Doug Evans). User-level
|
|
changes are minor: but the mm has changed a lot, and the vfs routines
|
|
have been changed to keep track of the error-messages a bit better.
|
|
Also, the vfs-interface to "follow_link()" changed slightly: people who
|
|
are making filesystems should look at the changes (but they are
|
|
relatively minor, and shouldn't result in any problems - both the
|
|
extended fs and minix fs needed just a simple change in their respective
|
|
symlink.c files).
|
|
|
|
The mm changes /might/ lower performance slightly, as the paging TLB's
|
|
are now flushed at every task-switch due to the new system, but I doubt
|
|
it's noticeable. The other performance changes (dynamic buffers etc) in
|
|
0.97(.pl1) should overshadow that particular problem.
|
|
|
|
I hope this release means that these kinds of low-level rewrites aren't
|
|
needed for a while: the last couple of releases have changed some very
|
|
fundamental things. Nothing seems to have suffered too badly, but I'd
|
|
be happier if it all got tested more thoroughly. Anyway, discounting
|
|
the ps/free etc suite of programs, everything I have tried has worked
|
|
flawlessly despite the big kernel changes.
|
|
|
|
I'm still worried about the reports about messed-up buffers, but have
|
|
been unable to reproduce the problem, and nobody has so far
|
|
disillusioned me about my guess that it's a problem with the SCSI code
|
|
(which at least gives me an excuse for not doing anything about it :-).
|
|
Other problems include at least one report of spontaneous re-booting,
|
|
which is totally inexplicable, so I'm blaming hardware once more until I
|
|
can get better data on the thing.
|
|
|
|
As to patches sent by others: 0.97.2 contains very little of that kind
|
|
of code. I've been too busy either working, or implementing my own
|
|
changes that I have simply ignored them for the most part. Remind me
|
|
(or resend them relative to the new kernel) if you have a patch that is
|
|
still needed.
|
|
|
|
There is one new system call: 'vm86(struct vm86_struct * info)'. It's
|
|
not ready for general use yet - it works, but will probably need some
|
|
tweaking before being practical. But supporting a virtual 86 mode was
|
|
so easy after the mm rewrite that I felt it was worth implementing: the
|
|
vm86 code is less than 50 lines of C right now.
|
|
|
|
Linus
|
|
|
|
PS. The bright spot of the week goes to "The Oxford Beer Trolls" - all
|
|
UK inhabitants should probably be locked into some (big) mental
|
|
institution and TOBT should probably have a wing of their own, but
|
|
thanks to them linux can now call itself "beerware" :-)
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Suid/sgid
|
|
Message-ID: <1992Aug26.075014.9277@klaava.Helsinki.FI>
|
|
Date: 26 Aug 92 07:50:14 GMT
|
|
References: <1992Aug25.230907.10073@utstat.uucp>
|
|
Organization: University of Helsinki
|
|
Lines: 21
|
|
|
|
|
|
In article <1992Aug25.230907.10073@utstat.uucp> rafal@utstat.uucp (Rafal Kustra (summer student)) writes:
|
|
>Perhaps this should be posted to other group
|
|
>but I only have time to read this one + some local
|
|
>ones ;).
|
|
>OK, here is the beef.
|
|
>Either I don't understand the concept of suid/sgid
|
|
>(**very** possible) or there is something wrong.
|
|
>Say root creates a script like follows:
|
|
> cat $*
|
|
>and sets it suid.
|
|
>Now normal user could cat any r--.....
|
|
>file with it, right?
|
|
|
|
You aren't misunderstanding the concepts, but suid only works on actual
|
|
binary executables, not shell (or any other kind of) scripts. The
|
|
reasons are security, security and security. It /may/ be possible to
|
|
make a suid shell script secure, but it's so easy to make them a
|
|
(non-obvious) security hazard that it's definitely a bad idea to allow
|
|
them. So linux ignores the suid/sgid bits when executing scripts.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 0.97p2
|
|
Message-ID: <1992Aug28.230526.7253@klaava.Helsinki.FI>
|
|
Date: 28 Aug 92 23:05:26 GMT
|
|
References: <1992Aug28.123817.20350@csd.uch.gr>
|
|
Organization: University of Helsinki
|
|
Lines: 50
|
|
|
|
|
|
In article <1992Aug28.123817.20350@csd.uch.gr> kermits@pasifae.cc.uch.gr (Aggelos Keromyths) writes:
|
|
>I just tried 0.97p2 from the disk drive and it seemed to me a lot
|
|
> slower than 0.97 (no patch at all!!!)....When i did an `ls` it
|
|
> started reading the drive,then stopped,then again reading and finally
|
|
> presented the directory...but it was SLOW....
|
|
>What could be the problem ?
|
|
|
|
Hmm. I'd like to hear more about the problem - especially if you can
|
|
pinpoint it more closely (ie having used 0.97, 0.97.pl1 and now pl2) to
|
|
a specific patch. As most people said 0.97.pl1 was fast, I'm assuming
|
|
it's specific to patch2, but I'd like to have some confirmation before I
|
|
start looking into the problem.
|
|
|
|
If it's patch2, the problem is probably the changed mm code: having
|
|
different page tables for each process might be costlier than I thought.
|
|
The old (pre-0.97.pl2) mm was very simple and efficient - TLB flushes
|
|
happened reasonably seldom. With the new mm, the TLB gets flushed at
|
|
every task-switch (not due to any explicit flushing code, but just
|
|
because that's how the 386 does things when tasks have different cr3's).
|
|
|
|
I can optimize things a bit - it's reasonably easy to fake away some of
|
|
the TLB flushes by simply forcing the idle task to always use the same
|
|
cr3 as the last task did (as the idle task runs only in kernel memory,
|
|
and kernel memory is the same for all processes). So, I'd be interested
|
|
to hear if this simple patch speeds linux up at all:
|
|
|
|
- in linux/kernel/sched.c: schedule() - change
|
|
|
|
cli();
|
|
switch_to(next);
|
|
|
|
to
|
|
|
|
cli();
|
|
+ if (!next)
|
|
+ task[0]->tss.cr3 = current->tss.cr3
|
|
switch_to(next);
|
|
|
|
ie just add the one if-statement.
|
|
|
|
If the above makes a difference, I'd like to hear it, and I'll put it in
|
|
the standard kernel.
|
|
|
|
I'd also like to know what kind of machines the slowdown is most
|
|
noticeable on: assuming it's the mm changes I'd guess it's non-cached
|
|
machines (possibly SX-machines) for which a TLB flush will result in a
|
|
noticeable performance-loss. So if you notice a slowdown, please mail
|
|
me that kind of info as well.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: VM86
|
|
Message-ID: <1992Aug29.091200.16019@klaava.Helsinki.FI>
|
|
Date: 29 Aug 92 09:12:00 GMT
|
|
References: <1992Aug29.065940.1256@athena.mit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 68
|
|
|
|
|
|
In article <1992Aug29.065940.1256@athena.mit.edu> hammond@kwhpc.caseng.com (Kevin W. Hammond) writes:
|
|
>I see with patch 2 there is a vm86.h file and I recall seeing some mention
|
|
>of Linux supporting a virtual 8086 mode. Is this true and, if so, how does
|
|
>one use the virtual 8086 driver?
|
|
|
|
Yes, 0.97.pl2 has support for a vm86 mode: note that this is /not/ the
|
|
same as a DOS emulator, but it can be used for that. The interface
|
|
looks like this:
|
|
|
|
void vm86(struct vm86_struct * info);
|
|
|
|
where vm86_struct is defined in linux/vm86.h, and currently looks like
|
|
this:
|
|
|
|
struct vm86_struct {
|
|
struct vm86_regs regs;
|
|
unsigned long flag;
|
|
}
|
|
|
|
The flag value is not currently used, and I assume some additional
|
|
fields will be added eventually (a page dirty map for efficient screen
|
|
updating etc), but the above is enough for a simple DOS emulator.
|
|
|
|
The vm86() system call is pretty simple: it loads the registers with the
|
|
values in the 'regs' structure, and starts executing in vm86 mode. It
|
|
will return to protected mode when a signal happens: when this happens
|
|
the vm86 state is saved in the info structure and the signal handler is
|
|
executed in normal 32-bit mode. The signal handlers can then use the
|
|
vm86_struct information to see what is going on, and correcting any
|
|
errors etc.
|
|
|
|
A simple DOS emulator would look like this (pseudo-code):
|
|
|
|
global struct vm86_struct info;
|
|
|
|
main()
|
|
{
|
|
set up the DOS memory image at 0 - 1MB
|
|
set up SIGSEGV and SIGILL etc signal handlers
|
|
set up the initial regs etc in 'info'
|
|
while (1)
|
|
vm86(&info);
|
|
}
|
|
|
|
SIGILL_handler()
|
|
{
|
|
read 'info' to see why we got a SIGILL - if we can
|
|
emulate it, update 'info' and return, else exit
|
|
}
|
|
|
|
SIGSEGV_handler()
|
|
{
|
|
see SIGILL
|
|
}
|
|
|
|
SIGALRM_handler()
|
|
{
|
|
check the screen memory in the vm86 box, and update the real
|
|
screen every now and then. Do any other regular house-keeping
|
|
fn's.
|
|
}
|
|
|
|
Note that all this happens in user mode - the kernel doesn't really do
|
|
anything special about vm86 mode. And as the emulator and vm86 code is
|
|
in the same process, is should be possible to make it all relatively
|
|
efficient.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Beginners problems
|
|
Message-ID: <1992Aug29.195511.23402@klaava.Helsinki.FI>
|
|
Date: 29 Aug 92 19:55:11 GMT
|
|
References: <1564@lysator.liu.se>
|
|
Organization: University of Helsinki
|
|
Lines: 57
|
|
|
|
|
|
In article <1564@lysator.liu.se> lien@lysator.liu.se (Jan Lien) writes:
|
|
>Problems encountered with Linux 0.97 - help appreciated.
|
|
>I have succesfully booted Linux on my pc, root system on hard drive.
|
|
>However there are some serious problems, here listed in order of
|
|
>percieved severity.
|
|
>
|
|
>- mtools does not recognize my G: and H: ms-dos logical drives on my
|
|
> extended partition. I get the error ENOENT for these disks, but
|
|
> they are in the proper table, as I can use C-D-E-F disks. Fdisk
|
|
> finds them as hda9 and hda10.
|
|
> Is this an built in constraint in Linux? I got error messages when
|
|
> I tried to use hda10 for a linux disk.
|
|
|
|
This is probably a limit in the rootdisks - I think the /dev/hdaX
|
|
entries only go as far as /dev/hda8. The fix is very simple: just
|
|
create the needed special files with mknod:
|
|
|
|
# mknod /dev/hda9 b 3 9
|
|
# mknod /dev/hda10 b 3 10
|
|
|
|
etc. By doing a "ls -l /dev/hd*" you see the device numbers, and the
|
|
setup should be pretty obvious when reading them.
|
|
|
|
>- emacs over a serial port (/dev/ttys1 or /dev/ttys2) writes in the
|
|
> mode line. Is there an error in termcap (vt100 terminal), or is
|
|
> the number of lines set incorrectly? If it is number of lines,
|
|
> where (and how) do I change them?
|
|
|
|
The problem is the default number of rows that linux uses: I have
|
|
stupidly set the value to 25 instead of the normal 24 for a vt100
|
|
terminal. The fix should once more be very simple: do a
|
|
|
|
# stty rows 24 columns 80
|
|
|
|
or
|
|
|
|
# eval `resize`
|
|
|
|
on the line before staring up.
|
|
|
|
>- where do I find information on what all the options to a command
|
|
> does? (I can find out that there are -abcdefgh... to a command,
|
|
> but what do they do?)
|
|
|
|
The man-pages for most GNU things are in the sources - for some binaries
|
|
(like fsck) no man page is available, and you have to read the actual
|
|
source files.
|
|
|
|
>- while logged in on a serial port (/dev/ttys1 or /dev/ttys2) and
|
|
> doing a cat or cp to /dev/tty, if I repeatedly press ctrl-C
|
|
> I get logged out.
|
|
|
|
This is usually a mark of a bad compile of the shell, but I haven't seen
|
|
it (but I use my own port of most relatively simple things). Don't know
|
|
of any simple fix.
|
|
|
|
Linus
|
|
|
|
==================
|
|
==================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Will SLIP/PPP support be available soon?
|
|
Message-ID: <1992Aug30.222112.14969@klaava.Helsinki.FI>
|
|
Date: 30 Aug 92 22:21:12 GMT
|
|
References: <9208302107.AA27751@cue.bc.ca>
|
|
Organization: University of Helsinki
|
|
Lines: 14
|
|
|
|
|
|
In article <9208302107.AA27751@cue.bc.ca> tdzubin@cue.bc.ca (Thomas Dzubin) writes:
|
|
>
|
|
>Is the TCP/IP stuff slated to be included in the next 'standard' Kernel
|
|
>release (Linus?).
|
|
|
|
Yes, the tcp/ip subdirectory will be part of the next major release (ie
|
|
0.98), although I won't have it compiled into the standard bootimage.
|
|
People who need it can recompile the kernel easily enough, and it's not
|
|
essential for the rest of the system.
|
|
|
|
Linus
|
|
|
|
PS. And yes, 'ps', 'free' etc will be slightly broken once more, but
|
|
not too badly this time.
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: HD interrupts and IDE
|
|
Message-ID: <1992Aug30.221612.14848@klaava.Helsinki.FI>
|
|
Date: 30 Aug 92 22:16:12 GMT
|
|
References: <1992Aug30.161030.5898@ncsu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 26
|
|
|
|
|
|
In article <1992Aug30.161030.5898@ncsu.edu> big@garfield.catt.ncsu.edu (Alan Porter) writes:
|
|
>
|
|
>
|
|
>I have been getting the infamous "Unexpected HD interrupt" messages
|
|
>whenever I do anything that requires a lot of disk activity (like tar,
|
|
>or worse yet, rebuilding the kernel).
|
|
>
|
|
>Even more annoying, I also get the "HD timeout", the 4 second wait, and
|
|
>then the "HD-controller reset".
|
|
>
|
|
>First, my system:
|
|
>386-40, IDE drive (KLOC KL3120, 115 MB), 4 MB RAM, 60 MB Minix FS, 5 MB swap.
|
|
|
|
This is "normal" for kalok drives: they give these unexpected interrupts
|
|
for some unfathomable reason. I actually have a OEM manual for kalok
|
|
drives (thanks to whoever got it to me), but it doesn't mention this
|
|
kind of behaviour, so I guess it's a "undocumented feature", ie bug.
|
|
|
|
The problem can be at least partly fixed by defining HD_DELAY in hd.c to
|
|
something other than 0 - try different values until it disappears
|
|
(starting with 1000 or something like that). It should get rid of at
|
|
least most of the errors, as the problem seems to be that the drive
|
|
isn't ready to accept a new command even though it indicates it is in
|
|
the status register.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Broken symlinks ?? (followup)
|
|
Message-ID: <1992Aug31.125539.5089@klaava.Helsinki.FI>
|
|
Date: 31 Aug 92 12:55:39 GMT
|
|
References: <1992Aug31.054608.2405@athena.mit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 21
|
|
|
|
|
|
In article <1992Aug31.054608.2405@athena.mit.edu> hammond@kwhpc.caseng.com writes:
|
|
>
|
|
>0.97 seems to fail if the actual executable is owned by root and has a mode of
|
|
>711 (or actually, any mode that does not include read permission). If the executable
|
|
>is owned by a non-root user, things do work correctly. Is this some sort of security
|
|
>measure in the kernel? Maybe I (or anyone else) should look at the kernel code to
|
|
>find out!
|
|
|
|
It's a bug in 0.97.pl2, but I've corrected it already, and pl3 (out next
|
|
weekend) will take care of it. The problem is that the current symlink
|
|
code wants read-permissions to the file the symlink points to, due to me
|
|
not thinking all the changes through when I updated to the better
|
|
namei() routines in patch2.
|
|
|
|
The interim solution while waiting for patch3 is to make all executables
|
|
or directories that are pointed to by symlinks world readable, and the
|
|
problem should go away. In case somebody wants to correct in in their
|
|
kernel, the place to look at is fs/open.c and fs/namei.c - you should
|
|
move the permission check from open_namei() to sys_open().
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: .97 kernel and root disk/probs with swapping
|
|
Message-ID: <1992Aug31.194716.16232@klaava.Helsinki.FI>
|
|
Date: 31 Aug 92 19:47:16 GMT
|
|
References: <6026@pdxgate.UUCP> <1992Aug31.024052.12351@cc.umontreal.ca>
|
|
Organization: University of Helsinki
|
|
Lines: 76
|
|
|
|
|
|
In article <1992Aug31.024052.12351@cc.umontreal.ca> duperval@ERE.UMontreal.CA (Duperval Laurent) writes:
|
|
>In article <6026@pdxgate.UUCP> moyerg@rigel.cs.pdx.edu (gary a moyer) writes:
|
|
>>I am now in the process of getting the kernel to compile however I am getting
|
|
>>some strange results. I am using a 2M swap file (NOT partition). I get
|
|
>>some errors during swaps like:
|
|
>>rw_swap: bad swapfile
|
|
>>
|
|
>>This occurs during compilation using gcc 2.2.2d with 4M RAM and 2M swap.
|
|
>>Any ideas? Thanks.
|
|
>
|
|
>I have similar problems with kernel compilation. I have 4M of memory and 8M
|
|
>swap space. When compiling I get an out of memory, out of swap space error.
|
|
>I'm running all the stuff that was on mcc-interim 0.96c (gcc 2.2.2, kernel
|
|
>0.96c).
|
|
|
|
The "bad swapfile" problem is most usually due to (wait for it) a bad
|
|
swapfile. Hmm. Maybe I should use cryptic numbers and give something
|
|
like "ERR192SWP" instead - but that would also mean I'd have to write
|
|
some documentation on the thing. Not good.
|
|
|
|
Anyway, to make a swapfile, it's not enough to just run "mkswap" -
|
|
mkswap just writes the swap signature and some bad-page info. You
|
|
actually have to create the swapfile with the correct size and without
|
|
holes first. How you create the swapfile is totally up to you, but the
|
|
normal thing to do is:
|
|
|
|
# dd if=/dev/zero of=swapfile bs=1024 count=XXXX
|
|
|
|
where XXXX is the size of the file in kilobytes. You now have an empty
|
|
file which is exactly XXXX blocks long. To mark it swappable, you then
|
|
run mkswap on it and sync:
|
|
|
|
# mkswap swapfile XXXX
|
|
# sync
|
|
|
|
You now have a swapfile that is ready to be used: swapping is then
|
|
enabled with
|
|
|
|
# swapon swapfile
|
|
|
|
It's normal to put the 'swapon' command in your /etc/rc.local or
|
|
whatever - but you can do it by hand at each reboot if you want to.
|
|
|
|
Note that if you use a swap-paritition, you obviosuly don't have to
|
|
create it first with "dd" or whetever: just make sure you have a good
|
|
partition free, and run "mkswap" on it. With swap partitions, it's
|
|
generally a good idea to map out bad spots (or you'll get all sorts of
|
|
nasty errors), so use the "-c" switch for this:
|
|
|
|
# mkswap -c /dev/hdXX XXXX
|
|
# sync
|
|
|
|
and
|
|
|
|
# swapon /dev/hdXX
|
|
|
|
Swapping from a partition is a lot faster than swapping from a file, but
|
|
creating a file is easier, and it's easier to remove or resize.
|
|
|
|
>I never encountered this prblem before and I thought I had plenty of room.
|
|
>BTW, if anyone is interested, my make fails on chr_drv/tty_io.c when I have
|
|
>one console open and on chr_drv/console.c when two consoles are open.
|
|
>
|
|
>Also, what are these 'put_tty_queue' declarations disagree about 'inline'
|
|
>errors I get. What do they mean and could they be a hint as to what is going
|
|
>wrong?
|
|
|
|
the "disagree about inline" message is arguably a gcc bug: it's an
|
|
uncommonly stupid warning, and I don't know why gcc prints it. It's
|
|
probably easy to get rid of by just putting a "inline" before the
|
|
prototype in include/linux/tty.h, but I'm too lazy to even test it out.
|
|
The way gcc inline (nonstatic, nonexternal) functions work, it's totally
|
|
illogical to ask it to be prototyped that way. I don't mind too much:
|
|
as long as my only gripes with gcc are of this type, I'm happy.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: getting "bogus do_no_page"; strange vi behavior
|
|
Message-ID: <1992Aug31.195805.16530@klaava.Helsinki.FI>
|
|
Date: 31 Aug 92 19:58:05 GMT
|
|
References: <1992Aug31.145123.20915@novell.com>
|
|
Organization: University of Helsinki
|
|
Lines: 24
|
|
|
|
|
|
In article <1992Aug31.145123.20915@novell.com> bboerner@novdpd.uucp (Brendan B. Boerner) writes:
|
|
>Hello, using Linux 0.97 and later 0.92 Pl#2, when compiling (among
|
|
>other things) on a (386/16 w/a tad under 5MB of RAM) I start getting
|
|
>spurious "bogus do_no_page" messages. These don't appear on my
|
|
>girlfriend's computer (486/33 w/8MB RAM).
|
|
|
|
The "bogus do_no_page" error seems to happen on older 386 chips: they
|
|
sometimes give spurious page-faults. The linux approach is just to
|
|
print the warning message and return: it seems to work, and the 386 will
|
|
happily do the page translation correctly the next time around. You
|
|
should be able to safely uncomment the printk() that prints the message:
|
|
especially if linux doesn't seem to mind, and you have no other
|
|
problems.
|
|
|
|
>Also, after upgrading to 0.97, I noticed that vi has been acting
|
|
>funny. While inserting into a line, it starts adding spaces. Using ^L
|
|
>will redraw the screen and show that the spaces really don't exist.
|
|
|
|
I think this is due to an incorrect /etc/termcap: the correct fix is
|
|
naturally just to dump 'vi' and start using some emacs-like editor :-)
|
|
If that isn't possible, try getting a new termcap from a newer rootdisk,
|
|
and the problem should hopefully disappear.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: GNU kids on the block? (sorry... couldn't resist)
|
|
Message-ID: <1992Aug31.200513.16637@klaava.Helsinki.FI>
|
|
Date: 31 Aug 92 20:05:13 GMT
|
|
References: <la0fp9INNe3@appserv.Eng.Sun.COM> <1992Aug31.185733.21037@hpmcaa.mcm.hp.com>
|
|
Organization: University of Helsinki
|
|
Lines: 23
|
|
|
|
|
|
In article <1992Aug31.185733.21037@hpmcaa.mcm.hp.com> bryanf@hpmcaa (Bryan Ford) writes:
|
|
>lm@slovax.Eng.Sun.COM (Larry McVoy) writes:
|
|
>> steve@hacker.UUCP (Stephen M. Youndt) writes:
|
|
>> : but I feel very strongly about one thing [...]
|
|
>> : (according to rumors :-), and that's reloadable device drivers.
|
|
>> : It just seems that the micro kernel people are the only ones doing it.
|
|
>>
|
|
>> SunOS has had loadable device drivers, system calls, and functions (I'm
|
|
>> not sure what you use the last one for but there it is) since SunOS 4.1.
|
|
>
|
|
>So has AmigaDOS, since 1.0. :-)
|
|
|
|
I've got a month or two to implement them yet (evil grin) - I'm not even
|
|
up to 0.98, and I'm seriously thinking about it. No promises, but it
|
|
looks simple enough (after all: why do you think I gave the kernel a 1GB
|
|
virtual address space when changing the mm...)
|
|
|
|
Linus
|
|
|
|
PS. Seriously: it will take a few releases to get anything working -
|
|
0.98 may have some support for it, but these things take time: 0.12 had
|
|
the kernel support for shared libraries, but only now are they getting
|
|
mature.
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Swap files (was: Re: .97 kernel and root disk/probs with swapping)
|
|
Message-ID: <1992Sep1.083154.5064@klaava.Helsinki.FI>
|
|
Date: 1 Sep 92 08:31:54 GMT
|
|
References: <1992Aug31.024052.12351@cc.umontreal.ca> <1992Aug31.194716.16232@klaava.Helsinki.FI> <bjl.715328078@freyr>
|
|
Organization: University of Helsinki
|
|
Lines: 54
|
|
|
|
|
|
In article <bjl.715328078@freyr> B.J.Lippolt@research.ptt.nl writes:
|
|
>
|
|
>On the subject of swapping.
|
|
>
|
|
>Would it be possible to implement a scheme (a la SunOS) where you can
|
|
>'add' swap files to the swap space? E.g. I have a 8Mb swap partition, and
|
|
>when I need more (which happens once in a while) I just create a swap
|
|
>file and add it to my 8 Mb swap space. Would this be a minor (i.e. I
|
|
>can do it myself) or a major change?
|
|
|
|
It wouldn't be too hard: right now swap-map numbers are 31-bit entities,
|
|
and it would be pretty easy to use the high 7 bits to be indexes to the
|
|
swap-file, while keeping the low 24 bits as the page-in-swapfile index.
|
|
The changes would be pretty minimal, although it would need a thorough
|
|
understanding of the swapping setup. It's an interesting thought: I
|
|
might implement it myself some time when I have nothing better to do.
|
|
|
|
Anyway - if you are interested to implement it yourself, the thing to do
|
|
is roughly:
|
|
|
|
- change all the swap-file related variables to be arrays, and add a
|
|
"nr_swapfiles" variable that keeps count of how many are in use. The
|
|
variables are rougly:
|
|
swap_bitmap, swap_lockmap, swap_device, swap_file
|
|
as well as some optimization values (lowest_bit, highest_bit) used so
|
|
that the routines wouldn't have to go through the full bitmap all the
|
|
time.
|
|
|
|
It would look a bit like this:
|
|
|
|
struct swap_info {
|
|
struct inode * swap_file;
|
|
int swap_device;
|
|
char * swap_bitmap;
|
|
char * swap_lockmap;
|
|
int lowest_bit, int highest_bit;
|
|
} swap_info[MAX_SWAPFILES];
|
|
|
|
int nr_swapfiles = 0;
|
|
|
|
- change the "get_swap_page()", "rw_swap_page()" and "swap_free()"
|
|
functions to understand the high bits of the swap block-nr, and
|
|
naturally the sys_swapon() system call to enable it all.
|
|
|
|
The changes shouldn't actually be more than a couple of lines in each
|
|
place, and it shouldn't be more than a couple of hours work - assuming
|
|
you understand the code.
|
|
|
|
On the other hand, I've been looking into a "sys_swapoff()" system call
|
|
(which needs a bit more thought: you have to make sure the swapfile
|
|
isn't used by anything), and I might implement the aboev at the same
|
|
time. No promises.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: io.h/iopl
|
|
Message-ID: <1992Sep1.152745.17949@klaava.Helsinki.FI>
|
|
Date: 1 Sep 92 15:27:45 GMT
|
|
References: <1992Sep1.123648.18859@cbnewsd.cb.att.com>
|
|
Organization: University of Helsinki
|
|
Lines: 50
|
|
|
|
|
|
In article <1992Sep1.123648.18859@cbnewsd.cb.att.com> asmith@cbnewsd.cb.att.com (arthur.c.smith) writes:
|
|
>Hi,
|
|
> I have been working on an S3 driver for X and have an 80X86 asm program
|
|
>under dos that will setup the S3 chip correctly (and uses the enhanced
|
|
>rectangle fill command to clear the screen 8-)). I am trying to port this
|
|
>over to Linux. I am having two problems. 1) In trying to use sys_iopl()
|
|
>I tried to write it as _syscall1(void,110,int,3) and include unistd.h
|
|
>(and __LIBRARY__ defined). I get an error when this compiles. Is there
|
|
>a better way to do this?
|
|
|
|
That is not how you are supposed to use the _syscallX macros - they just
|
|
build the system call for you. You are supposed to do it like this:
|
|
|
|
static _syscall1(int,iopl,int,level) /* note: no semicolon */
|
|
|
|
main()
|
|
{
|
|
if (iopl(3)) {
|
|
perror("iopl");
|
|
exit(1);
|
|
}
|
|
....
|
|
}
|
|
|
|
Also note that gcc-2.2.2d should have the iopl() system call in the
|
|
standard library, so the _syscall1() things isn't needed at all if you
|
|
use the new gcc.
|
|
|
|
Then a word of warning: using iopl() is /not/ recommended. If you do
|
|
some stupid programming error, there is simply too big a chance to mess
|
|
up: disabling interrupts will totally hose the machine (which is why
|
|
iopl() only works for the super-user, but even the super-user should be
|
|
careful about it).
|
|
|
|
If you can get by by using the ioperm() system call (which only works
|
|
for the 0-0x3ff range of IO ports), use that instead. ioperm() gives
|
|
only access to a selected subset of the IO ports, and doesn't mean you
|
|
can disable interrupts etc.
|
|
|
|
> 2) Trying to port to C: When I include /usr/src/linux/
|
|
>include/asm/io.h and use outb I get undefined _outb referenced in .text. In
|
|
>looking at io.h it appears as if the outb function is defined as extern but
|
|
>is also defined in io.h???
|
|
|
|
Sounds weird: the inb() and outb() functions should work fine as long as
|
|
you have included <asm/io.h>. You might want to make sure you have
|
|
either "-finline-functions" or "-O" on the gcc command-line: I haven't
|
|
checked what gcc thinks about inline-functions without those.
|
|
|
|
Linus
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Swap files (was: Re: .97 kernel and root disk/probs with swapping)
|
|
Message-ID: <1992Sep1.153412.18136@klaava.Helsinki.FI>
|
|
Date: 1 Sep 92 15:34:12 GMT
|
|
References: <1992Aug31.194716.16232@klaava.Helsinki.FI> <bjl.715328078@freyr> <1992Sep1.083154.5064@klaava.Helsinki.FI>
|
|
Organization: University of Helsinki
|
|
Lines: 22
|
|
|
|
|
|
In article <1992Sep1.083154.5064@klaava.Helsinki.FI> torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) writes:
|
|
>In article <bjl.715328078@freyr> B.J.Lippolt@research.ptt.nl writes:
|
|
>>
|
|
>>On the subject of swapping.
|
|
>>
|
|
>>Would it be possible to implement a scheme (a la SunOS) where you can
|
|
>>'add' swap files to the swap space? E.g. I have a 8Mb swap partition, and
|
|
>>when I need more (which happens once in a while) I just create a swap
|
|
>>file and add it to my 8 Mb swap space. Would this be a minor (i.e. I
|
|
>>can do it myself) or a major change?
|
|
>
|
|
>It wouldn't be too hard: right now swap-map numbers are 31-bit entities,
|
|
[ explanation on how to implement it deleted ]
|
|
|
|
Ok, don't implement this: I already did it, and the (minor, as promised)
|
|
changes will be in the next patch. I'm currently running linux with two
|
|
different swapfiles, and it accepts up to 8 different files (and up to
|
|
128 after changing a single #define and recompiling). I haven't
|
|
implemented "swapoff()" yet, but I guess that too will be implemented
|
|
today.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: symlinks in 0.97pl2
|
|
Message-ID: <1992Sep3.103546.11747@klaava.Helsinki.FI>
|
|
Date: 3 Sep 92 10:35:46 GMT
|
|
References: <1992Aug31.020059.21670@athena.mit.edu> <1992Sep2.205903.6121@julian.uwo.ca>
|
|
Organization: University of Helsinki
|
|
Lines: 27
|
|
|
|
|
|
In article <1992Sep2.205903.6121@julian.uwo.ca> klode@syslab.csd.uwo.ca (Claude Morin) writes:
|
|
>SunOS 4.1.1 allows the following:
|
|
>
|
|
> r-x--x--x ... ff*
|
|
> lrwxrwxrwx ... bob -> ff*
|
|
>
|
|
> rubble[400] % cat bob
|
|
> #!/bin/sh -
|
|
> echo hello
|
|
> rubble[401] % ./ff
|
|
> hello
|
|
> rubble[402] % ./bob
|
|
> hello
|
|
>
|
|
>So I guess that linux is 'broken'. Perhaps linux is displaying correct POSIX
|
|
>behaviour...
|
|
|
|
No, linux isn't "posixly" correct: it's a bug that creapt in with the
|
|
changed symlink code in 0.97.pl2. The pl2 behaviour is to require
|
|
read-permissions of any target of a symlink, which is definitely wrong -
|
|
but I already corrected it, and pl3 (out Saturday) gets it right. pl3
|
|
also contains the multiple swap-file and swapoff() code, as well as
|
|
various other minor fixes. If pl3 is ok, I'll probably release it later
|
|
as 0.98 with no essential changes: just adding the tcpip directory and
|
|
possibly other "secondary" code.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Benchmarking under Linux (was Re: New 486 Suggestions?
|
|
Message-ID: <1992Sep4.100706.12473@klaava.Helsinki.FI>
|
|
Date: 4 Sep 92 10:07:06 GMT
|
|
References: <1992Aug31.180211.24228@news.acns.nwu.edu> <1992Aug31.210041.21832@novell.com> <1992Sep2.175417.11302@pool.info.sunyit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 28
|
|
|
|
|
|
In article <1992Aug31.210041.21832@novell.com> bboerner@novell.com (Brendan B. Boerner) writes:
|
|
>
|
|
>This has me wondering: does anyone have any benchmarking or performance
|
|
>metric programs for Linux? I've got a 386/16Mhz w/a tad under 5MB of
|
|
>RAM and it takes me somewhere between 3-4hours to build the kernel. On
|
|
>my girlfriend's machine, a 486/33 w/8MB RAM, it takes under 10
|
|
>minutes. I'd like to get an idea of where I could improve
|
|
>performance.
|
|
|
|
RAM space is the first thing to look for: gcc eats memory like mad, and
|
|
swapping is slow especially with the older kernels. I hope my changes
|
|
to the swap-algorithms in 0.97.pl3 will help people with slow machines:
|
|
it does seem to help even on my 8MB machine (kernel compilation time
|
|
when running X+some xterms fell from 18 minutes to 15). The main change
|
|
was to use a page-used counter instead of just a swp bitmap, which
|
|
allows fork() to be speeded up /a lot/ when swapping.
|
|
|
|
But processor speed can be very important under linux: not just for the
|
|
obvious user-level speedup, but due to better response to disk-drive
|
|
interrupts and the like. Faster machines may simply read the disk at
|
|
the full 1:1 interleave - with slower systems, it's possible that the HD
|
|
driver doesn't keep up, and you get the dreaded 1-block/rotation
|
|
syndrome, which really hurts when swapping. This problem is probably
|
|
especially notable on 386SX machines: the 386 interrupt handling is
|
|
inherently slow, but if the memory badwidth is further reduced by the
|
|
16-bit bus, interrupt response is probably ever worse.
|
|
|
|
Linus
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 0.97 patchlevel 3 available
|
|
Message-ID: <1992Sep5.184606.11361@klaava.Helsinki.FI>
|
|
Date: 5 Sep 92 18:46:06 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 110
|
|
|
|
|
|
[ This was already sent to the NORMAL mailing-list, and this is
|
|
essentially the same announcement. ]
|
|
|
|
Well, 0.97.pl3 is available both as full source (linux-0.97.3.tar.Z) and
|
|
as a context diff (linux-0.97.patch3.Z) on nic.funet.fi, in the normal
|
|
directory (pob/OS/Linux/testing/Linus). It seems some line is once more
|
|
down on the way to the US, so I haven't uploaded it to tsx-11 yet.
|
|
Also, I haven't been able to use the pub/Linux/Linus directory on
|
|
sunsite (it dies on me when I try to send the group password), so I
|
|
don't know when sunsite will get the new release.
|
|
|
|
Patch3 is almost 100kB even compressed, as there were quite big changes
|
|
in the mm and minix fs. No major new features: there are two new system
|
|
calls: swapoff(const char * swapfile) and wait4(), and linux accepts
|
|
several swap-files, but the rest of the thing is mostly bug-fixes or
|
|
simply rewrites.
|
|
|
|
Major changes:
|
|
- new swap-page handling: linux no longer uses just one bit to keep
|
|
track of used swap-space, but a counter for each swap-page. This
|
|
allows processes to share swap-pages after a fork(), and should
|
|
result in /major/ performance increases on machines with less memory.
|
|
I've seen better performance even with 8MB - I wouldn't be surprised
|
|
if 4MB machines would re-compile the kernel noticeably faster under
|
|
pl3. I'd be interested to hear numbers.
|
|
- The low 1MB memory that isn't used directly by the kernel is now
|
|
swappable memory, instead of being hardcoded for buffer cache. The
|
|
patches for this were originally by tytso, and I expanded on it a bit
|
|
more. This might also help better performance on 2-4MB machines.
|
|
Note that this does /not/ mean that you can use 1M machines for
|
|
linux: linux still needs some extended memory.
|
|
- the dosfs has been upgraded to dosfs.8 - patches by almesber.
|
|
- I edited the minix fs pretty heavily to remove a couple of race-
|
|
conditions. The same races still exist in the extended fs, as I
|
|
didn't have time to edit that yet. The minix-fs took precedence as I
|
|
know that better, and extfs isn't "official" yet anyway.
|
|
|
|
other changes:
|
|
|
|
- the mouse-driver now handles both Logitech (minor = 0) and PS/2
|
|
(minor = 1) busmice.
|
|
- there is a proc-fs for access to user memory/files etc.
|
|
- better support for the tcp/ip patches (but see below...)
|
|
- corrected symlink and /dev/[k]mem behaviour
|
|
- Lars Wirzenius' README (with minimal comments by me) and the GNU
|
|
COPYING notice are now part of the normal kernel setup, and can be
|
|
found in the tar-archive.
|
|
- the floppy ioctl() to get the FD parameters no longer requires root
|
|
priviledges. Thus, the msdos emulator runs even for a normal user.
|
|
|
|
Some comments on patchlevel 3:
|
|
|
|
mm:
|
|
|
|
The swap-page handling resulted in a reduction of swap-file (or
|
|
partition) size to a maximum of 16MB per file. It's nothing inherent to
|
|
the code, but it eased some algorithms, so I didn't bother coding around
|
|
it. After all, 16MB is enough for most people, and if you want more,
|
|
you can have up to 128 swapfiles of 16MB each. If I get enough
|
|
hate-mail about it, I might just try to find the energy to correct it.
|
|
Maybe.
|
|
|
|
Bigger swapfiles will still work, but linux will take advantage of only
|
|
the low 16MB. Also, there is no nifty logic to try to optimize the
|
|
usage of the swap-files: pages are simply allocated from one swap-file
|
|
until it fills up, and then the next swap-file is used.
|
|
|
|
The memory management changes break ps/free once more, but not very
|
|
much. Also, I changed the load-average counting, so 'w' also needs
|
|
slight editing. On the other hand, I made '/dev/kmem' mmap()able, and
|
|
'ps' and 'free' should be edited to take advantage of that: it should
|
|
result in much faster operation, as well as possibly using less real
|
|
memory.
|
|
|
|
fs:
|
|
|
|
The fs changes should remove at least two races - the races don't happen
|
|
very often, but they were theoretically possible, and might be the
|
|
reason for some fs corruption problems that have been reported. The
|
|
changes are related to the use of bmap() - the bmap interface doesn't
|
|
really lend itself to some things that it was used for. Re-writing
|
|
internal fs-functions not to use bmap not only should have removed any
|
|
races, but also actually resulted in cleaner code.
|
|
|
|
The proc-fs code isn't too beautiful, and I'll probably leave it out
|
|
from 0.98 unless I can make it loadable. We'll see. If anybody wants
|
|
to use it, you can do something like
|
|
|
|
# mount -t proc /dev/ram /proc
|
|
|
|
Instead of /dev/ram you can use any block device - it's not used, and is
|
|
only a dummy as the proc-fs doesn't actually use any external device.
|
|
(but note that the device is still marked as mounted, so you cannot
|
|
mount it for anything else).
|
|
|
|
kernel/mm/lib:
|
|
|
|
The TCP/IP patches are also essentially in 0.97.pl3 - not the full
|
|
TCP/IP directory, only the patches to the main kernel. NOTE!! I don't
|
|
like the 'grab_malloc_pages()' function, so I left that out, and added a
|
|
GFP_ATOMIC priority to get_free_page() that should be used instead. I
|
|
hope this will be used (Ross?), as it's a lot cleaner.
|
|
|
|
Also, I hope the tcp/ip people will clean up malloc() so that it doesn't
|
|
panic instead of returning NULL etc. Ugly, ugly. This is related to
|
|
the get_free_page(GFP_ATOMIC) changes, and I'd like to have patches as
|
|
soon as possible - tcp/ip won't be part of the standard kernel until
|
|
that can be cleaned up.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 0.97 patchlevel 3 available
|
|
Message-ID: <1992Sep7.080727.22080@klaava.Helsinki.FI>
|
|
Date: 7 Sep 92 08:07:27 GMT
|
|
References: <1992Sep5.184606.11361@klaava.Helsinki.FI> <1992Sep6.174044.28957@mo.hobby.nl>
|
|
Organization: University of Helsinki
|
|
Lines: 26
|
|
|
|
|
|
In article <1992Sep6.174044.28957@mo.hobby.nl> hans@mo.hobby.nl (Hans Oey) writes:
|
|
>
|
|
>Sure, 16 Mb is enough. Jeez, why would people ever need
|
|
>more then 640 Kb? Swap partitions give far better
|
|
>performance. Should we use up to 128 partitions?
|
|
>Please remove this limitation on Linux. Would a beer or
|
|
>two help you to find the energy?
|
|
|
|
Actually, beer-drinking doesn't seem to help programming very much :-)
|
|
|
|
And as people have been very concerned about the 16MB limit - don't
|
|
panic. It's not inherent to anything like the DOS 640kB limit, and is
|
|
there just because it was a bit easier to code that way - correcting it
|
|
later won't break anything. So while this version and the next may have
|
|
this limitation, it will go away (cleanly) - I just have to code some
|
|
more.
|
|
|
|
In case anybody is wondering why there is a 16MB limit in the pl3 code,
|
|
it's very simple: I use a character array to store the swap-page-counts,
|
|
and that array just happens to be 4096 bytes long, as that's the biggest
|
|
easily allocable unit of memory in the current kernel. So I just
|
|
allocate 4096 bytes: 4096 swap-page-counters = 16MB swapspace. So the
|
|
only thing that I have to do to allow bigger swapfiles is to allocate
|
|
more memory - SMOP, but irritating and boring.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Can't get 0.97pl3 to boot
|
|
Message-ID: <1992Sep7.081220.22423@klaava.Helsinki.FI>
|
|
Date: 7 Sep 92 08:12:20 GMT
|
|
References: <715841111snx@temple.demon.co.uk.demon.co.uk>
|
|
Organization: University of Helsinki
|
|
Lines: 23
|
|
|
|
|
|
In article <715841111snx@temple.demon.co.uk.demon.co.uk> pdc@temple.demon.co.uk.demon.co.uk (Piers Cawley) writes:
|
|
>
|
|
>But: I just pulled the new 0.97pl3 sources down from nic.funet.fi, hacked
|
|
>keyboard.c so that # and @ are in the right place and compiled. Thus far, no
|
|
>problems. However, when I copied /usr/src/linux/Image to /etc, did the rdev
|
|
>incantation over it and rebooted, I got the following message:
|
|
[ deleted ]
|
|
|
|
I'd be much happier if people using shoelace would try booting from a
|
|
floppy (or using lilo) - right now I always suspect a problem with
|
|
shoelace when I see these kinds of messages. Shoelace isn't supposed to
|
|
be used any more: please get lilo instead.
|
|
|
|
Shoelace has several problems:
|
|
- it doesn't handle holes in the Image file gracefully
|
|
- nobody seems to remember if there are any limits to the size shoelace
|
|
can load.
|
|
- shoelace cannot handle anything else but the minix fs.
|
|
|
|
So please try booting from a floppy, and resubmit the problem-report if
|
|
it still won't work.
|
|
|
|
Linus
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: HD-timeout problems
|
|
Message-ID: <1992Sep6.091302.29969@klaava.Helsinki.FI>
|
|
Date: 6 Sep 92 09:13:02 GMT
|
|
References: <1992Sep5.201920.3244@afterlife.ncsc.mil>
|
|
Organization: University of Helsinki
|
|
Lines: 41
|
|
|
|
|
|
In article <1992Sep5.201920.3244@afterlife.ncsc.mil> swaliff@afterlife.ncsc.mil (Steve Aliff) writes:
|
|
>I'm experiencing enough "HD-Timeout/HD-controller reset" messages to
|
|
>have become frustrated (irritated?) with it. This occurs both with
|
|
>the MCC release (.97p2) and the SLS release (.96c I believe). The
|
|
>SLS kernel has the "static int reset = 0" code in it. (I built a new
|
|
>kernel just for kicks. And The problem occurred BEFORE and after I
|
|
>built the kernel. ;-) ) The problem doesn't appear to happen when I
|
|
>crank the clock back from 33MHz to 10Mhz. Needless to say, that's
|
|
>not an acceptable solution.
|
|
|
|
There are two things you can do to alleviate the problem. In order of
|
|
"preferability":
|
|
|
|
- check that your IO bus runs at 8MHz or lower. Having a 11MHz bus
|
|
seems to be pretty standard setup, but it's unsafe, and running
|
|
beyond specs. Check out your extended setup (press DEL on bootup for
|
|
AMI bios or whatever) - it's usually something like
|
|
|
|
Bus speed: CLK/2, CLK/3, CLK/4, CLK/5.
|
|
|
|
for a 33MHz machine, CLK/4 should give an acceptable 8.25MHz clock for
|
|
the IO bus. Your setup may also allow you to set ISA bus waitstates,
|
|
and editing this field may help. Read the motherboard manual if you
|
|
have one.
|
|
|
|
- edit the HD_DELAY value in kernel/blk_drv/hd.c. It is normally 0,
|
|
but setting it to some other value may help some buggy
|
|
controllers/drives. Test out different values, starting off with
|
|
1000, and try to find the lowest value you can get that works.
|
|
|
|
And finally, you can also try changing the HD controller card: a cheap
|
|
multi-io card may have some weird problem that doesn't show up under
|
|
DOS. If you can swap cards with someone just for testing purposes, and
|
|
that fixes the problem, getting a new controller card may be the
|
|
solution. But as this may be impossible (or just too expensive, even
|
|
though IDE controllers should be cheap), try out the above first.
|
|
|
|
All the above fixes have helped - it may not in your case, but it's
|
|
worth checking out.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Linux 0.97p2 compatibility, GCC/SHAREDLIBS/JUMPTABLES.
|
|
Message-ID: <1992Sep6.185549.8454@klaava.Helsinki.FI>
|
|
Date: 6 Sep 92 18:55:49 GMT
|
|
References: <k=pnyqq.genie@netcom.com> <BALASUB.92Sep6121304@organ.cis.ohio-state.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 71
|
|
|
|
|
|
In article <BALASUB.92Sep6121304@organ.cis.ohio-state.edu> balasub@organ.cis.ohio-state.edu (Krishna Balasubramanian) writes:
|
|
>
|
|
>GCC main releases, the corresponding linux version and some
|
|
>distributions that use this version of GCC are approximately
|
|
>as follows: (see the GCC FAQ to find out more).
|
|
>
|
|
>1) 2.11c, May 19 linux 0.96 x11v1.0
|
|
>2) 2.2.2, Jun 27 > linux 0.96ap4 rootdisk-0.97, x11v1.1, SLS, MCC-0.96c.
|
|
>3) 2.2.2d Aug 12 > linux 0.97p1 rootdisk-0.97.1 , MCC-0.97p2
|
|
>
|
|
>There will probably be a new GCC version with X11 in a week or so.
|
|
|
|
Right. And in case anybody is nervous about the inverse relation (ie
|
|
running old programs under new kernel releases), that should always work
|
|
*barring bugs or "undocumented features"*. So all old binaries will
|
|
generally work on new versions of the kernel.
|
|
|
|
The ptrace() interface was changed in 0.95 - but that was before gdb was
|
|
publically available, and it broke no binaries.
|
|
|
|
Other than things like that, all "nice" programs should work from one
|
|
release to another. They may not be able to use new features (VFS etc),
|
|
but they should work as well as they ever did. Note that new gcc
|
|
versions, new features etc have made a recompile a good idea, but not
|
|
strictly necessary - I still use the following programs:
|
|
|
|
-rwxr-xr-x 1 torvalds uucp 9491 Aug 19 1991 /bin/sync
|
|
-rwxr-xr-x 1 torvalds uucp 20640 Aug 21 1991 /usr/bin/dhrystone
|
|
-rwxr-xr-x 1 torvalds uucp 72091 Sep 8 1991 /usr/bin/egrep
|
|
-rwxr-xr-x 1 torvalds uucp 72090 Sep 8 1991 /usr/bin/grep
|
|
-rwxr-xr-x 1 torvalds uucp 31176 Sep 13 1991 /usr/bin/od
|
|
|
|
and they work perfectly ok even though some of them are probably from
|
|
before the 0.01 release.
|
|
|
|
"non-nice" programs include the 'ps'-suite of programs that muck around
|
|
with kernel memory, and simply buggy programs that may work on older
|
|
releases. An example of the latter is anything that accesses memory that
|
|
it hasn't first allocated with 'brk()'. Those programs worked fine in
|
|
0.96, but 0.96b (I think) adopted the standard unix practice of sending
|
|
such a program a SIGSEGV.
|
|
|
|
Similarly, some 'mount' binaries won't work under 0.97.pl2 even though
|
|
they worked on pl1. They did a no-no that just happened to go unchecked
|
|
in the older kernel. Another example of a program that didn't work with
|
|
pl2 was "lilo" - it depended on the stat() system call returning the
|
|
same buffer-size as used internally in the kernel, which no longer is
|
|
necessarily true (and just happened to work in earlier versions).
|
|
|
|
Of course, there are also kernel bugs that can result in a binary not
|
|
working under a new release: this happened in pl2 with the symlink code
|
|
and to a lesser extent with /dev/mem. I generally try to fix that kind
|
|
of thing as fast as possible: pl3 has these corrected.
|
|
|
|
So if you are using an old kernel in the fear that things won't work
|
|
with a newer version, you should probably at least try to upgrade: the
|
|
chances are everything works fine even if you don't have the latest
|
|
user-level binaries. On the other hand, it may be only prudent to wait
|
|
a while until a release has shown itself to be stable - people who are
|
|
happy with their current kernel don't necessarily need to upgrade (but
|
|
don't be surprised if some new binary doesn't work).
|
|
|
|
Linus
|
|
|
|
PS. None of the above means that future versions of linux will
|
|
necessarily be 100% compatible. If I decide it's worth it, I might
|
|
break all old programs by doing something in a more clever way. But
|
|
I'll document it very clearly if I'm aware of the problem. And it's not
|
|
very likely: after all I'm running the same programs as everybody else
|
|
(and older versions than some), and I don't feel any terrible urges to
|
|
recompile everything.
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Progress report?
|
|
Message-ID: <1992Sep7.142246.22137@klaava.Helsinki.FI>
|
|
Date: 7 Sep 92 14:22:46 GMT
|
|
References: <1992Sep7.125312.20025@wam.umd.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 79
|
|
|
|
|
|
In article <1992Sep7.125312.20025@wam.umd.edu> joel@wam.umd.edu (Joel M. Hoffman) writes:
|
|
>I've been away for the Summer, and have missed most of c.o.l. Could
|
|
>someone who's been following it for the the Summer please let me know
|
|
>what I've missed. My last kernel is 0.96.
|
|
|
|
Get 0.97.pl4 - it seems to be stable (knock wood: I haven't gotten any
|
|
reports on it yet), and fixes a lot of things. Out today, and available
|
|
at "nic.funet.fi" "pub/OS/Linux/testing/Linus".
|
|
|
|
You might want to reinstall from scratch: the mcc or SLS releases look
|
|
promising, although I naturally haven't tried either. They get you the
|
|
current compiler and good versions of most of the standard tools
|
|
(although you should probably get the new 'mount' package that fixes a
|
|
lot of bugs. Good work - I liked it)
|
|
|
|
>Specifically, is there a DOS emulator yet? Have the VM86 patches at
|
|
>least made it into the standard distribution? Have my code-page
|
|
>patches made it into the standard distribution?
|
|
|
|
The original VM86 patches never made it into the standard kernel, but I
|
|
implemented a very similar vm86() system call when rewriting the mm (it
|
|
got very easy after that), and yes, there is a working msdos emulator
|
|
available. But it's very simple (but fun: having DOS running under X11
|
|
in an xterm sure gives a professional feeling to the system :-), and
|
|
gives up for any program that tries to do anything more complicated, so
|
|
it's not useable for "real" work yet. You can boot up a msdos floppy on
|
|
it, and play around with "dir" etc, but that's about it (has anybody
|
|
tried early versions of turbo-pascal? they should work on almost
|
|
anything). Expect to hack on it before it's actually practical.
|
|
|
|
As to any code-page patches, I have to admit I can't remember them, so I
|
|
don't know if the current kernel does something similar.
|
|
|
|
>My GCC library is marked lib92.04.06. Is there a new one? If I get
|
|
>the new one, do I have to recompile all of my programs? Do we have
|
|
>jump-tables yet so that when a newer library comes out programs won't
|
|
>have to be recompiled?
|
|
|
|
Wait a week or so for the next release, which hopefully will use the
|
|
"final" jump-table setup (as well as having new X11 libraries etc).
|
|
After that, the libraries should finally be stable (sure...) - the
|
|
libraries already seem to work well, but they were changed to take
|
|
advantage of the new mm setup, and the new version is in testing right
|
|
now.
|
|
|
|
lib92.04.06 is totally obsolete, and I doubt it can be found anywhere
|
|
any more (I think I removed it from my disk a month ago, and most people
|
|
probably never even saw it).
|
|
|
|
>Is there anything else I would want to know about?
|
|
|
|
Not really: 0.97.pl4 has some new features (/many/ new features when
|
|
compared to 0.96) and should be faster/better etc, but the best way to
|
|
find out is probably just to get the new system. Anything older than
|
|
0.96c.pl2 should probably not be used any more: 0.96c.pl2 is pretty
|
|
stable, but I do believe 0.97.pl4 is better in almost all respects (it's
|
|
bigger, but uses memory better, so you should actually have more free
|
|
mem anyway). It's not too much tested, so I'm still keeping my fingers
|
|
crossed, but even if there are bugs it's sure to be better than
|
|
unpatched 0.96 which could be crashed just by catting some binaries to
|
|
the VC's.
|
|
|
|
Tcp/ip is getting there, and I expect it to be in the standard kernel in
|
|
a couple of weeks. The extended filesystem is still in a bit of a flux,
|
|
but most other things should hopefully have calmed down now (I can't
|
|
guarantee all the minix-fs bugs are gone, but I feel pretty good about
|
|
it all). I'm finally getting happy about the kernel: I have no major
|
|
project going on any more. Naturally there are "details" like loadable
|
|
device drivers, shmem(), mmap() etc that are interesting, and need to be
|
|
implemented one way or another, but I've been feeling content since
|
|
0.97.2, and while I had to fix a couple of bugs in it, I still think 1.0
|
|
can be reality without any more major rewrites.
|
|
|
|
Linus
|
|
|
|
(Note: "feeling good about it" does NOT mean I'll stop working on it
|
|
after 1.0 - I distinctly remember feeling good about version 0.12, and
|
|
things have certainly changed since then. I just enjoy feeling good
|
|
about my code, so I try to do it as much as possible :-)
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Progress report?
|
|
Message-ID: <1992Sep7.173250.14016@klaava.Helsinki.FI>
|
|
Date: 7 Sep 92 17:32:50 GMT
|
|
References: <1992Sep7.125312.20025@wam.umd.edu> <1992Sep7.142246.22137@klaava.Helsinki.FI> <1992Sep7.163715.8229@fwi.uva.nl>
|
|
Organization: University of Helsinki
|
|
Lines: 29
|
|
|
|
|
|
In article <1992Sep7.163715.8229@fwi.uva.nl> vesseur@fwi.uva.nl (Joep Vesseur) writes:
|
|
>torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) writes:
|
|
>
|
|
>>Get 0.97.pl4 - it seems to be stable (knock wood: I haven't gotten any
|
|
>>reports on it yet),
|
|
>
|
|
>c'mone linus, give us a break: it's out for only 2hrs 40mins :-)
|
|
|
|
"ONLY" 2hrs 40mins? WHAT? How much time do you want to thoroughly test
|
|
out a new version? Lazy bums (*)
|
|
|
|
Actually, the pl4 changes are small enough that I hope there are no new
|
|
bugs hiding in there, so pl4 should be as stable as pl3 - with the added
|
|
advantage of not having the truncate bug. And I haven't gotten any bad
|
|
reactions to pl3 yet. On the other hand, I guess most people haven't
|
|
had time to upgrade even that far...
|
|
|
|
Even the pl3 patches, while big, were pretty simple: mostly cleanups and
|
|
some relatively straightforward swapping changes. While bugs are always
|
|
possible, the pl3/4 changes aren't of the type that keeps me awake
|
|
nights wondering if they will work, and are likely to work without major
|
|
problems (famous last words...)
|
|
|
|
Linus
|
|
|
|
(*) No, I'm not serious. Lack of smilies doesn't /always/ mean I'm dead
|
|
serious. Although some problems (especially HD-driver-related) have in
|
|
fact been corrected with the help of beta-testers that were ready to
|
|
test out several new versions/day. Unsung heroes, and all that...
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: GP faults and other trivia. . .
|
|
Message-ID: <1992Sep9.094232.17759@klaava.Helsinki.FI>
|
|
Date: 9 Sep 92 09:42:32 GMT
|
|
References: <1992Sep8.104048.1@ualr.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 87
|
|
|
|
|
|
In article <1992Sep8.104048.1@ualr.edu> nmspillers@ualr.edu writes:
|
|
>
|
|
>Anyhoo, the crux of my question is this--I'm working with Linux 0.96c
|
|
>(no patches yet, I want to solve this problem first) and trying to compile
|
|
>the kernel. I usually get a general protection fault somewhere in the kernel
|
|
>compile, this leads to a 4-11 meg (no lie!) core and the compile degenerates
|
|
>into signal 11 and 6 compiler errors. [ deleted ]
|
|
|
|
There has been some talk about these kinds of things lately, so I might
|
|
as well answer this..
|
|
|
|
If you see intermittent system failure (core dumping in gcc etc) that
|
|
are not easily repeatable, and don't necessarily happen at the same
|
|
location every time, there are a couple of possible reasons:
|
|
|
|
(a) kernel bugs
|
|
(b) weird/buggy hardware
|
|
(c) installation problems
|
|
|
|
(a) is certainly possible, although the fact that the same thing works
|
|
on a lot of other machines/setups does make me wonder about some
|
|
reports. (c) on the other hand usually results in easily repeatable
|
|
problems: they occur at the same point each time.
|
|
|
|
The above (mostly deleted) description does sound like a memory problem:
|
|
I should probably enable the NMI just to get a warning about it, but I
|
|
think current versions of linux disable it at bootup (I think I disable
|
|
it as soon as possible as the system cannot handle it during setup, and
|
|
after the system is up and running and a NMI could be handled, I never
|
|
re-enable them. I haven't looked into in a long time, so I could be
|
|
wrong.)
|
|
|
|
Alternate reasons are disk read errors, although the drivers do check
|
|
error conditions, and you should see kernel messages if they occur. And
|
|
if you are wondering "why only gcc?", the reason is probably that gcc is
|
|
the one program that usually eats up most of your memory, and actively
|
|
shuffles things around. So if you have a bad memory chip or the linux
|
|
disk driver has some problems, they usually show up in gcc - that's when
|
|
all the buffers are in use, and most of your memory is being excercised
|
|
a lot.
|
|
|
|
Note that memory problems are more likely to show up under linux-0.97
|
|
and newer: not because they are more fragile, but simply because they
|
|
use memory much more dynamically, and are more likely to take full
|
|
advantage of the memory you have got.
|
|
|
|
So the first things to check when seeing problems like the above is if
|
|
it's hardware-related: one good way to do this is usually to slow down
|
|
the machine to 8MHz or whetever, and see if the errors go away. If they
|
|
do, it's probably not a software bug (although races etc can be
|
|
timing-dependent: not very frequent). Other things you can do is try
|
|
out some system testing software: but note that linux usually is a
|
|
better system tester than most of these especially if they run onder
|
|
16-bit DOS and don't check 32-bit accesses to high memory etc.
|
|
|
|
----- change of subject
|
|
|
|
Reading the above, your reaction might be "he's obviously trying to
|
|
blame the hardware to get out of a tight spot". True. But it's also a
|
|
case of standard bug-reporting of a operating system: with most other
|
|
programs you can usually safely blame the program. While any bug report
|
|
is preferable to none, there are things you can do to help me find it
|
|
all. So I might as well use this post to mention some of them, true of
|
|
most bug-reports:
|
|
|
|
- mention all the necessary information. Too much data can be
|
|
confusing (and boring), and too little can lead to other problems, so
|
|
this isn't easy. Use your own judgement, but THINK about it a bit
|
|
before.
|
|
|
|
- try to make it repeatable, and find the minimal example. This is
|
|
also almost always difficult or impossible, as the obvious bugs are
|
|
certainly fixed, but it helps /a lot/ if you can simplify the bug-report
|
|
a bit.
|
|
|
|
- if you cannot make it repeatable or simple, assume it's a hardware
|
|
problem, and start from that. Try different setups. If possible,
|
|
different machines, but if not, try to change your setup as much as
|
|
possible, and see if anything changes.
|
|
|
|
- If the problem changes or disappears due to hardware changes, it
|
|
might still be a software bug, so you might still want to send it in as
|
|
such. But add your test-results to the report. And if the problem
|
|
seems to be hardware-independent, mentioning the fact that you tested it
|
|
it in your report is likely to get your report a higher priority.
|
|
|
|
Linus
|
|
|
|
==================
|
|
==================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: problems making a swap partition useable
|
|
Keywords: 0.97.1
|
|
Message-ID: <1992Sep9.095543.19608@klaava.Helsinki.FI>
|
|
Date: 9 Sep 92 09:55:43 GMT
|
|
References: <1992Sep8.162500.16716@tamsun.tamu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 34
|
|
|
|
|
|
In article <1992Sep8.162500.16716@tamsun.tamu.edu> greg@carnivore.tamu.edu (Greg Economides) writes:
|
|
>
|
|
>When I do: mkswap -c /dev/hda5 10583, I get this:
|
|
>
|
|
> mkswap: will not try to make swapdevice on /dev/hda5
|
|
>
|
|
>I am wondering if mkswap is complaining because the partition does not
|
|
>end at an even boundary (or whatever it is that the '+' indicates, I don't
|
|
>remember the exact wording in the fdisk intro file).
|
|
|
|
Hmm. This sounds like the message I put into the original mkfs sources
|
|
that checked that mkfs didn't write over the full disk devices (/dev/hda
|
|
and /dev/hdb). And as mkswap evolved from that, I assume the test also
|
|
did.
|
|
|
|
The reason you see it on /dev/hda5 is that I wrote mkfs (and the
|
|
original mkswap) back in prehistoric times when linux still used the
|
|
minix disk-numbering scheme: under minix, /dev/hdb0 (linux's /dev/hdb)
|
|
has the same major/minor as linux's /dev/hda5. I guess the test has
|
|
never gotten updated, as you see the problems so seldom (most people
|
|
don't have or don't use a /dev/hda5).
|
|
|
|
Actually there is a (ugly) workaround for this, assuming you have an
|
|
error-free disk. Just do
|
|
|
|
# mkswap tmp 10583
|
|
# cp tmp /dev/hda5
|
|
|
|
This won't try to find bad blocks, though, so it's not always a
|
|
solution. The real solution is to find the mkswap/mkfs sources, look
|
|
the the error message, and either remove the check, or update it to use
|
|
the new minor numbers (3,0 and 3,64 instead of 3,0 and 3,5).
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Unable to use floppies under Linux
|
|
Message-ID: <1992Sep10.193917.5396@klaava.Helsinki.FI>
|
|
Date: 10 Sep 92 19:39:17 GMT
|
|
References: <1992Sep10.182648.12564@eua.ericsson.se>
|
|
Organization: University of Helsinki
|
|
Lines: 35
|
|
|
|
|
|
In article <1992Sep10.182648.12564@eua.ericsson.se> tmpcms@eua.ericsson.se (Carl-Michael Skoog) writes:
|
|
>I've installed Linux about 20-30 times, and every single time the filesystem
|
|
>ends up corrupted when I use some floppy-related command like tar(with /dev/fd0
|
|
>as file, pax and GNU tar alike), dd, fdformat...
|
|
|
|
[ *BAD* problems deleted ]
|
|
|
|
This certainly looks like the linux floppy driver has /major/ problems
|
|
with your machine - just as a guess I'd assume it's some weird DMA
|
|
incompatibility as the floppy driver is the only thing in the standard
|
|
kernel which uses DMA.
|
|
|
|
It would seem that the DMA accesses go all over your memory, resulting
|
|
in weird and incorrect behaviour - writing over the wrong buffers,
|
|
kernel data structures etc.
|
|
|
|
>Could it be my hardware that is stabbing my back? 386BSD and MINIX works
|
|
>fine though.
|
|
>I will be infinitely grateful if someone can help me with this.
|
|
|
|
As minix and 386bsd works, it would certainly seem to be a bug in the
|
|
floppy driver. A very weird one, though - this is the first such report
|
|
I've ever seen.
|
|
|
|
If you are at all familiar with the PC's DMA setup, I'd suggest you take
|
|
a look into floppy.c: setup_DMA(), which is the obvious first suspect.
|
|
If anybody can come up with suggestions on what could be wrong, I'd
|
|
certainly be interested - but as I cannot see the problem, I'm somewhat
|
|
at a disadvantage to find it.
|
|
|
|
On possibility is simply that it's a timing problem: even re-writing the
|
|
floppy driver to use the slower outb_p commands instead of the current
|
|
immoutb_p() might help.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 0.97 patchlevel 5 available
|
|
Message-ID: <1992Sep12.182131.2168@klaava.Helsinki.FI>
|
|
Date: 12 Sep 92 18:21:31 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 35
|
|
|
|
|
|
The subject says it all: the newest patches have been uploaded to
|
|
nic.funet.fi: pub/OS/Linux/testing/Linus. Patchlevel 5 is available both
|
|
as complete source (linux-0.97.5.tar.Z) or as a biggish patch against
|
|
patchlevel 4 (linux-0.97.patch5.Z).
|
|
|
|
Patch 5 fixes the extended filesystem problems (thanks to Remy Card), as
|
|
well as including many smaller fixes (some more fs cleanups, the CDROM
|
|
patches and several other minor changes). Pl5 finally removes even the
|
|
last few header-files that were incompatible with the normal headers, so
|
|
the "-nostdinc -I$(KERNELHDRS)" stuff is gone.
|
|
|
|
Patch 5 should also fix the problems with iopl() that resulted in the
|
|
X8514-server having problems with 0.97.pl2 and above.
|
|
|
|
In case people are wondering, my schedule for 1.0 looks something like
|
|
this:
|
|
|
|
- 0.98 out in about a week: this is essentially 0.97.5 + the tcp/ip
|
|
directory, as well as any fixes that may come up. I'll try to get
|
|
the loadable driver interface into it too.
|
|
|
|
- 0.99 out after 0.98 has been shaken down: a month or so.
|
|
|
|
- 1.0 will be the same as 0.99: the only changes will be eventual
|
|
trivial bug-fixes in case 0.99 has some problems. This is just to
|
|
try to get over the "X.0" bug syndrome.
|
|
|
|
There are a few on-going projects: depending on circumstances these will
|
|
be implemented sooner or later, so I won't give any promises. These
|
|
include: loadable drivers/fs's (alpha-patches already availabla), full
|
|
support for different block-sizes (some work still required), and a
|
|
extensive rewrite of the mm routines (I'll want to make a vmm interface
|
|
similar to the vfs interface for the filesystem routines).
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 0.97 patchlevel 5 available
|
|
Message-ID: <1992Sep12.224241.5864@klaava.Helsinki.FI>
|
|
Date: 12 Sep 92 22:42:41 GMT
|
|
References: <1992Sep12.182131.2168@klaava.Helsinki.FI> <15255@borg.cs.unc.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 42
|
|
|
|
|
|
In article <15255@borg.cs.unc.edu> martin@franck.cs.unc.edu (Kevin Martin) writes:
|
|
>In article <1992Sep12.182131.2168@klaava.Helsinki.FI> torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) writes:
|
|
>
|
|
>>Patch 5 should also fix the problems with iopl() that resulted in the
|
|
>>X8514-server having problems with 0.97.pl2 and above.
|
|
>
|
|
>I've just tested the 8514/A X server with 0.97.pl5 and it works
|
|
>beautifully. The problems with the X server appearing to hang when
|
|
>quitting from TWM with the 0.97.pl2 and more recent kernels are
|
|
>fixed. Thanks Linux!
|
|
|
|
Actually, thank Kevin Martin: he was able to give me a good bug-report
|
|
that made it pretty easy to track it all down (he even had a minimal
|
|
program which showed the incorrect behaviour).
|
|
|
|
Other changes that pl5 has include:
|
|
|
|
- slightly edited <asm/io.h>: easily editable IO delay instructions.
|
|
The default delay-instruction is now a 'inb' from port 0x80: this
|
|
should be a bit safer than the outb. But you can easily change it to
|
|
the "standard" two short jumps or whatever.
|
|
- malloc() is cleaned up, and 'malloc_grab_pages()' is gone (Biro)
|
|
- I cleaned up the internal inode structure a bit: i_data[] is no
|
|
longer part of the base inode, but is instead part of the union of
|
|
fs-dependent info. Pipes also have their own cleaner interface.
|
|
- the msmouse patches are in: currently there is no valid test that a
|
|
msmouse actually exists, so linux always says "mouse detected and
|
|
installed", but that is nothing to worry about.
|
|
- the msdos-fs one-line performance patch is in.
|
|
|
|
The most important fix for ext-fs users should be the fact that pl5
|
|
should fix the ext-fs bugs: the ext-fs patches are essentially the same
|
|
that pl3+4 did to the minix-fs. So now the new 'strip' should be safe
|
|
on all filesystem types.
|
|
|
|
Note that the upcoming release of gcc (and thus the upcoming X11 2.0)
|
|
will require at least 0.97.pl4 in order to be safely used: I'll probably
|
|
make a bootimage of 0.97.5 available for those that don't want to (or
|
|
are unable to) recompile the kernel. I'll just wait a day or two to see
|
|
if there are some unexpected problems with pl5.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 0.97 patchlevel 5 available
|
|
Message-ID: <1992Sep13.085901.16695@klaava.Helsinki.FI>
|
|
Date: 13 Sep 92 08:59:01 GMT
|
|
References: <1992Sep12.182131.2168@klaava.Helsinki.FI> <1992Sep12.214957.620@cambria.columbus.oh.us>
|
|
Organization: University of Helsinki
|
|
Lines: 52
|
|
|
|
|
|
In article <1992Sep12.214957.620@cambria.columbus.oh.us> bjones@cambria.columbus.oh.us (Bill Jones) writes:
|
|
>
|
|
>Well I rushed out and got 0.97.5, compiled it and installed it. All of a
|
|
>sudden I began to get HD timeout errors (something I haven't seen since
|
|
>0.12). Switched back to 0.97.4 and they all went away!?
|
|
|
|
Argghh. It's probably the outb_p() changes - that is the only thing in
|
|
the HD driver that changed. Look into linux/kernel/blk_drv/hd.c - if
|
|
you get pl5 by getting the full source, it doesn't define REALLY_SLOW_IO
|
|
any more, as I hoped it would be unnecessary. It looks like
|
|
|
|
#undef REALLY_SLOW_IO
|
|
#include <asm/system.h>
|
|
#include <asm/io.h>
|
|
#include <asm/segment.h>
|
|
|
|
and you should probably change the "undef" to "define". I'll change it
|
|
back for the next version - it seems the REALLY_SLOW_IO define is still
|
|
needed on some machines.
|
|
|
|
If the above doesn't help (it should), you might also take a look at the
|
|
actual delay instruction used to slow down IO. This can be found in
|
|
linux/include/asm/io.h, and looks something like this:
|
|
|
|
#ifdef SLOW_IO_BY_JUMPING
|
|
#define __SLOW_DOWN_IO __asm__ __volatile__("jmp 1f\n1:\tjmp 1f\n1:")
|
|
#else
|
|
#define __SLOW_DOWN_IO __asm__ __volatile__("inb $0x80,%%al":::"ax")
|
|
#endif
|
|
|
|
#ifdef REALLY_SLOW_IO
|
|
#define SLOW_DOWN_IO { __SLOW_DOWN_IO; __SLOW_DOWN_IO; __SLOW_DOWN_IO; __SLOW_DOWN_IO; }
|
|
#else
|
|
#define SLOW_DOWN_IO __SLOW_DOWN_IO
|
|
#endif
|
|
|
|
You might change the default slow-down instruction from
|
|
|
|
__asm__ __volatile__("inb $0x80,%%al":::"ax")
|
|
|
|
to
|
|
|
|
__asm__ __volatile__("outb %al,$0x80")
|
|
|
|
Whatever you do, I'd be very interested to hear what you did, and if it
|
|
worked, so that I can get it fixed for the next version.
|
|
|
|
Also, there seems to be some problem with the extended fs patches:
|
|
either Remy's patches or the changes I made to the inode setup. So pl5
|
|
still seems to have some irritating bugs. I'll try to find it.
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 0.97 patchlevel 5 available
|
|
Message-ID: <1992Sep13.103027.17973@klaava.Helsinki.FI>
|
|
Date: 13 Sep 92 10:30:27 GMT
|
|
References: <1992Sep12.182131.2168@klaava.Helsinki.FI> <1992Sep12.214957.620@cambria.columbus.oh.us> <1992Sep13.085901.16695@klaava.Helsinki.FI>
|
|
Organization: University of Helsinki
|
|
Lines: 14
|
|
|
|
|
|
In article <1992Sep13.085901.16695@klaava.Helsinki.FI> torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) writes:
|
|
>
|
|
>Also, there seems to be some problem with the extended fs patches:
|
|
>either Remy's patches or the changes I made to the inode setup. So pl5
|
|
>still seems to have some irritating bugs. I'll try to find it.
|
|
|
|
Well, I also found out that at least named pipes got broken by my inode
|
|
reorganizations. Hope nobody is using them - the fix is simple (it's
|
|
actually just a lack of proper wait-queue initializations), but I won't
|
|
make a patch available until I've found most of these kinds of silly
|
|
problems. But if you know you are using named pipes, don't upgrade to
|
|
pl5 yet.
|
|
|
|
Linus
|
|
|
|
==================
|
|
==================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: gcc 2.2.2 math lib bug???
|
|
Keywords: weirdness
|
|
Message-ID: <1992Sep13.175040.24459@klaava.Helsinki.FI>
|
|
Date: 13 Sep 92 17:50:40 GMT
|
|
References: <1992Sep13.161713.8191@monu6.cc.monash.edu.au>
|
|
Organization: University of Helsinki
|
|
Lines: 17
|
|
|
|
|
|
In article <1992Sep13.161713.8191@monu6.cc.monash.edu.au> int177c@aurora.cc.monash.edu.au (Jae Won) writes:
|
|
>
|
|
> I found a weidness in gcc2.2.2d. It may be my silly code but I tested
|
|
>the code with gcc compiler at uni(gcc...not sure of the version) and it worked
|
|
>fine...well, like what I expected. The code is a edited fragment of a code
|
|
>I am writing to do a monte carlo stuff. I use exp() function.
|
|
|
|
It's more likely to be a problem with the 387-emulator: the emulator
|
|
does *not* handle under/over-flows gracefully in its current form. The
|
|
fix is either to get a real 387, check for underflows by hand, or fix
|
|
the emulator. Fixing the emulator is obviously the optimal solution,
|
|
but it takes some doing, and nobody seems interested (most people,
|
|
including me, seem to have a 387). The fact that the emulator works
|
|
"well enough" for most things makes it a pretty boring project, so
|
|
nobody has done anything about it.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: patchlevel 6
|
|
Message-ID: <1992Sep20.171956.26108@klaava.Helsinki.FI>
|
|
Date: 20 Sep 92 17:19:56 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 27
|
|
|
|
|
|
You all know what the subject line means by now: in case you want to
|
|
track my kernel versions, the weekly patch is available at nic.funet.fi,
|
|
pub/OS/Linux/testing/Linus.
|
|
|
|
This patch does not contain any major bug-fixes: it corrects named pipes
|
|
that broke with pl5, and has some minor changes in the IO-instructions
|
|
and the hd-driver, but those shouldn't matter for most of you.
|
|
|
|
It does contain all the scsi-patches that I've gotten so far, so if the
|
|
bootup sequence died on you in the scsi code, pl6 should correct this.
|
|
|
|
The major part of the patch is tytso's serial line changes, making the
|
|
tty structures dynamic. No more NR_PTY's - the number of pty's is now
|
|
bounded only by the minor number setup (max 64 pty's) or the amount of
|
|
memory available (opening a pty requires a page of memory for tty
|
|
queues). Similarly for serial lines.
|
|
|
|
The above just means that while pl6 can be useful, the changes to pl5
|
|
aren't big enough to worry about. Most people don't use named pipes, it
|
|
seems, and the other changes are either cosmetic or hardware-dependent.
|
|
I still hope people upgrade, if only so that I can get new bug-reports.
|
|
|
|
I had hoped to release 0.98 this weekend, but studies and the scsi/hd
|
|
problems put an end to that. 0.98 should be out next weekend or so.
|
|
Expect the tcp/ip subdirectory and possibly some mm changes.
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: patchlevel 6
|
|
Message-ID: <1992Sep20.214558.1338@klaava.Helsinki.FI>
|
|
Date: 20 Sep 92 21:45:58 GMT
|
|
References: <1992Sep20.171956.26108@klaava.Helsinki.FI>
|
|
Organization: University of Helsinki
|
|
Lines: 12
|
|
|
|
|
|
In article <1992Sep20.171956.26108@klaava.Helsinki.FI> torvalds@klaava.Helsinki.FI (Linus Torvalds) writes:
|
|
>You all know what the subject line means by now: in case you want to
|
|
>track my kernel versions, the weekly patch is available at nic.funet.fi,
|
|
>pub/OS/Linux/testing/Linus.
|
|
|
|
Arggh. While the full source was ok, the patch was generated with
|
|
"+ignore-all-spaces" in the hope that it would be smaller that way. And
|
|
yes, the patch is smaller, but it doesn't actually work :-( The full
|
|
source to pl6 is ok, but if you got only the patch, you'll get errors
|
|
when applying it. I'll put a corrected patch at nic at once.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.unix.sysv386,comp.windows.x,comp.os.linux,comp.unix.bsd,comp.os.mach,comp.sys.ibm.pc.misc,comp.sys.ibm.pc.hardware
|
|
Subject: Re: Free software and the future of support for Diamond products
|
|
Keywords: Diamond, free-software
|
|
Message-ID: <1992Sep21.164816.9162@klaava.Helsinki.FI>
|
|
Date: 21 Sep 92 16:48:16 GMT
|
|
References: <1992Sep20.000851.2641@cbnewsj.cb.att.com> <1992Sep21.150821.9472@crd.ge.com> <1992Sep21.154451.10085@cbnewsj.cb.att.com>
|
|
Organization: University of Helsinki
|
|
Lines: 33
|
|
|
|
|
|
In article <1992Sep21.154451.10085@cbnewsj.cb.att.com> dwex@cbnewsj.cb.att.com (david.e.wexelblat) writes:
|
|
>In article <1992Sep21.150821.9472@crd.ge.com> davidsen@crd.ge.com (bill davidsen) writes:
|
|
>>
|
|
>> Youu've missed something. The kernel supports vm86 operation, and it
|
|
>> is possible to drop into real mode, allow access to the i/o ports
|
|
>> needed, and run the BIOS in real mode, then exit back to protected mode.
|
|
>> I am not suggesting this, I'm just saying it can be done.
|
|
>
|
|
>Well. Learn something new every day. Does anyone have a code sample that
|
|
>shows how this may be done?
|
|
|
|
Hmm. The linux alpha DOS-emulator might be able to do it with some
|
|
minor tweaking: you'd have to get the initial 'int 0x10' address from
|
|
somewhere (as it's normally over-written by the kernel), and the process
|
|
should do a mmap("/dev/mem") the put the bios/screen memory into the
|
|
normal address space. Additionally, you can use the iopl() system call
|
|
to give the process IO priviledges before switching to vm86 mode - that
|
|
way you don't even have to emulate any IO instructions. Some additional
|
|
setup to initialize the normal BIOS data areas, and off you go. The
|
|
only thing that doesn't work with the current linux setup is to get the
|
|
original offset to the 'int 0x10' call: a minor kernel diff to look it
|
|
up at bootup would be possible.
|
|
|
|
I don't know how other systems would do it, but it should certainly be
|
|
possible - but I do not think it's a good idea. It's ugly, and it's not
|
|
guaranteed to be safe: the BIOS call might do something nasty while it
|
|
has IO priviledges if it assumes a normal DOS setup and the vm86 setup
|
|
is incomplete. Besides, that way you can only set modes that the BIOS
|
|
knows about - the X386 (XFree86) driver has already proven that
|
|
programming the chipset directly can lead to much better results (ie
|
|
nonstandard resolutions etc).
|
|
|
|
Linus
|
|
|
|
==============================
|
|
==============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 0.97p6: no PGUP; NUM_LOCK?
|
|
Message-ID: <1992Sep23.072224.24351@klaava.Helsinki.FI>
|
|
Date: 23 Sep 92 07:22:24 GMT
|
|
References: <1992Sep23.014210.19842@unislc.uucp>
|
|
Organization: University of Helsinki
|
|
Lines: 28
|
|
|
|
|
|
In article <1992Sep23.014210.19842@unislc.uucp> erc@unislc.uucp (Ed Carp) writes:
|
|
>Two questions:
|
|
>
|
|
>1. Somewhere between p5 and p6, I lost Page Up and Page Down key
|
|
> functionality for vi. Any bright ideas?
|
|
|
|
In order to be more vt100 compatible, those keys (and the function keys)
|
|
now send slightly different codes. I haven't seen any problem: at least
|
|
uemacs worked fine both before and after. It's just an ongoing project
|
|
of mine to foil all vi-users :-)
|
|
|
|
>2. Isn't there a patch to turn NUM LOCK off when linux fires up?
|
|
|
|
It's already in the standard kernel (as of pl6) - I think the thing to
|
|
do is to add
|
|
|
|
-DKBD_DEFLOCK=0
|
|
|
|
to the KEYBOARD define in the main Makefile (the same line that contains
|
|
the "-DKBD_FINNISH" or whatever). You can also define any other standard
|
|
lock defaults by changing the above to
|
|
|
|
-DKBD_DEFLOCK=NUMLOCK+CAPSLOCK
|
|
|
|
or similar. I haven't tested it - the define might be wrong, but check
|
|
the keyboard.c file to see how it works.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 0.97 p6's README etc.
|
|
Message-ID: <1992Sep23.124326.10022@klaava.Helsinki.FI>
|
|
Date: 23 Sep 92 12:43:26 GMT
|
|
References: <1992Sep23.051532.22588@wixer.cactus.org>
|
|
Organization: University of Helsinki
|
|
Lines: 34
|
|
|
|
|
|
In article <1992Sep23.051532.22588@wixer.cactus.org> rhodesia@wixer.cactus.org (Felix S. Gallo) writes:
|
|
>
|
|
> The README under 0.97 p6 now seems to have a few minor
|
|
>faults. NR_PTYS, which it suggests is in include/linux/tty.h,
|
|
>is no more. It seems to have been replaced by NR_CONSOLES, but
|
|
>I'm hazy on this point right now.
|
|
|
|
NR_PTY's does indeed not exist any longer - pty's are now dynamic, and
|
|
you can have as many as the naming scheme (you fight it out) and the
|
|
minor numbering (max 64) allows (assuming you have enough memory).
|
|
|
|
NR_CONSOLES is a distinct entity: this defines how many virtual consoles
|
|
you have (normally 8, although I think the standard init setup starts a
|
|
login process only on the first 4). It's still hardcoded, and I don't
|
|
think there is any pressing need to make the VC's dynamic.
|
|
|
|
> But the really heinous thing, the absolutely worst
|
|
>thing that could happen -- and the reason I'm dumping linux
|
|
>immediately and buying windows 3.1 -- is that, at the very end
|
|
>of the README, ever since 0.96c (as far as I can tell), the
|
|
>signature is "Lars Wirzeniu". Please fix this glaring kernel
|
|
>error *IMMEDIATELY!*
|
|
|
|
This isn't a bug - it's just that I'm too lazy to write anything like
|
|
the README, so Lasu wrote it, and I just put my own comments in there.
|
|
But I can understand that windows 3.1 would seem like a much better
|
|
alternative after reading the README. The "bug" is almost as heinous as
|
|
the wrong patchlevel numbers that plagued the 0.96XX releases...
|
|
|
|
(and if the "bug" is the missing "s" from "Wirzeniu" (yes, I like
|
|
"quotes" (and parentheses)), then that is probably just due to 8-char
|
|
user-name truncation that has taken over from unix)
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Finally: 0.98
|
|
Message-ID: <1992Sep29.211121.15619@klaava.Helsinki.FI>
|
|
Date: 29 Sep 92 21:11:21 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 35
|
|
|
|
|
|
Sorry for being late - I can't even show any great new features in 0.98,
|
|
but at least it's out now, and available at the normal place (ie at
|
|
nic.funet.fi, pub/OS/Linux/testing/Linus). So far there is only a
|
|
full-source version available, although I'll probably make it available
|
|
as a patch too tomorrow or so (but the patch won't contain the tcp/ip
|
|
stuff).
|
|
|
|
0.98 is essentially the same as 0.97.pl6 - the changes are mostly:
|
|
- tcp/ip (0.8.1) is in. It's not compiled into the standard bootimage,
|
|
and you'd better be on the tcpip mailing-list to use it, but it's
|
|
there. I've been unable to test it further than just watch it
|
|
compile...
|
|
- extfs patch to correct the problem with big directories with holes.
|
|
- mouse patches (ie improved detection-routines)
|
|
- minor scsi patches (ultrastor driver change)
|
|
- swiss keyboard
|
|
- some serial driver patches
|
|
- the 32mb patches are in, so if you aren't using a DMA-SCSI driver,
|
|
and have more than 16MB physical memory, you can get it recognized.
|
|
- edited hd.c
|
|
- corrected core-dumping routines
|
|
|
|
I didn't get my mm patches working yet, so they'll have to wait. The
|
|
above are almost 100% by others - I have edited some of the patches, but
|
|
there is nothing major new by me. Most of it is minor bug-fixes, and
|
|
the only thing that might be a bit of a problem are the hd.c changes:
|
|
but I hope they'll solve more problems than they cause. Knock wood.
|
|
|
|
At nic.funet.fi you can currently find (a) the full sources (b) a
|
|
bootimage (US keyboard, floppy root, no tcp/ip) and (c) the protocols.h
|
|
file needed for compiling the tcp/ip directory (which should go into
|
|
/usr/include/netinet/). I hope people try it out, and that there are no
|
|
new problems with this release.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Where's Linus
|
|
Message-ID: <1992Sep30.091651.29547@klaava.Helsinki.FI>
|
|
Date: 30 Sep 92 09:16:51 GMT
|
|
References: <1992Sep29.213232.7178@mcshh.Hanse.DE>
|
|
Organization: University of Helsinki
|
|
Lines: 23
|
|
|
|
|
|
In article <1992Sep29.213232.7178@mcshh.Hanse.DE> umisef@mcshh.Hanse.DE (Bernd Meyer) writes:
|
|
>The subjext says it all - according to my newsreader Linus showed up
|
|
>last on the 23rd of September - a week ago.
|
|
>Is he off for holidays?
|
|
>Did Bill Gates hijack(?) him?
|
|
>
|
|
>What has happened....
|
|
|
|
Oh, I'm here all right, and I've read all of c.o.l, but I haven't had
|
|
much time/energy to do anything constructive. Also, I'm happy to say
|
|
that most problems seem to be solved by others, and the rest of the
|
|
discussion has been the 386bsd-linux flamewar which I didn't bother to
|
|
respond to. I've also read all the mail I've gotten, although I've kept
|
|
replies to a minimum.
|
|
|
|
It also seems a lot of the linux-discussion has moved over to strictly
|
|
user-level problems (and I couldn't be happier), and/or kernel problems
|
|
I can't do much about (msdos fs problems etc). That is likely to change
|
|
again now that 0.98 is out (already one report that the hd.c changes
|
|
result in apparently harmless "unexpected hd interrupt" messages on one
|
|
machine). Oh, well.
|
|
|
|
Linus
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Xega and system lockup
|
|
Message-ID: <1992Oct1.082802.13843@klaava.Helsinki.FI>
|
|
Date: 1 Oct 92 08:28:02 GMT
|
|
References: <MMH.92Sep30133155@mercury.analog.com> <L5sXRB2w165w@dogear.spk.wa.us>
|
|
Organization: University of Helsinki
|
|
Lines: 19
|
|
|
|
|
|
In article <L5sXRB2w165w@dogear.spk.wa.us> bobk@dogear.spk.wa.us (Bob Kirkpatrick) writes:
|
|
>
|
|
>I have a Logitech BusMouse...
|
|
>
|
|
>I've discovered that using ...tst/mouse/mouse produces the error
|
|
>message "Stack Overflow on IRQ5"
|
|
|
|
You are definitely using an older version of linux - try upgrading to
|
|
either 0.97.pl6 or 0.98 (which will probably need the mouse-patch that
|
|
was posted a day or two ago). The Stack overflow message is part of an
|
|
older kernel (0.96c? something like that), and was fixed in 0.97.
|
|
|
|
Note that 0.96c (which at least the current version of SLS seems to be
|
|
based on) was a pretty stable release - but it is a bit old... Keeping
|
|
up with the absolutely newest versions of linux may not be very safe,
|
|
but there are problems with keeping to old kernel versions too. After
|
|
all, I don't make new releases *just* to annoy people.
|
|
|
|
Linus
|
|
|
|
==============================
|
|
==============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: bootimage 98 boot video problems
|
|
Keywords: 98 video bootimage
|
|
Message-ID: <1992Oct1.212454.17196@klaava.Helsinki.FI>
|
|
Date: 1 Oct 92 21:24:54 GMT
|
|
References: <perry.24.717954911@seq.uncwil.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 20
|
|
|
|
|
|
In article <perry.24.717954911@seq.uncwil.edu> perry@seq.uncwil.edu (Steve Perry) writes:
|
|
>Hi,
|
|
> I have been using Linux since .12 and have had no problems with my
|
|
>monitor until .98. I went and got the bootimage-.98 from tsx, ftp'ed
|
|
>it to my PC (in bin mode), uncompressed it, used rawrite to put it
|
|
>on a floppy. Now when I boot from the floppy it runs thur the "Loading..."
|
|
>line ok but as soon as it starts to print out the boot up stuff, the screen
|
|
>loses it.
|
|
|
|
Argghh ... Nothing wrong with 0.98 (that part hasn't changed for a
|
|
while), but I compiled the bootimage with my monitor settings (ie
|
|
"SVGA_MODE = -DSVGA_MODE=1" in the main makefile). This probably won't
|
|
work on a non-VGA setup, and even with VGA you get the hardcoded startup
|
|
mode, which is probably not what you want.
|
|
|
|
The solution is probably to recompile the kernel with the SVGA_MODE
|
|
line uncommented, or to wait until I (or somebody else) can get a new
|
|
bootimage out the door.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: BUGS (even more minor)
|
|
Message-ID: <1992Oct2.090825.5086@klaava.Helsinki.FI>
|
|
Date: 2 Oct 92 09:08:25 GMT
|
|
References: <1992Oct1.221854.36218@uservx.plk.af.mil>
|
|
Organization: University of Helsinki
|
|
Lines: 12
|
|
|
|
|
|
In article <1992Oct1.221854.36218@uservx.plk.af.mil> simonich@uservx.plk.af.mil writes:
|
|
>It seems that the setting for NUM LOCK got lost when 0.98 Makefile
|
|
>was released. It would be nice to have it back.
|
|
|
|
It's there: I just rewrote the way the initial NUMLOCK is set. The
|
|
default is numlock on, but you can set any default lock-values by
|
|
defining the KBD_DEFLOCK define to whatever you want. So if you want no
|
|
locks on by default, add a "-DKBD_DEFLOCK=0" to the main makefile line
|
|
that defines the keyboard. Look into linux/kernel/chr_drv/keyboard.c for
|
|
details.
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: VERY DETAILED history of Linux in its early days
|
|
Message-ID: <1992Oct2.090325.4664@klaava.Helsinki.FI>
|
|
Date: 2 Oct 92 09:03:25 GMT
|
|
References: <1992Oct2.005443.18476@sbcs.sunysb.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 95
|
|
|
|
|
|
In article <1992Oct2.005443.18476@sbcs.sunysb.edu> synchem@sbcs.sunysb.edu (Synchem proj acct) writes:
|
|
>
|
|
>1. Does anyone still have a copy of Linux 0.01, or is it 0.11,
|
|
> when all Linux does was switching two processes printing AAAA, BBBB...?
|
|
> Or some very earliest version of Linux?
|
|
|
|
The AAABBBB version certainly doesn't exist anywhere - that was long
|
|
before I thought it was worth it to make it freely available. While
|
|
0.01 wasn't much, at least it *did* work as a simple unix clone.
|
|
|
|
The oldest version that I was able to find with some fast ftp'ing was
|
|
the 0.10 version of linux - and that most definitely did work (that's
|
|
about the time when I tried to autodial my harddisk, and lost all my
|
|
minix files...). 0.10 had some serious problems (no floppy driver if I
|
|
remember correctly, and a bad bug in the buffer code), but it already
|
|
ran gcc etc happily. And it's only 130kB in size - the current kernel
|
|
is >600kB (but new drivers are a big part of that..)
|
|
|
|
>2. An as detailed as possible description of things that are gradually
|
|
> added to Linux since when it can only print AAAA, BBBB? And the design
|
|
> decisions? I guess up detailed descriptions would be needed for only
|
|
> up to 0.12. Things after that can most likely be found in textbooks.
|
|
|
|
I've promised to write down what I remember (which isn't much) some time
|
|
ago, but I haven't got around to it yet (writing not being my favourite
|
|
pastime).
|
|
|
|
Design decisions: none. Linux wasn't designed - it grew over a period
|
|
of time, and I'm still impressed by how few bad decisions I've made so
|
|
far (I've had to rewrite a lot, but nothing *really* broken). There
|
|
were a couple of guidelines: keep it simple, and do it the easy way. On
|
|
the other hand, I started with a pretty good idea of what I wanted, and
|
|
I had the truly basic thing (multitasking) going at the very beginning.
|
|
|
|
Stages (1991):
|
|
- get into protected mode [Feb-Apr]. This isn't easy - especially if
|
|
you are learning the assembly language and the quirks of the PC
|
|
architecture as you go. This took several months (I made some small
|
|
trials in this direction even before I got minix).
|
|
|
|
Simple screen-IO came up here - mostly because that was the only way
|
|
I could announce any kind of success. Poking a few long-words to
|
|
screen memory and having a delay was the easiest way to show that the
|
|
program had gotten enywhere.
|
|
|
|
- multitasking. Getting a timer interrupt to work, and to switch
|
|
between two tasks. This is where the first simple tty driver came
|
|
into play, and when I printed out the AAA BBBB things. No memory
|
|
management, no frills, just two different threads that got switched
|
|
around by the 386 task-switching primitives.
|
|
|
|
- basic drivers [May-June]. Mostly getting interrupts to work,
|
|
refining the tty driver, getting the serial lines working (hardcoded
|
|
to 2400bps until version 0.10 or so, because that was/is all I have).
|
|
I used "linux" mostly as a terminal emulator by this time: it was
|
|
written 100% in assembly, and did terminal emulation by having two
|
|
threads: one read the keyboard and wrote to the serial line, the
|
|
other read the serial line and write to the screen.
|
|
|
|
By this time I had gotten confident enough about the system that I
|
|
could start using C - but I think the console driver was in assembler
|
|
until version 0.11 or so. I still had no harddisk drivers, no memory
|
|
management and no filesystem.
|
|
|
|
- basic harddisk driver, minix-fs, buffer cache [June-July]. These
|
|
were somewhat intertwined: I needed all of them to be able to test
|
|
things. The harddisk driver was first, then a simple buffer cache,
|
|
then some basic fs routines. But they all got changed as other parts
|
|
evolved.
|
|
|
|
- basic system resources - mm, system calls, and refinement of the old
|
|
parts [July - Aug]. This is where I started writing small linux
|
|
programs to test out things. Mostly they were still hard-coded into
|
|
the kernel - the system was still not up to a real fork/execve. I
|
|
got there slowly, and eventually was able to port the minix shell to
|
|
linux. Glorious day (but I've forgotten when this was :-).
|
|
|
|
- basic enhancements - [Aug-91 - Sept-92] getting gcc to work (which
|
|
really needs a working buffer cache..), porting basic utils, making
|
|
it all available.. Getting X running, etc :-)
|
|
|
|
Note that the above is a very much simplified history, and the dates are
|
|
only "so-so" - they can be off by a month or two. Also, the
|
|
developement wasn't as modular as the above would have you believe:
|
|
that's just a rough timetable. And even when I first released it, 0.01
|
|
never really worked: it was just a source release (September-91?).
|
|
|
|
>3. What are the considerations of in deciding what goes into kernel
|
|
> and user space?
|
|
|
|
As much as possible goes into user space, as long as it's not too much
|
|
of a bother. If something gets much easier or cleaner (387-emulation)
|
|
by being in the kernel, then so be it.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Readership report..
|
|
Summary: sept-92 readership
|
|
Message-ID: <1992Oct2.103435.8586@klaava.Helsinki.FI>
|
|
Date: 2 Oct 92 10:34:35 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 62
|
|
|
|
|
|
In case somebody doesn't follow news.lists, here are selected parts of
|
|
the september-92 readership reports. In case you want the full report,
|
|
it's available in news.list along with some other general news-related
|
|
reports.
|
|
|
|
Interestingly, comp.os.linux propagation has gone up from just 56% to
|
|
71% within the last month. At the same time, the estimated total number
|
|
of readers figures have become smaller by a noticeable amount - but not
|
|
just for linux. There have probably been some changes to the way the
|
|
readership is counted.
|
|
|
|
For those that think linux is an active group: you are right. We aren't
|
|
far behind alt.sex (THE newsgroup when it comes to popularity - although
|
|
some other groups do have a bigger audience) in number of articles, and
|
|
linux has been in the top 40 in both traffic volume and cost-per-reader
|
|
for the last few months.
|
|
|
|
As to actual popularity: propagation is still pretty low (80% is normal
|
|
for a comp group it seems), but being the 335th most popular group isn't
|
|
bad for this kind of specialized group.
|
|
|
|
Linus
|
|
|
|
--- edited list follows ---
|
|
|
|
This is the full set of data from the USENET readership report for Sep 92.
|
|
Explanations of the figures are in a companion posting.
|
|
|
|
+-- Estimated total number of people who read the group, worldwide.
|
|
| +-- Actual number of readers in sampled population
|
|
| | +-- Propagation: how many sites receive this group at all
|
|
| | | +-- Recent traffic (messages per month)
|
|
| | | | +-- Recent traffic (kilobytes per month)
|
|
| | | | | +-- Crossposting percentage
|
|
| | | | | | +-- Cost ratio: $US/month/rdr
|
|
| | | | | | | +-- Share: % of newsrders
|
|
| | | | | | | | who read this group.
|
|
V V V V V V V V
|
|
1 160000 5317 83% 980 1933.6 22% 0.02 11.5% misc.jobs.offered
|
|
2 160000 5142 82% 1568 1909.7 40% 0.02 11.1% misc.forsale
|
|
3 150000 4788 89% 10 157.9 100% 0.00 10.3% news.announce.newusers
|
|
4 120000 3910 68% 2556 6290.4 45% 0.07 8.4% alt.sex
|
|
...
|
|
20 68000 2241 86% 1120 2335.9 15% 0.06 4.8% comp.lang.c
|
|
...
|
|
69 44000 1448 85% 945 1622.4 15% 0.06 3.1% comp.unix.sysv386
|
|
...
|
|
119 36000 1186 76% 1381 3445.7 2% 0.14 2.6% comp.unix.bsd
|
|
...
|
|
128 35000 1140 85% 534 902.9 11% 0.04 2.5% comp.unix.ultrix
|
|
...
|
|
262 25000 830 81% 10 11.1 10% 0.00 1.8% comp.os.misc
|
|
...
|
|
335 22000 733 71% 2392 4082.2 2% 0.26 1.6% comp.os.linux
|
|
...
|
|
365 21000 705 83% 139 327.0 5% 0.03 1.5% comp.os.minix
|
|
...
|
|
606 15000 498 76% 688 988.4 0% 0.10 1.1% comp.os.coherent
|
|
...
|
|
892 10000 345 79% 4 5.5 25% 0.00 0.7% comp.unix.sysv286
|
|
..
|
|
1577 1500 48 9% 24 31.7 0% 0.00 0.1% houston.eats
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Once again -- FileSystem corruption
|
|
Message-ID: <1992Oct4.074930.23728@klaava.Helsinki.FI>
|
|
Date: 4 Oct 92 07:49:30 GMT
|
|
References: <t6bp+pk+@aix01.rz.fht-mannheim.de>
|
|
Organization: University of Helsinki
|
|
Lines: 28
|
|
|
|
|
|
In article <t6bp+pk+@aix01.rz.fht-mannheim.de> mrex@aix01.rz.fht-mannheim.de (Martin Rex) writes:
|
|
>
|
|
>It still might be a problem with my Maxtor 7213 (PCBA rev 52 -- june '92)
|
|
>but to me it looks like linux is maybe not fault-tolerant enough.
|
|
|
|
Well, it's true that linux has some problems with bad spots on the disk
|
|
(as I have never been able to see one...), but in the case of the maxtor
|
|
drive (and you do have one of the early bad ones - PCBA < 63) it's just
|
|
that the maxtor doesn't seem to *report* the errors, so linux doesn't
|
|
even know about any trouble.
|
|
|
|
The drive seems to work perfectly ok under DOS - but DOS (BIOS) doesn't
|
|
even use interrupts in the harddisk driver. Does the maxtor work under
|
|
OS/2?
|
|
|
|
>I don't want to say linux is bad in any way,
|
|
>but maybe it's possible to add some switches to offer conservative
|
|
>timings for poor/flawed hardware ?
|
|
|
|
There already is, both in {in,out}b_p() and in the HD_DELAY values. But
|
|
with so many different systems (and so few hardware manuals), it's a bit
|
|
difficult to please everybody. The default delay of inb_p/outb_p is
|
|
four extra IO instructions - that is very conservative (at least my
|
|
drive works without any delay at all). The HD_DELAY define isn't used
|
|
by default: it's a pretty ugly hack, and I don't like it (but it does
|
|
help some people, so...).
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Weird disk corruption (tar off msdos partition)
|
|
Message-ID: <1992Oct4.072803.23147@klaava.Helsinki.FI>
|
|
Date: 4 Oct 92 07:28:03 GMT
|
|
References: <lcrnvkINN1s3@ozona.cs.utexas.edu> <3835@ra.nrl.navy.mil> <lct1i3INN31p@ozona.cs.utexas.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 31
|
|
|
|
|
|
In article <lct1i3INN31p@ozona.cs.utexas.edu> jefftep@cs.utexas.edu (Jeffrey Grills) writes:
|
|
>
|
|
> maxtor 7213a hd (never had any timeouts)
|
|
>
|
|
>I think there is some underlying problem. I've had tons of things weird
|
|
>happen that have never had real solutions discovered for. For instance,
|
|
>I think but cannot verify the following accusations:
|
|
>
|
|
> I've compared 2 files multiple times, getting 3 different results from cmp
|
|
> I'm one of the people that gets Signal 11 from gcc/cc1 (still on occasion)
|
|
> I've had the kernel complain about "swap weirdness" once (something like that)
|
|
> I've done the cat|uncompress|tar thing and had tar complain about a bad input
|
|
> file, only to try it again, with no changes, and have it work fine
|
|
|
|
Definitely sounds like the buffer corruption problem with older maxtor
|
|
7213A's.
|
|
|
|
Here is an excerpt from a post by swaliff@afterlife.ncsc.mil (Steve Aliff):
|
|
>
|
|
> Some of you may have been following my trials and tribulations with
|
|
> a Maxtor 7213A under Linux. I spoke with Maxtor tech support today,
|
|
> and they agreed that there was a problem with early 7213As and the
|
|
> commercial variants of Unix (Xenix, SCO). If you have a 7213A whose
|
|
> PCBA number is less than 63, then you may have a problem with it
|
|
> under Linux. My present drive's PCBA number is 54. (The PCBA number
|
|
> is their revision tracking number of the on-board controller board.)
|
|
> The PCBA number is listed on the label on top of the drive.
|
|
|
|
Upgrading to a newer 7213A helped at least Steve.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: unexpected interrupt?
|
|
Message-ID: <1992Oct4.080658.24234@klaava.Helsinki.FI>
|
|
Date: 4 Oct 92 08:06:58 GMT
|
|
References: <1992Oct4.014156.11412@athena.mit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 42
|
|
|
|
|
|
In article <1992Oct4.014156.11412@athena.mit.edu> pmacdona@tadpole.bcsc.gov.bc.ca writes:
|
|
>Sorry if I missed it, but is the fix to the "unexpected interrupt"
|
|
>problem in .98 just to bump up the HD_DELAY?
|
|
|
|
No, the fix is this one-line "patch" to linux/kernel/blk_drv/hd.c (at
|
|
the end of the read_intr() function):
|
|
|
|
----- "patch" -----
|
|
if (i > 0) {
|
|
SET_INTR(&read_intr);
|
|
sti();
|
|
return;
|
|
}
|
|
+ (void) inb_p(HD_STATUS);
|
|
#if (HD_DELAY > 0)
|
|
last_req = read_timer();
|
|
#endif
|
|
do_hd_request();
|
|
return;
|
|
}
|
|
----- "patch" -----
|
|
|
|
That is, add the "(void) inb_p(HD_STATUS)" line. Don't try to run the
|
|
above through patch - do it by hand, or wait for the first "official"
|
|
patch to 0.98 which has this and some other patches (possibly out later
|
|
today).
|
|
|
|
In case somebody wonders what happened to the hd-driver between 0.97.pl6
|
|
and 0.98: I removed the status-checking after reading the controller RAM
|
|
buffer. Reading the status could (on some hardware with a fast disk)
|
|
result in an acknowledge of the *next* interrupt, which linux would then
|
|
wait in vain for.
|
|
|
|
The above patch does read the HD_STATUS register - but it does so only
|
|
after we have gotten all the interrupts we expect from the current
|
|
read-request. So the above should (and does) fix the drives that need
|
|
the inb() while not breaking anything else.
|
|
|
|
0.98 also has some other changes to hd.c, but those are mostly minor
|
|
reorganizations of the read/write interrupt handlers.
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 8 bit console
|
|
Keywords: kernel keyboard french patch
|
|
Message-ID: <1992Oct5.164318.17472@klaava.Helsinki.FI>
|
|
Date: 5 Oct 92 16:43:18 GMT
|
|
References: <1992Oct5.025000.18463@sobeco.com> <Oct.5.03.03.37.1992.6708@geneva.rutgers.edu> <1992Oct5.140408.25274@wam.umd.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 15
|
|
|
|
|
|
In article <1992Oct5.140408.25274@wam.umd.edu> joel@wam.umd.edu (Joel M. Hoffman) writes:
|
|
>What I was really asking is if the >kernel< is 8-bit clean.
|
|
>E.g., can I use an 8-bit clean version of Emacs (which I have) to make
|
|
>filenames with all 8-bits?
|
|
|
|
There should be no problems with 8-bit characters anywhere in the kernel
|
|
- but problems arise especially with current versions of bash as well as
|
|
various other programs (even 'ls' needs the "--literal" flag to
|
|
correctly print out 8-bit filenames).
|
|
|
|
So while the kernel should handle them ok, I'd suggest against using
|
|
8-bit characters in filenames etc, as you'll have problems with 7-bit
|
|
terminals, programs that cannot handle them etc etc.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Patch 1 for 0.98 out...
|
|
Message-ID: <1992Oct5.170703.3832@klaava.Helsinki.FI>
|
|
Date: 5 Oct 92 17:07:03 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 15
|
|
|
|
|
|
nic.funet.fi: pub/OS/Linux/testing/Linus contains the first patch to
|
|
0.98 (along with a bootimage and the full source for those that don't
|
|
like to patch).
|
|
|
|
Patch1 to 0.98 mainly corrects some driver problems: it contains the
|
|
added "inb_p(HD_STATUS)" for hd.c, as well as a changed mouse driver
|
|
setup (hope it works - I couldn't test it..). There are also some SCSI
|
|
driver patches: the seagate driver uses irqaction() to get irq's, and
|
|
the aha1542 driver has the speedup patches.
|
|
|
|
The bootimage should be compiled without the auto-SVGA mode, so people
|
|
who had problems with linux automatically using a SVGA mode should be ok
|
|
in this release.
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Kernel Panic
|
|
Message-ID: <1992Oct6.092442.29291@klaava.Helsinki.FI>
|
|
Date: 6 Oct 92 09:24:42 GMT
|
|
References: <1992Oct6.055750.8976@athena.mit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 25
|
|
|
|
|
|
In article <1992Oct6.055750.8976@athena.mit.edu> chchen@stat.fsu.edu writes:
|
|
>After I installed 4 256k SIMMs to make my system 5 mb RAM, I've been
|
|
>having kernel panic problems, especially after I stopped using the
|
|
>modem. The message was:
|
|
>
|
|
>ldt[0]: 00000000 00000000
|
|
>ldt[1]: 0000ffff 00cbfb00
|
|
>ldt[2]: 0000ffff 00cbf300
|
|
>Kernel Panic: We don't support seperate I&D
|
|
>
|
|
>Any clue? I don't know what it means.
|
|
|
|
This should definitely never happen - linux doesn't support separate
|
|
I&D, and never creates a process that tries to use it. I put in the
|
|
sanity-check just because I'm paranoid, and it seems to have paid off
|
|
(and besides, everyone *is* out to get me).
|
|
|
|
So the only reason I can come up with for this particular error message
|
|
is that your RAM chips are too slow or have some other problems (bad
|
|
connections, whatever) resulting in memory corruption. Alternatively,
|
|
the kernel might be overwriting some of it's own data, but as the only
|
|
change seems to have been your RAM-upgrade, faulty RAM does seem to be
|
|
the likely solution. Try re-seating the SIMMS, or just remove them.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Compiling TIN doesn't work
|
|
Message-ID: <1992Oct7.090155.16388@klaava.Helsinki.FI>
|
|
Date: 7 Oct 92 09:01:55 GMT
|
|
References: <Z0s7RB2w164w@field.ichaos.nullnet.fi>
|
|
Organization: University of Helsinki
|
|
Lines: 34
|
|
|
|
|
|
In article <Z0s7RB2w164w@field.ichaos.nullnet.fi> kkk@field.ichaos.nullnet.fi (Kristo Kaarlo Matias) writes:
|
|
>My porting saga continues... Now it's TIN 1.1 PL1. "make sysv" produces
|
|
>this:
|
|
>
|
|
>signal.c: In function 'set_signal_handlers':
|
|
>signal.c:45: 'SIGBUS' undeclared (first use this function)
|
|
>[...]
|
|
>signal.c: In function 'signal_handler':
|
|
>signal.c:102: 'SIGBUS' undeclared (first use this function)
|
|
>
|
|
>What the heck is this 'SIGBUS'? I didn't found it at /usr/include/*.
|
|
|
|
Argghh. This comes up every once in a while (about twice a day to be
|
|
exact), and the answer is that tin is not posix, and uses an obsolete
|
|
signal that linux doesn't use, but which exists under both sysV and bsd,
|
|
so most sources don't seem to bother checking about it.
|
|
|
|
The thing to do is to search for SIGBUS in the sources, and put a
|
|
|
|
#ifdef SIGBUS
|
|
...
|
|
#endif
|
|
|
|
around the offending code. It *could* be solved by adding a dummy
|
|
signal value to /usr/include/signal.h ("#define SIGBUS 31" or similar),
|
|
but the problem isn't really in the linux code but in the sources that
|
|
assume SIGBUS is defined.
|
|
|
|
>I have Linux 0.98 and GCC 2.2.2d. I compiled TIN with -DPOSIX_JOB_CONTROL,
|
|
>is this ok?
|
|
|
|
POSIX_JOB_CONTROL is ok.
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Once again -- FileSystem corruption
|
|
Message-ID: <1992Oct8.075539.22908@klaava.Helsinki.FI>
|
|
Date: 8 Oct 92 07:55:39 GMT
|
|
References: <1992Oct4.074930.23728@klaava.Helsinki.FI> <705559005snx@grendel.demon.co.uk>
|
|
Organization: University of Helsinki
|
|
Lines: 41
|
|
|
|
|
|
In article <705559005snx@grendel.demon.co.uk> jes@grendel.demon.co.uk (Jim Segrave) writes:
|
|
>In article <1992Oct4.074930.23728@klaava.Helsinki.FI> torvalds@klaava.Helsinki.FI (Linus Torvalds) writes:
|
|
>>
|
|
>> The drive seems to work perfectly ok under DOS - but DOS (BIOS) doesn't
|
|
>> even use interrupts in the harddisk driver. Does the maxtor work under
|
|
>> OS/2?
|
|
>>
|
|
>As far as I know, every BIOS hard disc driver does use interrupts.
|
|
|
|
Hmm. I have only the IBM AT technical manual to check from (which does
|
|
include the BIOS disassembly), and at least that BIOS (original IBM AT)
|
|
does not use interrupts for the harddisk, but busy waiting (actually,
|
|
the interrupt *is* used to set the flag that the BIOS is waiting on, but
|
|
that's it).
|
|
|
|
Linux does all the IO processing in the actual interrupt routine, which
|
|
probably makes it a bit more timing-critical than some other solutions.
|
|
|
|
> A
|
|
>common problem with older BIOS's is that some IDE drives will raise the
|
|
>interrupt on a read before the drive is actually ready to transfer data.
|
|
>Older BIOS's often simply begin reading the data as soon as the
|
|
>interrupt is received and in some cases - I found this with Quantam
|
|
>drives, the data is replaced with garbage.
|
|
|
|
Yes, linux had the same problem in earlier drivers (pre-0.96 I think),
|
|
and there were some reports about trouble with Quantum drives.
|
|
|
|
> The code needs to wait for
|
|
>the interrupt to occur, then wait for the data ready flag in the status
|
|
>register (or better still the alternate status register) before
|
|
>performing data transfers.
|
|
|
|
Linux already does this (but I don't see any reason for using the
|
|
alternate status register - the function is exactly the same aside from
|
|
accnowledging the interrupt). The problem seems to be something else
|
|
with the maxtor drives - my guess is that the status register isn't
|
|
always up-to-date or similar. I'm still looking into it and trying to
|
|
find safe ways to make it a bit less timing-critical.
|
|
|
|
Linus
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Chicken and egg: How was the first linux gcc binary created??
|
|
Keywords: gcc linux egg chicken soup
|
|
Message-ID: <1992Oct12.100843.26287@klaava.Helsinki.FI>
|
|
Date: 12 Oct 92 10:08:43 GMT
|
|
References: <1992Oct10.124926.12423@engr.uark.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 59
|
|
|
|
|
|
In article <1992Oct10.124926.12423@engr.uark.edu> tep@engr.uark.edu writes:
|
|
>
|
|
> As I was standing in the shower this morning I was thinking (I do
|
|
>my best thinking in the shower) "How did Linus generate that first
|
|
>gcc binary?" This was prompted by a newbie question about compilers
|
|
>where he said something like "I can't compile a compiler until I have
|
|
>a compiler to compile it."
|
|
>
|
|
> I guess Linus is the only one who can answer this but I figured it
|
|
>would also be of general interest. So Linus, how'd ya do it???
|
|
|
|
As has already been noted, it's fairly easy to cross-compile gcc from
|
|
one system into another, and that is what I did.
|
|
|
|
The original gcc I used was the minix gcc (1.37.1) by Alan W Black (and
|
|
somebody.. forgotten who?), which did some very ugly things in order to
|
|
handle floating point. I used that to compile gcc-1.40 for minix, with
|
|
patches by Bruce Evans to clean up the floating point handling and some
|
|
of my own patches (I fooled around with gcc when learning about it, and
|
|
added a "-mstring-insns" switch which allowed gcc-1.40 to use the 386
|
|
string instructions for structure copying etc).
|
|
|
|
The minix-386 (thanks again, Bruce - without the 386 patches for minix I
|
|
would never have gotten anywhere) I was running by that time was able to
|
|
execute normal gcc binaries directly (the only major diff I did to minix
|
|
- and awb later made a better version of it), which is also the standard
|
|
linux binary format. So the same gcc binary running under minix could
|
|
make both minix and linux binaries: the only thing that differed was the
|
|
startup routine (crt0.o) and the standard library. My first binaries
|
|
used modified minix library routines, and the first shell I used under
|
|
linux (pre-0.01) was the minix bourne shell recompiled with those
|
|
library routines.
|
|
|
|
The binaries I later released used a library that was heavily based on
|
|
Earl Chew's (free) estdio package (thanks), with some minor routines by
|
|
me and some from various other sources (I think the minix termcap
|
|
routines were free etc). Back then (0.01-0.11), the biggest problem
|
|
with gcc were the libraries - estdio worked (even though it had it's
|
|
quirks) but many other routines were either incomplete or missing.
|
|
Porting many programs meant I had to write new library routines or find
|
|
them from some other source (like the early and very buggy glibc.a).
|
|
|
|
Also, I wasn't able to compile binaries under linux until version 0.10
|
|
or so - all the major first binaries (notably bash) were crosscompiled
|
|
from minix. The reason was the bad buffer-cache bugs in early linux
|
|
versions which made running gcc (which easily fills the buffer-cache)
|
|
impossible. 0.03 was able to run a gcc binary, but recompiling gcc
|
|
itself under linux led to weird crashes due to the buffer cache
|
|
corruption.
|
|
|
|
By 0.11-0.12, hlu had showed interest in maintaining gcc-2.x (I checked
|
|
out early snapshots of the alpha sources), which meant I had to
|
|
implement the math-emulation in the kernel, so that gcc wouldn't need
|
|
the patches for integer floating-point. By that time glibc.a also
|
|
started to be partly useable, so the linux libraries started using that
|
|
more and more (with some bad bugs as a result in the early versions).
|
|
The rest is history.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.unix.bsd,comp.os.linux
|
|
Subject: Re: Binary compatibility question... [Summary]
|
|
Message-ID: <1992Oct15.092205.28084@klaava.Helsinki.FI>
|
|
Date: 15 Oct 92 09:22:05 GMT
|
|
References: <1992Oct13.223537.11949@ucsu.Colorado.EDU> <1992Oct14.014146.20610@tfs.com> <1992Oct14.193014.537@ucsu.Colorado.EDU>
|
|
Organization: University of Helsinki
|
|
Lines: 25
|
|
|
|
|
|
In article <1992Oct14.193014.537@ucsu.Colorado.EDU> ngoh@rintintin.Colorado.EDU (NGO HIEN D) writes:
|
|
>
|
|
>From: Cameron Spitzer 764-6339 <camerons@nad.3com.com>
|
|
>
|
|
>There *is* an "Application Binary Interface" for System V on the [34]86.
|
|
>I was real disappointed to find out Linux doesn't use it. Don't know why he
|
|
>doesn't either.
|
|
|
|
The simple reason linux isn't even close the the intel ABI is that I
|
|
simply hadn't got a clue about how it looked - intel never contacted me
|
|
about it :-) and I certainly didn't want to go to any unnecessary
|
|
trouble over it.
|
|
|
|
As it turns out, the linux-ss project might be helped by linux following
|
|
the intel ABI or at least being a bit closer (ie lcall 7,$0 for system
|
|
calls), so I might put in some hooks for it - I'll take a look at the
|
|
xenix emulator when I get some time.
|
|
|
|
Making linux run most normal i386 ABI binaries would probably be pretty
|
|
simple: you'd just need a simple wrapper around the system calls
|
|
mechanism. To get more complete support, the signal handler stack frame
|
|
would have to be changed etc, but very few programs care about that
|
|
anyway.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Kernel panic!?
|
|
Message-ID: <1992Oct15.093427.29150@klaava.Helsinki.FI>
|
|
Date: 15 Oct 92 09:34:27 GMT
|
|
References: <1biei2INN2mc@crcnis1.unl.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 31
|
|
|
|
|
|
In article <1biei2INN2mc@crcnis1.unl.edu> mchapin@cse.unl.edu (Mark Chapin) writes:
|
|
>In attempting to install the SLS package, I partioned my hard drive several
|
|
>times using fdisk from Linux, DOS and even OS/2. After every attempt I use
|
|
>mkfs -c /dev/hda2 57344 (with or without the -c) . No matter what I do I
|
|
>get Kernel Panic: Trying to write bad sector.
|
|
>Wassup? I have an ESDI 660 MB Seagate.
|
|
|
|
The "trying to write bad sector" panic can happen if linux finds a drive
|
|
it simply doesn't know how it might possibly read/write. The harddisk
|
|
driver is unable to cope with more than 2 drives and/or more than 16
|
|
heads. The reason is that the st-506 programming interface only has one
|
|
bit for drive identification, and 4 bits for head info. So if linux
|
|
sees a disk that has more heads than 16, linux gives up with the above
|
|
panic.
|
|
|
|
If somebody knows how >16 heads are handled on the IO register level,
|
|
I'd be interested to know.
|
|
|
|
> I have partitioned it several
|
|
>different ways. I am putting the Linux/Minix partition in a primary slot.
|
|
>I have tried the turbo on/off. Any suggestions on what to try. I guess I
|
|
>could try putting Linux as hda1, but I don't see how this would solve
|
|
>the problem. Please HELP!!!
|
|
|
|
No, using hda1 shouldn't make any difference. If your controller allows
|
|
different sector translations, you might want to re-configure the drive
|
|
using fewer heads, although that might then be a problem for the BIOS if
|
|
the number of cyliders grow beyond 1024 (linux hasn't got this
|
|
particular problem).
|
|
|
|
Linus
|
|
|
|
=================
|
|
=================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Linux: system failure - HD format - HELP - SOS
|
|
Keywords: Linux HELP system failure
|
|
Message-ID: <1992Oct16.145823.29423@klaava.Helsinki.FI>
|
|
Date: 16 Oct 92 14:58:23 GMT
|
|
References: <wies.719221674@NewsServ>
|
|
Organization: University of Helsinki
|
|
Lines: 38
|
|
|
|
|
|
In article <wies.719221674@NewsServ> wies@Informatik.TU-Muenchen.DE (Rene Felix Wies) writes:
|
|
>
|
|
>Well, I got the following error message:
|
|
>
|
|
> in /usr/src/linux/kernel/chr_drv:
|
|
> I did a: touch *.c *.h
|
|
> then a: make dep
|
|
> followed by a: make
|
|
> THE RESULT:
|
|
> cc -c tty_io.c
|
|
> cc -c console.c
|
|
> console.c: In function 'scrup':
|
|
> console.c: 360: fixed or forbidden register was spilled
|
|
> This may be due to a compiler bug or to impossible asm statements.
|
|
> make: ***[console.o] Error 1
|
|
|
|
You aren't supposed to run "make" by hand in the linux kernel
|
|
subdirectories: the makefiles are set up so that a make in the base
|
|
directory will compile the kernel. The message you are seeing has to do
|
|
with the __asm__ statements in console.c - without optimizations gcc
|
|
runs out of registers, and gives up. The correct optimizations and
|
|
other compiler flags for the kernel are set up in the main makefile, and
|
|
are needed to make a good kernel binary.
|
|
|
|
Also, you seem to be running an older version of linux (0.96), which has
|
|
problems with newer binaries (and also has some serious known bugs
|
|
relating to both screen IO and the memory management routines).
|
|
|
|
Try getting a newer version of linux (0.98.1 is ok, although it has some
|
|
problems with busmice and some disk drives). The best way to then make
|
|
sure the kernel is recompiled correctly is to set up all parameters
|
|
(editing the main makefile to choose keyboard etc), and do a
|
|
|
|
make clean ; make dep ; make
|
|
|
|
to get a good kernel Image.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Questions about ...
|
|
Message-ID: <1992Oct17.220153.3470@klaava.Helsinki.FI>
|
|
Date: 17 Oct 92 22:01:53 GMT
|
|
References: <rickm.921017114819@eng.auburn.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 28
|
|
|
|
|
|
In article <rickm.921017114819@eng.auburn.edu> rickm@eng.auburn.edu (Rick Martindale) writes:
|
|
>
|
|
>Q1: I am still experiencing Unexpected hd Interrupt. I have read in
|
|
> the past to bump up the HD_DELAY. This didnt fix it. Then I read
|
|
> to add:
|
|
> (void) inb_p(HD_STATUS)
|
|
> to read_intr ( in hd.c ). I am running 0.98.1 and the line already
|
|
> exist. Is there something else that needs to be done? Would it be
|
|
> ok to simply comment out the print for the Interrupt message?
|
|
|
|
Some drives (notably kalok and some NEC drive) give this message - they
|
|
have given it for every single kernel version I've ever put out, and
|
|
they seem still to work fine. If you don't see anything which looks like
|
|
buffer corruption, commenting out the message is ok.
|
|
|
|
>Q2: What is required to get ps running under 0.98.1?
|
|
|
|
There is to my knowledge no 0.98 version of 'ps', but the 0.97.pl6
|
|
version should work (but may need recompilation and certainly needs
|
|
updating with 'ps U').
|
|
|
|
>Q3: I am getting a core dump when I attempt a umount. Any Ideas.
|
|
|
|
Try getting a new umount binary from (for example) the hlu [b|r]ootdisk,
|
|
which should hopefully fix this(?). Haven't heard about this particular
|
|
problem before, though.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Any mail or fakemail available for linux ?
|
|
Message-ID: <1992Oct17.215224.3282@klaava.Helsinki.FI>
|
|
Date: 17 Oct 92 21:52:24 GMT
|
|
References: <1992Oct9.040601.23881@unlv.edu> <147770002@hplsla.hp.com>
|
|
Organization: University of Helsinki
|
|
Lines: 19
|
|
|
|
|
|
In article <147770002@hplsla.hp.com> ericb@hplsla.hp.com (Eric Backus) writes:
|
|
>
|
|
>I don't know the details of what the sticky bit does to a directory on
|
|
>a SPARCserver. However, this still appears to be a security hole.
|
|
>Here's what you could try to do:
|
|
>
|
|
> Move someone's mailbox to a different name. Even if noone else can
|
|
> read it, you could now create fake mail for the original person.
|
|
> Or you could put a non-writable file there to prevent the person
|
|
> from ever receiving mail.
|
|
|
|
With the sticky bit set, you cannot even move the mailbox, so this is
|
|
not a problem. Although old versions of linux actually return the wrong
|
|
error-value for this (ENOENT instead of EPERM), it has been enforced
|
|
since about 0.96c, when somebody pointed this out to me. And 0.98.2
|
|
will correct even the error-return (thanks to this thread: I don't think
|
|
I had actually tested it out before now :-)
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: ANNOUNCE: 0.98.pl2 is out
|
|
Summary: New patches. Again.
|
|
Message-ID: <1992Oct18.144546.28249@klaava.Helsinki.FI>
|
|
Date: 18 Oct 92 14:45:46 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 70
|
|
|
|
|
|
[ I already sent this to the mailing-list, nothing new, so skip this if
|
|
you already saw it ]
|
|
|
|
Patch 2 to 0.98 is out - it's available as both full source and as
|
|
patches against 0.98.1 at nic.funet.fi: pub/OS/Linux/testing/Linus (and
|
|
testing is still unreadable, so you have to cd to it blindly).
|
|
|
|
patch-2 is >150kB compressed, as it contains several big changes. Most
|
|
notable are:
|
|
|
|
- the new FPU-emulator by Bill Metzenthen. It's bigger than the old
|
|
one, but thanks to it, linux fpu emulation is no longer a quick hack,
|
|
but a real emulator: it does all the 387(486) math instructions, and
|
|
does them much faster than the old emulator + the soft library.
|
|
|
|
The new math-emulator means that a separate soft-float library is no
|
|
longer needed. It also makes even a non-coprocessor system pretty
|
|
useful for limited math-calcs - the complex functions are much faster
|
|
when they no longer have to be calculated using simple functions, and
|
|
even the simpler instructions that my old emulator handled are faster
|
|
using the new one.
|
|
|
|
The size of the new emulator may mean that people who have little
|
|
RAM, but do have a coprocessor should probably recompile the kernel
|
|
with the emulator disabled.
|
|
|
|
- various minor mm fixes by me: trapping kernel NULL dereferences,
|
|
cleaning up the page table initializations and the 16MB patches, and
|
|
various other bugfixes. get_free_page(GFP_ATOMIC) should preserve
|
|
the interrupt flag, so malloc() should be safe now - hopefully no
|
|
more of the tcp/ip memory management problems.
|
|
|
|
The NULL pointer trapping may result in errors like:
|
|
Unable to handle kernel paging request at address C0000???
|
|
Oops: 0000
|
|
..... debugging info .....
|
|
|
|
There were several NULL pointer dereferences in the serial and tty
|
|
drivers, which should now be fixed. I've also fixed any other errors
|
|
I've seen, but if there are problems in the scsi drivers or similar
|
|
things I cannot test, I'd like to hear about them.
|
|
|
|
- scsi driver changes by Eric Youngdale. Preliminary support for
|
|
removable media, and some bug-fixes. Due to white-space problems
|
|
with eric's patches, the scsi patches are a bit bigger than
|
|
necessary, but they should be ok even though I had to put them in
|
|
partly by hand (and being unable to test them...)
|
|
|
|
- The new tcp/ip patches that were sent to the NET channel not long
|
|
ago. Yes, they are alpha, but so is the whole tcp/ip directory, so I
|
|
put them in even thought they haven't been extensively tested (and
|
|
they did have a serious problem in the ioctl code, which I fixed).
|
|
|
|
- psaux mouse patches by Dean Troyer, as well as the mouse.wait = NULL
|
|
patch.
|
|
|
|
Before (or after) patching, you should remove the old math-emulator (ie
|
|
"rm -rf /usr/src/linux/kernel/math") as it is no longer needed. You
|
|
should also do a "make dep" to update dependencies: as usual, I edited
|
|
out the dependancy-changes. Do a "make clean", edit the main (and net)
|
|
Makefiles to suit your system, and compile.
|
|
|
|
And finally: I will no longer be making the bootdisks available -
|
|
they'll be made by hlu/jwinstead and will probably be boot+root-disks
|
|
using lilo, as done on the hlu disks. That may mean that a bootimage
|
|
won't be available at once, but most people who want to use the
|
|
absolutely newest images probably compile them themselves anyway, so
|
|
that shouldn't be a problem.
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: ANNOUNCE: 0.98.pl2 is out
|
|
Message-ID: <1992Oct18.224202.14619@klaava.Helsinki.FI>
|
|
Date: 18 Oct 92 22:42:02 GMT
|
|
References: <1992Oct18.144546.28249@klaava.Helsinki.FI>
|
|
Organization: University of Helsinki
|
|
Lines: 40
|
|
|
|
|
|
In article <1992Oct18.144546.28249@klaava.Helsinki.FI> I wrote:
|
|
> [ deleted ]
|
|
>
|
|
> - various minor mm fixes by me: trapping kernel NULL dereferences,
|
|
...
|
|
|
|
Oh, boy. Talk about a feature that proved itself. I have never gotten
|
|
so many bug-reports so fast: it seems there were quite a few
|
|
NULL-pointer problems in the code I hadn't been able to test. Thus
|
|
0.98.2 isn't actually very useable unless you have a system very close
|
|
to my setup - I don't recommend the faint-of-hearted to try it out.
|
|
|
|
I guess I should be happy the new feature found problems in the kernel
|
|
sources, but I could well have lived with a couple less problems. Main
|
|
problem areas seem to be:
|
|
|
|
- the vhangup() system call - used by newer login-binaries, and
|
|
resulting in login getting killed.
|
|
- some scsi driver problems (but they should be fixed by the patch eric
|
|
already sent out)
|
|
- tcp/ip problems - at least three different places where NULL gets
|
|
dereferenced (and one is particularly ugly: it does test for NULL,
|
|
but does so *after* dereferencing it...)
|
|
|
|
The vhangup() problem was easy to correct (and excusable: it broke at
|
|
least partly due to the new dynamic tty-routines). I'll make some
|
|
preliminary testing-patches available that fix that problem, and
|
|
includes the scsi fixes.
|
|
|
|
But the tcp/ip code is a bit worse: I fixed two of the known problems,
|
|
but I'd rather use patches from the persons who wrote the code
|
|
originally, as there are some other problems in there.. And I can't be
|
|
sure I find them all anyway, as I'll never see the problems first-hand.
|
|
|
|
Just wanted to warn everybody about this aspect of pl2 - the
|
|
NULL-pointer finding code is working a bit too well for my taste. I had
|
|
hoped there wouldn't be quite this many NULL pointer problems, but at
|
|
least they'll be found this way.
|
|
|
|
Linus
|
|
|
|
===============================
|
|
===============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: ANNOUNCE: 0.98.pl2 is out
|
|
Message-ID: <1992Oct20.090136.963@klaava.Helsinki.FI>
|
|
Date: 20 Oct 92 09:01:36 GMT
|
|
References: <719518170snx@kerberos.demon.co.uk>
|
|
Organization: University of Helsinki
|
|
Lines: 16
|
|
|
|
|
|
In article <719518170snx@kerberos.demon.co.uk> alovell@kerberos.demon.co.uk (Anthony Lovell) writes:
|
|
>
|
|
>Well look on the bright side if you couldn't find the bugs how would they
|
|
>get fixed
|
|
|
|
Oh, yes, the NULL-pointer finding code was definitely a good move: I
|
|
have already received patches for (or fixed them myself with the help of
|
|
reports sent in by others) at least 99% of the problems, and it seems to
|
|
have resulted in at least the tcp/ip code working much better. I now
|
|
have reports that X11 runs fine both to and from another machine under
|
|
linux with tcp/ip, and I'll make 0.98.3 available in a few days after I
|
|
have gotten some more reports. So I'm not complaining about the
|
|
problems with 0.98.2 (although others probably are :-), but I would have
|
|
been even happier if everything had worked 100% on the first try..
|
|
|
|
Linus
|
|
|
|
==============================
|
|
==============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: tgif compiled, but what about SIGBUS?
|
|
Keywords: tgif, signals, SIGBUS
|
|
Message-ID: <1992Oct20.121054.401@klaava.Helsinki.FI>
|
|
Date: 20 Oct 92 12:10:54 GMT
|
|
References: <michaelp.719486349@strange> <danielce.719491882@munagin> <1992Oct19.153951.6649@lucrece.robots.ox.ac.uk>
|
|
Organization: University of Helsinki
|
|
Lines: 22
|
|
|
|
|
|
In article <1992Oct19.153951.6649@lucrece.robots.ox.ac.uk> jon@robots.ox.ac.uk (Jon Tombs) writes:
|
|
>
|
|
>I think bsd gives a SIGBUS if a user program does a inb() or outb() call,
|
|
>this would seem to be more appropriate than SIGSEGV under linux.
|
|
|
|
Actually, this isn't a good idea: linux would have to check why the
|
|
protection error happened, and I don't think that is necessary or even
|
|
something we want it to do. The current kernel setup just sees an error
|
|
it cannot handle, so it sends a SIGSEGV. No special cases, no chacks
|
|
why it happened etc.
|
|
|
|
One good (or at least better) argument for SIGBUS being included (and
|
|
one I have been thinking about) is that a 486 actually has an alignment
|
|
trap, which under sysv-386 does seem to result in a SIGBUS (not that I
|
|
have tried: just read about it somewhere). I haven't bothered about it,
|
|
as I think the alignment trap is disabled under linux anyway. Besides,
|
|
I don't see any reason for an alignment fault unless the processor
|
|
really isn't able to handle unaligned transfers - but a 486 is perfectly
|
|
capable of doing them, even if they are a bit slower. And gcc generally
|
|
doesn't generate such code anyway.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: 0.98 and 0.98pl1 won't boot; will 0.98pl2 help?
|
|
Message-ID: <1992Oct20.131421.14178@klaava.Helsinki.FI>
|
|
Date: 20 Oct 92 13:14:21 GMT
|
|
References: <1992Oct20.103029.3560@cs.tu-berlin.de>
|
|
Organization: University of Helsinki
|
|
Lines: 19
|
|
|
|
|
|
In article <1992Oct20.103029.3560@cs.tu-berlin.de> snake@cs.tu-berlin.de (Harald Schulze) writes:
|
|
>When I try to boot Linux 0.98 or 0.98pl1 I get :
|
|
>AX <number>
|
|
>BX <number>
|
|
>CX <number>
|
|
>DX<number>
|
|
>while the floppy is making lots of noise.
|
|
>
|
|
>This happens after "Loading..." when I have more than 80 '.' on the screen.
|
|
|
|
This wouldn't be on a 360kB floppy, would it? Linux won't boot from one,
|
|
so don't even try. Use a high-density (1.2M or 1.44M) floppy, and make
|
|
sure there are no errors on it: the initial loading sequence is a bit
|
|
picky about the floppy quality, and a bad floppy can also result in the
|
|
above error-messages. If you get those kinds on messages on a HD floppy,
|
|
try a new one, or at least reformat the floppy and re-rawrite linux to
|
|
it.
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Unix Books
|
|
Message-ID: <1992Oct21.161022.18125@klaava.Helsinki.FI>
|
|
Date: 21 Oct 92 16:10:22 GMT
|
|
References: <1992Oct20.004410.24099@athena.mit.edu> <1992Oct21.121703.13670@ifi.informatik.uni-stuttgart.de>
|
|
Organization: University of Helsinki
|
|
Lines: 37
|
|
|
|
|
|
In article <1992Oct21.121703.13670@ifi.informatik.uni-stuttgart.de> weberj@dia.informatik.uni-stuttgart.de (Weber) writes:
|
|
>In article <1992Oct20.004410.24099@athena.mit.edu> jwiegand@moe.eng.temple.edu writes:
|
|
>>
|
|
>>11. Title: The Design of the Unix Operating System
|
|
>> Author: Maurice Bach
|
|
>> Publisher: Prentice Hall
|
|
>> Edition: 1986
|
|
>> ISBN: 0-13-201799-7
|
|
>> Comment: An excellent reference on the internals of System V ...
|
|
>> This book and the next one are indeed highly technical ...
|
|
>>
|
|
>I have read in this book and I liked it.
|
|
>My question: Is this book compatible with Linux, too (or the other
|
|
> way round)?
|
|
|
|
Well.. It was one of the books I used pretty heavily during early
|
|
development, so there are certainly similarities: some of the algorithms
|
|
(especially in the filesystem and buffer cache) the book describes are
|
|
used in linux, and even function names can be similar. The book does
|
|
lack in some areas (networking and job control) due to the sysv(r3)
|
|
influence, but it's certainly a good book if you are interested in the
|
|
unix kernel internals - I actually used the system call reference in the
|
|
book as a check-list when implementing the basic linux system calls
|
|
(along with ast's "OS Design and Implementation").
|
|
|
|
Another book I'd kill for (but haven't bought yet - it's a bit pricey)
|
|
is Leffler et al's 4.3BSD internals book ("The Design and Implementation
|
|
of the 4.3BSD system and..."). It covers the BSD system the same way
|
|
Bach covers sysv, and has some pretty interesting chapters. I haven't
|
|
been able to more than skim through it, but Linus says: "get it" if you
|
|
can afford to and are interested in the intricacies of the BSD kernel.
|
|
|
|
Neither of the above books are exactly "linux-compatible" (what a
|
|
concept!), but they are the next best thing: good books about systems
|
|
that have influenced linux heavily.
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Q: List "Linux supporting Computers" ???
|
|
Message-ID: <1992Oct23.091550.28618@klaava.Helsinki.FI>
|
|
Date: 23 Oct 92 09:15:50 GMT
|
|
References: <dingelde.719765444@putzl>
|
|
Organization: University of Helsinki
|
|
Lines: 29
|
|
|
|
|
|
In article <dingelde.719765444@putzl> dingelde@igd.fhg.de (Dennis Dingeldein) writes:
|
|
>Hi,
|
|
>I just downloaded Linux 0.98.1 Bootdisk and 0.97 Rootdisk
|
|
>from nic.funet.fi, transfered the stuff to DOS and executed rawrite
|
|
>to write the stuff on disks.
|
|
>
|
|
>I tried to run Linux on three Machines (2x386 and 1x486) in my company.
|
|
>One of them was a Compaq 386.
|
|
>The Results were AS BAD AS POSSIBLE
|
|
>Linux did not run on ANY MACHINE !
|
|
|
|
Hmm. While it's entirely possible that linux won't work on the machines
|
|
(it does happen), the fact that it doesn't work on *any* of them makes
|
|
me wonder about your boot-disk (and possibly root-disk) integrity.
|
|
Linux does work on most AT-386's it seems, and the above seems a bit too
|
|
unlucky (although at least some Compaq machines are known for doing
|
|
things their own way: Compaq has this IBM-complex and thinks it can
|
|
change the standards to suit itself. I think it's gotten better).
|
|
|
|
The easiest way to prove there is no problem with a boot floppy is to
|
|
find a computer it boots on: if you cannot, you should make sure you
|
|
downloaded the images in binary mode all the way etc. If the bootimage
|
|
is corrupted (or only partly written or similar: rawrite seems to have
|
|
problems with some machines), the normal result is the reboot you
|
|
describe. Don't be fooled by the fact that "Loading..." appears to
|
|
work: that is handled by only the first 512 bytes, so even if they are
|
|
good, the rest may not be.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: minix as a V86 task?
|
|
Message-ID: <1992Oct23.093614.29238@klaava.Helsinki.FI>
|
|
Date: 23 Oct 92 09:36:14 GMT
|
|
References: <1992Oct23.031534.4907@cbnewse.cb.att.com>
|
|
Organization: University of Helsinki
|
|
Lines: 30
|
|
|
|
|
|
In article <1992Oct23.031534.4907@cbnewse.cb.att.com> sph1@cbnewse.cb.att.com (stephen.p.hill) writes:
|
|
>I am going to take a class that requires a little Minix
|
|
>programming ( either this spring or in the fall ) and I was
|
|
>wondering if anyone ever tried to run Minix ( an 8088 version,
|
|
>of course, not the 386 version ) under Linux. I realize that
|
|
>the best solution would be to convince the teacher to use
|
|
>Linux instead of Minix, but Linux does not come with a textbook..
|
|
>
|
|
>It would be pretty neat if I could run 4 or 5 instances of Minix
|
|
>under Linux, but I haven't got a clue if this is possible.
|
|
>Anyone with the answer?
|
|
|
|
Well, this sounded like a fun thing to try, so I tried starting the
|
|
minix univeral boot version under the linux DOS-emu, in the hope that it
|
|
would work as it uses the BIOS for most things. I'm afraid it doesn't.
|
|
It actually gets as far as loading the kernel and printing out the minix
|
|
copyright message and asking for the keyboard type.
|
|
|
|
But after giving the correct keyboard, minix starts to do something to
|
|
the DMA registers (I haven't looked at the source - but that's what the
|
|
dosemu debugging info would seem to indicate), which the linux
|
|
dos-emulator doesn't emulate at all. So when minix starts looping
|
|
waiting for something to happen, it just sits there, and I killed it
|
|
from another VC.
|
|
|
|
So, no, it's not possible with the current emulator, and it would
|
|
probably take a lot of work to get it working. Not impossible, but not a
|
|
trivial project either.
|
|
|
|
Linus
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: ANNOUNCE: 0.98.pl2 is out
|
|
Message-ID: <1992Oct23.110949.4466@klaava.Helsinki.FI>
|
|
Date: 23 Oct 92 11:09:49 GMT
|
|
References: <1992Oct18.144546.28249@klaava.Helsinki.FI> <1992Oct23.101109.1433@mnemosyne.cs.du.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 18
|
|
|
|
|
|
In article <1992Oct23.101109.1433@mnemosyne.cs.du.edu> mpevans@nyx.cs.du.edu (Mark Evans) writes:
|
|
>
|
|
>Is there a simple way to turn this NULL pointer trapping off?
|
|
>So I have a machine I can login to
|
|
>login: root
|
|
>Unable....
|
|
>is not much use.
|
|
|
|
There is a simple patch (removing one test in an if-statement in
|
|
memory.c), but it's not a real solution to the problem, so I won't even
|
|
post it here (I did post it to the NET channel as I wanted some response
|
|
to some other problems with tcp/ip). 0.98.3 will correct all of these
|
|
that I have so far gotten reports on (and the pre-version that is
|
|
available to limited testers (ie the mailing-lists) corrects 99% of
|
|
them). 0.98.3 will be out this weekend, so I'd suggest you wait two
|
|
days for it.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux,gnu.misc.discuss
|
|
Subject: Re: Copyright
|
|
Message-ID: <1992Oct24.093456.7675@klaava.Helsinki.FI>
|
|
Date: 24 Oct 92 09:34:56 GMT
|
|
References: <1992Oct23.121845.25080@ringer.cs.utsa.edu> <1c8sihINNqm5@uwm.edu> <seu14eS00j5uAS9XdF@andrew.cmu.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 33
|
|
|
|
|
|
In article <seu14eS00j5uAS9XdF@andrew.cmu.edu> sh2v+@andrew.cmu.edu (Stephen Hathorne) writes:
|
|
>
|
|
>Can anyone tell me a little more about the copyright involved with linux?
|
|
>I am working on an application, and wish to use linux as the operating
|
|
>system, (this will save my client about $500)
|
|
>
|
|
>I do not intend to charge for the operating system, but I do intend to
|
|
>charge for the application, and support.
|
|
|
|
This is no problem for the actual kernel: if you use linux you just have
|
|
to make the sources available for the kernel - the copyleft doesn't
|
|
matter for any programs running under linux (even if that would have
|
|
been legal, which I doubt, it's not a restriction I would have wanted to
|
|
put anyway). Money isn't the problem: if you wish, you can even charge
|
|
for the operating system as well - as long as the kernel source is free
|
|
and available from you once he's bought the binary.
|
|
|
|
There might be some problem with the C library, however. Most of it is
|
|
from the GNU libc.a, and as such is under the GLPL - this doesn't mean
|
|
you have to give away your sources, but it does mean that you have to
|
|
give the client a chance to re-link your binaries against a newer (or
|
|
maybe just his own) version of the library. I think it's actually ok if
|
|
you use the shared libraries with jump-tables (as then your binary
|
|
doesn't contain any actual copylefted code), but maybe somebody who
|
|
knows more about the GLPL should comment (which is why I crossposted to
|
|
gnu.misc.discuss - hope this doesn't turn into yet another flamewar).
|
|
|
|
Exactly due to these kinds of problems I made the actual linux low-level
|
|
library routines totally free (ie the kernel interface hooks). So
|
|
programs using those will not be encumbered, but they include only the
|
|
basic unix system calls, and any real program uses many GLPL'd routines.
|
|
|
|
Linus
|
|
|
|
===========================
|
|
===========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Problem copying files with holes to msdos file system
|
|
Message-ID: <1992Oct24.095215.8096@klaava.Helsinki.FI>
|
|
Date: 24 Oct 92 09:52:15 GMT
|
|
References: <9229816.15059@mulga.cs.mu.OZ.AU>
|
|
Organization: University of Helsinki
|
|
Lines: 23
|
|
|
|
|
|
In article <9229816.15059@mulga.cs.mu.OZ.AU> fjh@munta.cs.mu.OZ.AU (Fergus James HENDERSON) writes:
|
|
>I've mounted my DOS partition using "mount -t msdos /dev/sda1 /dos",
|
|
>and most things work fine. But I have had trouble copying some large
|
|
>from the Minix file system to the DOS file system. When I try to
|
|
>copy my boot image file across, using "/bin/cp /linux-0.97.1 /dos/linux-97.1",
|
|
>it goes into an infinite loop. I can't kill the process even with kill -9.
|
|
>The hard disk is being continually accessed, and performance on the
|
|
>other virtual consoles is terribly slow. "ls -l /dos/linux-97.1" shows
|
|
>the file size to be only 3072 bytes.
|
|
|
|
You are right: older versions of the msdos fs have problems with holes
|
|
in files. The easy solution is to upgrade: 0.98.x shouldn't have this
|
|
bug.
|
|
|
|
>Another problem of unknown cause: I tried moving a few large files from
|
|
>the dos file system to the minix file system using /bin/mv, and the
|
|
>system spontaneously rebooted in the middle of executing the command.
|
|
>I don't seem to be having much luck at the moment :-(
|
|
|
|
This one too seems to be gone: I just copied over 1M+ files with 'mv' to
|
|
check it out, and it doesn't happen for me. Upgrade time.
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: will linux use swap partition AND swap file at the same time
|
|
Message-ID: <1992Oct24.181041.17174@klaava.Helsinki.FI>
|
|
Date: 24 Oct 92 18:10:41 GMT
|
|
References: <1cc0gqINN673@usenet.INS.CWRU.Edu>
|
|
Organization: University of Helsinki
|
|
Lines: 28
|
|
|
|
|
|
In article <1cc0gqINN673@usenet.INS.CWRU.Edu> mal11@po.CWRU.Edu (Matthew A. Lewis) writes:
|
|
>
|
|
>I need 16MB of swap and my partition is only 8MB.
|
|
>Can I make an 8MB swap file or do I have to disable the swap
|
|
>partition and make a 16 MB swap file??????????
|
|
|
|
No problem if you are running a relatively recent kernel: you should be
|
|
able to use both a swap-partition (for good performance) and a swap-file
|
|
(for the overflow that won't fit into the partition) at the same time.
|
|
Just do:
|
|
|
|
- create the swapfile (needs to be done only once):
|
|
|
|
# dd if=/dev/zero of=swapfile bs=1024 count=8192
|
|
# mkswap swapfile 8192
|
|
|
|
- enable swapping (usually at bootup):
|
|
|
|
# swapon /dev/hdXX
|
|
# swapon swapfile
|
|
|
|
Note that you had better enable the partition first - linux doesn't do
|
|
any clever swap-space striping or similar, but instead uses up the
|
|
swap-pages in the order they were installed. So enabling the partition
|
|
first means that it gets "preferred status", which is generally what you
|
|
want (as it's noticeably faster to swap to a partition).
|
|
|
|
Linus
|
|
|
|
=================
|
|
=================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Linux - the future?
|
|
Message-ID: <1992Oct25.172207.11981@klaava.Helsinki.FI>
|
|
Date: 25 Oct 92 17:22:07 GMT
|
|
References: <1992Oct25.144134.19612@cs.hw.ac.uk>
|
|
Organization: University of Helsinki
|
|
Lines: 88
|
|
|
|
|
|
In article <1992Oct25.144134.19612@cs.hw.ac.uk> scottd@cs.hw.ac.uk (Scott Dunn) writes:
|
|
>
|
|
>How do you, Linus, see Linux developing?
|
|
>I have to admit that this is the one concern I have always had about Linux.
|
|
>You are, I think I'm right in saying, a student. Developing Linux can't be
|
|
>your main concern at this point in time, unless of course you've managed to
|
|
>tie it in with your course.
|
|
|
|
Actually, it's so far been the other way around: studies haven't been my
|
|
main concern at this point of time unless I've been able to tie them in
|
|
with my linux-hacking. Only half-joking - it really isn't linux that
|
|
has lost time due to other things..
|
|
|
|
> Do you intend taking it as far as 1.0 and then
|
|
>leaving it in the hands of the Linux community to take it further?
|
|
|
|
1.0 has never been any magic number - I don't intend to stop there, and
|
|
the only reason I have delayed it is because there has always seemed to
|
|
be yet another important feature or bug-fix "any day now". My current
|
|
setup is much better than I originally envisioned 1.0 - but even that
|
|
doesn't mean I'm thinking of quitting.
|
|
|
|
There was some talk on the mailing-lists (actually, just one list back
|
|
then) around version 0.12 about me stepping down in case somebody else
|
|
(or some group like the FSF) wanted the job, but nobody seemed even
|
|
slightly interested, and I haven't heard any complaints about the
|
|
current state of affairs yet. It seems people prefer having somebody as
|
|
a final arbiter on what goes in and what doesn't, and I've been the
|
|
natural choice so far despite some of the problems (mostly due to
|
|
lacking hardware).
|
|
|
|
>Are there plans to make it SVID (System V Interface Definition) binary
|
|
>compatible?
|
|
|
|
I've been idly thinking about it: the biggest problem has been lack of
|
|
docs and programs. In any case, I don't feel binary compatibility is
|
|
very high on my list, and I'd rather delay it until the kernel seems to
|
|
be a bit more stable ("stable" in the meaning not-changing as opposed to
|
|
"crashing every minute"). I'm not against binary standards, but I'd
|
|
implement it more as a shell around the "real" linux kernel than as a
|
|
integral part of the kernel.
|
|
|
|
I've always been pro-standard: mostly POSIX, as that has meant porting
|
|
is easy, and that has been the only thing I've been interested in, as I
|
|
don't have any sysvr4 binaries anyway. I don't think this will change:
|
|
linux will probably be able to accomodate future standards faster than
|
|
systems that don't come with source code. After all, being freely
|
|
available has resulted in the current system in "record time" (or then
|
|
I'm just such a helluva programmer - take your pick :-)
|
|
|
|
>What features are missing from Linux?
|
|
|
|
On a user level, the worst actual missing features are probably related
|
|
to memory management: the linux memory manager is still just three (not
|
|
even very big) files, and while it's clever, it's not very general. So
|
|
things like shared memory and a real mmap() are still not there,
|
|
although I've been looking into it for some time now.
|
|
|
|
Internally, the socket code isn't very well integrated with the rest of
|
|
the kernel - I'd like something more general. But there aren't any
|
|
major features missing: the networking code may not be quite stable yet,
|
|
but that's just a matter of time, as the basic things are there.
|
|
|
|
>If you, Linus, are unable or unwilling to continue developing Linux
|
|
>in the future would the handover of Linux to FSF be an option?
|
|
|
|
The day people think linux would be better served by somebody else (FSF
|
|
being the natural alternative), I'll "abdicate". I don't think that
|
|
it's something people have to worry about right now - I don't see it
|
|
happening in the near future. I enjoy doing linux, even though it does
|
|
mean some work, and I haven't gotten any complaints (some almost timid
|
|
reminders about a patch I have forgotten or ignored, but nothing
|
|
negative so far).
|
|
|
|
Don't take the above to mean that I'll stop the day somebody complains:
|
|
I'm thick-skinned (Lasu, who is reading this over my shoulder commented
|
|
that "thick-HEADED is closer to the truth") enough to take some abuse.
|
|
If I weren't, I'd have stopped developing linux the day ast ridiculed me
|
|
on c.o.minix. What I mean is just that while linux has been my baby so
|
|
far, I don't want to stand in the way if people want to make something
|
|
better of it (*).
|
|
|
|
Linus
|
|
|
|
(*) Hey, maybe I could apply for a saint-hood from the Pope. Does
|
|
somebody know what his email-address is? I'm so nice it makes you puke.
|
|
Don't worry, though: this is just my net-personality, and in real life I
|
|
kick furry small animals for fun.
|
|
|
|
===================
|
|
===================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 0.98.3 is late ...
|
|
Message-ID: <1992Oct26.050726.2504@klaava.Helsinki.FI>
|
|
Date: 26 Oct 92 05:07:26 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 16
|
|
|
|
|
|
|
|
... as you probably all have noticed. I've been up all night writing
|
|
this report for the "CS Course from Hell" (*), and haven't had time to
|
|
play with linux. I'll get it done tonight if I can keep awake that
|
|
long.
|
|
|
|
In case anybody still wonders, 0.98.3 mainly fixes the NULL pointer and
|
|
most of the serial line problems. I also started to remove some of the
|
|
more unnecessary cli-sti pairs (where races could be avoided by doing it
|
|
some other way), so it's possible interrupt latency is better, but I
|
|
doubt it's noticeable.
|
|
|
|
Linus
|
|
|
|
(*) Well, they call it "ATK-suunnittelun laboratorioty|", but they
|
|
aren't fooling anybody.
|
|
|
|
================
|
|
================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: 0.98.3 finally available
|
|
Message-ID: <1992Oct27.040101.28497@klaava.Helsinki.FI>
|
|
Date: 27 Oct 92 04:01:01 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 10
|
|
|
|
|
|
0.98.3 is available at nic.funet.fi: pub/OS/Linux/testing/Linus as diffs
|
|
against 0.98.2 (linux-0.98.patch3.Z) and against the pre-release that
|
|
was announced on the mailing-lists (pre-final.diff.Z). I haven't
|
|
uploaded the complete sources yet, so diffs are all there is: I'll
|
|
upload the full sources once I've gotten some more sleep.
|
|
|
|
0.98.3 corrects a lot of NULL-pointer bugs, as well as some other
|
|
problems (notably serial lines). Hope this release will be stable,
|
|
|
|
Linus
|
|
|
|
=====================
|
|
=====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: I can malloc more memory than I have.SKIP
|
|
Message-ID: <1992Oct27.105511.17819@klaava.Helsinki.FI>
|
|
Date: 27 Oct 92 10:55:11 GMT
|
|
References: <1992Oct26.083011.17192@fys.ruu.nl> <1992Oct26.180801.28536@sfu.ca> <1992Oct27.124302.90427@vaxc.cc.monash.edu.au>
|
|
Organization: University of Helsinki
|
|
Lines: 30
|
|
|
|
|
|
In article <1992Oct27.124302.90427@vaxc.cc.monash.edu.au> johnhm@vaxc.cc.monash.edu.au writes:
|
|
>
|
|
> I think the problem is more general than just running out of virtual memory.
|
|
>It seems as though code that runs in the kernal can realy hog the the machine
|
|
>to the exclusion of all else.
|
|
> For instance, when running X11perf without a coprocessor the machine will seem
|
|
>to grind (almost) to a halt during some of the tests (probably ones using
|
|
>circular functions heavily). Lack of memory doesn't seem to be the problem
|
|
>here as there is no swapping going on (which top confirms whenever it gets a
|
|
>chance to run). It seems a bit strange if the kernal is blocking other processes
|
|
>even if it's just doing floating point emulation. I wonder if this extends to
|
|
>everything the kernal does?
|
|
|
|
While it's true that a kernel process won't be rescheduled while it
|
|
still runs, this should be no problem: all the system calls, traps and
|
|
interrupt handlers are designed to cope with that (although there may
|
|
actually be some busy waiting in the SCSI-driver). The reason x11perf
|
|
seems to bring the machine to it's knees is not that the kernel hogs all
|
|
the time, but because X11 itself is busy calculating things - while the
|
|
X server does it's calculations, it won't do other screen updating...
|
|
|
|
The core-dumping mis-feature when running out of swap is a pity - I
|
|
might try to make this a special case so that no core will be generated
|
|
for this case (you don't do much with a core-file anyway: it wasn't
|
|
exactly a program bug that resulted in it being terminated). In the
|
|
meantime, setting the core-size to 0 (ulimit -c 0) is the preferred
|
|
option unless you are actively debugging something. Do it in your
|
|
.profile, and you'll never see another core again..
|
|
|
|
Linus
|
|
|
|
======================
|
|
======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: ANNOUNCE: linux-0.98.3
|
|
Message-ID: <1992Oct27.194952.14193@klaava.Helsinki.FI>
|
|
Date: 27 Oct 92 19:49:52 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 59
|
|
|
|
|
|
Ok, I already sent out an announcement last night, but due to the time
|
|
(6AM over here) I wasn't really in a mood to write a real annoucement.
|
|
Here it is.
|
|
|
|
linux-0.98.3 is available by anonymous ftp at least on nic.funet.fi:
|
|
pub/OS/Linux/testing/Linus, both as context diffs against 0.98.2 and the
|
|
pre-version of 0.98.3 and as complete source. The complete source
|
|
package was done by directly applying the diffs - this means that the
|
|
Makefile dependancies are probably not 100% up-to-date as I remove those
|
|
from the diffs. It shouldn't be any problem, and you can always do a
|
|
"make dep ; make clean" before actually compiling the kernel.
|
|
|
|
0.98 pl3 fixes several bugs, and should remove all known NULL-pointer
|
|
problems that made 0.98.2 unusable for most people. In addition to the
|
|
NULL pointer fixes, the following things have changed:
|
|
|
|
- removed most of the cli-sti pairs in the filesystem code by rewriting
|
|
the locking routines to use a different algorithm, possible due to
|
|
the rewritten wait-queue code that I did back in 0.96c or so.
|
|
Interrupt latency should be better on slow machines, but I don't know
|
|
if it's noticeable.
|
|
- Minor 387-emulation fixes by Bill Metzenthen - only noticeable under
|
|
special conditions.
|
|
- Corrected various error-returns in the fs (thanks to Bruce Evans for
|
|
running some error diagnostics). Error messages when opening (and
|
|
renaming etc) files that had a non-directory in the path were wrong,
|
|
and should be ok now (ie giving ENOTDIR instead of EACCESS or ENOENT).
|
|
Some other problems reported by Bruce fixed.
|
|
- Changed the interface for some fs-related functions due to cleaning
|
|
up super-block handling. Most noticeably, iget() and related
|
|
functions no longer specify the inode with a device and inode number,
|
|
but instead with a super-block pointer and inode number. This is
|
|
more logical, and should make unnamed devices (ie internal
|
|
filesystems like nfs and /proc) cleaner. Also note that the calling
|
|
sequence for sb->s_op->put_inode() also has changed since 0.98. This
|
|
is of interest only if you are writing filesystem drivers..
|
|
- ASK_SVGA was broken in 0.98.2 - it should be ok now.
|
|
|
|
Also, various minor fixes as usual. No new features, but I hope 0.98.3
|
|
will be a lot less bug-prone due to the changes since 0.98.1. Some
|
|
minor tcp/ip corrections (but most of them were in the pre-release), and
|
|
I removed a race-condition in the tty-handling code.
|
|
|
|
Note that people who use math without a co-processor should certainly
|
|
upgrade to 0.98.3: the new emulator is much better than my original one
|
|
both in speed and accuracy/exception handling. x11perf is very much
|
|
bearable now even without a 387, and things like ray-tracing etc
|
|
shouldn't be a problem any more. It's slower than hardware fp, of
|
|
course, but at least it works.
|
|
|
|
The new emulator also means there is no reason for a separate soft-float
|
|
library, so I'd assume that will be gone in the next gcc release for
|
|
linux.
|
|
|
|
As usual, a new kernel version probably means you'll have to recompile
|
|
'ps' and friends. But at least the same 'ps' sources that worked for
|
|
0.97.6 should still work.
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: MAJOR bug in mount in 0.98.3
|
|
Message-ID: <1992Oct29.121938.16664@klaava.Helsinki.FI>
|
|
Date: 29 Oct 92 12:19:38 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 66
|
|
|
|
|
|
|
|
Sorry everybody, but pl3 has a major bug in mounting related to the
|
|
caching of inodes - they are searched according to inode number and the
|
|
super-block they are associated to (so far so fine), but the super-block
|
|
info is not correctly updated when mounting/umounting a filesystem.
|
|
This is not normally noticeable (bad excuse) as most people (including
|
|
me) mount things just once, but if you umount and remount something, it
|
|
can lead to MAJOR filesystem corruption.
|
|
|
|
Thanks to hlu, who found this (sadly destroying his fs in the process..)
|
|
|
|
The fix is in linux/fs/inode.c, in the function 'fs_may_mount()'. It
|
|
looks like this:
|
|
|
|
----- "patch" follows -----
|
|
int fs_may_mount(dev_t dev)
|
|
{
|
|
struct inode * inode;
|
|
|
|
for (inode = inode_table+0 ; inode < inode_table+NR_INODE ; inode++) {
|
|
if (inode->i_dev != dev)
|
|
continue;
|
|
if (inode->i_count || inode->i_dirt || inode->i_lock)
|
|
return 0;
|
|
inode->i_dev = 0;
|
|
+ inode->i_sb = NULL;
|
|
}
|
|
return 1;
|
|
}
|
|
----- end of "patch" -----
|
|
|
|
ie, just add the "inode->i_sb = NULL;" line to the function. That
|
|
should fix the problem.
|
|
|
|
Another problem (also found by hlu) is in linux/kernel/chr_drv/serial.c,
|
|
where an 'outb()' statement has the order of the argumebts mixed up. The
|
|
offending line is in the function set_modem_info(), line 778, and it
|
|
looks like this:
|
|
|
|
----- begin "patch" -----
|
|
default:
|
|
return -EINVAL;
|
|
}
|
|
! outb(UART_MCR + port,control);
|
|
return 0;
|
|
}
|
|
|
|
******
|
|
default:
|
|
return -EINVAL;
|
|
}
|
|
! outb(control, UART_MCR + port);
|
|
return 0;
|
|
}
|
|
|
|
----- end "patch" -----
|
|
|
|
ie, just swap the 'control' and 'UART_MCR + port' arguments. Neither of
|
|
the above is a "real" patch in that you have to patch it by hand, but I
|
|
haven't had time to do those yet (and I'll try to find some other bugs
|
|
while I'm at it). But if you have 0.98.3, *PLEASE* apply them, or use
|
|
an older version.
|
|
|
|
Sorry for the new bugs,
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Strange minix fs problem: duplicate core files in directory!
|
|
Message-ID: <1992Oct30.155235.18870@klaava.Helsinki.FI>
|
|
Date: 30 Oct 92 15:52:35 GMT
|
|
References: <1992Oct30.050149.28125@cheshire.oxy.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 40
|
|
|
|
|
|
In article <1992Oct30.050149.28125@cheshire.oxy.edu> rafetmad@cheshire.oxy.edu (David Giller) writes:
|
|
>I just ran into a strange problem with the minix filesystem. When
|
|
>dumping core files under X, linux created two files (different, not
|
|
>identical) called "core" in my home directory.
|
|
>
|
|
>Here's the whole explanation:
|
|
>
|
|
>I installed SLS 0.98 a week ago, and have since patched the kernel up
|
|
>to 0.98.3. Rebooted, did an fsck, and started up X.
|
|
>
|
|
>I created a 4Mb swapfile, and swapon'ed it. I started up about 10
|
|
>clients.
|
|
>
|
|
>Then, for fun, I did a swapoff on the swapfile [ deleted ]
|
|
|
|
Ok, it's due to a race-condition in the filesystem - I haven't bothered
|
|
to fix it for the simple reason that it almost never happens (and it's
|
|
bothersome to fix completely), but the above sure is one way to make the
|
|
system have some problems. Doing a "swapoff" when you don't really have
|
|
enough memory isn't a good idea, although nothing should really break
|
|
(linux tries very hard to stop swapping by writing out executable pages
|
|
etc - that's why you get all the disk accesses. And as you noticed,
|
|
some of the programs may be killed off).
|
|
|
|
You can create several files with the same name in the same directory
|
|
just by stressing the system very hard and trying to create files with
|
|
the same name. It's a harmless way to have some fun on your system: the
|
|
files are distinct but have the same name so you could possibly confuse
|
|
some programs with it. You can delete them one-by one, or simply rename
|
|
them: doing a rename on the name will rename the file that is first in
|
|
the directory, while the other will still have the old name. It's fun
|
|
to mess with the minds of innocent programs by doing these kinds of
|
|
stunts - has anybody tried tarring such a directory?
|
|
|
|
Note that it isn't exactly easy to create these kinds of duplicate
|
|
names: you really have to swap pretty badly. I guess I should document
|
|
it and add it as a "feature" to linux: it's harmless enough that I
|
|
probably won't try very hard to get it corrected.
|
|
|
|
Linus
|
|
|
|
========================
|
|
========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Strange error with 0.98.3 and X11
|
|
Message-ID: <1992Oct30.155953.19088@klaava.Helsinki.FI>
|
|
Date: 30 Oct 92 15:59:53 GMT
|
|
References: <1992Oct30.120931.3085@ultb.isc.rit.edu>
|
|
Organization: University of Helsinki
|
|
Lines: 16
|
|
|
|
|
|
In article <1992Oct30.120931.3085@ultb.isc.rit.edu> axi0349@ultb.isc.rit.edu (A.X. Ivasyuk) writes:
|
|
>
|
|
>I'm getting a strange error when I exit X and it restores the text screen.
|
|
>It says, "ERROR: wm-FPU-emu is not RE-ENTRANT!". This doesn't stop X from
|
|
>running, but I'm wondering what this is all about...
|
|
|
|
Yes, there is a bug with respect to re-entrancy in the new
|
|
math-emulator. It has to do with several emulator-instances being
|
|
active at the same time due to demand-loading or swapping, and might be
|
|
a problem for some (but it's timing-dependent as well, so you won't
|
|
necessarily see it..). I hope to have it fixed for the next release,
|
|
but it shouldn't really break too much software even now. X11 is more
|
|
of a problem than most things due to the fact that most people swap a
|
|
lot more under X than they normally do.
|
|
|
|
Linus
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: [BUG]: (seems so ...) 0.98pl3
|
|
Message-ID: <1992Oct31.220649.27337@klaava.Helsinki.FI>
|
|
Date: 31 Oct 92 22:06:49 GMT
|
|
References: <1992Oct31.051350.1188@utstat.uucp>
|
|
Organization: University of Helsinki
|
|
Lines: 23
|
|
|
|
|
|
In article <1992Oct31.051350.1188@utstat.uucp> rafal@utstat.uucp (Rafal Kustra (summer student)) writes:
|
|
>Moving to .98pl3, from .97pl4 couses TeX to abort with:
|
|
>No inode #/device # in parent directory.
|
|
|
|
As a rought guess, I'd assume this is with an old binary that tries to
|
|
read the directories "by hand" instead of using the readdir() system
|
|
call. This happens if it was compiled with something before gcc-2.2.2,
|
|
so I thought it wouldn't break anything to disallow that in the new
|
|
release. As it turns out, more people are using old binaries than I
|
|
though, but I won't re-enable it: reading a directory is not a good idea
|
|
and will break on any non-minix filesystems anyway.
|
|
|
|
So the fix is probably just to recompile TeX or get a newer binary from
|
|
some place (but I haven't kept up with TeX: no diskspace). The same
|
|
problem also seems to plague some kermit binaries - the symptoms seem to
|
|
be that "set line" doesn't work as expected.
|
|
|
|
You can also see the new behaviour more easily by just doing a "cat ."
|
|
using both the old and new linux kernels. With the old kernels, this
|
|
results in a messy display of the directory contents on a minix-fs,
|
|
whereas 0.98.3 gives the error message "cat: .: Is a directory".
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: SLS 0.98p1 vs Logitech Busmouse (death via wake_up())
|
|
Message-ID: <1992Oct31.231854.28578@klaava.Helsinki.FI>
|
|
Date: 31 Oct 92 23:18:54 GMT
|
|
References: <ingima.720570541@kakwa.ucs.ualberta.ca>
|
|
Organization: University of Helsinki
|
|
Lines: 29
|
|
|
|
|
|
In article <ingima.720570541@kakwa.ucs.ualberta.ca> ingima@ee.ualberta.ca (Darin Ingimarson) writes:
|
|
>
|
|
> Well, I haven't got this beat, but I'm far from giving up. Many thanks
|
|
>to Bob Kirkpatrick for his help on this. Here is what I've found out so far:
|
|
>
|
|
> The logitech mouse driver snuffs it in the mouse_int() routine at the
|
|
>wake_up() call. What I am humbly requesting is someone who knows a bit more
|
|
>about the mouse driver and Linux scheduling to answer a couple of questions for
|
|
>me before I get back at it (I've written many a device driver and done lots of
|
|
>system level bughunting in a UNIX-like RTOS, so I'm not a complete techno-
|
|
>turnip... just not much experience with things like select(), *NIX interprocess
|
|
>security, etc.).
|
|
>
|
|
> It seems to me (from perusing Linus' source) that this wake_up() call
|
|
>suggests to the scheduler that it might want to wake up any proceses waiting
|
|
>on a mouse interrupt. Why would wake_up() die if no processes are waiting
|
|
>on the interrupt? Shouldn't wake_up() just see that nothing is waiting and go
|
|
>on with things?
|
|
|
|
wakeup() works fine even if there aren't any jobs on the queue: this
|
|
particular problem is due to there being *bogus* jobs on the queue, as
|
|
the wait-queue pointer is never initialized to NULL in 0.98.1.
|
|
|
|
The easy fix is just to initialize the wait-queue correctly, or indeed
|
|
just get 0.98.3 which does it correctly. Also, using new versions of
|
|
LILO will result in the kernel bss being automatically cleared, and the
|
|
problem goes away.
|
|
|
|
Linus
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: linux-0.98.3 termcap problem
|
|
Message-ID: <1992Nov1.101439.10943@klaava.Helsinki.FI>
|
|
Date: 1 Nov 92 10:14:39 GMT
|
|
References: <1992Nov1.004828.6310@afterlife.ncsc.mil>
|
|
Organization: University of Helsinki
|
|
Lines: 18
|
|
|
|
|
|
In article <1992Nov1.004828.6310@afterlife.ncsc.mil> jepstei@afterlife.ncsc.mil (John Epstein) writes:
|
|
>
|
|
>QUESTION: Besides fs and math emulation, was termcap
|
|
>supposed to affected by 0.98.2 or 0.98.3
|
|
>I assume null-pointer would generate an error.
|
|
|
|
Arggh. Yes, the kernel did change some terminal info in 0.98.3 - namely
|
|
the standard TERM variable. Instead of using the "con80x25" etc names
|
|
(which resulted in terrible /etc/termcap files), 0.98.3 initializes TERM
|
|
to be simply "console". The terminal size is available from the termios
|
|
size structure, and is no longer encoded into the terminal type name.
|
|
|
|
So if you seem to have problems with termcap, make sure you have an
|
|
entry for "console" which essentially looks like vt100 or vt220. That
|
|
should be the default (well, it was in *my* termcap even before I did
|
|
the changes to 0.98.3), but it may not be true of all systems.
|
|
|
|
Linus
|
|
|
|
=======================
|
|
=======================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: QUERY: raw floppy devices?
|
|
Message-ID: <1992Nov3.104745.13480@klaava.Helsinki.FI>
|
|
Date: 3 Nov 92 10:47:45 GMT
|
|
References: <2AF55E71.5AA1@tct.com>
|
|
Organization: University of Helsinki
|
|
Lines: 14
|
|
|
|
|
|
In article <2AF55E71.5AA1@tct.com> chip@tct.com (Chip Salzenberg) writes:
|
|
>Is there a technical reason not to support /dev/rfdX devices? It
|
|
>seems like a Bad Thing to force one-time floppy accesses (like, say,
|
|
>disk copies with "dd") into the buffer pool.
|
|
|
|
No technical reason unless you count simplicity. When I wrote the
|
|
original drivers I didn't want to bother with both raw and buffered
|
|
access, so I settled for just the buffered routines. I haven't seen
|
|
enough reason to regret that yet: using the fs buffers does fill them up
|
|
unnecessarily in some cases, but I haven't really found it to be a
|
|
bother (mostly the reverse: no need to bother about blocking factors for
|
|
good floppy speed etc).
|
|
|
|
Linus
|
|
|
|
==========================
|
|
==========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: USENET Readership report for Oct 92
|
|
Summary: edited for c.o.linux
|
|
Message-ID: <1992Nov3.125211.20525@klaava.Helsinki.FI>
|
|
Date: 3 Nov 92 12:52:11 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 54
|
|
|
|
|
|
Ok, I don't know if anybody was very interested last month either, but
|
|
in case people want to know and don't read the news.lists group, here is
|
|
the latest (edited) popularity info. Additionally, linux once more
|
|
showed up in the top-40 lists in both volume and per-reader cost.
|
|
|
|
This month yet another milestone was reached: note the "Recent traffic"
|
|
fields (both in kilobytes and number of messages): c.o.linux is actually
|
|
more active than alt.sex according to newsstat. c.o.linux was nr 31
|
|
in traffic volume in kB - actually the biggest non-binary "technical"
|
|
group it would seem.
|
|
|
|
Linus
|
|
|
|
----------
|
|
This is the edited set of data from the USENET readership report for Oct 92.
|
|
Explanations of the figures (and the full lists) can be found in 'news.lists'.
|
|
|
|
+-- Estimated total number of people who read the group, worldwide.
|
|
| +-- Actual number of readers in sampled population
|
|
| | +-- Propagation: how many sites receive this group at all
|
|
| | | +-- Recent traffic (messages per month)
|
|
| | | | +-- Recent traffic (kilobytes per month)
|
|
| | | | | +-- Crossposting percentage
|
|
| | | | | | +-- Cost ratio: $US/month/rdr
|
|
| | | | | | | +-- Share: % of newsrders
|
|
| | | | | | | | who read this group.
|
|
V V V V V V V V
|
|
1 190000 5837 90% 10 158.1 100% 0.00 12.1% news.announce.newusers
|
|
2 160000 4971 83% 1002 1958.2 17% 0.02 10.3% misc.jobs.offered
|
|
3 160000 4965 82% 1666 2087.5 36% 0.02 10.3% misc.forsale
|
|
4 130000 4015 68% 1752 4192.5 41% 0.04 8.3% alt.sex
|
|
5 120000 3855 84% 6 262.9 67% 0.00 8.0% news.answers
|
|
...
|
|
20 75000 2331 87% 1294 2465.0 16% 0.05 4.8% comp.lang.c
|
|
...
|
|
94 41000 1289 84% 90 120.8 30% 0.00 2.7% comp.unix.misc
|
|
...
|
|
114 39000 1197 77% 1251 2943.9 5% 0.11 2.5% comp.unix.bsd
|
|
...
|
|
171 33000 1016 86% 593 928.1 13% 0.05 2.1% comp.unix.ultrix
|
|
...
|
|
256 27000 842 72% 2890 4755.9 4% 0.24 1.7% comp.os.linux
|
|
...
|
|
279 26000 801 83% 880 1465.3 8% 0.09 1.7% comp.unix.aix
|
|
...
|
|
297 25000 784 82% 23 35.4 9% 0.00 1.6% comp.os.misc
|
|
...
|
|
385 22000 690 83% 163 1094.1 3% 0.08 1.4% comp.os.minix
|
|
...
|
|
543 18000 554 49% - - - - 1.2% comp.unix.pc-clone.32bit
|
|
...
|
|
689 15000 478 76% 526 887.8 1% 0.09 1.0% comp.os.coherent
|
|
...
|
|
1640 1600 49 10% 13 137.4 0% 0.02 0.1% de.newusers
|
|
|
|
====================
|
|
====================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.unix.bsd,comp.os.linux
|
|
Subject: Re: Port of new Linux math emulator to 386bsd?
|
|
Keywords: math emulator, port
|
|
Message-ID: <1992Nov4.111732.9703@klaava.Helsinki.FI>
|
|
Date: 4 Nov 92 11:17:32 GMT
|
|
References: <1992Nov4.021453.22896@citec.oz.au>
|
|
Organization: University of Helsinki
|
|
Lines: 16
|
|
|
|
|
|
In article <1992Nov4.021453.22896@citec.oz.au> sgccseh@citec.oz.au (Steve Hocking) writes:
|
|
>
|
|
> Looking at the latest Linux release and user comments on it, it
|
|
>appears that a new math emulator has been written which is more complete and
|
|
>accurate, plus about 2x faster. Does anybody have plans to port this to
|
|
>386bsd (since we got the original emulator from Linux anyway)?
|
|
|
|
The problem is the copyright: it's copylefted code by Bill Metzenthen,
|
|
so you cannot distribute it under the 386bsd copyright. The original
|
|
emulator I wrote was also originally copylefted, but I gave Bill and
|
|
Lynne the right to use it under 386bsd (the copyright was changed to
|
|
something like "freely usable for the 386bsd and linux projects").
|
|
You'd have to ask permission from Metzenthen - his email address can be
|
|
found in the sources.
|
|
|
|
Linus
|
|
|
|
============================
|
|
============================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Re: Free UNIX for sale
|
|
Message-ID: <1992Nov4.162315.26780@klaava.Helsinki.FI>
|
|
Date: 4 Nov 92 16:23:15 GMT
|
|
References: <73559@hydra.gatech.EDU> <1992Nov4.140106.3873@fwi.uva.nl>
|
|
Organization: University of Helsinki
|
|
Lines: 16
|
|
|
|
|
|
In article <1992Nov4.140106.3873@fwi.uva.nl> stolk@fwi.uva.nl (Bram) writes:
|
|
>gt8134b@prism.gatech.EDU (Howlin' Bob) writes:
|
|
>>
|
|
>> --> 386BSD Version 0.1 & LINUX Version 0.96...............$100 <--
|
|
>
|
|
>Gee, Linus and other contributors,
|
|
>I dont know about you, but I would be pissed off, if someone
|
|
>started making money on the stuff I worked so hard at.
|
|
|
|
Why be pissed off? It's really a compliment. And believe me: getting
|
|
money may be fun, but when you get T-shirts, virtual beer, book offers
|
|
and enough money to pay off your computer, *even without asking for it*
|
|
(dropping a few hints, maybe ;-), it's worth a lot more. Hey, I might
|
|
no get rich on linux, but I'm certainly being poor with style, eh?
|
|
|
|
Linus
|
|
|
|
=========================
|
|
=========================
|
|
From: torvalds@klaava.Helsinki.FI (Linus Torvalds)
|
|
Newsgroups: comp.os.linux
|
|
Subject: Thanks...
|
|
Summary: finally paid off my computer
|
|
Message-ID: <1992Nov5.094730.28084@klaava.Helsinki.FI>
|
|
Date: 5 Nov 92 09:47:30 GMT
|
|
Organization: University of Helsinki
|
|
Lines: 16
|
|
|
|
|
|
Just a quick note to say "THANKS" to everybody - today I was able to
|
|
finally pay off my computer using money collected by hpa (Peter Anvin)
|
|
from various people. The collection brought in USD $750, and together
|
|
with some other donations (including a fim 1000 EuroCheque) I was able
|
|
to pay the final rate today. I'd also like to thank everybody else who
|
|
has sent me either money or any other encouragement (ranging from
|
|
postacards and T-shirts (!) to beer-money and actual beer).
|
|
|
|
I'm not making a "hall of fame" of people who have paid me money: I
|
|
might forget somebody (who'd hate me for the rest of his life), and
|
|
anyway, contributions in the form of patches/bug-reports etc have been
|
|
at least as valuable (and I haven't kept track of those either. Shame
|
|
on me). You know who you are,
|
|
|
|
thanks,
|
|
Linus
|
|
|
|
================================
|
|
================================
|
|
################################ |