"I've decided to change the copyright to have the same set of rules as the GNU copyleft - I got some mail asking about it, and I agree."
"A small word of warning: linux looks like a unix, but I implemented it from scratch, and with very little literature on how things 'should' be done."
Abdel Benamrouche announced that he has updated the original 0.01 Linux kernel to compile with GCC-4.x, allowing it to run on emulators such as QEMU and Bochs. After applying his series of small patches, Abdel explains that the 0.01 kernel can be built on a system running the 2.6 Linux kernel. He added that he's successfully ported bash-3.2, portions of coreutils-6.9, dietlibc-0.31 (instead of glibc), bin86-0.16.17, make-3.81, ncurses-2.0.7, and vim-7.1 all to run on his modified 0.01 kernel.
"I'd like to keep linux simple even at the cost of some speed hit, as otherwise it grows until nobody really understands it."
"If I /agree/ to add it to linux? If anybody implements paging, he's going to get 2 extra copies of linux for free. How's that for an offer?"
"Memory is getting relatively cheap these days --- we're talking maybe US$30 to US$40 per megabyte if your machine can take SIMMS. Upgrading a machine from 2 meg to 4 meg doesn't cost *that* much money."
"I'd like to know if the floppy-driver works for 2 (or more) drives? Nobody has commented on that yet. Do a sync before you try it though (just in case...)."
"Well, it seems people are starting to get some things working, and my mailbox has certainly been busy."
"This month yet another milestone was reached: note the 'Recent traffic' fields (both in kilobytes and number of messages): c.o.linux is actually more active than alt.sex according to newsstat."
"... as you probably all have noticed. I've been up all night writing this report for the 'CS Course from Hell' (*), and haven't had time to play with linux. I'll get it done tonight if I can keep awake that long."
"While it's entirely possible that linux won't work on the machines (it does happen), the fact that it doesn't work on *any* of them makes me wonder about your boot-disk (and possibly root-disk) integrity. Linux does work on most AT-386's it seems."
"This version has a lot of corrections, and is stable at least on my machine," noted Linus Torvalds in the 0.11 Linux kernel release announcment, "I /hope/ every known bug is fixed, but no promises (and all unknown bugs are still there, probably with reinforcements ;-)". The 0.11 kernel was released on December 8th, 1991, gaining demand loading, the
fdisk utilities, improved floppy drivers, a console that could generate beeps, support for US, German, French and Finnish keyboards, and settable line-speeds for the com ports (instead of having them hard-coded to 2400bps). Noticeably lacking was support for SCSI, an init/login system (Linux 0.11 booted into a root bash prompt), and paging to disk:
"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."
In a June of 1992 posting to the linux-activists mailing list, Linus Torvalds described the original Linux scheduler noting, "the scheduler in linux is pretty simple, but does a reasonably good job at giving good IO response while not being too unfair against cpu-bound processes." A year later, Linus posted a more detailed description of the scheduler noting, "the linux scheduling algorithm is one of the simplest ones possible". Comments in the original 254 line
sched.c file read, "'schedule()' is the scheduler function. This is GOOD CODE! There probably won't be any reason to change this, as it should work well in all circumstances (ie gives IO-bound processes good response etc). The one thing you might take a look at is the signal-handler code here."
Comments in the current 6,709 line
sched.c file show the first changes being made in 1996 by Dave Grothe, "to fix bugs in semaphores and make semaphores SMP safe". Two years later Andrea Arcangeli is credited with implementing "schedule_timeout() and related stuff". It was not until 2002, ten years after Linus' original code was written, that the scheduler received a complete rewrite, "new ultra-scalable O(1) scheduler by Ingo Molnar: hybrid priority-list and round-robin design with an array-switch method of distributing timeslices and per-CPU runqueues." Con Kolivas is credited with "interactivity tuning" in 2003, and Nick Piggin added "scheduler domains" in 2004. A more recent rewrite of the scheduler happened in April, again by Ingo Molnar, this time with his Completely Fair Scheduler.
"BACK UP ANY IMPORTANT DATA," began the Linux 0.10 installation instructions. "Linux accesses your hardware directly, and if your hardware differs from mine, you could be in for a nasty surprise. Doublecheck that your hardware is compatible: AT style harddisk, VGA controller." The installation guide explained that there were five major steps in getting Linux installed and running on your computer, including the above first step of backing up the system. The second step was to use Minix and the
mkfs command to create a new filesystem on an empty partition of your hard drive. Third you used
dd to write the 'boot' and 'root' Linux disk images to floppy disks. The fourth step was actually booting from the floppies, "having a floppy as root-device isn't very fast (especially on a machine with less than 6MB total ram -> small buffer cache), but it works (I hope)." The final step was mounting the empty hard disk partition, copying the files from the floppy disks to the partition, and creating the necessary
/dev files with
mknod, "you should now have a filesystem you [can] boot from. Play around a bit, try to get acquainted with the new system. Log out when you've had enough." The document noted that while it was possible to install Linux using DOS, the instructions were intended for people using Minix:
"In general, this version is still meant for people with minix: they are more used to the system, and can do some things that DOS-based persons cannot. If you have only DOS, expect some troubles. As the version number suggests, this is still not the final product."
"Do you pine for the nice days of minix-1.1, when men were men and wrote their own device drivers?" began the October 5th, 1991 announcement for Linux kernel version 0.02 on the comp.os.minix newsgroup. In the release notes, Linus Torvalds continued, "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." 19 days after the 0.01 kernel was released, the 0.02 kernel debuted with the new-found ability to run a handful of utilities including bash, gcc, gnu-make, gnu-sed and compress. There was no floppy driver yet, the hard disk driver was hard coded to AT-compatible drives, and due to various buffer-cache problems it was not possible to compile large programs like gcc from a running 0.02 kernel. Linus noted:
"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."