Return to Machining Home page
Update: May 2001
If you are considering trying EMC I would recommend that you get the new BDI (Brain Dead Install) disk. This will handle everything you need to do to get a computer running EMC on a RedHat 6.X version kernel. North America distribution is handled by Ray Henry All other countries are handled by Paul Corner from the UK. Cost in the USA is $10.00 including postage.

Now if you want to install on a RedHat 5.2 kernel and learn about all the difficultied we struggled with instructions follow. The basic "how to run EMC" at the bottom of the instructions still apply to the new BDI.
Scripted installation to apply the real time patch

to a workstation installation of Linux 5.2
This will only work on a system that has a single IDE hard drive
With no existing partitions

The way it is planned to work is as follows:

1 - You install Redhat 5.2 and select the workstation installation which will automate most of getting Linux up and running. You MUST configure Xwindows to 800 x 600 or greater resolution or you will not be able to see the buttons you need in step #6

2 - You take the zip file I am putting together and on a Win9x or WinNT machine unzip the file to a floppy

3 - You start up your Linux machine, log in as root and start Xwindows with the startx command

4 - You insert your RedHat CD#1 and the floppy from step 2 and mount the floppy with the command:

mount -t msdos /dev/fd0 /mnt/floppy

5 - you switch to the floppy with cd /mnt/floppy and then enter ./

6 - You will be presented with the xconfig screen and if you are adventurious you can go through and change any settings you want, if a little more timid just click Load File and in the dialog box enter:


Now click Save and Exit. At the next prompt click OK

7 - Take a break while everything compiles

8 - lilo is configured with a setting that is set for a system with 32mb ram. You will be automatically taken to an emac (editor program) and if you system has a different amount of memory find the line that says:


now change the 31 to be 1 less than the amount of memory you have installed in your machine

9 - Reboot with:

shutdown -r now

Don't forget to take out the floppy or the CD or you will not get rebooted.

10 - To verify the setup hit the tab key at the LILO: prompt you should see 2 entries - rtlinux and linux. Enter rtlinux and hit the enter key to boot your new kernel.

The rtlinux kernel will boot by default. Step 10 is just so you can see that it is really there.

Now here is the disclaimer: If you system gets hosed by this that is the risk you take. I am always happy to try and help you get it setup, but I take no responsibility. 


Click here to download the Installation Script

Standard Version Installation

This is the method to follow if you want to try different parameters than I put in the script.

Don't know if these are the minimums, but I installed on a 1 gig hard drive and used 32 mb ram. Someone mentioned that the EMC docs say that 32 mb is the minimum memory, but I have not seen that (haven't looked either). I have a Pentium 100 with 16 mb at work running RedHat 5.2 and X windows works just fine. I am going to load EMC on it this week and see if the simulation runs OK with 16 mb.

The only real pointers I can give you regarding loading Linux is what worked for me and may not be correct or optimum, but it seems to work just fine.

Partitioning your hard Drive.

Use Disk Druid when prompted by the install program and 1st delete your current partitions than create your new ones. I used partition as follows

/ 100mb

/usr 200mb

/usr/local 300mb

/usr/src 300mb

swap 50 mb

All are ext2 type except for the swap partition which is the Linux swap type.

Selecting packages.

Don't pick ones you are not really going to use at it takes space and can required additional configuration. Once you have picked what you want select the option to see the individual packages within groups and go to the base/kernel group and select all of the items in it. This will give you all of the pieces you need to apply the real time patch. If you skip this step you can add them later, but it is easier to do it now.

Setting up X-Windows.

Make sure you know the exact chipset you have on your video card and if it is not supported (check the compatibility list on the RedHat site) just go buy one that is or you will be frustrated. Also, if your EXACT monitor is not listed use the Generic monitor unless you have a multi sync monitor and then use Generic multi sync. If you are at all unsure about having the correct selections for the X setup I would suggest you skip it during the installation as you can set it up once your system is running in console mode. To skip the X install you select back and then you get an option to bypass it. The reason I suggest skipping it if you are unsure is that if you pick the wrong options you will be greeted with a blank or un-viewable screen and have to abort the installation by rebooting and then start it all over from scratch. Sure there is a better way, but this is my experience.

