From: torvalds@klaava.Helsinki.Fi (Linus Benedict Torvalds)
To: Newsgroups: comp.os.inix
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>
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 as 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 portable (uses 386 task switching etc.), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.
The most hard-core operating system enthusiasts among the Minix crowd felt a spark. Not many suggestions about Minix features came my way, but there were other inquiries.
>Tell us more! Does it need a MMU?
Answer: Yes
>How much of it is in C? What difficulties will there be in porting? Nobody will believe you about nonportability ;-), and I for one would like to port it to my Amiga.
Answer: 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. Some of my "C" files are almost as much assembler as C.
As already mentioned, it uses an 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).
And I even got a few folks offering to be beta testers.
In the end, it wasn't much of a decision to post it. That was how I was accustomed to exchanging programs. So the only real decision was, at what point am I comfortable to dare show this off to people? Or, phrased more accurately: When is it good enough that I won't have to be ashamed of it?
What I ultimately wanted was to have a compiler and a real environment so that you could create programs in Linux itself, without having to use Minix. But I felt so proud when the gnu shell worked that I was ready to let the world see. Also, I wanted feedback.
By the time the shell worked, I had a few rudimentary binaries I'd compiled for the operating system. You really couldn't do anything, but you could see that it was something resembling Unix. In fact, it worked like a very crippled Unix.
So I just decided I would make it available. I wouldn't tell anybody publicly. Instead, I just informed a handful of people by private email, probably between five and ten people in all, that I had uploaded it to the ftp site. Among them were Bruce Evans of Minix fame and Ari Lemke. I uploaded the sources to Linux itself and a few binaries so that you could start something. I told people what they needed to do in order to try and run this thing. They still had to have Minix installed-the 386 version-and they still had to have the GCC compiler. In fact they had to have my version of GCC, so I made that available, too.
There's a protocol for numbering releases. It's psychological. When you think a version is truly ready to be released, you number it version 1.0. But before that, you number the earlier versions to indicate how much work you need to accomplish before getting to 1.0. With that in mind, the operating system I posted to the ftp site was numbered version 0.01. That tells everybody it's not ready for much.
And yes, I remember the date: September 17, 1991.
I don't think more than one or two people ever checked it out. They had to go to the trouble of installing the special compiler, getting a clean partition so they could use that to boot, compiling my kernel, and then running just the shell. Running the shell was basically all you could do. You could print out the sources, which amounted to just 10,000 lines -- that's less than 100 pages of paper if you printed with small font. (Now it's something on the order of 10 million lines.)
One of the main reasons I distributed the operating system was to prove that it wasn't all just hot air, that I had actually done something. On the Internet, talk is cheap. Regardless of what you do, whether it be operating systems or sex, too many people are just faking it in cyberspace. So it's nice, after talking to a lot of people about building an operating system, to be able to say, "See, I actually got something done. I wasn't stringing you along. Here's what I've been doing ...."
And Ari Lemke, who insured that it made its way to the ftp site, hated the name Freax. He preferred the other working name I was using -- Linux -- and named my posting: pub/OS/Linux. I admit that I didn't put up much of a fight. But it was his doing. So I can honestly say I wasn't egotistical, or half-honestly say I wasn't egotistical. But I thought, okay, that's a good name, and I can always blame somebody else for it, which I'm doing now.
As I mentioned, my operating system really wasn't very useful. For one thing, it would crash very easily if you filled up memory or if you did anything nasty. Even if you weren't doing anything nasty, the operating system would crash if you kept it running for any length of time. But it wasn't meant to be run at that stage. It was meant to be looked at. Yes,and admired.
So it wasn't intended to be anything but a specialty for the few people who were interested in creating new operating systems. Very technical people -- and even within technical people, a special interest group.
Their reaction was invariably positive, but positive in a kind of "It would be nice if it could also do this" kind of sense, or "It looks cool but it really doesn't work on my computer at all."
I remember one email whose writer said he really liked my operating system, and he went on for at least one paragraph to tell me how nice it was. Then he explained that it had just eaten his hard disk, and that my disk driver was flaky or something. He had lost all the work he had done, but he was still very positive. It was fun to read that kind of email. It was a bug report about something that screwed him up.
That was just the sort of feedback I was looking for. I fixed some bugs, like the one that caused it to lock up when it ran out of memory. And I made the big step of porting the GCC compiler to the operating system, so I could compile small programs. That meant users wouldn't need to load my GCC compiler before running the operating system.
Do you pine for the days when men were men and wrote their own device drivers?
-announcement of the posting of Linux version 0.02
Early October saw the release of version 0.02, which included some fixed bugs and a few additional programs. The following month I released version 0.03.
I probably would have stopped by the end of 1991. I had done a lot of things I thought were interesting. Everything didn't really work perfectly, but in a software kind of world I find that once you solve the fundamental problems of a project, it's easy to lose interest. And that's what was happening to me. Trying to debug software is not very engaging. Then two things happened to keep me going. First, I destroyed my Minix partition by mistake. Second, people kept sending me feedback.
Читать дальше