X on Minix 3 AT LAST
I like to keep a load of Free Software operating systems around in
hard drive images, but I’ve been rather annoyed at Minix 3. Until today
I couldn’t get either networking or X to run (although the latter may be
a result of the former), however now I have and for myself and anybody
Googling this in the future, here is how to get Minix 3.1.2 running
nicely in KVM (and of course Qemu, upon which KVM is based). 3.1.3 has a
bug which stops PCI/networking working in Qemu and KVM, so we’ll have to
make do with the slightly older 3.1.2 until an even newer release is
made which fixes this regression.
0) Make sure you have a
working installation of Qemu. This is outside the scope of this post,
Google is your friend. Also keep in mind that I am writing this guide
mainly for Linux. To use them on a Windows or OSX machine install
this first.
1) Download
the IDE CD of Minix 3 from the
download page (3.1.2a as
of this writing).
2) Whilst this is downloading you can make
a hard drive image where we’ll install Minix 3. You can do this by
running the command “qemu-img create -f qcow2 MinixDrive
1G”
3) Decompress the downloaded CD image so it is regular
ISO9660 format.
4) Run this command to start up your emulator
(of course, replace the command and filenames to whatever you’re using)
“kvm -localtime -net user -net nic -m 512 -std-vga -cdrom MinixCD.iso
-hda MinixDrive -boot d”. This will run the Kernel-based Virtual Machine
with 512MB of memory, VGA graphics and NAT-style networking, using
MinixDrive as a hard drive and MinixCD.iso as a CD, booting from the
CD.
5) Boot into the CD, press 1 to boot the regular Minix
system and log in with the username “root”.
6) Run the
command “setup” and proceed through the steps (you can skip the bad
block check since you’re not using a real hard drive). For networking
choose the Qemu emulated one (it tells you which that is).
7)
When the setup is finished run the command “shutdown”. Minix will shut
down to a prompt, now close the virtual machine.
8) OK, Minix
is installed so now we need to configure it. Run this command to boot
into the virtual hard drive but keeping the CD accessible “kvm
-localtime -net user -net nic -m 512 -std-vga -cdrom MinixCD.iso -hda
MinixDrive -boot c”.
9) Wait until you’re prompted for the
login and enter “root”. Now that you’re in we need to shut it down
(trust me :P ). Run the command “shutdown”, which will take you to the
boot prompt again. Once here run this command “qemu_pci=1” then run
“save” then run “boot”, which will start Minix 3 back up again, only
this time it has a hack to get Qemu’s emulated PCI devices
working.
10) Log in as root again and run “packman”, the
basic package manager which comes with Minix. Install a text editor from
the CD (emacs, vi, etc., I’m not going to get into a flame war :P ) and
use it to edit the file /etc/inet.conf. Make it say the
following:
eth0 rt18139 0 { default; };
Then save
it.
11) Using your editor once again make the file
/usr/etc/rc.local read as the
following:
rt18139_arg=‘DPETH0=pci’
Then save it.
Shut down, close the virtual machine and start it up again using the
last command we used. Congratulations, you should now be networked! Next
up, graphics!
12) In Minix, as root, run “packman” and tell
it that you want it to download a package list if it asks. Install the
package X11R6.8.2 (the X graphics server), then install efltk, then ede.
(I would go for the net ones over the CD ones unless your Internet
connection is incredibly poor)
13) Quit the package manager
then run “xorgconfig” to set up the X settings. Answer the questions as
you normally would, but make sure you put the mouse device as
/dev/kbdaux and make up values for monitor horizontal and vertical
frequencies and video card RAM. Set the video card driver as “cirrus”
(option 11 I think). Choose the resolutions you want the WINDOW SIZE to
be, which are not neccessarily the same as that of your actual physical
screen (unless you use it full screen with Ctrl-Alt-F).
14)
When the tool has finished and written the /etc/X11/xorg.conf file we
need to fiddle with it a bit, so open it up in your editor. Look for the
horizontal and vertical frequency lines in the Monitor section and
comment them out (put a “#” at the beginning). Under the video card make
sure the video RAM line is also commented out. Look for the “Standard
VGA” device and set its driver to “vesa”, then under the “Screen”
section set the Device to “Standard VGA” (we made the cirrus device as a
backup, since Qemu can emulate both).
15) Save the file then
give X a little more memory to work with using the command “chmem
=80000000 /usr/X11R6/bin/Xorg”
16) Run the X server with the
command “startx”, and if all goes according to plan you should see X
start up with some xterms open.
17) To run the minimalist,
Windows-lookalike Equinox Desktop Environment you’ll want to get the
process ID of TWM using “ps ax | grep twm” then “kill 1234” (where 1234
is the process id for twm), then run “eworkpanel”, “eiconman” and
“edewm” to get EDE running. you can probably edit the startx script to
do this, but I haven’t gotten around to that yet.
Well that’s
it. I’m afraid there’s not much available for Minix at the moment, but
hopefully the availability of X, the lynx web browser, wget, CVS, SVN,
Vi and Emacs will make Minix bearable as a bare development environment,
thus facilitating the porting of more and more programs. Since Python is
available it is also pretty easy to make housekeeping and convenience
scripts to reduce some the roughness and backwardness.
Since PIX OR IT DIDN’T HAPPEN here’s a screenshot (although, of course, a high-reliability microkernel UNIX system cannot really be captured by a screenshot :P )
PS: Saving two patients at once? I’m still not convinced…