549 lines
25 KiB
Plaintext
549 lines
25 KiB
Plaintext
To: Linux-Activists@BLOOM-PICAYUNE.MIT.EDU
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Subject: Birthday (was Re: Uptime found. Thanks to all)
|
|
Date: 31 Jul 92 22:15:20 GMT
|
|
|
|
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
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
To: Linux-Activists@BLOOM-PICAYUNE.MIT.EDU
|
|
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
|
Subject: Re: Writing an OS - questions !!
|
|
Date: 5 May 92 07:58:17 GMT
|
|
|
|
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
|
|
|