From Minix to GNULinux A Retrospective Presented at

  • Slides: 30
Download presentation
From Minix to GNU/Linux – A Retrospective Presented at the Vintage Computer Festival Northwest

From Minix to GNU/Linux – A Retrospective Presented at the Vintage Computer Festival Northwest March 2019 Geoff Pool

Acknowledgments and Trademarks J. C. R Licklider, who along with the other members of

Acknowledgments and Trademarks J. C. R Licklider, who along with the other members of ARPA, gave us the Intergalactic Computer Network aka “The Internet”. Ken, Dennis and the rest of Bell Labs who wanted to play a game on an old PDP 7 and gave us UNIX in the process. Dr. Richard Stallman, who had the idea that Free Software was simply not just an idea; it is a right to be shared with anyone and everyone. Dr. Andrew S Tanenbaum, who wanted to teach something besides basic theory and gave us Minix. And finally, Linus Torvalds who created something magical just for fun. UNIX is a trademark of the Open Group.

Overview The Past as Prologue or things that helped the spread the Linux Kernel.

Overview The Past as Prologue or things that helped the spread the Linux Kernel. UNIX – the operating system. The GNU Project. Minix as a teaching tool and an inspiration. The early days of the Linux kernel. The growing years ending in 1994. Looking back and lessons learned.

The Past as Prologue – The Year is 1969 October 29 th, 1969 at

The Past as Prologue – The Year is 1969 October 29 th, 1969 at 10: 30 PM, the first message on the ARPANET was transmitted from UCLA by student programmer Charlie Kline. The word was login, but it crashed halfway so only the letters "LO" appeared on the other system. In Latin, the word “LO” means “Behold” or “Look!”. The future ARPANET would eventually become the primary conduent of development updates, information sharing and distribution of the Linux kernel during it’s initial development through 1994. December 28 th, 1969, Linus Benedict Torvalds was born in Helsinki Finland.

The Past as Prologue - UNIX UNICS (UNiplexed Information and Computing Service) was first

The Past as Prologue - UNIX UNICS (UNiplexed Information and Computing Service) was first conceived at Bell Labs in 1969. It first ran on a PDP-7 as “a pleasant environment in which to write and use programs. ”. It was orginally written in pure assembly languge. UNIX was ported to the PDP-11/20 in February 1971 and used internally at Bell Labs for document production within the legal department. It’s simple design and clever use of a shell, pipes and i/o redirection are still in use today.

The Past as Prologue – UNIX leaves Bell Labs In 1973, UNIX Version 4

The Past as Prologue – UNIX leaves Bell Labs In 1973, UNIX Version 4 was re-written using the C Language. Although it was still heaviliy laden with PDP 11 assembly code, it made the case that an operating system could be written in a high level language. In 1974, UNIX Version 5 was made available to Universities who were willing to pay a license fee. The reason behind the license was because AT&T, as a governmentgranted monopoly, was forbidden to sell software in the commercial market. At $20, 000 each, many Universities took advantage of the opportunity. The license also included source code.

The Past as Prologue – UNIX Version 6 In 1975, UNIX Version 6 was

The Past as Prologue – UNIX Version 6 In 1975, UNIX Version 6 was made available to both universities and corporations. Professor John Lions of the University of New South Wales taught two Operating Systems classes using UNIX as the example product. His teaching notes would be eventually be published as the book Lions' Commentary on UNIX 6 th Edition, with Source Code. The Lion’s Book, as it became known, was very popular with students studying Operating Systems. It was widely copied and distributed by various means worldwide. By 1978, Bell Labs became the sole source of legal copies.

The Past as Prologue – UNIX Version 7 In 1979, UNIX Version 7 was

The Past as Prologue – UNIX Version 7 In 1979, UNIX Version 7 was made available to license holders. There was, however, an important change to academic license holders. The UNIX source code was no longer allowed to used for teaching in a classroom setting. This included using the Lion’s Book. The response to the change was received rather poorly. Many universities dropped UNIX and started teaching operating systems as theory only. One professor took the matter into his own hands. . .

The Past as Prologue – The GNU Project In 1984, Dr. Richard Stallman left

The Past as Prologue – The GNU Project In 1984, Dr. Richard Stallman left his position at MIT to start the GNU (Gnu’s Not Unix) Project. The GNU Project was founded on the idea of Free Software, which is Software that is Free as in Freedom, not Free as in Beer. Software should not take away your rights as a user. Rather, you as the user of Free Software have four basic freedoms: 1. The Freedom of Using the software in any manner you choose. 2. The Freedom to Modify the software to your needs. 3. The Freedom to Distribute copies of the software to anyone. 4. The Freedom to Distribute Modified copies of the software to anyone.

Minix Minix was written by Professor Andrew S Tanenbaum to fill the gap left