If you skipped the X setup during the installation you can go back to it by logging as as root (this is the user name of the system administrator and for our purpuse the login you will always use) and entering Xconfigurator as the command prompt (Linux is case sensitive, so it has to have a capital X in this command and all else is lower case.)

That is it for my loading Linux hints.

Following is the step by step that Matt Shaver gave me with a few things I edited.


Here are some brief instructions I got from Matt Shaver who got them from Fred Proctor and which Matt has expanded and edited:


EMC Software Installation Instructions

These instructions assume you have Redhat Linux 5.2 already installed and X Windows correctly configured.

1. Update the Linux kernel headers and sources. These updates are needed for the RT-Linux patch to work properly. The updates are at:

as Red Hat Package Manager (RPM) files. Download the kernel-headers and kernel-source packages as well as the update for the X server you are using and anything else that strikes your fancy into a directory of your choice. I have always downloaded and updated everything.

As user 'root', cd to the directory containing the update RPM files and do:

rpm -Uvh kernel-headers-2.0.36-3.i386.rpm

rpm -Uvh kernel-source-2.0.36-3.i386.rpm

rpm -Uvh etc... for all the remaining updates you downloaded

When updating the kernel headers you will probably get an error message saying something like "script failed to complete". I have always ignored this error and there was no problem. You may get a message about "dependencies". This means that the RPM you are trying to update depends upon another update being installed first. The dependencies will be listed and you must update those RPMs first. Usually, I just do:

rpm -Uvh *.rpm

repeatedly until I get messages indicating that all the RPMs are updated and nothing more can be done.

