![]() Minix versions and their use in teachingmodified: 29 Jun 2006 |
![]() For MINIX 3 go to http://www.minix3.org. (Minix 3 released Oct 2005) |
[HOME] | [FAQ] | [HINTS] | [GET MINIX 2] | [CONTRIB SOFTWARE] |
[NET SOFTWARE] | [DOCS] | [TEACHING MINIX] | [OTHER MINIXES] | [LINKS] |
There have been three editions of the Operating Systems Design and Implementation text, each one of which was released in conjunction with a release of the Minix operating system described in detail in the book.
Operating Systems Design and Implementation, by Andrew S. Tanebaum, (1987) describes Minix 1.1. Minix itself was not available free, but it could be purchased separately on a set of floppy disks from Prentice-Hall. The license did not allow free distribution, but for educational purposes the disks could be duplicated for students. A printed Minix Reference Manual was provided with the Minix distribution. This version of Minix did not provide support for hard disk or network operation, but it could run on a first-generation IBM-PC with as little as 256 KB memory, and one floppy disk drive (although two drives were recommended).
Numerous upgrades for Minix 1 were made available -- because of licensing restrictions complete upgrades were not available on the net, but source code patches could be downloaded to apply to existing legal copies of Minix. At least two complete new versions of Minix, Minix 1.3 and Minix 1.5, were sold by Prentice-Hall, complete with revised editions of the Minix Reference Manual. Minix 1.5 (1991) came on 12 3.5" 720 KB floppy disks. Minix 1.5 was intended to be installed on a hard disk, although it did not initially provide a boot monitor, which meant a Minix system had to be booted from a floppy disk. It was available in versions for the IBM PC, XT, AT, 386, and PS-2 (although it only ran in 16-bit mode on a 386), as well as for the Atari ST, Commodore Amiga, Apple MacIntosh, and Sun SPARC. A printed source code listing was supplied in the Reference Manual, and most of the code of the kernel and other system components remained similar enough to the listings in the 1987 text that using the new code for teaching was practical.
The official Minix 1.5 release had some support for Tanenbaum's amoeba distributed processing system, but IP networking was not supported. However, networking code written by Michael Temari, known as Tnet, became available on the net, and could be added with fairly minimal patches to the main body of Minix for Intel processors.
Operating Systems Design and Implementation, 2nd edition, by Andrew S. Tanebaum and Albert S. Woodhull, (1997) describes Minix 2.0.0, which was included on a CD-ROM. A new license allowed unlimited copying of the CD-ROM, and the terms of the new license were also applied retroactively to older versions of Minix. Minix 2 could be compiled to run on a first-generation IBM-PC, and operation without a hard disk was possible, but impractical. In addition, two versions of the assembly-language portions of the source code were provided, one for systems with 16-bit processors (i.e., 80286 and earlier, and one for 32-bit Intel processors (80386 and later). The reference version described in the text is the 32-bit version. Network code developed at Tanenbaum's university in Amsterdam was distributed and could be easily added by recompiling the system. A sophisticated boot monitor was also available and it was easy to set up a Minix 2 system in a dual- or triple-boot configuration with Windows and/or Linux and Minix on separate partitions of the hard disk.
It should be mentioned that with the exception of the Sun SPARC version, implementations of Minix for non-Intel systems were not updated to Minix 2. There have been some experiments with porting Minix to various handheld devices. There is a page on this site with links to more information about Minix 2.0 for non-Intel platforms.
Minix 2.0.2 was released in 1998. For teaching OS courses the most important change is probably the addition of the DOSMinix method of running Minix. This uses low level MS-DOS disk support routines to access a simulated Minix disk partition which is actually just a large file in a FAT directory on an MS-DOS or Windows system. Repartitioning of the disk is not necessary. Installation consists of unpacking a zipped directory which provides an MS-DOS boot program, a 50 MB simulated disk, and a utility which can be used to create additional simulated disks of any size desired. Native Minix disk drivers are also present, so a DOSMinix system can mount true Minix file systems on additional partitions or disks if needed.
Unfortunately, DOSMinix requires a FAT file system, and will not work with the NTFS file system of Windows NT, Windows 2000, or Windows XP. However, all of these systems can access FAT file systems, so DOSMinix may be usable on machines with these operating systems if a FAT partition is provided. You would probably also have to use an MS-DOS (or FreeDOS) floppy disk to boot such a system, however. DOSMinix can be started directly on machines with Windows versions through Windows 98, 2nd edition, and possibly Windows ME (I'm not sure of ME). It requires only the lowest level MS-DOS underpinnings of Windows, which means that you have to boot the Windows machine into what Microsoft calls Safe Mode with Command Prompt only -- which is simply MS-DOS.
I have not taught using Minix 2 releases later than Minix 2.0.0, but I believe the bulk of the source code is similar enough to that described in the OSDI 2nd ed. text that the code descriptions in the text will be easy to follow. The same is probably true of later releases of Minix 2. Major improvements to Minix 2.0.3 (2001) deal with networking. First, a means of starting the network server after the rest of the system has started is provided, so it is not necessary to recompile the Minix system to enable networking. Second, networking can be made much more secure by configuring a serv.access file that enables one to limit network connections by connection type and IP address.
The last Minix 2 release was Minix 2.0.4, in late 2003. The purpose of this release was to pull all patches and fixes for Minix 2.0.3 into a single package for the convenience of work that was beginning on Minix 3. Probably Minix 2.0.4 is as useful as earlier Minix 2 releases as a classroom tool. An important reference for anyone planning to teach with Minix 2.0.4 is the Minix 2.0.4 Changes document, which lists all of the differences between the 2.0.0 and 2.0.4 releases. This points out a few places where changes in the kernel code make it notably different from the code described in the OSDI 2nd ed. text.
Continued support for Minix 2.0.4: Although Minix 3 was released in late 2005 and the OSDI 3rd ed. text was published in early 2006, Minix 2 and OSDI2 are still in widespread use at the time is being written (June 2006). Many professors have course materials based on Minix 2 that they wish to continue to use, and it may be several years before translations of the new edition of the text to languages other than English are available. For these reasons I am committed to continuing to support Minix 2 on this website. A number of fixes and additions to Minix 2.0.4 have been released since November 2003, and these can be found in the Minix 2.0.4 fixes directory. A recent development which is applicable to use of Minix 2 in teaching is the release of the free VMWare Player, which makes it possible to run Minix as a virtual machine on top of a Windows or Linux host. This provides the kind of no-repartitioning, no-installation, convenience for which the DOSMinix method was developed. More information and a downloadable Minix 2.0.4+ virtual machine are available here on a Minix on VMWare Player page.
Operating Systems Design and Implementation, 3rd edition, by Andrew S. Tanebaum and Albert S. Woodhull, (2006) describes Minix 3.1.0, which is included on a CD-ROM. Many parts of Minix are similar to earlier versions, and laboratory exercises to do things like add a new system call or driver probably will be easily adaptable to Minix 3. But there are some fairly radical changes in the basic design. Most importantly, all device drivers have become truly independent processes. In earlier versions of Minix drivers executed as independent processes but they were all compiled together into the same binary file as the kernel. In Minix 3 drivers do not share code or data with the kernel and in many cases can be loaded and unloaded independently of the kernel.
Minix 3 development is ongoing. Minix 3.1.1 was released even before the OSDI 3rd ed. text had been published, and Minix 3.1.2 was released in April 2006. However, most of the effort is going into extensions to the system; the core components described in the text are not expected to change much from those in the 3.1.0 release. To keep posted on developments see the new Minix 3 website.
[HOME] | [FAQ] | [HINTS] | [GET MINIX 2] | [CONTRIB SOFTWARE] |
[NET SOFTWARE] | [DOCS] | [TEACHING MINIX] | [OTHER MINIXES] | [LINKS] |
![]() |
![]() |
![]() |