Getting and Building EROS

The EROS project has switched over to the OpenCM configuration management system. The following instructions have been updated to tell you how to use OpenCM to download the EROS system.

If you just want to download the sources and have a look. You can simply download tarballs for the cross environment and the base system.

1. Obtaining EROS

To download a copy of EROS, you need access to the OpenCM repository on The first thing to do is to download OpenCM from the OpenCM website and install it on your machine. Be aware that OpenCM is still a ``work in progress.'' We haven't seen serious bugs in it in quite a while, but we still anticipate one or two backwards-incompatible updates in the wire protocol. The good news is that the OpenCM binary is smart enough to tell you when this has occurred.

Unless you are an active EROS developer, you will need a copy of the anonymous access keys for our repository. These can be downloaded from eros-anon.key and eros-anon.pem. The files eros-anon.pem and eros-anon.key should be stored in $HOME/.opencm/users/. The anonymous access keys require no pass phrases.

Once you have OpenCM installed and the keys copied, you can check out the EROS code. We recommend that you use a common containing directory for all of this. I (shap) personally use ~/WORK/ as my common working directory for source code projects.

    cd ~/WORK
    export OPENCM_REPOSITORY=opencm://
    cm -u eros-anon -C eros-xenv checkout PUBLIC/EROS/DEV/eros-xenv
    cm -u eros-anon -C eros checkout PUBLIC/EROS/DEV/eros
    cm -u eros-anon -C eros/src/tutorials checkout PUBLIC/EROS/DEV/tutorials

The ``-C'' is important! Without it files will get checked out into your current directory. Unlike CVS, OpenCM keeps its metadata above your working tree - there is generally no per-directory information. We are planning to make checkout more convenient by introducing a notion of OpenCM ``packages,'' but that hasn't happened yet.

2. Building EROS

2.1. Building the Cross Compilation Tools

Now cd into WORK/eros-xenv, and type make. Follow the instructions you are given.

If you have a number of people at your site who are all building EROS, you may wish to place the cross compilers in a commonly shared directory. This can be done by setting the environment variable EROS_XENV to the directory name before building the cross compilers. In our environment, we set EROS_XENV to /user/eros-xenv, because /user is cross mounted by all of the lab machines. If you do not override it, the default value for EROS_XENV will be $HOME/eros-xenv.

Once the make command has completed, you are done with the cross compiler source code, and you can delete the eros-xenv-src directory. Note that if there are changes to the cross environment you will likely need to refetch the whole thing anyway, so there is no point to retaining these files unless you are installing on multiple machines.

Whenever you rebuild the cross-environment, it is very important to build it from scratch with the correct file timestamps. The correct sequence of commands to rebuild the cross environment is:

    cd WORK/eros-xenv
    make clean
    # Fetch any updates:
    cm update
    # Fix the timestamps with:
    cm revert
    # Delete the install directory (VERY important).
    # This might possibly live in some other place
    # depending on how you built it.
    rm -rf $HOME/eros-xenv
    # Finally, remake the cross environment:
    make xenv

You need to delete the output directory because various stages of the build use previous stages by adding the output directory to the PATH used in later phases. Unfortunately, a 'gcc' command is installed in the output directory, which can lead to various kinds of confusion.

2.2. Building

Now that you have the cross environment compiled, you can rebuild the EROS sources by

    cd ~/WORK/eros/src
    make install

2.3. Keeping Up To Date

Once you have it, the EROS tree can be updated by changing to the eros/src directory and typing:

    make update

This is presently broken, but will be repaired soon.

Once make update becomes old hat, you may find that you prefer

    make quiet-update

3. Run-Time Requirements

In order to run this puppy, you'll need the following:

3.1 Disk Space

The research release can run in as little as 20 Mbytes. Doing anything interesting with it will certainly require more. At the moment we are suggesting a 100 Mbyte partition if you just want to fiddle with it, or a 250 Mbyte partition if you have something more serious in mind.

If you feel like planning ahead, use your handy fdisk equivalent to create a partition, and give it type 0x95.

To boot from the hard disk, the EROS partition must fall within the bootable range of your machine. It is also possible (even straightforward) to boot EROS from a floppy, which allows non-bootable partitions to be used. The kernel theoretically groks extended partitions, but we have never tested this.

3.2 Hardware

The research release will support the following hardware (all trademarks belong to their respective owners):

Processor486, Pentium, Pentium Pro. There's nothing we're aware of that would prevent clone processors from working, but we have no way to test them and they are not a priority for us. If you have them, we would be glad to hear what luck you have. Up to a point, we'll try to help get them working.

EROS runs on all of the multiprocessor boards we have tried, but the first research release will not provide SMP support.

BIOSWe are not aware of any BIOS-specific dependencies. We have not tested large drives on BIOS's that do not support extended drive size information.
MotherboardWe are not aware of specific dependencies. We use the TYAN family of motherboards, but have also run successfully on a number of clone boards.
MemoryWe have run EROS successfully (albeit unintentionally) on a machine with only 640K of memory. This is not a recommended configuration. 8M should be fine for now, but 16M is better.
DiskThe first research release will not support SCSI disks. There are a great many SCSI controllers, and we have found that the sustainable throughput for IDE is as good or better than we see from SCSI. We are aware that many people want to run SCSI devices.

When we do get to SCSI (which should be soon -- it's necessary for the MIPS port we are doing), our first attention will go to the Adaptec 2940 family, because that is what we have. Support for other adaptors will be guided by demand and availability. Your chances of getting us to support a card are greatly improved if you have one to loan us.

VideoThe kernel assumes a VGA or better adaptor, but the system does not (yet) provide a bitmapped graphics interface.

We hope to change this in the near future, but are still debating the proper graphics model for this class of system. The Mach32, Mach64, and Diamond cards are high on our priority list. Our group favors the Toshiba portables, so we'll probably get the C&T chipset family working early as well.

NetworkThe current implementation includes drivers for the 3COM 3c509 and 3c590XL network cards. Regrettably, these drivers have been well hacked over, so it is not clear that the current implementations actually work.

3.3. Software

EROS does not yet have a self-hosted development environment. We are actively working on bringing up a POSIX-compatible environment, but do not expect that this will make it into the first release. The irony is that we may get Java development support in first (!).

The EROS group currently cross-develops from LINUX. We run RedHat 7.0 (cutting over to 7.1 shortly), but any ELF-based LINUX system should do. Building the EROS system requires G++ 2.7.2 or later. Because EGCS has broken for years, we use cross compilers rather than reusing the native Linux compiler.