(Note: I was able to get all the kernel components I needed from the RedHat CD. The CD contained a current version of the kernel 2.0.36-7, but the installation program did not install the header or source files. To install the packages from the CD you first need to mount the cd. Put the CD in the drive and at a command prompt type in:

mount /mnt/cdrom

Then you can use the package manager in X-Windows to look at the available packages. Go to the Base/Kernel folder and select all the packages in it and click install.

If you do as I now suggest and select this items individually in the Linus install you can skip this and go straight to # 2)


2. Install the RT-Linux patch, available at:

Download this file and place it into /usr/src.

As user 'root', do:

cd /usr/src

tar xzvf release9J.tgz

cd linux

patch -p1 < ../kernel_patch

cd ../rtl

make all

(*Note I just finished setting up EMC on 2 different systems and on both systems I got 2 hunks failed in applying the RT patch toward the begining and then some other failures at the end of the patch display. None the less, The kernel compiled and loaded just fine and and I can run a "live" (non-sim) version on each. 7/9/99)

3. Recompile the kernel.

As user 'root' from a terminal window in X, do:

cd /usr/src/linux

make xconfig

You need to be running X Windows for the 'make xconfig' line to work. If you don't want to run X, you can do 'make config', and configure in text mode. You would do well to take some time with this process and eliminate any modules or kernel support for hardware you don't have or features you won't use or don't need. This will SPEED THE BOOT PROCESS and DRASTICALLY REDUCE THE TIME NEEDED TO COMPILE THE KERNEL! Failure to heed this advice probably won't cause any problems, but the command 'make modules' can take more than an hour to execute if many modules are to be built. Configure your kernel to your liking, or leave it as-is by clicking 'Save and Exit'. Now continue with the kernel compile:

make dep

make clean

make zlmage

make modules

make modules_install

cp arch/i386/boot/zImage /boot/vmlinuz-1

If there were errors that prevent the kernel from being compiled, the file'arch/i386/boot/zImage' won't exist and thus can't be copied. If you have trouble go back to the beginning of this step, reconfigure, and try again.

If you need to start over with a clean slate you may have to remove everything under /usr/src/linux, then install the two kernel RPMs and finally retry the patch. See /usr/src/linux/README for more info on starting from scratch.

4. Edit /etc/lilo.conf so that it looks somewhat like this:
boot=/dev/XXX <-- leave xxx as is, e.g., hda1map=/boot/mapinstall=/boot/boot.bprompt timeout=50image=/boot/vmlinuz-1 <-- change this to /boot/vmlinuz label=rtlinux
root=/dev/XXX <-- leave XXX as is, e.g., hda1 read-only append="mem=XXm"<-- XX = the number of MB of RAM you have - 1
31 for a 32MB system, 63 for a 64MB system, etc.

(Note: I would suggest you setup lilo.config so you can boot to your new kernel as the default and your old kernel as an option. This way if you had something fail on you in compiling the kernel you can still reboot to the original kernel and try again. The way you do this is by having 2 sections in your lilo.conf file.

Here is what mine looks like:


This makes it boot to the real time version if I do nothing on bootup and allows me to boot the original kernel by typing:


at the LILO: prompt. You can press the TAB key when you see the LILO: prompt and it will show you the labels for your boot choices. With the above lilo.conf file you would see rtlinux and linux.)

5. Run LILO to set up your machine to boot the new kernel.

As user 'root' do:


and then reboot.

6. Now you need to get the EMC software from:

and put it into /usr/local/nist. This is available as one big file namedemc-DD-MMM-YYYY.tgz, where DD = the day, MMM = the month, and YYYY = the year that the file was created, or 4 smaller files that will each fit on a floppy. To use the small files you can copy them onto the disk from floppies and then use 'cat' to combine them back into one file.

7. Unpack the files and install the software.

As user 'root', do:

cd /usr/local/nist

tar xzvf emc-DD-MMM-YYYY


This will build all the programs and put all the files where they belong.

8. Configure the script that runs the EMC and the .ini file that controls its operation.

This is a big subject in itself, however you can try out the software by editing the file generic.ini in your EMC directory and then starting EMC by entering the following command from the command line while in the EMC directory:

(*Note: I received the following error

'nknown option: '-

Usage: csh [ -bcdefilmnqrstvVxX] [arguement....]

What I had to do originally to get the run.64step378 file to work was to open another of the run scripts that would execute, but had the incorrect calls (see if ./ works for you if so, use it as a template), open the file in an Emac and save it as a new name and then copy all of the body from run.64step378 (everything but the 1st line)and replace everything but the 1st line in my new file with the stuff from Matt's run file. That got me around the mysterious csh problem you are having. I may have had to run the chmod commands on the new file, but I don't remember.) I have been told that this problem is created by having DOS/Windows CR/LF at the end of each line instead of the Unix/Linux standard of just LF.

and putting them in /usr/local/nist/emc. These files assume you have followed the above instructions about where to put the software. They are also specific for machines with 64MB of RAM. If you have a different amount of RAM you must edit these files to replace all instances of the string0x3F00000 with a value such as:

Remember that if your machine has other than 64MB of RAM you'll need to

change the 0x3F00000 to match your system:

0x0F00000 for 16MB systems
0x1F00000 for 32MB systems
0x2F00000 for 48MB systems
0x3F00000 for 64MB systems
0x4F00000 for 80MB systems
0x5F00000 for 96MB systems
0x6F00000 for 112MB systems
0x7F00000 for 128MB systems

These files also depend upon there being a parallel port at address 378h.This corresponds to LPT1 in DOS and if you only have one port it will most likely be this. If not you must edit these files to replace all instances of the string 0x378 with 0x278 or 0x3BC, whichever is appropriate. Be sure to disconnect anything plugged into the port you use since this version of the EMC toggles bits to run stepper motors and could cause "interesting" things to happen to printers. The advantage of trying out the EMC using these files is that there is no other hardware required. To start the EMC:

As user 'root' from a terminal window in X, do:

cd /usr/local/nist/emc


Of course if you edited the files you may also have changed their names souse the appropriate command. Note that the 'run.' script refers to the '.ini' file explicitly by name, so if you change the name of the '.ini 'file you will need to edit the 'run.' script to match.

As always, if any of your impossible mission team is caught or killed...oh, wait a minute, that's from some different instructions. Anyway, if you have questions (you will), just call or write and I'll do my best to help you get going.

Good Luck (you'll need it)[This is the comment I got when Matt sent this info to me]

The following section covers the mechanics of actually installing EMC from either the multiple floppy files of the single .tgz file. This information was provided by Ray Henry.


The first thing I'd do is make a directory called /usr/local/nist Type in: mkdir /usr/local/nist [enter] Now move into that directory Type in: cd /usr/local/nist [enter] 
The prompt should show nist on the right end. You can stay in this directory and copy files to it. Insert the first floppy into your machine. Type in: 
mount -t msdos /dev/fd0 /mnt/floppy [enter] 
After a second of looking at your floppy it should return your screen to your root prompt. This mount command will allow you to work with floppy files in your /mnt/floppy directory. Type in: 
cp /mnt/floppy/* /usr/local/nist 
After a bit of floppy disk grinding you should get the prompt again. Check to see that the file was copied. Type in: 
ls (lower case L) [enter] 
You should see a list of the files in the nist directory. At this point there will be just one emc-**-***-1999.aa* if you copied it. Type in:
umount /dev/fd0 [enter]
After a second you should get the prompt again. If you get a "can't umount message" it is probably because umount will not work when you are in the /mount/floppy directory. When umount is successful you'll need to repeat the mount, copy, ls, and umount commands for each of the disks. You don't need to type in each command every time, at the prompt, he up arrow will scroll you back to the previous commands. Just up arrow to the one you want and [enter].  


When you've got a directory listing all of the emc floppy files in it, all you have to do is put them together. You can do this with the cat command. It will be easiest if your prompt and the files are in your nist directory. Type in: 
cat emc* > emc-dd-Mmm-yyyy.tgz [enter] (you should replace the dd-=Mmm_yyyy with the proper release numbers.) 
After a bit of work you should see the prompt again. Type in: 
ls -l (that's lower case L's not one's) 
and see if you got that file. It should be listed as a 5+ meg file.  


Now you can unpack the tar file. Type in: 
tar -xzvf emc-dd-Mmm-yyyy.tgz [enter]
From that command you will get a set of files that include a congratulatory message from Fred that is listed as readme. (You can read it with: more readme [enter])  


In the nist directory, with the emc file unpacked, Type in: 
./install [enter] 
and you are on your way. When all of the compile is finished, you can move into the emc directory. Type in: 
cd emc [enter] 
and you should have a bunch of files in that directory. If you have installed the emc-17-Sep-1999.tgz and have a working xwindow you can run the simulation machine. Type in: 
./ [enter] (I get an error message on first run so I just repeat this command a second time) 
This should start Xemc and let you play. (the sim machine won't home out but it will let you try most of the functions)

Here is a quick little primer I put together on using the Xemc interface.

Operating Xemc Interface

Here is the basics of what you do to run your machine with Xemc.

Once the interface comes up (congrats you are now part of the small, but growing group of people with EMC actually working on your system!!) you need to turn off the E-stop and then turn on the machine. You can do this two ways:

1 - press F1 to toggle E-stop and then press F2 to toggle machine on.

2 - Left mouse click the E-stop button in the top left of your screen to the left of the button labeled Mist On/Off and select the lower of the 2 entries dealing with E-stop to turn off the E-stop and then left mouse click the same button again and select the Machine on entry.

OK, now EMC thinks you have a machine up and ready to start machining.

EMC has 3 usage modes:

Manual - Used to Jog an axis. Use the arrow keys to move the X & Y axis and the pg up & pg down keys for the Z axis or you can click on the coordinate display for an axis and then move it by clicking on the arrow to the right or left of the area labeled Axis Motion to move the selected axis. The setting in Axis Speed will determine how fast you jog and the entry in Increment will control how far you move.

MDI - Used to manually key in g-code and have it run

Automatic - Used to actually run a g-code program.

To switch these modes you can use the function keys F3 = manual, F4 = auto, F5 = MDI or you can click on the button under the one you used to toggle E-stop and select it from there.

Just a note of warning, in Linux you have to position your mouse cursor over any popup dialog boxes to give it the focus even for keyboard entry and it seems that the dialog boxes in EMC only respond correctly to using the enter by your letter keys and not to the enter button by your number pad.

Return to Machining Home page