Note: The following text was written by Linus on July 31 1992. It is a collection of various artifacts from the period in which Linux first began to take shape. 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: 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: 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: Date: 26 Aug 91 11:06:02 GMT Organization: University of Helsinki In article 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). Note: linux has in fact gotten more portable with newer versions: there was a lot more assembly in the early versions. It has in fact been ported to other architectures by 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: 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: Date: 19 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 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. Note: The version number went directly from 0.12 to 0.95, as the follow-on to 0.12 was getting feature-full enough to deserve a number in the 0.90's 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. Note: The following document is a reply by Linus Torvalds, creator of Linux, in which he talks about his experiences in the early 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: 5 May 92 07:58:17 GMT In article nani@td2cad.intel.com (V. Narayanan) writes: Hi folks, For quite some time this "novice" has been wondering as to how one goe s 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
Kamis, 12 Februari 2015
0
LINUX's History
Linus Torvalds: A Very Brief and Completely Unauthorized Biography
Linus Torvalds is the world's most famous computer programmer and also
its most famous Finn. He is the founder and coordinator of Linux, the Unix-like operating system
that is beginning to revolutionize the computer industry and possibly
much else as well. His is truly one of the great tales in the history of
the computers.
Early Years
Linus Benedict Torvalds was born on December 28, 1969 in Helsinki, the capital and largest city in Finland. He was named after Linus Pauling, the famous physical chemist and Nobel Prize winner.
The Torvalds family belongs to the Swedish-speaking minority in Finland,
which numbers about 300,000 in a total population of roughly five
million.
Many members of the family were journalists. His parents, Nils and Anna
Torvalds, were both radicals at the University of Helsinki during the
1960s. His father was a Communist who spent a year studying in Moscow in
the mid-1970s and later became a radio journalist. His mother worked
for a Finnish newspaper as a translator and a creator of news graphics.
Also, his grandfather was the editor-in-chief of a Finnish newspaper,
and his uncle worked for Finnish TV.
Torvalds had a fairly conventional and happy childhood despite the fact
that his parents were divorced when he was very young. He lived with his
mother and also with his grandparents. Consistent with his family's
occupation, emphasis was placed on reading from an early age.
It was his maternal grandfather, Leo Toerngvist, a professor of
statistics at the University of Helsinki, who had the greatest influence
on the young Linus. In the mid-1970s, Toerngvist bought one of the
first personal computers, a Commodore Vic 20. Torvalds soon became bored
with the few programs that were available for it, and he thus began to
create new ones, first using the BASIC programming language and then
using the much more difficult but also more powerful assembly language.
Programming and mathematics became Torvalds' passions. His father's
efforts to interest him in sports, girls and other social activities
were in vain, and Torvalds does not hesitate to admit that he had little
talent for or interest in such pursuits.
The Birth of Linux
In 1987 Torvalds used his savings to buy his first computer, a Sinclair QL. This was one of the world's first 32-bit
computers for home use. With its Motorola 68008 processor (the part of
the computer that performs logic operations and also referred to as a central processing unit or CPU) running at 7.5MHz (megahertz) and 128KB (kilobytes) of RAM (random access memory),
this was a big step up from his grandfather's Commodore Vic 20.
However, he soon became unhappy with it because of it could not be
reprogrammed due to the operating system residing in ROM (read-only
memory).
In 1988 Torvalds followed in the footsteps of his parents and enrolled
in the University of Helsinki, the premier institution of higher
education in Finland. By that time he was already an accomplished
programmer, and, naturally, he majored in computer science. In 1990 he
took his first class in the C programming language, the language that he would soon use to write the Linux kernel (i.e., the core of the operating system).
In early 1991 he purchased an IBM-compatible personal computer with a
33MHz Intel 386 processor and a huge 4MB of memory. This processor
greatly appealed to him because it represented a tremendous improvement
over earlier Intel chips. As intrigued as he was with the hardware,
however, Torvalds was disappointed with the MS-DOS
operating system that came with it. That operating system had not
advanced sufficiently to even begin to take advantage of the vastly
improved capabilities of the 386 chip, and he thus strongly preferred
the much more powerful and stable UNIX operating system that he had become accustomed to using on the university's computers.
Consequently, Torvalds attempted to obtain a version of UNIX for his new
computer. Fortunately (for the world), he could not find even a basic
system for less than US$5,000. He also considered MINIX, a small clone
of UNIX that was created by operating systems expert Andrew Tanenbaum
in the Netherlands to teach UNIX to university students. However,
although much more powerful than MS-DOS and designed to run on Intel x86
processors, MINIX still had some serious disadvantages. They included
the facts that not all of the source code
was made public, it lacked some of the features and performance of UNIX
and there was a not-insignificant (although cheaper than for many other
operating systems) licensing fee.
Source code is the version of software (e.g., an operating system or an application program) as it is originally written (i.e., typed into a computer) by a human using a programming language (such as assembly, BASIC, C or Java) and before it is compiled (i.e., converted by a compiler) into machine language,
which the processor (but not humans) can understand directly. Having
the source code is necessary in order to study or improve software. A
highly skilled programmer such as Torvalds can easily become bored and
frustrated with software for which the source code is not available.
Torvalds thus decided to create a new operating system from scratch that
was based on both MINIX and UNIX. It is unlikely that he was fully
aware of the tremendous amount of work that would be necessary, and it
is even far less likely that he could have envisioned the effects that
his decision would have both on his life and on the rest of the world.
Because university education in Finland is free and there was little
pressure to graduate within four years, Torvalds decided to take a break
and devote his full attention to his project.
On August 25, 1991, he announced his initial creation on the MINIX newsgroup comp.os.minix as follows:
Message-ID: 1991Aug25.205708.9541@klaava.helsinki.fi
From: torvalds@klaava.helsinki.fi (Linus Benedict Torvalds)
To: Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
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-sytem due to practical reasons)among other things.
I've currently ported bash (1.08) an 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 want.
Any suggestions are welcome, but I won't promise I'll implement them :-)
Linus Torvalds torvalds@kruuna.helsinki.fi
On September 17 of the same year, after a period of self-imposed
isolation and intense concentration, he completed a crude version (0.01)
of his new operating system. Shortly thereafter, on October 5, he
announced version 0.02, the first official version. It featured the ability to run both the bash shell (a program that provides the traditional, text-only user interface for Unix-like operating systems) and the GCC (the GNU
C Compiler), two key system utilities. This now famous announcement
launched the biggest collaborative project the world has ever known. It
began:
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. . . .
Ari Lemmke, Torvalds' friend and the administrator for ftp.funet.fi, a
provider of FTP (file transfer protocol) services in Finland, encouraged
him to upload his source code to a network so it would be readily available for study and refinement by other programmers, a common practice then as it is now.
Torvalds originally gave his new operating system the working name Linux (from Linus' MINIX). However, he thought the name was too egotistical and thus planned to call it Freax (a combination of free, freak and MINIX). However, Lemmke created a directory for it called linux on his FTP (file transfer protocol) server, and thus Linux became the name of the system.
In what Torvalds now admits was one of his best decisions, he decided to
release Linux under the GPL (GNU General Public License) rather than
under the more restrictive license that he had earlier planned.
Developed by Richard Stallman, a notable programmer and a leading
advocate of free software,
this most popular of the free software licenses allows anyone to study,
use, modify, extend and redistribute the software as long as they make
the source code freely available for any modified versions that they
create and then redistribute.
In large part a consequence of this very liberal licensing, many
programmers from around the world quickly became enthusiastic about
helping Torvalds develop his still embryonic operating system. As a
result, its performance began improving at a rapid rate.
Torvalds' efforts focused on developing a kernel, which is only part of
what is necessary to make a usable operating system. Fortunately,
Stallman and his Free Software Foundation (FSF) had been developing a
number of free programs for use in a free version of UNIX, and such
programs (e.g., bash, GCC and GNU binutils) thus became major components
of virtually all Linux distributions.
A distribution is a complete operating system centered around a kernel
and also containing numerous utilities, device drivers and application
programs.
Other parts of Linux distributions came from the Berkeley UNIX Distribution
(BSD), a version of UNIX that was developed at the University of
California at Berkeley (UCB) and which later evolved into the highly
regarded BSD operating systems. And the X Window System, which is the dominant system for managing GUIs
(graphical user interfaces) on Linux and other Unix-like operating
systems, came from the Massachusetts Institute of Technology (MIT).
Linux Takes Off
The performance of the Linux kernel and Linux distributions continued
to improve as more and more developers, initially individual and later
corporate as well, joined the project and contributed their enthusiasm,
effort and programming skills. This was paralleled by a swift growth in
the number of users.
For example, in 1994 a usable ext2 filesystem (i.e., a system for organizing data on computer disks), which featured a large increase in speed over its predecessor, the ext,
was added to the kernel. And its initially weak networking capability
was improved substantially. This was also the year in which Torvalds
began promoting the porting of Linux to additional processors.
One early complaint about Linux was that it could run only on computers
with x86 (Intel-compatible) processors. The first of the new processors
was the Alpha, which was used in Digital Equipment Corporation's (DEC's)
workstations. This was greatly facilitated by DEC's investment of both
money and engineering talent, and it was soon followed by porting to the
SPARC and MIPS processors.
As a result of his skills and accomplishments, Torvalds was appointed to
the post of instructor at the University of Helsinki, a position which
allowed him to simultaneously continue his development of Linux. The
first homework assignment for an introductory computer class that he
taught in 1993 was for each student to send him an e-mail. One of the
students,
Tove Minni, a Finnish karate champion, complied by sending him an e-mail
asking him out on a date. He accepted, and three years later the first
of their three daughters was born.
Although the arrival of his first daughter coincided with minor
disruptions in the development of the Linux kernel, he was able to
release version 2.0 by December 1996. This milestone version represented
a major improvement in performance through its addition of support for
additional processors and for symmetric multiprocessing (SMP), which lets multiple processors access and be equally close to all RAM locations.
The use of Linux continued to grow rapidly as a result of these and
numerous other advances as well as due to its spreading fame. By 1997,
conservative estimates were placing worldwide Linux installations at
more than three million computers. Two years later this had soared to in
excess of seven million.
Despite the relentless successes of Linux and the great popularity of
Torvalds, his activities were not entirely without controversy, even
within the free software community. For example, Professor Tanenbaum,
the developer of MINIX on which Linux was originally partially based,
was convinced that microkernels (a minimalist type of kernel) were the wave of the future, and he expressed strong opposition to the monolithic approach of the Linux kernel in his now famous 1992 Usenet posting titled LINUX is obsolete.
Also, Richard Stallman has continued to insist that Linux's name is
inappropriate and that the operating system should instead be renamed GNU/Linux because Stallman's numerous GNU utilities are used together with the Linux kernel.
Move to California
After spending nearly a decade as a student, researcher and instructor
at the University of Helsinki, Torvalds decided that it was time for a
change -- a big one that included both a change of scenery and a real
job. Needless to say, there was no shortage of opportunities available
to him.
Thus, in 1997 he moved to sunny Santa Clara in California's fabled
Silicon Valley to accept a position with Transmeta Corporation. His job
there was to help develop commercial software to facilitate
communication between operating systems and that company's
microprocessors. Linux devotees were initially concerned not only about
his move to a for-profit business but also about the fact that it was
funded in part by Microsoft co-founder Paul Allen.
For Torvalds, however, the decision was not difficult. Not only was it
an opportunity for a change and to experience a much improved climate
(from the long, cold and dark Finnish winters), but Silicon Valley was
the ultimate destination for almost everyone in the computer field, even
him. Moreover, he now had a growing family to support. His choice of
company was also affected by the fact that Transmeta was not involved
with Linux, as he was reluctant to favor one Linux business over
another.
Torvalds' arrangement with Transmeta permitted him to devote part of his
time to his Linux activities. This was, in fact, a clever publicity
move on the part of Transmeta, which benefited not only by receiving the
services of an extremely talented and motivated engineer but also by
having someone on their staff who brought them exceptional media
attention.
Torvalds arrived in Silicon Valley when Microsoft was decimating Netscape in the browser war and when many people in the U.S. and elsewhere were hoping for a new, and more robust, challenger to the Microsoft monopoly.
Frequent comparisons were made between Torvalds and Bill Gates, but the
main similarities were that both were fanatical computer programmers,
both wore glasses and both were about the same height.
Gates had become fabulously wealthy, whereas Torvalds was making close
to nothing from his free software. He was subsisting only on an average
programmer's salary, and he and his family were living in a modest
duplex in an ordinary neighborhood. Actually, Torvalds was never really
interested in accumulating wealth or power, and he has contended all
along that what counts most for the best programmers is the joy of
programming and being creative. In his own words, he did it all "just
for fun." Nevertheless, he was subsequently rewarded with both wealth
and power, and he has not been reluctant to admit that money has its
advantages.
Torvalds' financial situation changed dramatically in 1999. Red Hat and
VA Linux (now VA Software), both leading developers of Linux-based
software packages for large enterprises, had presented him with stock
options in gratitude for his creation. Torvalds suddenly became a
millionaire when Red Hat went public, and his net worth temporarily
soared to roughly $20 million when VA Linux went public later that year.
Corporate Acceptance of Linux
Linux got another big boost in the late 1990s when competitors of
Microsoft began taking it seriously. Oracle, Intel, Netscape, Corel and
others announced plans to support Linux as an inexpensive alternative to
Microsoft Windows. Major corporations soon realized the potential of
Linux, and they quickly adopted it for their Internet servers and networks. Contributing to this surge in popularity was the fact that Apache,
the extremely successful free web server (which now hosts more than 64
percent of websites worldwide) was first written for Linux.
Perhaps the biggest force for Linux's adoption in the corporate world
has been IBM's official blessing and massive support. This included a
2001 announcement of a commitment of a billion dollars for Linux
research, development and promotion.
IBM's support was not merely an act of charity. The company was faced
with the growing burden of having to support its own collection of proprietary
(i.e., owned by an individual or a company) operating systems,
including AIX, OS/2 and z/OS, as well as Microsoft Windows and others.
It realized that despite Linux's obvious shortcomings at that time, such
as a very limited ability to run heavy-duty server applications and a
lack of quality GUI applications, Linux had strong technical
underpinnings and great potential for improvement. The massive
investment has been paying off very handsomely for IBM (and others), and
its Linux-related business now exceeds two billion dollars annually,
making IBM by far the world's largest vendor of Linux-related products
and services.
Linux use has grown rapidly not only in terms of the total number of
installations but also in terms of the diversity of the systems on which
it is operated. Particularly impressive has been its growing share in
the market for servers, the centralized computers that power corporate
networks and the Internet. Many industry experts are convinced that it
is only a matter of just a few years before Linux replaces the
proprietary UNIXs as the dominant operating system in the world's
largest corporate data centers.
Equally impressive has been the growth at the opposite end of the applications spectrum, i.e., for use in embedded systems.
These are single chips (or circuit boards) which contain simplified
versions of Linux and which are incorporated into everything from mobile
phones to industrial robots. Among the advantages of using Linux in
embedded systems are portability (i.e., ability to run on almost any
type of processor), flexibility (i.e., ease of configuring), low cost
(i.e., no licensing fees) and the availability of efficient and low cost
development tools.
Moreover, Linux is finally reaching the point where it is suitable for
use as a low cost alternative on the desktop and notebook computers of
ordinary people who have little understanding of (or interest in)
computers but who need them for their work and/or leisure activities.
This phenomenal success is undoubtedly due in very large part to
Torvalds' brilliance and dedication. Also important is the fact that he
made a series of wise strategic decisions, not only about the technical
aspects of the operating system but also about how it would be developed
and licensed, including that very early decision to make Linux free
software. Moreover, his personality has been ideally suited for his role
as spiritual leader of the Linux movement, including his
combination of self-deprecating humor and his far-from-unique philosophy
that "life is simply about having a good time" rather than merely about
accumulating vast wealth.
But as has so often been the case with highly creative and influential
people throughout history, Torvalds' success was also due to the fact
that he was the right person at the right time. The conditions in the
early 1990s were ripe for the emergence of a free, high performance
operating system such as Linux: namely, (1) the increasing affordability
and power of personal computers, (2) the lack of a truly stable and
powerful operating system for such computers (and the considerable
dissatisfaction with the then dominant MS-DOS) and (3) the arrival of
the Internet for instantaneous and free communication among programmers
scattered around the planet. In fact, it is highly unlikely that Linux
would have come into being, much less threaten to revolutionize the
entire computer industry, without the existence of all three of these
conditions.
Torvalds Today
Torvalds is now working on the Linux kernel full-time for Open Source Development Lab
(OSDL), which is based in Beaverton, Oregon. Founded in 2000 and
supported by a global consortium of computer companies, including IBM,
OSDL describes its mission as "becoming the recognized center of
gravity for Linux and the central body dedicated to accelerating the use
of Linux for enterprise computing."
Only about two percent of the current Linux kernel has actually been
written by Torvalds himself, which is quite understandable given its
great size and complexity (e.g., the full source code for the current
2.6 kernel is roughly 80MB). However, he makes the final decisions
regarding which of the many proposed modifications and additions will be
incorporated into it. His criteria for adding code are that it be (1)
of high quality and clean, (2) easy to maintain and (3)
beneficial to a wide range of users rather than to just a single
corporate user or to any other narrow agenda.
Torvalds also owns the Linux trademark and monitors its use (and
occasional abuse). The hundreds of other programs that are generally
included in distributions together with the kernel (e.g., GCC, bash, the
vi text editor, the X
Window System and the KDE desktop environment) are developed and
maintained by other groups, but there is considerable coordination with
Torvalds and other developers of the kernel.
In contrast to many leading advocates of open source software, Torvalds
maintains a low profile and attempts to avoid debates that are not
closely related to the Linux kernel, and he generally avoids commenting
on competing software products. In fact, his public stance is so neutral
that it has even been criticized by other free software advocates. Yet,
Torvalds has occasionally reacted with strong responses to anti-Linux
(and anti-free software) tactics employed by some proprietary software
companies.
Although Torvalds grew up in a highly political environment, he claims
to have absolutely no interest in politics. His views appear to be quite
mainstream for Europe, although they might be considered leftist in the
U.S. Despite his parents' background, Torvalds is not opposed to
capitalism. In fact, because Linux is licensed under the GPL, everybody
is automatically permitted to sell it for a profit and even become
wealthy from doing so.
Torvalds originally began his work with the OSDL by commuting from his
home in sunny Silicon Valley. However, in June 2004 he revealed that he
would finally be moving with his family to Portland (of which Beaverton
is a suburb) to oversee the OSDL. He told an Oregon newspaper: "We want
to be somewhere calmer and saner. Silicon Valley is a bit crazy."
Perhaps he should have also mentioned that Portland would be a bit more
like his native Helsinki: i.e., a very pleasant and livable city with
abundant parks and a growing tram network, and one that has less
sunshine and somewhat longer, colder and darker winters than Silicon
Valley.
Regardless of how long Torvalds stays in Portland, he will likely
continue in his roles as the head of Linux kernel development and the
spiritual leader of the Linux movement for years to come, as he has
shown no signs of tiring of them and wanting to take his life in a new
direction. Linux is still young and poised for its greatest growth, and
it still needs him.
Langganan:
Postingan (Atom)