LINUX's History
Note: The next text was written past times Linus on July 31 1992. It is a
collection of diverse artifacts from the catamenia inwards which Linux first
began to stimulate got shape.
This is simply a sentimental journeying into some of the commencement posts
concerning linux, hence you lot tin happily press 'n' straight off if you lot actually
thought you'd acquire anything technical.
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Gcc-1.40 too a posix-question
Message-ID:
Date: three Jul 91 10:00:50 GMT
Hello netlanders,
Due to a projection I'm working on (in minix), I'm interested inwards the posix
measure definition. Could somebody delight betoken me to a (preferably)
machine-readable format of the latest posix rules? Ftp-sites would be
nice.
The projection was plainly linux, hence past times July third I had started to think
almost actual user-level things: some of the device drivers were ready,
too the harddisk really worked. Not likewise 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 past times Alan W Black & co.
Linus Torvalds torvalds@kruuna.helsinki.fi
PS. Could someone delight assay to finger me from overseas, every bit I've
installed a "changing .plan" (made past times your's truly), too I'm non certain
it industrial plant from outside? It should study a novel .plan every time.
So I was clueless - had simply learned almost named pipes. Sue me. This
component of the post got a lot to a greater extent than response than the actual POSIX query,
but the query did lure out arl from the woodwork, too nosotros mailed around
for a bit, resulting inwards the Linux subdirectory on nic.funet.fi.
Then, almost ii months later, I really had something working: I
made sources for version 0.01 available on nic sometimes around this
time. 0.01 sources weren't really runnable: they were simply a token
gesture to arl who had likely started to despair almost e'er getting
anything. This side past times side post must stimulate got been from simply a span of weeks
earlier that release.
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you lot similar to meet most inwards minix?
Summary: modest poll for my novel operating system
Message-ID:
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki
Hello everybody out in that location using minix -
I'm doing a (free) operating organization (just a hobby, won't live big and
professional person similar gnu) for 386(486) AT clones. This has been brewing
since april, too is starting to acquire ready. I'd similar whatever feedback on
things people like/dislike inwards minix, every bit my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
amidst other things).
I've currently ported bash(1.08) too gcc(1.40), too things seem to work.
This implies that I'll acquire something practical inside a few months, and
I'd similar to know what features most people would want. Any suggestions
are welcome, but I won't hope I'll implement them :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Yes - it's gratis of whatever minix code, too it has a multi-threaded fs.
It is NOT protable (uses 386 task switching etc), too it likely never
volition back upward anything other than AT-harddisks, every bit that's all I stimulate got :-(.
Judging from the post, 0.01 wasn't really out yet, but it's close.
I'd approximate the commencement version went out inwards the middle of September -91. I
got some responses to this (most past times mail, which I haven't saved), and
I fifty-fifty got a few mails asking to live beta-testers for linux. After that
simply a few full general answers to quesions on the net:
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Re: What would you lot similar to meet most inwards minix?
Summary: yeah - it's nonportable
Message-ID:
Date: 26 Aug 91 11:06:02 GMT
Organization: University of Helsinki
In article jkp@cs.HUT.FI (Jyrki Kuoppala) writes:
>> [re: my post almost my novel OS]
>
>Tell us more! Does it demand a MMU?
Yes, it needs a MMU (sorry everybody), too it specifically needs a
386/486 MMU (see later).
>
>>PS. Yes - it's gratis of whatever minix code, too it has a multi-threaded fs.
>>It is NOT protable (uses 386 task switching etc)
>
>How much of it is inwards C? What difficulties volition in that location live inwards porting?
>Nobody volition believe you lot almost non-portability ;-), too I for i would
>like to port it to my Amiga (Mach needs a MMU too Minix is non free).
Simply, I'd say that porting is impossible. It's mostly inwards C, but most
people wouldn't telephone outcry upward what I write C. It uses every conceivable feature
of the 386 I could find, every bit it was also a projection to learn me almost the
386. As already mentioned, it uses a MMU, for both paging (not to disk
yet) too segmentation. It's the segmentation that makes it REALLY 386
subject (every task has a 64Mb segment for code & information - max 64 tasks
inwards 4Gb. Anybody who needs to a greater extent than than 64Mb/task - tough cookies).
It also uses every characteristic of gcc I could find, specifically the __asm__
directive, hence that I wouldn't demand hence much assembly linguistic communication objects.
Some of my "C"-files (specifically mm.c) are almost every bit much assembler as
C. It would live "interesting" fifty-fifty to port it to some other compiler (though
why anybody would desire to exercise anything other than gcc is a mystery).
Note: linux has inwards fact gotten to a greater extent than portable amongst newer versions:
in that location was a lot to a greater extent than assembly inwards the early on versions. It has inwards fact
been ported to other architectures past times now.
Unlike minix, I also laissez passer on off to LIKE interrupts, hence interrupts are
handled without trying to shroud the argue behind them (I peculiarly like
my hard-disk-driver. Anybody else brand interrupts displace a state-
machine?). All inwards all it's a porters nightmare.
>As for the features; well, pseudo ttys, BSD sockets, user-mode
>filesystems (so I tin say truthful cat /dev/tcp/kruuna.helsinki.fi/finger),
>window size inwards the tty structure, organization calls capable of supporting
>POSIX.1. Oh, too bsd-style long file names.
Most of these seem possible (the tty construction already has stubs for
window size), except maybe for the user-mode filesystems. As to POSIX,
I'd live delighted to stimulate got it, but posix wants coin for their papers, so
that's non currently an option. In whatever illustration these are things that won't
live supported for some fourth dimension yet (first I'll arrive a simple minix-
lookalike, keyword SIMPLE).
Linus (torvalds@kruuna.helsinki.fi)
PS. To brand things really clear - yeah I tin run gcc on it, too bash, and
most of the gnu [bin/file]utilities, but it's non real debugged, too the
library is really minimal. It doesn't fifty-fifty back upward floppy-disks yet. It
won't live ready for distribution for a span of months. Even hence it
likely won't live able to practise much to a greater extent than than minix, too much less inwards some
respects. It volition live gratis though (probably nether gnu-license or similar).
Well, plainly something worked on my machine: I doubtfulness I had yet
gotten gcc to compile itself nether linux (or I would stimulate got been too
proud of it non to call it). Still earlier whatever release-date.
Then, Oct 5th, I seem to stimulate got released 0.02. As I already
mentioned, 0.01 didn't really come upward amongst whatever binaries: it was just
source code for people interested inwards what linux looked like. Note the
lack of proclamation for 0.01: I wasn't likewise proud of it, hence I retrieve I
only sent a complaint to everybody who had shown interest.
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Free minix-like core sources for 386-AT
Message-ID:
Date: five Oct 91 05:41:06 GMT
Organization: University of Helsinki
Do you lot pino for the dainty days of minix-1.1, when men were men too wrote
their ain device drivers? Are you lot without a dainty projection too simply dying
to cutting your teeth on a OS you lot tin assay to modify for your needs? Are you
finding it frustrating when everything industrial plant on minix? No to a greater extent than all-
nighters to acquire a nifty computer program working? Then this post mightiness live just
for you lot :-)
As I mentioned a month(?) ago, I'm working on a gratis version of a
minix-lookalike for AT-386 computers. It has lastly reached the stage
where it's fifty-fifty usable (though may non live depending on what you lot want),
too I am willing to publish the sources for wider distribution. It is
simply version 0.02 (+1 (very small) patch already), but I've successfully
run bash/gcc/gnu-make/gnu-sed/compress etc nether it.
Sources for this pet projection of mine tin live establish at nic.funet.fi
(128.214.6.100) inwards the directory /pub/OS/Linux. The directory also
contains some README-file too a span of binaries to piece of work nether linux
(bash, update too gcc, what to a greater extent than tin you lot enquire for :-). Full kernel
source is provided, every bit no minix code has been used. Library sources are
only partially free, hence that cannot live distributed currently. The
organization is able to compile "as-is" too has been known to work. Heh.
Sources to the binaries (bash too gcc) tin live establish at the same house in
/pub/gnu.
ALERT! WARNING! NOTE! These sources all the same demand minix-386 to live compiled
(and gcc-1.40, peradventure 1.37.1, haven't tested), too you lot demand minix to
laid it upward if you lot desire to run it, hence it is non yet a standalone system
for those of you lot without minix. I'm working on it. You also demand to be
something of a hacker to laid it upward (?), hence for those hoping for an
alternative to minix-386, delight ignore me. It is currently meant for
hackers interested inwards operating systems too 386's amongst access to minix.
The organization needs an AT-compatible harddisk (IDE is fine) too EGA/VGA. If
you lot are all the same interested, delight ftp the README/RELNOTES, and/or post service me
for additional info.
I tin (well, almost) take away heed you lot asking yourselves "why?". Hurd volition be
out inwards a twelvemonth (or two, or side past times side month, who knows), too I've already got
minix. This is a computer program for hackers past times a hacker. I've enjouyed doing
it, too somebody mightiness relish looking at it too fifty-fifty modifying it for
their ain needs. It is all the same modest plenty to understand, exercise and
modify, too I'm looking forrad to whatever comments you lot mightiness have.
I'm also interested inwards hearing from anybody who has written whatever of the
utilities/library functions for minix. If your efforts are freely
distributable (under copyright or fifty-fifty world domain), I'd similar to hear
from you, hence I tin add together them to the system. I'm using Earl Chews estdio
right straight off (thanks for a dainty too working organization Earl), too similar works
volition live real wellcome. Your (C)'s volition of course of study live left intact. Drop me
a trace if you lot are willing to allow me exercise your code.
Linus
PS. to PHIL NELSON! I'm unable to acquire through to you, too maintain getting
"forward error - strawberry unknown domain" or something.
Well, it doesn't audio similar much of a system, does it? It did work,
too some people fifty-fifty tried it out. There were several bad bugs (and
in that location was no floppy-driver, no VM, no nothing), too 0.02 wasn't really
real useable.
0.03 got released shortly thereafter (max 2-3 weeks was the time
betwixt releases fifty-fifty dorsum then), too 0.03 was pretty useable. The
side past times side version was numbered 0.10, every bit things really started to work
pretty well. The side past times side post gives some thought of what had happened inwards two
months more...
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Re: Status of LINUX?
Summary: Still inwards beta
Message-ID:
Date: xix Dec 91 23:35:45 GMT
Organization: University of Helsinki
In article 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 call Linux. I checked nic.funet.fi straight off too then, to meet what was
>happening. However, for the fourth dimension beingness I am without FTP access hence I don't
>know what is going on at the moment. Could someone delight inform me almost it
?
>It's maybe best to follow upward to this article, every bit I retrieve that in that location are
>a lot of potential interested people reading this group. Note, that I don't
>really *have* a >= 386, but I'm sure inwards fourth dimension I will.
Linux is all the same inwards beta (although available for brave souls past times ftp), and
has reached the version 0.11. It's all the same non every bit comprehensive as
386-minix, but improve inwards some respects. The "Linux info-sheet" should
live posted hither some hateful solar daytime past times the individual that keeps that upward to date. In
the meantime, I'll give some modest pointers.
First the bad news:
- Still no SCSI: people are working on that, but no appointment yet.
Thus you lot demand a AT-interface disk (I stimulate got i study that it
industrial plant on an EISA 486 amongst a SCSI disk that emulates the
AT-interface, but that's to a greater extent than of a fluke than anything else:
ISA+AT-disk is currently the hardware setup)
As you lot tin see, 0.11 had already a modest following. It wasn't much,
but it did work.
- all the same no init/login: you lot acquire into bash every bit origin upon bootup.
That was all the same measure inwards the side past times side release.
- although I stimulate got a somewhat working VM (paging to disk), it's not
ready yet. Thus linux needs at to the lowest degree 4M to live able to run the
GNU binaries (especially gcc). It boots upward inwards 2M, but you
cannot compile.
I really released a 0.11+VM version simply earlier Christmas -91: I
didn't demand it myself, but people were trying to compile the core in
2MB too failing, hence I had to implement it. The 0.11+VM version was
available only to a modest issue of people that wanted to exam it out:
I'm all the same surprised it worked every bit good every bit it did.
- minix all the same has a lot to a greater extent than users: improve support.
- it hasn't got years of testing past times thousands of people, hence there
are likely quite a few bugs yet.
Then for the expert things..
- It's gratis (copyright past times me, but freely distributable nether a
real lenient copyright)
The early on copyright was inwards fact much to a greater extent than restrictive than the GNU
copyleft: I didn't allow whatever coin at all to alter hands due to
linux. That changed amongst 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 lot don't stimulate got to cater to other
chips.
- a lot more... read my .plan.
/I/ retrieve it's improve than minix, but I'm a flake prejudiced. It will
never live the form of professional person OS that Hurd volition live (in the next
century or hence :), but it's a dainty learning tool (even to a greater extent than hence than
minix, IMHO), too 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 electrical flow version of linux is 0.11 - it has most things a unix kernel
needs, too volition likely live released every bit 1.0 every bit presently every bit it gets a little
to a greater extent than testing, too nosotros tin acquire a init/login going. Currently you lot get
dumped into a vanquish every bit origin upon bootup.
Linux tin live gotten past times anonymous ftp from 'nic.funet.fi' (128.214.6.100)
inwards the directory '/pub/OS/Linux'. The same directory also contains some
binary files to run nether Linux. Currently gcc, bash, update, uemacs,
tar, brand too fileutils. Several people stimulate got gotten a running system,
but it's all the same a hackers kernel.
Linux all the same requires a AT-compatible disk to live useful: people are
working on a SCSI-driver, but I don't know when it volition live ready.
There are straight off a span of other sites containing linux, every bit people have
had difficulties amongst 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 listing laid upward 'Linux-activists@niksula.hut.fi'.
To join, post service a asking to 'Linux-activists-request@niksula.hut.fi'.
It's no exercise mailing me: I stimulate got no actual contact amongst the mailing-list
(other than beingness on it, naturally).
Mail me for to a greater extent than info:
Linus (torvalds@kruuna.Helsinki.FI)
0.11 has these novel things:
- demand loading
- code/data sharing betwixt unrelated processes
- much improve floppy drivers (they really piece of work mostly)
- bug-corrections
- back upward 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 lot tin see: 0.11 was really stand-alone: I wrote the first
mkfs/fsck/fdisk programs for it, hence that you lot didn't demand minix any
to a greater extent than to laid it up. Also, series lines had been hard-coded to 2400bps,
every bit that was all I had.
Still lacking:
- init/login
- rename organization call
- named pipes
- symbolic links
Well, they are all in that location now: init/login didn't quite arrive to 0.12,
too rename() was implemented every bit a patch somewhere betwixt 0.12 and
0.95. Symlinks were inwards 0.95, but named pipes didn't arrive until
0.96.
Note: The version issue went direct from 0.12 to 0.95, every bit the
follow-on to 0.12 was getting feature-full plenty to deserve a number
inwards the 0.90's
0.12 volition likely live out inwards Jan (15th or so), too volition have:
- POSIX task command (by tytso)
- VM (paging to disk)
- Minor corrections
Actually, 0.12 was out Jan 5th, too contained major corrections.
It was inwards fact a real stable kernel: it worked on a lot of new
hardware, too in that location was no demand for patches for a long time. 0.12 was
also the core that "made it": that's when linux started to spread a
lot faster. Earlier core releases were real much only for hackers:
0.12 really worked quite well.
Note: The next document is a reply past times Linus Torvalds, creator of
Linux, inwards which he talks almost his experiences inwards the early on stages of
Linux development
To: Linux-Activists@BLOOM-PICAYUNE.MIT.EDU
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Subject: Re: Writing an OS - questions !!
Date: five May 92 07:58:17 GMT
In article nani@td2cad.intel.com (V. Narayanan) writes:
Hi folks,
For quite some fourth dimension this "novice" has been wondering every bit to how i goe
s
about the task of writing an OS from "scratch". So hither are some questions,
and I would appreciate if you lot could stimulate got fourth dimension to reply 'em.
Well, I meet someone else already answered, but I thought I'd stimulate got on the
linux-specific parts. Just my personal experiences, too I don't know
how normal those are.
1) How would you lot typically debug the core during the evolution phase?
Depends on both the machine too how far you lot stimulate got gotten on the kernel:
on to a greater extent than simple systems it's to a greater extent than oftentimes than non easier to laid up. Here's what I
had to practise on a 386 inwards protected mode.
The worst component is starting off: after you lot stimulate got fifty-fifty a minimal organization you
can exercise printf etc, but moving to protected manner on a 386 isn't fun,
especially if you lot at commencement don't know the architecture real well. It's
distressingly slowly to reboot the organization at this stage: if the 386
notices something is wrong, it shuts downwardly too reboots - you lot don't even
get a jeopardy to meet what's wrong.
Printf() isn't real useful - a reboot also clears the screen, and
anyway, you lot stimulate got to stimulate got access to video-mem, which mightiness neglect if your
segments are wrong etc. Don't fifty-fifty retrieve almost debuggers: no
debugger I know of tin follow a 386 into protected mode. Influenza A virus subtype H5N1 386 emulator
might practise the job, or some heavy hardware, but that isn't usually
feasible.
What I used was a simple killing-loop: I lay inwards statements like
die:
jmp die
at strategic places. If it locked up, you lot were ok, if it rebooted, you
knew at to the lowest degree it happened earlier the die-loop. Alternatively, you lot might
use the audio io ports for some sound-clues, but every bit I had no experience
with PC hardware, I didn't fifty-fifty exercise that. I'm non proverb this is the
only way: I didn't start off to write a kernel, I simply wanted to explore
the 386 task-switching primitives etc, too that's how I started off (in
about April-91).
After you lot stimulate got a minimal organization upward too tin exercise the cover for output, it
gets a flake easier, but that's when you lot stimulate got to enable interrupts. Bang,
instant reboot, too dorsum to the quondam way. All inwards all, it took almost 2
months for me to acquire all the 386 things pretty good sorted out hence that I
no longer had to count on avoiding rebooting at once, too having the
basic things laid upward (paging, timer-interrupt too a simple task-switcher
to exam out the segments etc).
2) Can you lot exam the core functionality past times running it every bit a procedure on a
dissimilar OS? Wouldn't the OS(the evolution environment) generate
exceptions inwards cases when the core (of the novel OS) tries to modify
'priviledged' registers?
Yes, it's to a greater extent than oftentimes than non possible for some things, but eg device drivers
usually stimulate got to live tested out on the bare machine. I used minix to
develop linux, hence I had no access to IO registers, interrupts etc.
Under DOS it would stimulate got been possible to acquire access to all these, but
then you lot don't stimulate got 32-bit mode. Intel isn't that bang-up - it would
probably stimulate got been much easier on a 68040 or similar.
So after getting a simple task-switcher (it switched betwixt two
processes that printed AAAA... too BBBB... respectively past times using the
timer-interrupt - Gods I was proud over that), I all the same had to continue
debugging basically past times using printf. The commencement matter written was the
keyboard driver: that's the argue it's all the same written completely in
assembler (I didn't dare displace to C yet - I was all the same debugging at
about instruction-level).
After that I wrote the series drivers, too voila, I had a simple
terminal computer program running (well, non that simple actually). It was still
the same ii processes (AAA..), but straight off they read too wrote to the
console/serial lines instead. I had to reboot to leave of absence of it all, but
it was a simple kernel.
After that is was acre sailing: hairy coding still, but I had some
devices, too debugging was easier. I started using C at this stage, and
it sure speeds upward developement. This is also when I start to get
serious almost my megalomaniac ideas to brand "a improve minix that minix".
I was hoping I'd live able to recompile gcc nether linux some day...
The harddisk driver was to a greater extent than of the same: this fourth dimension the problems with
bad documentation started to crop up. The PC may live the most used
architecture inwards the footing right now, but that doesn't hateful the docs are
any better: inwards fact I haven't seen /any/ mass fifty-fifty mentioning the weird
386-387 coupling inwards an AT etc (Thanks Bruce).
After that, a modest filesystem, too voila, you lot stimulate got a minimal unix. Two
months for basic setups, but hence only slightly longer until I had a
disk-driver (seriously buggy, but it happened to piece of work on my machine) and
a modest filesystem. That was almost when I made 0.01 available (late
august-91? Something similar that): it wasn't pretty, it had no floppy
driver, too it couldn't practise much anything. I don't retrieve anybody ever
compiled that version. But past times hence I was hooked, too didn't desire to
stop until I could chuck out minix.
3) Would novel linkers too loaders stimulate got to live written earlier you lot acquire a basic
core running?
All versions upward to almost 0.11 were crosscompiled nether minix386 - as
were the user programs. I got bash too gcc eventually working under
0.02, too spell a race-condition inwards the buffer-cache code prevented me
from recompiling gcc amongst itself, I was able to tackle smaller compiles.
0.03 (October?) was able to recompile gcc nether itself, too I think
that's the commencement version that anybody else really used. Still no
floppies, but most of the basic things worked.
Afetr 0.03 I decided that the side past times side version was really useable (it was,
kind of, but man child is X nether 0.96 to a greater extent than impressive), too I called the next
version 0.10 (November?). It all the same had a rather serious põrnikas inwards the
buffer-cache treatment code, but after patching that, it was pretty ok.
0.11 (December) had the commencement floppy driver, too was the betoken where I
started doing linux developement nether itself. Quite every bit well, every bit I
trashed my minix386 sectionalization past times error when trying to autodial
/dev/hd2.
By that fourth dimension others were really using linux, too running out of
memory. Especially sad was the fact that gcc wouldn't piece of work on a 2MB
machine, too although c386 was ported, it didn't practise everything gcc did,
and couldn't recompile the kernel. So I had to implement disk-paging:
0.12 came out inwards Jan (?) too had paging past times me every bit good every bit task control
by tytso (and other patches: pmacdona had started on VC's etc). It was
the commencement release that started to stimulate got "non-essential" features, and
being partly written past times others. It was also the commencement release that
actually did many things improve than minix, too past times straight off people started to
really acquire interested.
Then it was 0.95 inwards March, bugfixes inwards April, too presently 0.96. It's
certainly been fun (and I trust volition move on to live so) - reactions have
been mostly real positive, too you lot practise larn a lot doing this type of
thing (on the other hand, your studies endure inwards other respects :)
Linus
Note: The next text was written past times Linus on July 31 1992. It is a
collection of diverse artifacts from the catamenia inwards which Linux first
began to stimulate got shape.
This is simply a sentimental journeying into some of the commencement posts
concerning linux, hence you lot tin happily press 'n' straight off if you lot actually
thought you'd acquire anything technical.
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Gcc-1.40 too a posix-question
Message-ID:
Date: three Jul 91 10:00:50 GMT
Hello netlanders,
Due to a projection I'm working on (in minix), I'm interested inwards the posix
measure definition. Could somebody delight betoken me to a (preferably)
machine-readable format of the latest posix rules? Ftp-sites would be
nice.
The projection was plainly linux, hence past times July third I had started to think
almost actual user-level things: some of the device drivers were ready,
too the harddisk really worked. Not likewise 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 past times Alan W Black & co.
Linus Torvalds torvalds@kruuna.helsinki.fi
PS. Could someone delight assay to finger me from overseas, every bit I've
installed a "changing .plan" (made past times your's truly), too I'm non certain
it industrial plant from outside? It should study a novel .plan every time.
So I was clueless - had simply learned almost named pipes. Sue me. This
component of the post got a lot to a greater extent than response than the actual POSIX query,
but the query did lure out arl from the woodwork, too nosotros mailed around
for a bit, resulting inwards the Linux subdirectory on nic.funet.fi.
Then, almost ii months later, I really had something working: I
made sources for version 0.01 available on nic sometimes around this
time. 0.01 sources weren't really runnable: they were simply a token
gesture to arl who had likely started to despair almost e'er getting
anything. This side past times side post must stimulate got been from simply a span of weeks
earlier that release.
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you lot similar to meet most inwards minix?
Summary: modest poll for my novel operating system
Message-ID:
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki
Hello everybody out in that location using minix -
I'm doing a (free) operating organization (just a hobby, won't live big and
professional person similar gnu) for 386(486) AT clones. This has been brewing
since april, too is starting to acquire ready. I'd similar whatever feedback on
things people like/dislike inwards minix, every bit my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
amidst other things).
I've currently ported bash(1.08) too gcc(1.40), too things seem to work.
This implies that I'll acquire something practical inside a few months, and
I'd similar to know what features most people would want. Any suggestions
are welcome, but I won't hope I'll implement them :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Yes - it's gratis of whatever minix code, too it has a multi-threaded fs.
It is NOT protable (uses 386 task switching etc), too it likely never
volition back upward anything other than AT-harddisks, every bit that's all I stimulate got :-(.
Judging from the post, 0.01 wasn't really out yet, but it's close.
I'd approximate the commencement version went out inwards the middle of September -91. I
got some responses to this (most past times mail, which I haven't saved), and
I fifty-fifty got a few mails asking to live beta-testers for linux. After that
simply a few full general answers to quesions on the net:
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Re: What would you lot similar to meet most inwards minix?
Summary: yeah - it's nonportable
Message-ID:
Date: 26 Aug 91 11:06:02 GMT
Organization: University of Helsinki
In article jkp@cs.HUT.FI (Jyrki Kuoppala) writes:
>> [re: my post almost my novel OS]
>
>Tell us more! Does it demand a MMU?
Yes, it needs a MMU (sorry everybody), too it specifically needs a
386/486 MMU (see later).
>
>>PS. Yes - it's gratis of whatever minix code, too it has a multi-threaded fs.
>>It is NOT protable (uses 386 task switching etc)
>
>How much of it is inwards C? What difficulties volition in that location live inwards porting?
>Nobody volition believe you lot almost non-portability ;-), too I for i would
>like to port it to my Amiga (Mach needs a MMU too Minix is non free).
Simply, I'd say that porting is impossible. It's mostly inwards C, but most
people wouldn't telephone outcry upward what I write C. It uses every conceivable feature
of the 386 I could find, every bit it was also a projection to learn me almost the
386. As already mentioned, it uses a MMU, for both paging (not to disk
yet) too segmentation. It's the segmentation that makes it REALLY 386
subject (every task has a 64Mb segment for code & information - max 64 tasks
inwards 4Gb. Anybody who needs to a greater extent than than 64Mb/task - tough cookies).
It also uses every characteristic of gcc I could find, specifically the __asm__
directive, hence that I wouldn't demand hence much assembly linguistic communication objects.
Some of my "C"-files (specifically mm.c) are almost every bit much assembler as
C. It would live "interesting" fifty-fifty to port it to some other compiler (though
why anybody would desire to exercise anything other than gcc is a mystery).
Note: linux has inwards fact gotten to a greater extent than portable amongst newer versions:
in that location was a lot to a greater extent than assembly inwards the early on versions. It has inwards fact
been ported to other architectures past times now.
Unlike minix, I also laissez passer on off to LIKE interrupts, hence interrupts are
handled without trying to shroud the argue behind them (I peculiarly like
my hard-disk-driver. Anybody else brand interrupts displace a state-
machine?). All inwards all it's a porters nightmare.
>As for the features; well, pseudo ttys, BSD sockets, user-mode
>filesystems (so I tin say truthful cat /dev/tcp/kruuna.helsinki.fi/finger),
>window size inwards the tty structure, organization calls capable of supporting
>POSIX.1. Oh, too bsd-style long file names.
Most of these seem possible (the tty construction already has stubs for
window size), except maybe for the user-mode filesystems. As to POSIX,
I'd live delighted to stimulate got it, but posix wants coin for their papers, so
that's non currently an option. In whatever illustration these are things that won't
live supported for some fourth dimension yet (first I'll arrive a simple minix-
lookalike, keyword SIMPLE).
Linus (torvalds@kruuna.helsinki.fi)
PS. To brand things really clear - yeah I tin run gcc on it, too bash, and
most of the gnu [bin/file]utilities, but it's non real debugged, too the
library is really minimal. It doesn't fifty-fifty back upward floppy-disks yet. It
won't live ready for distribution for a span of months. Even hence it
likely won't live able to practise much to a greater extent than than minix, too much less inwards some
respects. It volition live gratis though (probably nether gnu-license or similar).
Well, plainly something worked on my machine: I doubtfulness I had yet
gotten gcc to compile itself nether linux (or I would stimulate got been too
proud of it non to call it). Still earlier whatever release-date.
Then, Oct 5th, I seem to stimulate got released 0.02. As I already
mentioned, 0.01 didn't really come upward amongst whatever binaries: it was just
source code for people interested inwards what linux looked like. Note the
lack of proclamation for 0.01: I wasn't likewise proud of it, hence I retrieve I
only sent a complaint to everybody who had shown interest.
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Free minix-like core sources for 386-AT
Message-ID:
Date: five Oct 91 05:41:06 GMT
Organization: University of Helsinki
Do you lot pino for the dainty days of minix-1.1, when men were men too wrote
their ain device drivers? Are you lot without a dainty projection too simply dying
to cutting your teeth on a OS you lot tin assay to modify for your needs? Are you
finding it frustrating when everything industrial plant on minix? No to a greater extent than all-
nighters to acquire a nifty computer program working? Then this post mightiness live just
for you lot :-)
As I mentioned a month(?) ago, I'm working on a gratis version of a
minix-lookalike for AT-386 computers. It has lastly reached the stage
where it's fifty-fifty usable (though may non live depending on what you lot want),
too I am willing to publish the sources for wider distribution. It is
simply version 0.02 (+1 (very small) patch already), but I've successfully
run bash/gcc/gnu-make/gnu-sed/compress etc nether it.
Sources for this pet projection of mine tin live establish at nic.funet.fi
(128.214.6.100) inwards the directory /pub/OS/Linux. The directory also
contains some README-file too a span of binaries to piece of work nether linux
(bash, update too gcc, what to a greater extent than tin you lot enquire for :-). Full kernel
source is provided, every bit no minix code has been used. Library sources are
only partially free, hence that cannot live distributed currently. The
organization is able to compile "as-is" too has been known to work. Heh.
Sources to the binaries (bash too gcc) tin live establish at the same house in
/pub/gnu.
ALERT! WARNING! NOTE! These sources all the same demand minix-386 to live compiled
(and gcc-1.40, peradventure 1.37.1, haven't tested), too you lot demand minix to
laid it upward if you lot desire to run it, hence it is non yet a standalone system
for those of you lot without minix. I'm working on it. You also demand to be
something of a hacker to laid it upward (?), hence for those hoping for an
alternative to minix-386, delight ignore me. It is currently meant for
hackers interested inwards operating systems too 386's amongst access to minix.
The organization needs an AT-compatible harddisk (IDE is fine) too EGA/VGA. If
you lot are all the same interested, delight ftp the README/RELNOTES, and/or post service me
for additional info.
I tin (well, almost) take away heed you lot asking yourselves "why?". Hurd volition be
out inwards a twelvemonth (or two, or side past times side month, who knows), too I've already got
minix. This is a computer program for hackers past times a hacker. I've enjouyed doing
it, too somebody mightiness relish looking at it too fifty-fifty modifying it for
their ain needs. It is all the same modest plenty to understand, exercise and
modify, too I'm looking forrad to whatever comments you lot mightiness have.
I'm also interested inwards hearing from anybody who has written whatever of the
utilities/library functions for minix. If your efforts are freely
distributable (under copyright or fifty-fifty world domain), I'd similar to hear
from you, hence I tin add together them to the system. I'm using Earl Chews estdio
right straight off (thanks for a dainty too working organization Earl), too similar works
volition live real wellcome. Your (C)'s volition of course of study live left intact. Drop me
a trace if you lot are willing to allow me exercise your code.
Linus
PS. to PHIL NELSON! I'm unable to acquire through to you, too maintain getting
"forward error - strawberry unknown domain" or something.
Well, it doesn't audio similar much of a system, does it? It did work,
too some people fifty-fifty tried it out. There were several bad bugs (and
in that location was no floppy-driver, no VM, no nothing), too 0.02 wasn't really
real useable.
0.03 got released shortly thereafter (max 2-3 weeks was the time
betwixt releases fifty-fifty dorsum then), too 0.03 was pretty useable. The
side past times side version was numbered 0.10, every bit things really started to work
pretty well. The side past times side post gives some thought of what had happened inwards two
months more...
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Re: Status of LINUX?
Summary: Still inwards beta
Message-ID:
Date: xix Dec 91 23:35:45 GMT
Organization: University of Helsinki
In article 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 call Linux. I checked nic.funet.fi straight off too then, to meet what was
>happening. However, for the fourth dimension beingness I am without FTP access hence I don't
>know what is going on at the moment. Could someone delight inform me almost it
?
>It's maybe best to follow upward to this article, every bit I retrieve that in that location are
>a lot of potential interested people reading this group. Note, that I don't
>really *have* a >= 386, but I'm sure inwards fourth dimension I will.
Linux is all the same inwards beta (although available for brave souls past times ftp), and
has reached the version 0.11. It's all the same non every bit comprehensive as
386-minix, but improve inwards some respects. The "Linux info-sheet" should
live posted hither some hateful solar daytime past times the individual that keeps that upward to date. In
the meantime, I'll give some modest pointers.
First the bad news:
- Still no SCSI: people are working on that, but no appointment yet.
Thus you lot demand a AT-interface disk (I stimulate got i study that it
industrial plant on an EISA 486 amongst a SCSI disk that emulates the
AT-interface, but that's to a greater extent than of a fluke than anything else:
ISA+AT-disk is currently the hardware setup)
As you lot tin see, 0.11 had already a modest following. It wasn't much,
but it did work.
- all the same no init/login: you lot acquire into bash every bit origin upon bootup.
That was all the same measure inwards the side past times side release.
- although I stimulate got a somewhat working VM (paging to disk), it's not
ready yet. Thus linux needs at to the lowest degree 4M to live able to run the
GNU binaries (especially gcc). It boots upward inwards 2M, but you
cannot compile.
I really released a 0.11+VM version simply earlier Christmas -91: I
didn't demand it myself, but people were trying to compile the core in
2MB too failing, hence I had to implement it. The 0.11+VM version was
available only to a modest issue of people that wanted to exam it out:
I'm all the same surprised it worked every bit good every bit it did.
- minix all the same has a lot to a greater extent than users: improve support.
- it hasn't got years of testing past times thousands of people, hence there
are likely quite a few bugs yet.
Then for the expert things..
- It's gratis (copyright past times me, but freely distributable nether a
real lenient copyright)
The early on copyright was inwards fact much to a greater extent than restrictive than the GNU
copyleft: I didn't allow whatever coin at all to alter hands due to
linux. That changed amongst 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 lot don't stimulate got to cater to other
chips.
- a lot more... read my .plan.
/I/ retrieve it's improve than minix, but I'm a flake prejudiced. It will
never live the form of professional person OS that Hurd volition live (in the next
century or hence :), but it's a dainty learning tool (even to a greater extent than hence than
minix, IMHO), too 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 electrical flow version of linux is 0.11 - it has most things a unix kernel
needs, too volition likely live released every bit 1.0 every bit presently every bit it gets a little
to a greater extent than testing, too nosotros tin acquire a init/login going. Currently you lot get
dumped into a vanquish every bit origin upon bootup.
Linux tin live gotten past times anonymous ftp from 'nic.funet.fi' (128.214.6.100)
inwards the directory '/pub/OS/Linux'. The same directory also contains some
binary files to run nether Linux. Currently gcc, bash, update, uemacs,
tar, brand too fileutils. Several people stimulate got gotten a running system,
but it's all the same a hackers kernel.
Linux all the same requires a AT-compatible disk to live useful: people are
working on a SCSI-driver, but I don't know when it volition live ready.
There are straight off a span of other sites containing linux, every bit people have
had difficulties amongst 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 listing laid upward 'Linux-activists@niksula.hut.fi'.
To join, post service a asking to 'Linux-activists-request@niksula.hut.fi'.
It's no exercise mailing me: I stimulate got no actual contact amongst the mailing-list
(other than beingness on it, naturally).
Mail me for to a greater extent than info:
Linus (torvalds@kruuna.Helsinki.FI)
0.11 has these novel things:
- demand loading
- code/data sharing betwixt unrelated processes
- much improve floppy drivers (they really piece of work mostly)
- bug-corrections
- back upward 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 lot tin see: 0.11 was really stand-alone: I wrote the first
mkfs/fsck/fdisk programs for it, hence that you lot didn't demand minix any
to a greater extent than to laid it up. Also, series lines had been hard-coded to 2400bps,
every bit that was all I had.
Still lacking:
- init/login
- rename organization call
- named pipes
- symbolic links
Well, they are all in that location now: init/login didn't quite arrive to 0.12,
too rename() was implemented every bit a patch somewhere betwixt 0.12 and
0.95. Symlinks were inwards 0.95, but named pipes didn't arrive until
0.96.
Note: The version issue went direct from 0.12 to 0.95, every bit the
follow-on to 0.12 was getting feature-full plenty to deserve a number
inwards the 0.90's
0.12 volition likely live out inwards Jan (15th or so), too volition have:
- POSIX task command (by tytso)
- VM (paging to disk)
- Minor corrections
Actually, 0.12 was out Jan 5th, too contained major corrections.
It was inwards fact a real stable kernel: it worked on a lot of new
hardware, too in that location was no demand for patches for a long time. 0.12 was
also the core that "made it": that's when linux started to spread a
lot faster. Earlier core releases were real much only for hackers:
0.12 really worked quite well.
Note: The next document is a reply past times Linus Torvalds, creator of
Linux, inwards which he talks almost his experiences inwards the early on stages of
Linux development
To: Linux-Activists@BLOOM-PICAYUNE.MIT.EDU
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Subject: Re: Writing an OS - questions !!
Date: five May 92 07:58:17 GMT
In article nani@td2cad.intel.com (V. Narayanan) writes:
Hi folks,
For quite some fourth dimension this "novice" has been wondering every bit to how i goe
s
about the task of writing an OS from "scratch". So hither are some questions,
and I would appreciate if you lot could stimulate got fourth dimension to reply 'em.
Well, I meet someone else already answered, but I thought I'd stimulate got on the
linux-specific parts. Just my personal experiences, too I don't know
how normal those are.
1) How would you lot typically debug the core during the evolution phase?
Depends on both the machine too how far you lot stimulate got gotten on the kernel:
on to a greater extent than simple systems it's to a greater extent than oftentimes than non easier to laid up. Here's what I
had to practise on a 386 inwards protected mode.
The worst component is starting off: after you lot stimulate got fifty-fifty a minimal organization you
can exercise printf etc, but moving to protected manner on a 386 isn't fun,
especially if you lot at commencement don't know the architecture real well. It's
distressingly slowly to reboot the organization at this stage: if the 386
notices something is wrong, it shuts downwardly too reboots - you lot don't even
get a jeopardy to meet what's wrong.
Printf() isn't real useful - a reboot also clears the screen, and
anyway, you lot stimulate got to stimulate got access to video-mem, which mightiness neglect if your
segments are wrong etc. Don't fifty-fifty retrieve almost debuggers: no
debugger I know of tin follow a 386 into protected mode. Influenza A virus subtype H5N1 386 emulator
might practise the job, or some heavy hardware, but that isn't usually
feasible.
What I used was a simple killing-loop: I lay inwards statements like
die:
jmp die
at strategic places. If it locked up, you lot were ok, if it rebooted, you
knew at to the lowest degree it happened earlier the die-loop. Alternatively, you lot might
use the audio io ports for some sound-clues, but every bit I had no experience
with PC hardware, I didn't fifty-fifty exercise that. I'm non proverb this is the
only way: I didn't start off to write a kernel, I simply wanted to explore
the 386 task-switching primitives etc, too that's how I started off (in
about April-91).
After you lot stimulate got a minimal organization upward too tin exercise the cover for output, it
gets a flake easier, but that's when you lot stimulate got to enable interrupts. Bang,
instant reboot, too dorsum to the quondam way. All inwards all, it took almost 2
months for me to acquire all the 386 things pretty good sorted out hence that I
no longer had to count on avoiding rebooting at once, too having the
basic things laid upward (paging, timer-interrupt too a simple task-switcher
to exam out the segments etc).
2) Can you lot exam the core functionality past times running it every bit a procedure on a
dissimilar OS? Wouldn't the OS(the evolution environment) generate
exceptions inwards cases when the core (of the novel OS) tries to modify
'priviledged' registers?
Yes, it's to a greater extent than oftentimes than non possible for some things, but eg device drivers
usually stimulate got to live tested out on the bare machine. I used minix to
develop linux, hence I had no access to IO registers, interrupts etc.
Under DOS it would stimulate got been possible to acquire access to all these, but
then you lot don't stimulate got 32-bit mode. Intel isn't that bang-up - it would
probably stimulate got been much easier on a 68040 or similar.
So after getting a simple task-switcher (it switched betwixt two
processes that printed AAAA... too BBBB... respectively past times using the
timer-interrupt - Gods I was proud over that), I all the same had to continue
debugging basically past times using printf. The commencement matter written was the
keyboard driver: that's the argue it's all the same written completely in
assembler (I didn't dare displace to C yet - I was all the same debugging at
about instruction-level).
After that I wrote the series drivers, too voila, I had a simple
terminal computer program running (well, non that simple actually). It was still
the same ii processes (AAA..), but straight off they read too wrote to the
console/serial lines instead. I had to reboot to leave of absence of it all, but
it was a simple kernel.
After that is was acre sailing: hairy coding still, but I had some
devices, too debugging was easier. I started using C at this stage, and
it sure speeds upward developement. This is also when I start to get
serious almost my megalomaniac ideas to brand "a improve minix that minix".
I was hoping I'd live able to recompile gcc nether linux some day...
The harddisk driver was to a greater extent than of the same: this fourth dimension the problems with
bad documentation started to crop up. The PC may live the most used
architecture inwards the footing right now, but that doesn't hateful the docs are
any better: inwards fact I haven't seen /any/ mass fifty-fifty mentioning the weird
386-387 coupling inwards an AT etc (Thanks Bruce).
After that, a modest filesystem, too voila, you lot stimulate got a minimal unix. Two
months for basic setups, but hence only slightly longer until I had a
disk-driver (seriously buggy, but it happened to piece of work on my machine) and
a modest filesystem. That was almost when I made 0.01 available (late
august-91? Something similar that): it wasn't pretty, it had no floppy
driver, too it couldn't practise much anything. I don't retrieve anybody ever
compiled that version. But past times hence I was hooked, too didn't desire to
stop until I could chuck out minix.
3) Would novel linkers too loaders stimulate got to live written earlier you lot acquire a basic
core running?
All versions upward to almost 0.11 were crosscompiled nether minix386 - as
were the user programs. I got bash too gcc eventually working under
0.02, too spell a race-condition inwards the buffer-cache code prevented me
from recompiling gcc amongst itself, I was able to tackle smaller compiles.
0.03 (October?) was able to recompile gcc nether itself, too I think
that's the commencement version that anybody else really used. Still no
floppies, but most of the basic things worked.
Afetr 0.03 I decided that the side past times side version was really useable (it was,
kind of, but man child is X nether 0.96 to a greater extent than impressive), too I called the next
version 0.10 (November?). It all the same had a rather serious põrnikas inwards the
buffer-cache treatment code, but after patching that, it was pretty ok.
0.11 (December) had the commencement floppy driver, too was the betoken where I
started doing linux developement nether itself. Quite every bit well, every bit I
trashed my minix386 sectionalization past times error when trying to autodial
/dev/hd2.
By that fourth dimension others were really using linux, too running out of
memory. Especially sad was the fact that gcc wouldn't piece of work on a 2MB
machine, too although c386 was ported, it didn't practise everything gcc did,
and couldn't recompile the kernel. So I had to implement disk-paging:
0.12 came out inwards Jan (?) too had paging past times me every bit good every bit task control
by tytso (and other patches: pmacdona had started on VC's etc). It was
the commencement release that started to stimulate got "non-essential" features, and
being partly written past times others. It was also the commencement release that
actually did many things improve than minix, too past times straight off people started to
really acquire interested.
Then it was 0.95 inwards March, bugfixes inwards April, too presently 0.96. It's
certainly been fun (and I trust volition move on to live so) - reactions have
been mostly real positive, too you lot practise larn a lot doing this type of
thing (on the other hand, your studies endure inwards other respects :)
Linus
No comments:
Post a Comment