From Wikibooks, open books for an open world
Jump to navigation Jump to search


A2 may be run as an emulated OS on various platforms after checking it out from the subversion repository at ETHZ[1]. As of August 2018 it contains completely working executables in subdirectories for (at least) Windows (32 and 64bit versions) and Linux (Intel 32 and 64 bit versions). There is also an ARM subdirectory, as yet receiving minimal attention and feedback from users.

Clone the repository into an existing directory a2:

svn checkout \
        --username infsvn.anonymous \
        --password anonymous \
    https://svn-dept.inf.ethz.ch/svn/lecturers/a2/trunk a2

Then start A2, e.g.:


If you want to update your copy later you may use

svn update \
        --username infsvn.anonymous \
        --password anonymous 

and if you would like to see what has changed (including every changed file) since this subversion repository was created, you can do a

svn -v log

Older instructions are in http://www.ocp.inf.ethz.ch/wiki/Documentation/Installation (beware: these instructions are partially obsolete).

The shell script used to install UnixAos assumes existence of a sys group in the host. For systems lacking this group, the script is easily adapted. By replacing

chgrp -R sys ${aosdir}


chgrp -R bin ${aosdir}

the bin group is substituted.

Some authorities recommend the ext2 filesystem for a removable flash store.

User and Machine Specific Configuration of UnixAos[edit]

UnixAos is configured by Configuration.XML. The Oberon subsystem is configured by Oberon.Text. Refer to http://www.ethoberon.ethz.ch/betadocu.html for explanations of Oberon.Text.

The aos start script installed by install.UnixAos, by default to /usr/bin/aos, adjusts the operating system environment before starting aos.{solaris,linux,darwin}. If your working directory is on a hard disk drive aos can be started with two commands. Replace <myWorkingDirectory> with a specific destination.

cd <myWorkingDirectory>

If the working directory is on a removable store, the myaos script is beneficial. It allows the storage device to be used in multiple machines with differing configurations and applies e2fsck before mounting the filesystem. A reasonable location for the myaos script is the home directory of the user. For each host, create in the working directory, files Configuration.<Host>.XML. To use the Oberon subsystem, create Oberon.<Host>.Text also. This can be done by copying the installation defaults and editing the copies. For example, a host named blunder requires Configuration.blunder.XML and Oberon.blunder.Text. The XML file contains ASCII text and can be edited with leafpad or gedit or with PET in A2. The installed Oberon.Text contains some binary data and should be edited with Edit or ET in Oberon.[2] myaos copies Configuration.blunder.XML to Configuration.XML and Oberon.blunder.Text to Oberon.Text before starting UnixAos.

The Oberon Subsystem in A2[edit]

The Oberon subsystem in UnixAos on an XO-1.5.

Opening the Oberon Sub-system[edit]

An Oberon subsystem can be opened with a command in the Autostart section of Configuration.XML as in this example.

<Section name="Autostart"> 
	<Setting name="Start an Oberon" value="Oberon.Start Oberon 1100x704 0 74  ~"/> 

The dimensions, 1100x704, can be adjusted for satisfactory proportioning of text in a viewer. If the Oberon window is stretched, by grabbing the lower right corner with the mouse, the proportionality of text to viewer is preserved.

Usage Tips, Keyboard and Mouse[edit]

Mouse usage is unusual but efficient. Definitely worth the small effort to learn. A mouse with three buttons or two buttons and a wheel is essential. If a mouse button is pressed unintentionally, press all mouse buttons before releasing any. All mouse buttons together have no effect. The <Esc> key is used to interrupt a task. For example it can interrupt a long running FTP.GetFiles in the Oberon subsystem. <F1> sets the * marker. <F2> clears all marks. Additional details are in the keyboard section of the tutorial.

Receiving and Sending Email[edit]

The Mail.Panel in the Oberon subsystem in A2.

In UnixA2 (=UnixAos) the Mail.Panel in the Oberon subsystem can send a message via Exim in the host and can receive mail from a smarthost with TLS provided by Stunnel[3]. Install stunnel on the *nix host and configure as in this example.

# localhost:/etc/stunnel/stunnel.conf
# Example SSL client mode services 
client = yes 
accept = localhost:110 
connect = my.email.server:995

In Oberon.Text (Oberon.<Host>.Text if using myaos) set the POP server and SMTP servers to localhost. Mail is sent via the Exim daemon in the host. Exim supports TLS.

NetSystem = { 
     SMTP = "localhost"  {* outgoing mail server *}
     POP = "localhost"  {* incoming mail server *} 
     POPMode = "POP3"  {* POP3 or APOP *} 
     EMail = "me@my.domain.name"  {* your return address *}

Set the POP authentication using NetSystem.SetUser as in this example.

NetSystem.SetUser pop:MyEmailClientID:password@my.email.server ~

If MyEmailClientID contains @, a SetUser command containing two @ characters will fail. This command, for example, will fail.

NetSystem.SetUser pop:me@my.domain.name:password@my.email.server ~

The difficulty is avoided by percent-encoding the @ character in the email client ID.

NetSystem.SetUser pop:me%40my.domain.name:password@my.email.server ~

For the percent-encoding to work, add Oberon.RFC3986.Mod and modify or replace Unix.Oberon.NetSystem.Mod to use the encoding. Compile the two modules with a MM click on this command in an A2 window or use the compile button in the PET editor. The compilation must be performed in A2; not in the Oberon subsystem.

Compiler.Compile Oberon.RFC3986.Mod Unix.Oberon.NetSystem.Mod ~

Import of RFC3986 by NetSystem imposes the order of compilation.

Sources, Tools and Configuration Texts in A2[edit]

A tiny sample of the approximately 2000 sources in A2. For the ETHZ Repository userid is infsvn.anonymous and password is anonymous.

ETHZ Repository Variant Notes
Configuration.XML Configuration.XML  
Oberon.HTML.Mod Oberon.HTML.Mod Revisions for conformance to HTML5.
  HTML.Tool No "preview" in the ETH Repository.
Oberon.HTMLDocs.Mod Oberon.HTMLDocs.Mod InitEntities() expanded to support more characters.
Oberon.MIME.Mod Oberon.MIME.Mod  
Oberon.Mail.Mod Oberon.Mail.Mod Deviation from SMTP corrected. Wrap() added.
  Oberon.MediaWiki.Mod Not in A2 repository.
Oberon.Out.Mod Oberon.Out.Mod Allow delay of execution of Append, using a flag variable.
Oberon.Out.Mod Oberon.Out1.Mod Allow delay of execution of Append, using a procedure variable.
  Oberon.OutStub.Mod Not in A2 repository.
  Oberon.RFC3986.Mod Percent encoding and decoding of URL. Not in A2 repository.
Oberon.Sort.Mod Oberon.Sort.Mod Better presentation of output. Revisions incomplete.
Release.Oberon.Text Oberon.Text Usually Oberon.Text is customized to a user.
Unix.Oberon.NetSystem.Mod Unix.Oberon.NetSystem.Mod Percent encoding added to allow special characters in a userid or password. See RFC3986 above.
  myaos Not in A2 repository.


  1. The original instructions for installing UnixAos on a *nix system are in http://www.informatik.uni-bremen.de/~fld/UnixAos/Readme.txt.
  2. Plain text will also work. After storing Oberon.Text with ET.StoreChar, it can be edited with Leafpad or Gedit in Linux. This can resolve the difficulty of a file name, Oberon.<Host>.Text, exceeding the 32 character limit of the Oberon system.
  3. The same functionality of the Mail.Panel is available in S3 when another local host provides Exim and Stunnel.