Minix Minix was written by Professor Andrew S Tanenbaum to fill the gap left by AT&T’s decision to forbid using UNIX to teach operating systems concepts. Minix was designed to be simple, easy to read, small enough in size to be understood by one person and completely free of any AT&T code. Minix 1. 0 was 12, 649 lines of code, with over 3, 000 lines being comments. Minix 1. 0 is compatible with UNIX Version 7, including system calls. Minix 1. 0 was targetted to run on the IBM PC and small enough to fit on a single 360 K floppy disk.

Minix in the classroom Professor Tanenbaum also wrote a texbook to accompany Minix. The

Minix in the classroom Professor Tanenbaum also wrote a texbook to accompany Minix. The textbook, Operating Systems, Design and Implementation, was published in 1987. Included was a partial listing of the Minix source code. Together, both could be used to teach operating systems theory along with a working knowledge of a fully functional clone of UNIX Version 7. And for those students who owned an IBM PC or PC Clone, the software could be run locally and modified as desired. Minix continued to improved and reached version 1. 5 in January of 1991.

Minix as an operating system Minix 1. x was a basic, but complete clone

Minix as an operating system Minix 1. x was a basic, but complete clone of UNIX Version 7. It did, however, have some important limitations. Segmentation. Because it targeted the IBM PC, it was limited to addressing memory in 64 K segments. This was due to the Intel 8088 processor chosen by IBM. Code Size. The compiler provided for use with Minix was called ACK (The Amsterdam Compiler Kit). The largest program could have a code size of 64 K and a data/stack size of 64 K. No Memory Protection. The 8088 does not provide protection from programs overwriting segments already in use. 20 Bit Address Size. The Intel 8088 can only access a maximum of 1 Megabye or 1024 Kilobytes of memory.

Minix as an operating system Microkernel Design. The Minix kernel uses a microkernel approach,

Minix as an operating system Microkernel Design. The Minix kernel uses a microkernel approach, implementing system management using message passing or IPC (Interprocess Communication). Hardware requests, device services and software servicing routes requests back and forth though the kernel. Only the small kernel itself runs in privileged space. All other services are non-privileged. No Virtual Memory/Page Swap. Designed for teaching Operating System Concepts. Minimal Networking. Minix 1. 5 had a client for the Amoeba distributed operating system, but only supported one networking card (8390 based networking controller). Proprietary License. The original license allowed for two backup

Minix-386 Bruce Evans, a regular contributor to the Minix usenet community, created a series

Minix-386 Bruce Evans, a regular contributor to the Minix usenet community, created a series of patches to enhance some of the limitations of Minix. Bruce also wrote a compiler called BCC (Bruce’s C Compiler) for Minix. The patches would enhance Minix to allow it to take advantage of the Intel 386. For those lucky enough to own a 386 computer in the late 1980’s, this was a huge improvement. Its biggest advantage was that it allowed GCC to be ported for development purposes.

The Birth of Linux – Fall 1990 On May 7 th, 1990, Linus completed

The Birth of Linux – Fall 1990 On May 7 th, 1990, Linus completed his mandatory military service, got a white cat named Randi and prepared for his second year of college. The University of Helsinki acquired a Micro. Vax installed with a 16 user version of Ultrix for its newest class C and UNIX. Linus is among the students taking the new course. In order to be better prepared, Linus begins his summer reading with Operating Systems, Design and Implementation. In January of 1991, Linus spends approximately $3, 500 USD ($6, 452. 95 USD in 2018) for his 386 computer. It consisted of a 386/33 DX Processor, 4 Megabytes of RAM and a 40 Megabyte Hard Disk. He then orders Minix 1. 5 from the publisher Prentice-Hall, taking 30

Minix Development – Fall 1991 The first program Linus wrote that would lead to

Minix Development – Fall 1991 The first program Linus wrote that would lead to Linux was a small terminal emulation program. It was written in x 386 assembly language so Linus could become familiar with the 386 architecture. There were two terminal sessions. The first read from the keyboard to the modem. The second read from the modem and wrote to the screen. The application was multi-threaded, allowing both screens to be used at the exact same time.

Minix Development – Fall 1991 During development, Linus searched for POSIX standards documentation. These

Minix Development – Fall 1991 During development, Linus searched for POSIX standards documentation. These standards would be implemented in the new system as it progressed. A disk driver was written that could read/write to Minix. Using GCC, he ported Bash (1. 08). Various small programs would be ported afterwards. At this point, the Linux kernel has reached version. 01.

The Annoucement – August 25 th 1991 Hello everybody out there using minix —

The Annoucement – August 25 th 1991 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@klaava. helsinki. fi)

The Crash October 1991 - 0. 02 Released Novermber 1991 - 0. 03 Released

