This tutorial will walk the reader through setting up Minix 2.0.4 on Windows XP via Bochs 2.1.1. These are the latest versions of Minix, Bochs and Windows XP as of May of 2004. In this era of Linux and Windows domination of the OS scene, it is important to remember that there are alternatives. Hence, this article will also serve as an introduction to one such alternative, Minix, which has a very rich heritage, indeed.
Props
Props to Andrew Tanenbaum, Al Woodhull, and Thom Holwerda. Andrew Tanenbaum for Minix, Al Woodhull for the Minix on Bochs on Windows How-to, and Thom Holwerda for introducing me to PearPC.
Background
My interest in Minix has been rekindled in recent days by a combination of events. Thom Holwerda wrote an article on May 18, 2004 about running OSX Panther on a PC. I dusted off the Panther CDs and 5 hours later, Mac on a PC, will wonders never cease. Needless to say, I was raring to emulate every OS I could find, thus I needed Bochs. After about 10 hours of fairly painful downloading and tweaking, I got these OSes working in Bochs, to some extent:
Menuet
NewOS
Oberon
Tomsrtbt
I failed miserably with these:
I archived off the work and forgot about it for a few days. What threw me over the edge and got me to exploring Minix on Bochs was the article that OSNews linked to at CNET News, by Stephen Shankland – Is Torvalds really the father of Linux This article reported on the Alexis de Tocqueville Institution report, which suggested that more credit should be given to Minix. Intrigued, I followed a link to a response by Andrew Tanenbaum, Minix’s creative father, and a few days later the followup.
Andrew Tanenbaum’s concise history of Linux come Unix is quite interesting, if unconventional. I followed a series of links from there and wound up at Al Woodhull’s helpful Minix site. Al Woodhull co-authored the Second Edition of Operating Systems: Design and Implementation and is quite an authority on all things Minix. Long story short, I learned in the space of a couple of days, that Minix was worthy of further study.
About Minix
Minix is a Free, Open Source, Unix-like Operating System. Originally created by Andrew Tanenbaum to compensate for ATT’s prohibition against teaching Unix internals and to provide him with a tool for teaching Operating System design and internals to his students. Minix predates Linux as the first free, unencumbered, Unix clone. The Minix source code was included in the book, Operating Systems: Design and Implementation, by Andrew Tanenbaum, a classic of modern technical literature, for free. Minix is Unix-like and therefore Linux-like, and yet, it differs considerably in it’s architecture. The biggest difference being that Minix is a micro-kernel. The Minix system source code comprises a whopping, 4.5 megs uncompressed. The Linux kernel archive is 176 megs uncompressed. Another striking difference is comments – the Minix source is incredibly well documented and suitable for study.
I decided to compare a couple of comparably sized files from the Linux kernel archive and Minix source at random to get a feel for the comment levels of the two OSes and the results were astonishing:
Linux: compat.c, 533 lines, 8 comments, 26 lines
Minix: keyboard.c 505 lines, 142 comments, (too many to bother counting).
To be sure, Joe Hacker could probably tell by the context, of every line of code in compat.c, what each line does and would likely claim that the comments were superfluous – that compat.c contains nothing but self documenting code, but for us normal, non superhuman types, comments are a necessity for understanding. I realize that my method of random selection is not very scientific. However, having browsed both sets of code, quite extensively, it is my opinion that this is a representative sample.
Requirements
This tutorial assumes that you are familiar with Windows and Unix. You do not have to be a guru or even a power user, but a good understanding of the usage of both of these operating environments is required. Unix, in this context, refers to Linux, Minix, BSD, SCO, Solaris, etc. Windows, in this context, refers to the Windows NT branch of Windows – Windows NT 3.5, 4.0, Windows 2000 and Windows XP. Windows 95 and its descendants might suffice, but I would not be able to say, one way or the other.
Cygwin
If you are going to be playing around with OS emulation, you are going to need Cygwin, to keep your sanity. In order to complete this tutorial you will at least need the dd utility. All of the command-line commands in this tutorial will be Cygwin commands – translation to the XP command prompt equivalents are left as an exercise for the reader.
Here is what the cygwin command prompt looks like:
Cygwin can be downloaded from the Internet here.
Bochs
The current version of Bochs is 2.1.1. Bochs is an IA-32 Emulator and it is Open Source. It is how we are able to run Minix in Windows XP. It can be downloaded here/.
Minix
Minix has been described adequately, above. The current version is 2.0.4 and can be downloaded from either: here
or
here
The files that you will need from the Minix site are:
i386/ROOT – Installation root floppy image
i386/USR – Installation /usr floppy image
i386/USR.TAZ – Binary /usr files (386 executables)
SRC/SYS.TAZ – if you want man pages
Preparation
Cygwin
Download and install the Cygwin distribution. There is really nothing more to it.
Bochs
Download and install Bochs, configure it to your taste, but the defaults are fine.
Minix
Download the four files above. The rest of the tutorial will describe setting Minix up in Bochs.
Getting Started
Requirements met, preparation done. It is time to begin in earnest.
Create directory
Create a directory to contain the working files.
mkdir minix-2.0.4
Create image
Create an Empty 40 Megabyte Disk Image.
Run the Bochs Disk Image Creation Tool to create a hard disk image to host the Minix system. The tool can be started in one of two ways, from the command prompt in the Bochs program directory:
bximage
or from the Start menu:
Start->Programs->Bochs 2.1.1->Disk Image Creation Tool
Enter the commands as shown to create a 40MB empty disk image:
============================================================= bximage Disk Image Creation Tool for Bochs $Id: MinixOnBochsOnWindows-revised.html,\ v 1.3 2004/05/31 01:17:39 wsenn Exp $ ============================================================= Do you want to create a floppy disk image or a hard disk image? Please type hd or fd. [hd] What kind of image should I create? Please type flat, sparse or growing. [flat] Enter the hard disk size in megabytes, between 1 and 32255 [10] 40 I will create a 'flat' hard disk image with cyl=81 heads=16 sectors per track=63 total sectors=81648 total size=39.87 megabytes What should I name the image? [c.img] Minix-2.0.4-emptyHD.img Writing: [] Done. I wrote 41803776 bytes to (null). The following line should appear in your Bochsrc: ata0-master: type=disk, path="Minix-2.0.4-emptyHD.img",\ mode=flat, cylinders=8 1, heads=16, spt=63 Press any key to continue
It is important that you write down the line that begins ata0-master. This is the settings line that will be used to configure Bochs to recognize your hard disk image.
Copy image
The image will be placed into the Bochs program directory. Copy it from there into the working directory:
cp Minix-2.0.4-emptyHD.img d:\workarea\minix-2.0.4
Backup image
Throughout this tutorial, I will advise that the image be backed up at various stages of its life. It is critical that you do this. Backing up the image is accomplished by zipping it up with your favorite archiving utility – mine is WinRar, but there are plenty to choose from at CNET Downloads and Cygwin comes with gzip, which also works and is used below.
Backup up the image now. It is in a pristine state and can be used in a variety of situations in its current state.
gzip -9 minix-2.0.4-emptyHD.img
This will create a gzip file that is about 40K. Store the zip file somewhere safe:
cp minix-2.0.4-emptyHD.img.gz somewheresafe gzip -9 minix-2.0.4-emptyHD.img.gz
Initialize Minix
Initialize Minix on the 40 Megabyte Disk Image.
In order to boot Minix on Bochs, a ROOT image, USR image, empty hard disk image, and a bochsrc file is needed. ROOT and USR were downloaded in the Preparation stage and the 40 Megabyte empty hard disk image was created in the previous step. The Bochs emulator uses a text configuration file to control how it runs. In the so-called, bochsrc file, all of the information needed to run the Minix environment will be placed, specifically, how much memory, which BIOS, which VGA ROM, disks, mice, etc. Here is a reasonable bochsrc for installing Minix on the empty hard disk. It will boot from floppy whereas the final version will boot from the hard disk. Save it to a file called Minix-2.0.4-prep.bxrc (bxrc files are associated with Bochs by its install script):
megs: 8 romimage: file=$BXSHARE/BIOS-Bochs-latest, address=0xf0000 vgaromimage: $BXSHARE/VGABIOS-elpin-2.40 ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 ata0-master: type=disk, path="Minix-2.0.4-emptyHD.img",\ mode=flat, cylinders=81, heads=16, spt=63 floppya: 1_44=ROOT floppyb: 1_44=USR boot: floppy log: Minix-2.0.4-prep.log mouse: enabled=0
Pay particular interest to the lines:
ata0-master – this is where the hard disk is defined, the line came from the image creation tool
floppya – specifies the ROOT image for booting the new system
floppyb – specifies the USR image which contains the /usr file system
boot – tell Bochs to boot from the first floppy it finds (a)
Boot Minix using ROOT
This is where the fun begins:
1. Double Click the Minix-2.0.4-prep.bxrc file to start Bochs and boot Minix off the ROOT floppy.
2. Press = when the Minix boot monitor appears, to boot Minix.
3. Type fd1 when asked to: Finish the name of the device to mount as /usr: /dev/.
4. Login as root at the prompt:
noname login: root
5. Press F3 to turn on Software scrolling (may be needed if text disappears).
6. Type setup to begin the actual setup script.
# setup
7. Press enter at the : prompt to continue.
8. Press enter to accept the keyboard selection:
us-std
9. Press enter at the : prompt to continue.
10. Configure the empty hard drive /dev/hd0.
10.1. Arrow-Down (you will see Active flag at the top left) and probably something like:
/dev/hd0: Invalid partition table (reset), ignore the error -\ it's just Minix's way of telling you that the empty image \ is not partitioned.
10.2. Right-Arrow (you will see Hex partition type at the top left).
10.3. Type 81 to change the Type of the partition to Minix.
10.4. Right-Arrow three times (you will see Start head).
10.5. Type ‘+’ to increase the Head count to 1.
10.6. Right-Arrow seven times (you will see Size in kilobytes at the top left).
10.7. Type ‘m’ three times to maximize the size and kb column values to the detected values. You should now see the following line:
1* hd1 81 MINIX 0 1 0 80 15 62 63 81585 40792
10.8. Type ‘w’ and ‘y’ to write the partition table to the image.
10.9. Type ‘q’ to exit the partition program, part.
10.10. Type ‘hd1’ when asked to finish the name of the primary partition /dev/.
10.11. Press enter to accept the default layout.
10.12. Wait for Minix to scan the image.
10.13. Press enter to accept the default location of the ROOT floppy – 0.
10.14. Press enter to accept the default memory size of the system [4096 or more].
10.15. Type ‘halt’ to stop the current instance of Minix, when prompted.
10.16. Type ‘boot hd1’ at the fd0> to test out the hard drive instance:
boot hd1
11. Press = to start Minix on the hard disk image.
12. Login as root:
noname login: root
13. type ‘shutdown -h now’ at the # prompt to stop the instance:
shutdown -h now
14. Press the Power button in the Bochs Toolbar to shut down Bochs.
Backup the image
The hard disk image now contains a bootable hard disk with a tiny root file system on it. Make a backup copy of the image in this state.
cp minix-2.0.4-emptyHD.img minix-2.0.4-rootonlyHD.img gzip -9 minix-2.0.4-rootonlyHD.img cp minix-2.0.4-rootonlyHD.img.gz someplacesafe gzip -d minix-2.0.4-rootonlyHD.img.gz
Create a Bochsrc for the new image
Now that there is a Minix bootable hard disk image, a new bochsrc file is needed. Here it is – name it Minix-2.0.4-rootonlyHD.bxrc:
megs: 8 romimage: file=$BXSHARE/BIOS-Bochs-latest, address=0xf0000 vgaromimage: $BXSHARE/VGABIOS-elpin-2.40 ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 ata0-master: type=disk, path="Minix-2.0.4-rootonlyHD.img",\ mode=flat, cylinders=81, heads=16, spt=63 floppya: 1_44=floppya.img floppyb: 1_44=floppyb.img boot: disk log: Minix-2.0.4-rootonly.log mouse: enabled=0
The relevant new lines are:
ata0-master – now points to our bootable Minix image
floppya and floppyb – now point to non-existent image files, this allows us to insert floppy images at will, without actually initializing with a floppy in the drive (quirky, but effective, if you don’t specify a floppy the emulator seems to disable the floppy – at least on my machine)
Installation
In order to have a useable Minix system, an actual installation must be performed. First, though some preparation:
USR.TAZ and SYS.TAZ
Both of these files are too large to fit on a floppy and for the time being, the floppy is the only mechanism available to get files from Windows XP into Minix. The solution is to slice each file into floppy-sized chunks and read them in piecemeal.
In Windows, this is not as straightforward as I would like. Thankfully, Cygwin provides Windows users with a Unix like environment with which to work in. Feel free to find your own method for doing this and please share.
Hints
1. If you are new to Cygwin, drives are referred to as /cygdrive/[drive letter], as in /cygdrive/d instead of d:
2. If you are in a Cygwin Prompt or a Command Prompt window, and you want to start Explorer in that directory (maybe you want to rename and copy a set of files…), type:
explorer /e,.
(explore space slash e comma dot)
3. dd is a unix utility that dumps data from one file to another. In unix a device can be a file, this allows the dumping of a floppy to a file and visa versa
Slice Archives
Use the dd utility to do the slicing of USR.TAZ:
$ dd if=USR.TAZ of=USR-01.img bs=1440k count=1 skip=0 1+0 records in 1+0 records out $ dd if=USR.TAZ of=USR-02.img bs=1440k count=1 skip=1 1+0 records in 1+0 records out $ dd if=USR.TAZ of=USR-03.img bs=1440k count=1 skip=2 0+1 records in 0+1 records out $
You will need three slices with the current version of Minix, later you might need more. You have enough slices when dd reports 0+1 records in or 0+0 records in (in the case of a perfect fit of the last slice).
Use the dd utility to do the slicing of SYS.TAZ:
$ dd if=SYS.TAZ of=SYS-01.img bs=1440k count=1 skip=0 1+0 records in 1+0 records out $ dd if=SYS.TAZ of=SYS-02.img bs=1440k count=1 skip=1 1+0 records in 1+0 records out $
You will need two slices with the current version of Minix, later you might need more. You have enough slices when dd reports 0+1 records in or 0+0 records in (in the case of a perfect fit of the last slice).
Start the Installation
1. Double Click on the Minix-2.0.4-rootonlyHD.bxrc file to fire up Bochs and Minixc
2. Login as root
noname login: root
3. Press F3 to enable Software scrolling (if the screen blanks)
4. Type ‘setup /usr’ to start the USR setup process
# setup /usr
5. Press enter to accept the default image size of all
6. Press enter to accept the default floppy drive of 0
7. Click the A floppy button in the Bochs toolbar
8. Click the Browse button and browse to the USR-01.img file to select it as the floppy image. Make sure inserted is checked
9. Click OK to continue
10. Press enter at the Please insert input volume 1 and hit return prompt (this will extract a bunch of files – ignore the Can’t make directory because it already exists messages – they are expected.
11. Click the A floppy button in the Bochs toolbar when prompted for the next volume
12. Click the Browse button and browse to the USR-02.img file to select it as the floppy image. Make sure inserted is checked.
13. Click OK to continue
14. Press enter at the Please insert input volume 2 and hit return prompt (this will extract a bunch more files)
15. and so on until you have extracted the contents of all of the volumes.
You know that you are done, when Minix says:
Done.
Install the System Sources
The system is useable at this point, however, the man pages are not present and for me this is problematic – I cannot remember half the syntax for the commands. In order to get the man pages working, the SYS images must be imported and extracted. SYS also includes the kernel source code needed for recompiling the kernel, not covered here. Here are the steps for installing SYS:
1. Create a working directory in /usr, say /usr/work. The reason for this is the fact that the root / file system only has about a Megabyte of space.
mkdir /usr/work cd /usr/work
2. Click the A floppy button in the Bochs toolbar.
3. Click the Browse button and browse to the SYS-01.img file to select it as the floppy image. Make sure inserted is checked.
4. Click OK to continue.
5. Read the contents to a file on the disk image:
dd if=/dev/fd0 of=SYS-01.img
You should get a message similar to:
2880+0 records in 2880+0 records out
6. Click the A floppy button in the Bochs toolbar.
7. Click the Browse button and browse to the SYS-02.img file to select it as the floppy image. Make sure inserted is checked.
8. Click OK to continue.
9. Read the contents to a file on the disk image:
dd if=/dev/fd0 of=SYS-01.img
You should get a message similar to:
2880+0 records in 2880+0 records out
10. Repeat this as necessary, until all of the SYS-0x.img files are read into the Minix hard disk image.
11. Concatenate the two images into one SYS.tar.Z file:
cat SYS-01.img SYS-02.img > SYS.tar.Z
12. Uncompress the SYS.tar.Z file:
uncompress SYS.tar.Z
13. Untar SYS.tar from /usr:
cd /usr tar xvf /usr/work/SYS.tar
14. Test it out, type:
man man
15. If all is well, a man page describing how to use man should be on screen.
16. Shutdown the instance by typing the following at the # prompt:
shutdown -h now
17. Shutdown the Bochs instance by pressing the Power button on the toolbar.
Backup the image
You now have a bare instance of the Minix OS installed on the hard drive instance. This is an excellent time to archive the instance for posterity (and in case you mess up something and want to start over without all the pain of going through this how to again – aka backup).
Copy bochsrc and image
Copy the bochsrc and image files to new files:
cp Minix-2.0.4-rootonlyHD.bxrc Minix-2.0.4-HD.bxrc cp Minix-2.0.4-rootonlyHD.img Minix-2.0.4-HD.img
Edit bochsrc
Edit the new bochsrc file, Minix-2.0.4-HD.bxrc:
megs: 8 romimage: file=$BXSHARE/BIOS-Bochs-latest, address=0xf0000 vgaromimage: $BXSHARE/VGABIOS-elpin-2.40 ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 ata0-master: type=disk, path="Minix-2.0.4-HD.img", \ mode=flat, cylinders=81, heads=16, spt=63 floppya: 1_44=floppya.img floppyb: 1_44=floppyb.img boot: disk log: Minix-2.0.4-HD.log mouse: enabled=0
Create a tarball
Create a tarball of the new bochsrc and image file:
tar cvzf minixfresh.tar.gz minix-2.0.4-HD.bxrc minix-2.0.4-HD.img cp minixfresh.tar.gz somewheresafe
Untarring (no need to do it now) the archive is as simple as:
tar xvzf minixfresh.tar.gz
Should zip up to around 10 Megabytes (amazing, huh?).
Secure the OS – Just for Fun
Until you decide to become a Bochs master and hook up networking, which is not covered here, you probably need not be overly concerned with security. However, you should definitely not be logging in as root, because it’s too easy to muck things up. Minix provides a user called bin that is able to do many of the same things as root – see the documentation for a full description. I tend to create a regular user and su to bin and then, if needed, su to root to do those sorts of things.
Change the root password
1. Boot into Minix and login as root.
The command to set a password is passwd user, if no user is specified, passwd defaults to the current user. Since you are logged in as root, simply type ‘passwd’ and enter a decent password:
passwd
Note: The root password is also the root of any users that have a group id of 0, such as bin, so changing the root password also changes it for bin.
Create a new user
1. Create a group for normal users:
vi /etc/group
2. Add the line (9 is the next available group number):
users:*:9:
Here’s a screenshot of vi /etc/group.
Note: I could not find a groupadd, grpadd, addgroup, addgrp, or vigr command, so this is my approach – please let me know if there’s a better way…
3. Create a home directory to contain the all of the user’s home directories
mkdir /usr/home
4. Add the user
adduser usernamegoeshere users /usr/home/usernamegoeshere
5. Assign the user a password – give them a good password
passwd usernamegoeshere
6. Log out and back in as the user
exit noname login: usernamegoeshere password: userpasswdgoeshere
7. Shutdown Minix
8. Power off Bochs
9. Back up the image
The hard disk image now contains a working Minix installation that you can play around with to your heart’s content.
Stuff and Sundry
Time in Minix running on Bochs
Time is funny – fast, slow, where does it go? The Bochs emulator has a bug (feature?) related to it’s timing – time is faster in Bochs than in the outside world. What this means is that some time dependant processes complete much more quickly than they would in ‘real time’. From a practical standpoint, it means that if you take more than a couple of seconds to login, the system will think it has timed out. Thankfully Minix doesn’t have screen savers enabled by default. The solution to the login problem, sadly, is to type fast!
Shutting down Minix
It is absolutely critical that you use the command:
shutdown -h now
This allows Minix to exit gracefully. I have not had good experiences with:
halt or the three finger salute - ctrl-alt-delete
Powering off Bochs
Do not just exit Bochs, use the Power button.
Conclusion
I hope that this has been an interesting read and that you will give Minix a shot – whether on Bochs or in native mode. Please let me know what you think, constructive criticisms, if you please.
Email the author Will Senn
Resources
Andrew Tanenbaum’s Minix Site at vrije Univeriteit amsterdam
Al Woodhull’s Minix Site at Hampshire College
The Minix 2.0.4 manpages
Browseable Minix 2.0.2 Source Code
MINIX-L Mailing List, Join! We welcome all interested folks.
Read comp.os.minix on usenet
Operating Systems: Design and Implementation 2ed by Andrew Tanenbaum and Albert Woodhull
Email the author Will Senn
References
PearPC 0.1: Is It A Miracle?, Thom Holwerda, OSNews.com May 18, 2004
Is Torvalds really the father of Linux?, Stephen Shankland, CNET News.com, May 19, 2004
Some Notes on the “Who wrote Linux” Kerfuffle, Release 1.5, Andrew Tanenbaum, May 20, 2004
Ken Brown’s Motivation, Release 1.2, Andrew Tanenbaum, May 21, 2004
If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.
This article is really worth printing in OSNews. I’ve been re-reading a lot of stuff from Minix lately (we took it up in college and oh boy, installing it was incredibly scary for me back then) because of the so called “issues” against Linux.
But then, Minix stays true to its roots, thanks to AT’s resolve to make Minix stay as it is: an OS for all of us to study.
This article should be of great use for students.
Any article that includes the word “hence” a paragraph away from “props” is surely worth reading 🙂
If you have a Solaris box lying around, you should check out Solaris minix. We’ve (UF) used it to allow students to hack on minix in a course with > 120 students, and it works pretty well. Under Solaris-minix, it’s pretty easy to make changes to the kernel, recompile it, and test it, and you don’t have to mess with bootloaders.
Or you can install it on an old PC… it will probably still work on a 286.
It’s dead easy to make changes to some of the important kernel pieces, too. For instance, minix’s built-in scheduler is really simple to grasp, and easy to make changes to. It’s really a pretty good learning tool.
Agreed. I like tutorial type articles especially when they involve doing something cool. OSNews needs more of these.
> OSNews needs more of these.
We just publish what we are submitted by readers. We can’t get such articles everyday if people don’t write them and submit them to us.
Minix is not meant as a production OS. The whole point is that it can be taught in a one semester OS course. The value of Minix is mostly in the Tanenbaum book and the source, and the primary “use” of Minix is to study and modify the source to understand how an OS can be created. Linux has grown a bit too complex for most people for this.
Anonymous,
Not at all, the point was not intended to sell Minix as production material. What you say is correct, Minix is intended primarily for an educational purpose, I just hope to have broadened the audience a bit…
Anonymous,
Ah, I see where I might have lead you astray – in my comment concerning alternatives. Allow me to clarify, Minix is not ‘currently’ viable as a desktop replacement of either Linux or Windows for a desktop and certainly not running at a tenth of the speed of the native box as it would be in Bochs. However, to be fair, with enough interest and development, it could be – again, not in Bochs. This wasn’t my intent, though – I meant alternative, in the broadest sense, think of a homemade steak (mushroom, if you prefer) from the grill, that you have spiced to your taste, according to some family recipe as an alternative to a McDonald Big Mac (Thai Salad, if you prefer)…
You do mention the study aspect, but most of your article is about installing and running it. Any Minix article should strongly emphasize that it is primarily meant as a study tool, and getting the book and source are more important than running the binaries. After reading your article, a typical user will try to run it for 10 minutes, decide that it doesn’t “do” much, and delete and forget about it. If you’re not interested in OS design, there is not much point in running pointless.
QEMU is a lot faster than Bochs if you like to play with this kind of thing.
Seconded. QEMU is much, much faster.
I find it odd that the author failed to get ReactOS or Syllable to work on Bochs though. I’ve booted ReactOS on Bochs plenty of times without any problems. Syllable on Bochs is hardly worth it, but if you boot from the floppy disk images instead of the Syllable CD it will work. You wouldn’t want to use it, but it will work.
How about you stop being a tool?
This is a great article, and certainly better than anything you’ve “contributed” to the forum. You made your point in the first post, so just shut it.
Minix is the best and most widespread kernel/OS for teaching kernel/OS concepts, and will continue to be so for the foreseeable future. Why? Because Prof. Tanenbaum resisted the temptation to add more features and/or let other persons mess with the original code.
So Minix is still able to fulfill its initial mission.
Using Minix on Bochs extends the life and increases the usefulness of Minix as a learning tool. It’s a great idea (actually endorsed by Prof. Tanenbaum) and the article explains clearly how to do it, using Bochs on Windows XP.
Very nice article, let’s hope more are coming in the same vein.
MINT (aka Mint is not TOS) was the second preemptive kernel running on the 16/32 bit platform atari st…
altough it was not supposed to be a unix clone, its mains purpose was to compile GNU software on TOS machine, so with time it became POSIX complient and now it’s a real unix clone (X11, console) PLUS the 100% GEM compatibiliy..;;
it’s really great, really.. it’s still maintened
grab some info here :
http://freemint.de/en/
some screenshots
http://atari.nvg.org/n.aes/screenshots.html
there’was once a mac version called mac mint…
it runs on any atari machine and much faster than linuxm68k
and of course it’s open source…
if you want to try this on…
aranym.sf.net
why am i talking about this ?
because the author told he was inspired by Minix (which permitted to run atari console only programs on it) and wanted more (gem programs, speed, etc…)
Djamé
reps : did I mention the package managemement is rpm based ?
Ok, gotta say it – wow, on the face of it, qemu seems much faster. I booted the minix image I created in the howto in qemu and it worked very well. However, I’m at a bit of a loss as to how to do a floppy based install on an empty hard disk image if you can’t swap floppies.
From the readme:
(snip)
It needs to convert floppy and CD-ROM to image file to use it. You cannot change them now, but you can use them as follows. (snip)
Maybe it’s just the windows version?
Will
1. DO NOT use windows.
2. USE qemu.
I’m switching to MINIX today!
I don’t think you’d have posted that if you’ve seen as many “does Minix run this” and “does Minix support that” posts as some of us have. (Posting as someone who HAS used Minix in an OS course at the VU).
Anonymous,
Thanks for the FUD – What do we have to fear, save fear itself?
Your comment can be applied to any OS on the market – XP included. The fact that the questions are even being asked is indicative of a high degree of interest. I didn’t write the article from the point of view of an advocate, merely an interested hobbyist. That having been said, with enough interest and development, Minix could indeed be viable in production.
Eye roll please… I was a Linux newbie when the 0.9 kernel series came out and these were exactly the kinds of questions that were prevalent – does Linux do PCI (not yet), what about my Viper V550 (diamond is *vil)…
gnillort is droll…
Will
i wouldnt call that FUD. sure, with developer interest it could have been a production os. but the thing is, AT didnt want it to be a production OS, so features have a far smaller priority then simplicity in the code.
linux on the other hand was meant to be a sort of HURD substitute, something to run GNU on until HURD was done. thats what attracted the developer interest, thats why linux grew so massively, thats why it is comming into enterprise production environment status today.
MINIX is fantastic for its intended purpose — to teach. saying that has nothing to do with FUD.
Matt,
Alright, alright maybe calling it FUD was overly sensitive. Your comments are accurate and yet, it should be noted that Minix is Open Source, nothing is stopping folks from extending on the original. See:
http://www.minix-vmd.org/
for an example.
Will
If you don’t immediately need big applications (can’t name any, but there probably are) you can also try the DosBox version. In that way, you don’t need Bochs and difficult installation steps – just unzip and run in a DOS window.
Go to http://bochs.sourceforge.net/cgi-bin/topper.pl?name=Disk+Images&url…
Click minix204.zip and you’ll have ready-made Minix image and configuration file for Bochs.
Yeah I used the pre-made disk image [mentioned by Lauri] for Minix at the Bochs site. I tried several other images and was impressed with how fast the system booted up. Bochs is a great little tool for tinkering, up there with VMware and/or an extra hard drive. Some images didn’t work right, and it took a little tweaking of the config file [due to the image being for an older version of Bochs].
Good article by the way. Setting up Bochs with the Minix image was easy, but I had never installed from scratch as outlined in the article.
I think I’ll tinkering with Bochs a bit this weekend.
Alright, alright maybe calling it FUD was overly sensitive. Your comments are accurate and yet, it should be noted that Minix is Open Source, nothing is stopping folks from extending on the original.
I think the license partially killed Minix along with the widespread use of Linux. It was not under the BSD license until recently.
Anyone interested in Minix should check out Tanenbaum’s books on OS. The theory book was pretty weighty, but well written. I found a copy in the local library. One of the books covers Minix, but I haven’t yet found a copy. As an aside, Tanenbaum wrote a good networking book, but my library copy was a bit outdated.
Lauri,
Thanks for the link. I used the downloaded image before I went on and created one from scratch. The reasons for doing it from scratch were:
1. Just to do it – prove to myself it could be done
2. Pristine install – nothing there but what I put there
Will
xmp,
Thanks for the compliment. Doing it from scratch has benefits, especially if you are interested in what exactly constitutes the bare necessities.
Will
xmp,
Tanenbaum’s book is excellent and well worth reading. Minix is well constructed and the book only makes this clearer. The link is in the article.
Will
This is the kind of tutorial that I like; it was very clear and helpful. The author of this tutorial has provided the tools, links & how-to needed to accomplish the tutorial. Osnews deals with operating systems; this is the kind of article that’s much needed & appreciated in this site. :-;
For the life of me I fail to see how an incomplete project like Minix could ever be a better learning device in this day and age than BSD which is complete, is more mature and is useful in day to day operation, rather than just be an example of operating systems theory.
Many thanks for the compliments. I thought it might be interesting for readers.
Wow, your analysis is penetrating. Incomplete you say? Why, because it doesn’t have support for every conceivable piece of hardware, such as 3D for my Viper V770 (3 years old, at least)? It couldn’t be that because BSD doesn’t even have support for AGP. Perhaps you are referring to one of the BSD decendants such as FreeBSD, NetBSD or OpenBSD? Oh, yes, these OS’es are quite a bit more mature as production operating systems than Minix and can therefore be considered more useful in day to day operation. However, the source code is convoluted and difficult for non-gurus to grasp as a whole – the sheer size of the code makes this true. Minix makes understanding quite attainable to even average OS enthusiasts. This makes it great for learning OS concepts. Whether it’s better or not is a personal judgement. I think it’s better for beginners simply because it is less complex. Advanced OS guys maybe don’t need it, so perhaps a monolithic OS and millions of lines of code are better for those guys…
The educational aspect of Minux is not learning how to use an OS but how to write one. Minux is easier for this than BSD.
It’s good but dated. OS design principles have moved on now considerably. I think the microkernel architectures with proper threading support are more relevant than Minix’s monolithic design.
Additionally, most ‘modern’ OS implementors will spend time designing embedded RTOS which generally don’t correspond to the “UNIX philosophy” at all.
I’d suggest people check out Mach and QNX architectures if they want something relevant.
You seem to have missed one extremely important point here, namely that minix is microkernel. Along with qnx and Mach-without-apple-modifications it’s one of the few true microkernels you can lay your hands on today. And I don’t actually think you get the source for the qnx kernel.
Please, Minix is neither dead nor monolithic.
Educate yourself:
Minix – monolithic?
http://www.cs.vu.nl/~ast/minix.html#whatisminix
Minix – dated?
http://slashdot.org/article.pl?sid=04/06/08/1657256&mode=thread&tid…
“Wow, your analysis is penetrating. Incomplete you say?”
Look, I can see you’re a Minix fanatic. That’s really quaint and all, but the point is, how many universities are using Minix as a teaching aid as opposed to using Linux? Why should they?
When I say incomplete, I’m basically referring to it only being useful as teaching aid. Afterall, if it’s not even used to run servers, what practical value ASIDE from operating systems theory could it possibly have?
Tannebaum can’t pat himself on the back and belittle Linus all he likes, but his OS is worth squat.
“I’d suggest people check out Mach and QNX architectures if they want something relevant.”
An QNX’s marketshare is what? Let’s face it, isn’t Apple about the only thing keeping the Mach kernel alive (though even they modified it)? You seem the *Nixes aren’t the future. I guess some of you just don’t consider marketshare at all, but can you think of a better way to measure the relevance of an OS?
“Minix – dated?
http://slashdot.org/article.pl?sid=04/06/08/1657256&mode=thread… ”
Does is not occur that Tanenbaum is exceptional arrogant even among college professors? I mean if he taught at M.I.T. or CalTech fine, maybe he’d be entitled to that but seriously…
Dude, get a grip. You don’t know me from Adam. I’m definitely not what you’d call a Minix fanatic. I use Windows as my workstation. You say Tanenbaum’s arrogant – what have you contributed besides a troll worthy of your namesake – Artemisia vulgaris?
A point by point refutation:
Universities (by no means exhaustive): Purdue, Syracuse, Drake.
Servers: http://minix1.hampshire.edu/ is one such
Squat: I would opine, if only I knew what it was worth
Relevance = Market Share: Surely no one is this ignorant? Linux didn’t start with any marketshare, Mac lost it and has since regained it. Windows didn’t have it to start with…