Establishing the Initial (ITTC) Environment

There are a number of things you need to do to establish the environment in which you can build and test the KUSP Kernel and the KUSP user software. Most KUSP development is done at ITTC, but much of this is applicable even if you are not working on KUSP at ITTC, but instead developing and testing KUSP on your own machines.

Receiving an ITTC Account

Talk to Dr. Niehaus to learn how to get access to the ITTC account creation interface:

  1. Go to: https://secure.ittc.ku.edu/account
  • Fill out the forms as indicated
  • Return the print out to Dr. Niehaus for signature
  1. File a help request with “help@ittc.ku.edu” requesting an SSH account corresponding with the account requested in the previous step.
  • Remember that your ssh account must have a different password than your ittc account.

Testing KUSP Kernels and Software

To test KUSP kernels and software, you will need a target machine on which disasters can occur without unfortunate consequences and on which experiments can be conducted without outside interference. To install software and conduct all necessary tests you will need to be super-user on that machine. For security reasons ITTC uses the sudo command to give you access as superuser for specific operations that you may need to perform. Understandably ITTC restricts this to specific testbed machines on a separate network rather than any randomly selected ITTC workstation. For this reason you will need to check out an ITTC testbed machine or have a personal machine on which you have superuser permissions available.

  1. Go to: http://testbeds.ittc.ku.edu/
  • If you do not already have a testbed check-out account, you will be prompted to make one.
  1. File a help request from your ITTC account asking for sudo permissions on your assigned testbed(s).
  • If you are an EECS student doing this as part of a class, this step may be completed for you. If so, you will be notified via email which testbeds have been checked out for you.

Joining the Kurt Group

Note that the project originally started as KU-Real Time Linux, and was thus called KURT-Linux. However, since then its scope has significantly broadened, and we now call the project Kernel and User System Programming (KUSP). The original capabilities of KURT-Linux and its associated programming models are now configuration choices under KUSP. However, we have not changed the names of the Linux group or the project directories, which are still called kurt, as it would be boring and does not seem all that important.

  • It may be convenient in some cases to become a member of the KURT group and be able to create files and directory in /projects/kurt. One reason for this is that disk quotas and increased likelihood of the project misplacing or losing software when a student finishes make using your home directory undesirable.
  • The /projects/kurt directory is backed up regularly, but may be slow for kernel building, and requires some use of common sense with respect to disk space use. For that reason, we advise using the machine yggdrasil for building kernels, although it is important to make sure everything is frequently updated in SVN as files in the yggdrasil build area are not backed up.

SVN Access

The KUSP software is under SVN control and in a repository that is publicly accessible. Anonymous checkout is available, but ensuring that your ITTC account has write permission to this source control database will be usually convenient for at lest the following reasons:

  • You may find sections of the existing code that need to be corrected or extended. We encourage everyone to participate by contributing to the code. However, if you identify some proposed changes, it will probably be prudent to discuss them with Dr. Niehaus before committing to the SVN repository.
  • The most common reason for SVN write access is that you will want to be able to create your own branches and sub-directories while developing your own code for experiments or new system features.
  • General advice about using SVN to support programming using KUSP and/or modifying the system is available at: :ref:`Subversion Advice. <subversion_advice>`

Yggdrasil: The KUSP Build Machine

This is a reasonably powerful dual CPU machine upon which we commonly build kernels and the KUSP software using local disks to avoid NFS access overhead incurred when build in /projects/kurt. It is important to note that this work area is not backed up and therefore it is important for you to regularly commit any editing done on Yggdrasil to the SVN database.

  • We tend to build on yggdrasil for performance reasons, but also of importance is library consistency. This is most easily maintained by performing all of your source compilation on a single machine.
  • Please note that even if you do not make use of yggdrasil, it is a good idea to standardize the building of your KUSP project code on the same machine to avoid implicit library mismatch.
  • Talk to Dr. Niehaus or an established KUSP programmer about creating space on yggdrasil in /yggnfs. Your place to build the KUSP software will be “/yggdrasil/<your-login-name>” on a local yggdrasil disk.
  • Note that the /yggnfs area can also be exported to selected ITTC machines for greater convenience. Instructions for doing so can be found here: Testbed Setup Procedure

Wiki Access

Please contact Dr. Niehaus about Wiki editing access. We encourage and/or plead with all those involved to help improve the quality of the system by helping to improve our Viki’s and other documentation sets. Note that the Wiki’s are being/have been reduced in size and scope in favor of documentation prepared using Sphinx, which can generate both HTML and PDF document forms from the same root markup language. The publicly post documentation is at KUSP WWW Home and the source is in the “kusp_docs” directory sibling to the kernel and other KUSP subsystems in the Subversion repository.

Getting Started with KUSP

The KUSP software is divided into two major sections: the KUSP Kernel and the KUSP Software. The KUSP Software is divided into several sub-trees, including: kusp-base, datastreams, group scheduling, and experiments. The current organization of the source tree is somewhat more a result of its history and less a result of conscious organizational decisions than is desirable. However, it is still not too hard to find things you need, and we will be working to make at least modest improvements in the directory structure in the near future.

Now that the environment in which you can work has been established, you can:

  1. Create a directory underneath which you want to have your working directory tree(s) for KUSP software components. In the ITTC environment this would typically be under yggdrasil:/yggnfs/<your-login>
  2. Check out the latest KUSP kernel from the SVN repository.
  3. Build the KUSP kernel you checked out. You will have to begin by selecting a configuration file
  4. Check out the KUSP software and build it. Instructions for this are here: Building and Installing KUSP

After you have built the kernel, booted it successfully, and built the KUSP software, you are ready to start learning to use it. You should begin by working through the tutorials designed to illustrate basic system capabilites and how to use them.

These WWW pages will lead you through these steps. All you have to do to proceed to the next step is use the “next” link at the top or bottom of this page.