The Crash October 1991 - 0. 02 Released Novermber 1991 - 0. 03 Released Soon afterwards, Linus accidently overwrote critical Minix files, prompting a decision. Reinstall Minix from scratch (all 17 floppies) or continue to use the Linux kernel as is?

An Early Christmas Present A user from Germany couldn't compile Linux because he only

An Early Christmas Present A user from Germany couldn't compile Linux because he only had 2 Megabytes of RAM and GCC need more. Linus wrote a Page-To-Disk driver allowing the disk to swap memory. He started it on December 23 rd and finished on December 25 th. This was the first feature filled to meet someone else's need.

GNU/Linux Development - Spring 1992 January 1992 - Linux kernel. 012 Released First Version

GNU/Linux Development - Spring 1992 January 1992 - Linux kernel. 012 Released First Version covered by the GPL. Thanks to the Internet and the Page-To-Disk Driver, the Linux kernel has been spreading for several months, attracting many users. Other users begin to request changes, submit bug reports and contribute patches.

The Tanenbaum Torvalds Debates Started on January 29 th, 1992 and effectively died out

The Tanenbaum Torvalds Debates Started on January 29 th, 1992 and effectively died out in February. Key Points Raised: Microkernel vs Monolithic Kernel. x 386 target architecture vs 100% complete portability. Free (as in Freedom) vs Non-Free. Stayed tuned for the restrospective.

Journey Forward to GNU/Linux 1. 0 The Linux kernel goes through five separate major

Journey Forward to GNU/Linux 1. 0 The Linux kernel goes through five separate major versions throughout 1992. The last version was. 99. x on December 13 th, 1992. The final Linux kernel 1. 0 was released on March 14 th, 1994. From inception, it took approximately two years and 7 months to reach its first final version. Many people all of the world wrote documentation, submited bug reports and contributed patches. This included a fully homegrown version of TCP/IP support, complete with stress testing within several university settings.

GNU/Linux Size The first public version of the Linux kernel (0. 01) from September

GNU/Linux Size The first public version of the Linux kernel (0. 01) from September of 1991 has approximately 10239 lines of code. Verision 1. 0 of the Linux kernel from March of 1994 has approximately 176, 250 lines of code. In 27 months, the total Linux kernel grew more than 16 times in size. Version 4. 17 of the Linux kernel (June 2018) had 25, 379, 564 lines of code.

Looking Back and Lessons Learned The Linux kernel development from 1991 to 1994 (and

Looking Back and Lessons Learned The Linux kernel development from 1991 to 1994 (and beyond) is remarkable for several reasons: It proved (once again) that a very large of group of people with common purpose could build and refine a critical piece of software that was not for the sole purpose of creating profit for themselves or a company. It proved that the GNU Public License was not a hinderance to success. It helped set the stage for adoption of free software as a viable product to be enjoyed by everyone.

Looking Back and Lessons Learned It proved that commericial interests could provide products and

Looking Back and Lessons Learned It proved that commericial interests could provide products and services based on free software and create positive financial returns for its owners. It proved that existing companies could add free software support/compatibility with traditional commercial software and not necessarily lose revenue or market share. Any finally, it proved that free software is here to stay.

The Tanenbaum Torvalds Debates Retrospective There are three major points to cover: Free Software.

The Tanenbaum Torvalds Debates Retrospective There are three major points to cover: Free Software. It would be fair to say that given a choice between free software and non-free software, the preference still heaviliy towards free software, including access to source. Portability. The Linux kernel has evolved into being very portable across many platforms thanks to a good design and continued work on the kernel. Microkernel vs Monolithic. With modules, the Linux kernel has evolved into a hybrid approach. The debate over security and reliability continues.

Minix in 2019 Minix is still around and is actively developed. Its focus has

Minix in 2019 Minix is still around and is actively developed. Its focus has changed from being solely a teaching tool to include being a realiable, fault tolerant system. It potentially now hold claim to being the largest deployment of a Unix -like system. Intel uses Minix 3 as part of its Management Engine System. It is now covered by a three line BSD license retroactively applied to all versions of Minix.

Reference Works and Suggested Reading The Dream Machine. J. C. R. Licklider and the

Reference Works and Suggested Reading The Dream Machine. J. C. R. Licklider and the Revolution That Made Computing Personal. M. Mithcel Waldrop. The UNIX Time Sharing System – A Retrospective. Dennis Ritchie, 1977. The GNU Manefesto. Richard M. Stallman. http: //www. fsf. org. Operating Systems, Design and Implementation. Andrew S. Tanenbaum. Rebel Code. Glyn Moody. Just for Fun, The Story of an Accidental Revolutionary. Linus Torvalds. A Heavily Commented Linux Kernel Source Code. Kernel Version

Q&A Questions?

Q&A Questions?