Native Oberon Installation: Concepts and Procedures

July 25, 2000 - Beta release 26.05.2000

    Preliminary note
    Introduction
        Discussion of the various installation possibilities
        Conclusion
    Preparation of the installation
    Native Oberon
        Activity 1 - Download the release files
        Activity 2 - Create an installation diskette
        Activity 3 - Create a partition and, optionally, install a boot manager
        Activity 4 - Run the installation from the diskette
        Activity 5 - Organize the access to Oberon for starting it
    Linux-based Native Oberon
        Activity 1 - Download the release files
        Activity 2 - Uncompress the archive
        Activity 3 - Run the installation
        Activity 4 - Organize the access to Oberon for starting it
        Differences from Native Oberon
        Known bug
        Installing Linux-based Oberon in a Native Oberon system
    Customization of the installed system
    Optional packages
    Connectivity
        Direct LAN connection
        Connection using an analog modem - PPP
        ISDN
        Connection using an ISDN Terminal Adapter (TA)
        Connection using an ISDN router
        Connection flexibility
        Mail and News relevant specifications in Oberon.Text
        Accessing other OSs with Oberon VNC
        Serial connect
    Troubleshooting
        Symptom 1 - Oberon-0 does not boot
        Symptom 2 - Black screen when booting Oberon
        Symptom 3 - Grey screen when booting Oberon
        Symptom 4 - NetSystem configuration problems
    Appendices
        Appendix A: Sample multiple system configuration
        Appendix B: Example files
            NATIVEP.PAR, BOOT.INI, CONFIG.SYS, AUTOEXEC.BAT, NATIVEP.BAT
        Appendix C: How to determine which Oberon is active
        Appendix D: How to change the configuration
                D1: To switch mice
                D2: To remap the mouse buttons
                D3: To handle non-standard disk configurations
                D4: To configure the display controller
                D5: To define Neutralize / ESC
                D6: To convert the Syntax fonts during import
                D7: To troubleshoot an ailing system
        Appendix E: How to change the size of the file containing Oberon
        Appendix F: How to start another operating system
        Appendix G: How to start Oberon with noboot.exe
        Appendix H: How to change the display refresh rate
        Appendix I: How to inspect the installed hardware components
        Appendix J: LILO boot manager and boot menu
    References
    Legal information
    Contact address

Preliminary note

Native Oberon has undergone several changes (improvements) since the last official release 2.3.6. After a succession of beta releases, these installation instructions have been considerably modified, reworked and simplified, as well as carefully reviewed during extensive testing with various OSs. An insight of the new concepts introduced, in particular the file system, should be gained by reading http://www.ethoberon.ethz.ch/betadocu.html

It is hoped that most Oberon users will readily recognize the advantages of this new Oberon and that this will encourage them to adopt it soon and to migrate the bulk of their work to the new system. Take good note that several Oberon systems, "old" and "new" can co-exist on a machine and that the new Oberon can access several file systems as is described in betadocu.html. This should greatly help in a swift migration.

The installation instructions for Release 2.3.6, which uses NatFS, are found in
    http://www.ethoberon.ethz.ch/install.html

Introduction

Native Oberon is a self-contained operating system for Intel-compatible personal computers. It can co-exist with other operating systems, including Native Oberon itself, on a computer system. It may even be installed on a computer in different versions and implementations.
    Nowadays, it is not unusual to run a computer that multiboots to Windows NT, Windows 95/98, MS-DOS, Linux, QNX or you-name-it. Hence, the number of combinations is rapidly exploding and the installation, partitioning and booting-related software tools offered in commercial packages or as shareware are quite numerous. This text aims at providing the minimal information required to successfully install Native Oberon in almost any environment. For the sake of simplicity and clarity, exceptional situations are dealt with at the end of the text. In the rest of this text, "Oberon" is used as a shorthand for "Native Oberon", except in a few meaningful cases. We recommend printing this text for reference during the installation.
    The software tools required to complete the installation of yet another operating system fall in the following categories:

- a utility for listing the disk volumes and their partitioning information
- a hard disk partitioning tool, possibly that of the resident operating system or a third-party software product like PartitionMagic or the freely available FIPS
- a boot manager, possibly that of the resident operating system or a third-party software product like PartitionMagic
- finally, the Oberon installation files included in the distribution

    The first three categories in the list are by no means specific to Oberon, but would play a role in the installation of any other operating system. Incidentally, they are the more demanding in terms of strategic decisions to take and in terms of guaranteeing system integrity and stability.
    To perform some of the installation tasks, users can decide to use the tools they are already familiar with or to use some of the minimal, but not necessarily sufficient, tools that come with Oberon. For instance, the Oberon partition tool can only create primary partitions, not logical drives.
    Oberon can be installed jointly with MS-DOS, with all varieties of Windows and Linux with X11 and, it can be installed at any time relatively to the other operating systems with few prerequisites. On the contrary, the order in which the other operating systems are installed is frequently a critical factor to take into account. It has been tested successfully with all these operating systems and with the (SuSE and Redhat Linux) LILO, the PartitionMagic, the OS/2 and the Windows NT boot managers. Read the documentation supplied with those products for installation information. An example is given in Appendix A.

Two different Native Oberon implementations are offered: Native Oberon and Linux-based Native Oberon and the following table summarizes the different installation and usage possibilities among which to choose:

     Boot process     ------ Native Oberon installed in --------
                            A         B          L
                      own primary  own log.  file of the
                       partition    drive   Linux system

  1. Boot manager          yes       yes        no
      or boot menu
  2. Direct boot           yes        no        no
  3. Diskette boot         yes       yes        no
  4. via DOS / noboot      yes       yes        no

  5. LILO boot manager     yes       yes        no
  6. command in Linux/X11  yes       yes       yes

                   Table: Native Oberon installation possibilities

The table shows how well Oberon can live in symbiosis in an environment that sometimes can be complex. The installation and the use of Oberon nevertheless remains simple, quick and easy in comparison to what is demanded by other operating systems.

Discussion of the various installation possibilities

A1 is best when a boot manager is used.
A2 is recommended when Oberon is the only operating system. If A2 is co-residing with another operating system, refer to Appendix F to learn how to start that other system.
A3 is the easiest, but this alternative to A2 boots a few seconds slower.
B1 and B3 are alternatives to the As, which can be used if no primary partition is available.
For A4 and B4, DOS is used for launching Oberon. In these cases, Oberon is started by executing noboot.exe (Native Oberon boot program) in DOS mode.
A5 and B5 are used when Oberon co-resides with Linux and LILO is customized to boot it.
A6, B6 and L6 each represent a loose integration of Native Oberon in the Linux X11 environment. These alternatives are not truly "native", because some of Oberon's low-level modules are replaced with versions interfacing to the Linux operating system. In oher words, it is an emulation of Native Oberon running on top of Linux.

Conclusion

To get rid of all the complexities of an underlying operating system, install Oberon in a dedicated partition. At the limit, install it on a dedicated machine. A Linux-based Oberon is installed in a file of the Linux file system. The hardware prerequisites are so minimal and so easily met and Oberon has such a small footprint that almost any machine can host it. Oberon fits admirably in an embedded system, such as is encountered in process control for the industry. Use the table to guide you in the choice of the implementation that fits your requirements at best.


Preparation of the installation

Collect information on your computer hardware and verify that it fits the minimum requirements listed in http://www.ethoberon.ethz.ch/native/WebRelease.html . Appendix I explains how this can be done with existing software.
    Consult the breaking news appearing in http://www.ethoberon.ethz.ch/newfaq.html

Native Oberon

The installation is a succession of five activities.

Activity 1 - Download the release files (Time: 10 min. at 28,800 bps)

Using your favorite operating system or Oberon, download these files by anonymous ftp from
    ftp://ftp.ethoberon.ethz.ch/ETHOberon/Native/Update/beta000526/

- install.txt this text
- Oberon0.Dsk, the installation diskette image file
- rawrite.exe (not always required, since alternatives may exist - see below)

and save them in a directory of your choice. Note that the diskette image file exceeds the capacity of a high capacity diskette, so you will have to download it to a hard disk. Make sure that your FTP client is set to "Binary" mode for receiving the last two files.

Activity 2 - Create an installation diskette (Time: 2 min.)

Using your favorite operating system, create a bootable diskette from the image file Oberon0.Dsk. Later on (Activity 4), booting your computer from this diskette will establish a small ramdisk-based Oberon system for installing, updating and configuring a basic Oberon system on your machine. All OSs will produce an identical diskette, but none of them can read it because of its proprietory file system. Hence, clearly label the diskette as "Native Oberon install diskette - Release x.y". Assuming that you have placed a formatted 1.44 MB diskette in a floppy drive, "a:" in the examples, select the procedure corresponding to your operating system (the entire diskette will be overwritten):

  1. beron - Execute: Partitions.FileToPartition Diskette0#0 Oberon0.Dsk ~

  2. DOS, Windows

    Run the DOS program rawrite.exe and enter the name of the diskette image file (Oberon0.Dsk by default) when prompted for it. When asked for a destination, enter the floppy drive's letter. The diskette is written and verified OR

    execute: "loaddskf oberon0.dsk a:" (DOS version of loaddskf)

  3. Linux, Unix - Execute: "dd bs=512 if=oberon0.dsk of=/dev/fd0"

  4. BeOS - Execute: "dd bs=512 if=oberon0.dsk of=/dev/disk/floppy/raw"

  5. OS/2 - Execute: "loaddskf oberon0.dsk a:"

Activity 3 - Create a partition and, optionally, install a boot manager (No time)

This activity may be skipped if a suitable partition is ready for use or re-usable.
    What matters here, is to collect information on the current disk partitioning allowing to decide where Oberon should be installed (choose among the A or B cases in the table) and to set-up a plan for a new organization. As you can see, Oberon may be installed in a primary partition or in a logical drive. In any case, the partition must be contained in the first 1,024 cylinders of your hard disk. This limitation might be removed in a later release.
    The new partitioning will greatly depend on the already resident operating system(s) and to some extent on how Oberon will be started (choose among the boot processes in the table). The partitioning operation may be performed with the Oberon Partitions.Tool, as will be done in Activity 4.6, or with classical utilities such as fdisk or BootPart, for example.
The installation of a boot manager, to be selected among a large offering, is to be seriously considered, if not already installed. The Windows NT boot manager or Linux LILO, for instance, may already be on hand without further ado.
    For instance, with Windows NT, one can install the freely available BootPart [BP] utility and follow the tips and suggestions supplied with it.

    PartitionMagic from PowerQuest [PQ], which includes BootMagic, is also highly recommendable. With that tool, one can easily shrink an existing partition to obtain free space for creating a new partition, subjected to the limits imposed on the total number of partitions. Similar tools are also available from QuarterDeck, from Windows NT's Disk Administrator, etc.

Activity 4 - Run the installation from the diskette (Time: 5-7 min.)


  1. Boot the installation diskette
    Normally, you may let the boot process run until you see a full screen display with an invitation to select a mouse driver and then proceed to Step 2. If a configuration string must be changed on-the-fly, follow the instructions of Appendix D. During booting, a black screen with a changing color border can be observed.

  2. Interactively select a mouse driver
    A suitable mouse driver may be selected by exploring a ring of mouse drivers. When the mouse is operational, enter a 'c' to continue with booting. The System.Log will appear in the system track together with the Install.Tool. The latter contains the instructions for the subsequent installation steps. Oberon-0 is now active. If you have never used Oberon before, you will have to get used to its novel user interface. A small tutorial is included in the Oberon-0 system. To open the tutorial text, move the mouse cursor to the first blue-colored Edit.Open command in the Install.Tool text, and press the middle mouse button on a three-button mouse. If you only have a two-button mouse, use the keyboard Ctrl key instead. Oberon uses all combinations of the three mouse buttons heavily, so a three-button mouse is highly recommended.

  3. Middle click on Edit.Open Introduction.Text
    Read the Welcome to Oberon-0 text, which introduces the concepts of the Oberon user interface necessary to continue the installation process.

  4. Select a disk driver by executing one of the Config.Disk commands listed
    When an IDE disk is installed, the standard ATA/EIDE driver is the preferred choice since it supports up to 4 attached disks, and also modern large disks. The standard IDE driver is recommended for older disks, e.g. < 100 MB. Depending on the computer hardware, this step may take quite some time to complete. It may take up to 10 seconds per ATA/EIDE device to scan.

  5. Open the InstallFiles.Tool and follow the instructions
    You may install Oberon in a partition (options 1, 2 or 3) or to a file:

    1. Create a new Oberon partition
    2. Update an existing Oberon partition
    3. Overwrite a partition or logical drive
    4. Install to a file on a FAT16 partition. The file must already exist! (Activity 4).

    Oberon may be installed only in a DOS FAT16 partition (primary or logical). It can not be installed in a DOS FAT32 partition or a compressed partition.
    Close the InstallFiles.Tool and return to the Install.Tool.

  6. Open the Configuration.Tool and follow the instructions for specifying the device drivers and the configuration options (Part 1) and for storing the configuration and for making Oberon bootable (Part 2).

    A. Oberon installed in a primary partition, select among the 4 options offered in Configuration.Tool (several options may be selected):

    1. Boot Oberon via third-party boot manager - A1 and B1
      execute the command Config.BootPartition menu ~
      The system action depends on the boot manager installed. When the Windows NT boot manager is used, nothing happens. Instead, we recommend to use BootPart to add Oberon to the boot menu.

    2. Boot Oberon directly - A2
      execute the command Config.BootPartition direct ~. The partition will be marked as bootable and the computer will boot Oberon directly.

    3. Boot Oberon via diskette - A3, B3
      Insert a formatted* 1.44 MB diskette in the boot drive and execute the command Config.BootDiskette. An Oberon boot diskette is created. Label the diskette explicitly! It can not be read by DOS afterwards. Appendix C explains how to recover from a possible omission.
      (*) If the diskette is not already formatted, execute the command Backup.Format\H first.
      

    4. Boot Oberon via DOS or MS-DOS mode in Windows - A4, B4
      execute the command DOS.CopyTo "c:/native/" noboot.exe native.bin native.par ~
      Adjust the path to fit your installation.
    B. Oberon installed in a logical drive, select the option 1 or 3, corresponding to B1 and B3.

    Close the Configuration.Tool and return to the Install.Tool to execute a System.Reboot command. The rest of the tool text deals with error situation handling. After rebooting, a basic Oberon system is operational.

Activity 5 - Organize the access to Oberon for starting it (No time)

If the boot manager was requested, use the boot manager tool to edit the menu item texts or options such as the timing, if at all needed (A1, B1).

No further action is needed when direct boot was requested (A2). The partition is activated.

No further action is needed when a boot diskette is created (A3, B3).

To boot any Oberon installation from DOS (A4, B4), you will have to execute the command noboot native.bin native.par. The three files required for this have already been stored in the user specified directory during the Activity 4, step 6. For that purpose, edit a new file native.bat with a single line text "noboot native.bin oberon.par". A larger example NATIVE\NATIVEP.BAT is also given.

To boot Oberon from LILO (A5, B5), proceed to Appendix J.

You may now proceed to install optional packages.

Linux-based Native Oberon

Linux-based Native Oberon is an emulation of Native Oberon for Linux. The goal is not a tight integration in the Linux environment but binary compatibility with Native Oberon. This implementation does not change the module interfaces. You will need:

    - Linux with X11
    - 10 MB disk space for the basic system
    - or 40 MB disk space if all the optional packages must be installed
    - or a running Native Oberon in its own partitition

Activity 1 - Download the release files (Time: 10 min. at 28,800 bps)

Start Linux and create a new subdirectory, e.g. mkdir native, in which you will store:
    o Oberon0.Dsk
    o lno237a.tgz (the archive's filename will vary with the release)
to download from: ftp://ftp.ethoberon.ethz.ch/ETHOberon/Native/LinuxBased/

Activity 2 - Uncompress the archive (Time: 1 min.)

Uncompress the archive with tar xzf lno237a.tgz. It will expand to:

   install      the core for installation
   oberon       the command for libc6
   oberon.libc5 the command for libc5
   oberon.lno   the Oberon inner core and all the Linux-specific
                drivers statically linked
   oberon.c     the boot loader source code
   oberon.cnf   the configuration file
   oberon.xpm   an icon for Oberon
   readme.lno   the readme file
   LNO.tgz      Linux-based Native Oberon specific files

Activity 3 - Run the installation (Time: 4 min.)

Execute ./oberon -help to remind the optional parameters of the central command:

   -d diskfile (default is oberon.dsk)
   -h heapsize in MB (default is 12 MB)
   -c corefile (default is oberon.lno)

Execute ./oberon -c install in the X11 environment to start a ramdisk-based Oberon-0 system for installing, updating and configuring a basic Oberon system on your machine. This basic system will be stored in a file in the current Linux directory. Oberon will look at the file as a partition on a virtual disk hosting an Oberon file system.
    If you have never used Oberon before, you will have to get used to its novel user interface. A small tutorial is included in the system. To open the tutorial text, move the mouse cursor to the first blue-colored Edit.Open command in the Install.Tool text, and press the middle mouse button on a three-button mouse. If you only have a two-button mouse, use the keyboard Ctrl key instead. Oberon uses all combinations of the three mouse buttons heavily, so a three-button mouse is highly recommended.
    If no file containing a Linux-based Oberon exists yet, and assuming that oberon.dsk is the name of the file to create, execute:

    o Linux.MakeDisk oberon.dsk size ~ (* size is a number of MB *)
    o Linux.OpenDisk oberon.dsk
    o Partitions.Format oberon.dsk#0 AosFS ~
    o OFSTools.Mount DST AosFS oberon.dsk
    o CompressTools.Install SRC:system.arc DST: ~
    o OFSTOOLs.CopyTo DST: "" &Oberon0Files.Text ~
    o OFSTOOLs.CopyTo DST: ""
    Linux.Display.Obj Linux.Obj LinuxPrinter.Obj Clipboard.Obj Linux.Tool ~
    o System.Quit to return to Linux

Clearly, if a file already exists, the first command must be ignored. The size of the file can however be adjusted by executing    Linux.Expand oberon.dsk newsize ~
under the condition that newsize is larger than the current size. Also, the command will only be executed under the provision that the specified file hosts an Oberon file system and that the named file is a real file, that is, not a symbolic link to a Native Oberon partition (see example below).

Activity 4 - Organize the access to Oberon for starting it (No time)

Normally, you can start Oberon by executing a bare ./oberon command, in the X11 environment, when the default parameters appply. If Oberon fails to start, examine the oberon.log located in the current directory to determine the reason. If it starts successfully, you may proceed with the installation of optional packages. The start-up configuration in oberon.cnf can be modified with a Linux editor.
    To include Oberon in the menu of the Linux desktop or window manager, edit this small script:

    #!/bin/sh
    cd /home/userdir/native/   # the directory of Linux Native Oberon
    xterm -e ./oberon
    cd -

name it "oberon", give it the execute permission (chmod +x oberon) and save it in /usr/local/bin. Finally, include this command in a menu as is described in the documentation supplied with Linux. The Oberon icon oberon.xpm was designed for that purpose.

Differences from Native Oberon

    o A hard break is produced with Ctrl-c from the terminal window
    o Quit is Ctrl-z from the terminal window
    o System.Reboot is the same as System.Quit
    o Special tool Linux.Tool (documents a few installation commands)
    o Sound and Linux NetSystem are not implemented. However, Oberon NetSystem is implemented and SLIP and PPP are supported (using a serial port and a modem)

Known bug

Oberon terminates when the stack overflows (e.g. unbounded recursion).

Installing Linux-based Oberon in a Native Oberon system

Assuming that a Native Oberon system (AosFS or NatFS-based) is installed in a partition, it is possible to exploit that system as a Linux-based Oberon under Linux. For this, it suffices to extend the file system with a few Linux-specific modules.
    In Linux, execute fdisk to determine the partition's identifier, e.g. /dev/hda5, and if not already done, prepare the Oberon installation as described in Activity 1 to 2. Then, execute ./oberon -c install in the X11 environment to start a ramdisk-based Oberon-0 system.
    In the installation Oberon, execute (compare this list with that in Activity 3):

    o Linux.OpenDisk /dev/hda5 to access the partition as a virtual disk
    o OFSTools.Mount DST filesys /dev/hda5 to mount the file system (NatFS or AosFS)
    o OFSTools.CopyTo DST: ""
    Linux.Display.Obj Linux.Obj LinuxPrinter.Obj Clipboard.Obj Linux.Tool ~
    to extend Native Oberon with the Linux-specific modules
    o System.Quit to return to Linux

Now, you can start Oberon as usual (boot diskette, noboot, ..) or from Linux with:
./oberon -d /dev/hda5

The help text in Activity 3 explains the choice of parameters.

Customization of the installed system (Time: 10 min.)

You now have a working, basic Oberon system with its classical textual interface. It offers a fully functional Oberon program development environment containing text and documentation editors, networking (Telnet, FTP and Mail) and an Oberon compiler. You may now customize your Oberon under the guidance of System.Text . An essential task is that of configuring Oberon.Text as is explained in there. Configuring the network is required for a connected system: the extra section "Connectivity" has been added for the reader's convenience.


Optional packages

Section 3 "Installing optional package" in System.Text gives all the instructions necessary to conduct the installation. They are distributed as Oberon-format .Arc files which cannot be processed by WinZip or sibblings thereof (this has very frequently been questioned).
    The source archives (Sourcex.Arc) are only required if you want to study or modify the system. It is highly recommended not to uncompress them to conserve disk storage and to limit the number of files. The source texts can be consulted directly in the *.Arc files anyway.

Connectivity

This section describes the network configuration process, also presented in System.Text, for an Ethernet LAN connection and various other configurations. The objective is to enable the reader to set up the communication hardware and to edit the NetSystem section of Oberon.Text in confidence. To facilitate the interpretation of the examples, we list the information that you should obtain from your network administrator first, and show where the various pieces must be inserted in either the hardware configuration menus or in the NetSystem specifications of Oberon.Text.

    My Login=               Assigned account name (Konto)
    My Password=            (Self-)assigned password
    Pri Phone=              the ISP telephone number to dial
    Domain =                Domain name
    Primary DNS Server =    DNS0 IP number
    Secondary DNS Server =  DNS1 - not always supplied
    Tertiary DNS Server =   DNS2 - not always supplied
    Gateway =               gateway IP number (only for LAN set up)
    Netmask =               netmask IP number (only for LAN set up)
    Host =                  your PC's name & IP number

The first three lines are for dial-up networking (DUN) only.
The real examples were constructed for a direct LAN connection at the ETH and for the following ISPs:

ETH Dialup - http://n.ethz.ch/zugang/

    My Login=               p.muster
    My Password=            ********
    Pri Phone=              01 261 20 80
    Domain =                inf.ethz.ch
    Primary DNS Server =    129.132.x.y
    Secondary DNS Server =  129.132.u.v

ETH Dialup800 - http://www.kom.id.ethz.ch/dialup800

    My Login=               p.muster
    My Password=            ********
    Pri Phone=              0800 867 666
    Domain =                inf.ethz.ch
    Primary DNS Server =    129.132.x.y
    Secondary DNS Server =  129.132.u.v

Swisscom - http://www.bluewin.ch (1) (2)

    My Login=               p.muster
    My Password=            ********
    Pri Phone=              0840 840 111   (Highway)
    Pri Phone=              0840 840 222   (FreeWay)
    Domain =                               (leave empty)
    Primary DNS Server =    195.186.1.110  (dns1.bluewin.ch)
    Secondary DNS Server =  195.186.1.111  (dns2.bluewin.ch)

(1) you must have registered on the registration server using another telephone number
(2) the BlueDisk of the Internet Starter Kit is absolutely not required

using the following hardware:
    o 3Com Etherlink III for ISA/EISA and the 3Com FastEtherLink 3C905B
    o Planet 10/100Mbps Dual Speed Hub
    o Zyxel Prestige 100 (ISDN router)
    o Zyxel Omni TA128 (ISDN Terminal Adapter)
    o USRobotics Courier V.Everything analog modem

Keep in mind that Oberon does not support so-called WinModems (they are not attached to a real serial port).

Direct LAN connection

The entire information is to be edited in Oberon.Text. Ignore however the first three lines which are to be used for a switched network.

Leave the Oberon.Text lines which are not shown here unchanged!

NetSystem = {
    Hosts = {
        Domain = { "<your-domain>", "" }
        DNS0 = { "dns0", "<ip number>" }
        DNS1 = { "dns1", "<ip number>" }
        DNS2 = { "dns2", "<ip number>" }

        Device0 = { "Net3Com509.InstallDevice", "" } (or "Net3Com905B.InstallDevice")
       
        Route0 = {
            Device = "device0"
            Mode = "arp"    {* "arp" for LAN, "" for PPP or SLIP *}
            Host = { "<your-pc>", "<ip number>" }    {* your PC's name & IP address *}
            Gateway = { "gateway", "<ip number>" }    {* gateway IP address *}
            Netmask = { "netmask", "<ip number>" }
        }
    }

Connection using an analog modem - PPP

The USRobotics Courier V.Everything modem (HST, V32bis, Terbo, VFC, V34+, x2, V90) has been used successfully using the PPP communication protocol with Oberon and other OSs installed on the same machine (BeOS, Linux, QNX and Windows NT). The modem was used "out-of-the-box" in its factory configuration (also restored with AT&F0). Any modem can easily be custom-configured using the Oberon V24.Panel, an equivalent of a serial terminal program commonly supplied with other OSs. With it, you can issue all the desirable AT commands for controlling a modem. The information presented here was inspired by the PPP.Tool text supplied by Edgar Schwarz.
    Some ISPs, like the ETH, accept a terminal authentication from a Dial script. This becomes visible when you receive "Login" and "Password" strings. Other ISPs, like Bluewindow, use an authentication protocol such as PAP [PAP] or CHAP [CHAP]. The latter is not yet supported by NetSystem.
    If the ISP supports neither PAP nor CHAP, the essential NetSystem and DIAL section lines for connecting your machine to your ISP via PPP are as follows (leave the Oberon.Text lines which are not shown here unchanged!):

NetSystem = {
    Hosts = {
        Domain = { "<your-domain>", "" }

        Device0 = { "PPPMain.InstPPP", "COM1"}    {* specify the correct COM port *}
        Route0 = {
            ...
            Mode = ""    {* "arp" for LAN, "" for PPP or SLIP *}
            ...
        }
    }

DIAL = {
    Init = { COM1 115200 }    {* modem port and speed in BPS *}
    Dial = {
        "ATZ"
        10 "OK"
        "ATDT <dialup>"
        60 "CONNECT"
        10 "Login:"
        "<user>"
        20 "Password:"
        "<password>"
        CALL PPPMain.StartInst
    }
}

The Dial script must be copied as shown, but <dialup>, <user> and <password> must be replaced respectively by the telephone number of the ISP, the user id and the assigned password. The AT command line may contain a chain of AT commands. No comment is allowed inside the script and it must end with CALL PPPMain.StartInst.

If the ISP supports PAP, the DIAL script should look as follows:

DIAL = {
    Init = { COM1 115200 }    {* modem port and speed in BPS *}
    PAPName = { "<user>" }    {* if using PAP only *}
    PAPPassword = { "<password>" }    {* if using PAP only *}
    Dial = {
        "ATZ"
        10 "OK"
        "ATDT <dialup>"
        60 "CONNECT"
        CALL PPPMain.StartInst
    }

Dial-up networking startup

To establish communication, execute the following command sequence (you will find it ready for use in NetSystem.Tool):

(1) - NetSystem.Start
(2) - NetSystem.SetUser <dialup>:<username>@DIAL ~
        Note: enter the password in the System.Log
(3) - Dialer.Dial DIAL device0 ~

An excerpt of the protocol appearing in the System.Log whilst establishing a connection with the ETH is reproduced here (the parenthesized numbers relate the log lines with the commands):

(1)
    PPP device installed on COM1
    NetSystem started
(2)   
    Password: ********
(3)   
    Dial script started
    Sending [ATZ]
    Waiting 10s for [OK] {ATZ||OK}
    Sending [ATD <dialup>]
    Waiting 60s for [CONNECT] {|ATD <dialup>||CONNECT}
    Waiting 10s for [Login:] { 28800/ARQ/VFC/LAPM/V42BIS|Welcome to the ETHZ-DialUp Service||ETHZ-DialUp login:}
    Sending [<user>]
    Waiting 20s for [Password:] { <user>|Password:}
    Sending [<password>]
    Calling [PPPMain.StartInst]
    End of script
    PPP timeout
    IPCP is finally ready. Device opened.

You may now open any desired remote document, such as http://www.ethoberon.ethz.ch/faq.html for example. To check the status of the connection, execute Dialer.State DIAL device0 ~

An excerpt of the protocol appearing in the System.Log whilst establishing a connection with Swisscom Bluewindow is reproduced here:

(1)
    PAPName: <user>
    PPP device installed on COM1
    NetSystem started
(2)   
    Password: ********
(3)   
    Dial script started
    Sending [ATZ]
    Waiting 10s for [OK] {ATZ||OK}
    Sending [ATD <dialup>]
    Waiting 60s for [CONNECT] {|ATD <dialup>||CONNECT}
    Calling [PPPMain.StartInst]
    End of script
    PPP timeout
    PPP timeout
    IPCP is finally ready. Device opened.

Dial-up networking hangup

To end the communication, execute the following command sequence (you will find it ready for use in NetSystem.Tool):

NetSystem.Stop
Dialer.Hangup DIAL ~
PPPMain.StopInst
NetSystem.ClearUser

The System.Log will display:

    NetSystem stopped

Troubleshooting

If you are experiencing difficulties establishing a connection, activate a logging function by executing PPPTest.LogOn and, later on, execute PPPTest.ShowLog to display the information collected. Try to understand that information by comparing it with the information supplied by Edgar Schwarz (Edgar.Schwarz@z.zgs.de) in PPP.Tool or ask him for help as is suggested in that document.

ISDN

The ISDN connection possibilities, described below, have been tested using a Swisscom ISDN light connection to the ETH, which acts as ISP with two different offerings: Dialup and Dialup800. Dialup800 requires that the caller presents a pre-declared telephone number, chosen from the three MSN numbers assigned by Swisscom (one of them is the so-called base number, the two others may remain unpublished). There are two B channels in ISDN light. This offers the possibility of opening multiple simultaneous channels giving additional bandwith on demand (BOD). Consult the handbooks for putting this facility to work, but beware of the possible extra cost incurred, for yourself or for the ISP! And read more on this subject under "Connection flexibility".
    Keep in mind that the examples given have been constructed for specific hardware. If you happen to possess a different hardware configuration, say using a CISCO router, things may look a bit different: an example does not stand for a rule.

Connection using an ISDN Terminal Adapter (TA)

With the widespread availability of ISDN at low cost, you can establish a high speed connection to the Internet by means of an ISDN TA attached to a serial port.
    The Zyxel Omni TA128 is an ISDN TA that has been used sucessfully with Oberon and other OSs installed on the same machine (Linux, QNX and Windows NT). It is easily set up using the Oberon V24.Panel. In fact, the factory settings are quite suitable: load them by executing ATZ4, verify them with AT&V0. When calling an ISP which verifies the caller's number (e. g. Dialup800), the TA must present the correct caller's number as declared to the ISP: set it by executing AT&ZOI=nnnnnnn, verify it with AT&ZO?.

The essential NetSystem and DIAL section lines for your machine, matching the TA setup given above are as follows (leave the Oberon.Text lines which are not shown here unchanged!):

NetSystem = {
    Hosts = {
        Domain = { "<your-domain>", "" }
        DNS0 = { "dns0", "<ip number>" }
        DNS1 = { "dns1", "<ip number>" }
        DNS2 = { "dns2", "<ip number>" }

        Device0 = { "PPPMain.InstPPP", "COM1"}    {* specify the correct COM port *}
        Route0 = {
            ...
            Mode = ""    {* "arp" for LAN, "" for PPP or SLIP *}
            ...
        }
    }

DIAL = {
    Init = { COM1 115200 }    {* modem port and speed in BPS *}
    PAPName = { "<username>" }
    PAPPassword = { "<password>" }
    Dial = {
        "ATZ"
        10 "OK"
        "ATD <dialup>"
        60 "CONNECT"
        CALL PPPMain.StartInst
    }
}

The Dial script must be copied as shown, except for the <dialup> which must be replaced by the telephone number of the ISP. The AT command line may contain a chain of AT commands. No comment is allowed inside the script and it must end with CALL PPPMain.StartInst.

Dial-up networking startup

To establish communication, execute the following command sequence (you will find it ready for use in NetSystem.Tool):

NetSystem.Start
Dialer.Dial DIAL device0 ~

An excerpt of the System.Log is reproduced here:

    PAPName: <username>
    PPP device installed on COM1
    NetSystem started
    Password: ********
    Dial script started
    Sending [ATZ]
    Waiting 10s for [OK] {ATZ||OK}
    Sending [ATD <dialup>]
    Waiting 60s for [CONNECT] {|ATD <dialup>||CONNECT}
    Calling [PPPMain.StartInst]
    End of script
    PPP timeout
    IPCP is finally ready. Device opened.

You may now open any desired remote document, such as http://www.ethoberon.ethz.ch/faq.html for example. To check the status of the connection, execute Dialer.State DIAL device0 ~

Dial-up networking hangup

To end the communication, execute the following command sequence (you will find it ready for use in NetSystem.Tool):

NetSystem.Stop
Dialer.Hangup DIAL ~
PPPMain.StopInst
NetSystem.ClearUser

The System.Log will display:

    NetSystem stopped

Troubleshooting

If you are experiencing difficulties establishing a connection, check the proper communication protocol with your ISP. The command ATBnn is useful to change the ISDN B channel protocol. Executing NetSystem.Show in this context is of little help:

    Host: 0.0.0.0 / / inf.ethz.ch
    Device0: pending 00:00:00:00:00:00 / 00:00:00:00:00:00
    Route0: 0.0.0.0 / 0.0.0.0 / 0.0.0.0 -> 0 noarp
    DNS: 129.132.x.y*

Connection using an ISDN router

or Routing ethernet LAN to Internet via ISDN

With the widespread availability of ISDN at low cost, you can let multiple machines at your home share a single Internet connection. A convenient arrangement is the addition of an ISDN router that directs all of the machines' TCP/IP requests to the Internet. Your local network does not need official IP addresses. The machines are given private network addresses according to RFC 1918, Address Allocation for Private Internets, from reserved address ranges which are not recognized on Internet. In this case, we are referring to the address range 192.168.0.0 to 192.168.255.255. The first address 192.168.0.0 represents the entire network and is thus reserved. Also the address 192.168.0.255 which is used as broadcast address may not be used. It is good practice to assign the address 192.168.0.1 to the router itself, and the subsequent addresses to the machines in the network.
    The Zyxel Prestige 100 - http://www.zyxel.com - is a hardware router that has been sucessfully used with Oberon and other OSs installed on the same machine (Linux, QNX and Windows NT). A concrete example of how to set it up is given. This setup is easily performed using the Oberon V24.Panel, using the serial interface with the cable supplied. The transmission speed must be set to 9'600 bps. To facilitate the interpretation of this example, we list the information that you should receive from your ISP first, and follow with a list of the essential setup specifications. Clearly, a complete router setup is far more complex, consult the supplied handbook. The same setup can also be performed directly with telnet on the local ethernet. Use either the command Desktops.OpenDoc "telnet://192.168.0.1" or the Telnet.Panel. In both cases, use the router's correct IP address. In conclusion, the Router setup can be performed entirely under Oberon, except that the first setup must be performed using the serial interface, in order to assign an IP address. The Zyxel Web configurator supplied on CD-ROM is not needed.
    Together with this router, you will need an ethernet hub (a vast choice of hubs is offered, some of them for a very low price). We do not recommend to acquire a router with a built-in hub, such as the Zyxel Prestige 100IH. With a separate hub, the local network can be used while the router is powered off, whereas a built-in hub might cause the ISDN connection to be established even if a service request should not be forwarded to the Internet. This can however be controlled with a suitable filter configuration.

    My Login=              Menu 4
    My Password=           Menu 4
    Pri Phone=             Menu 4 - the ISP telephone no. to dial
    Primary DNS Server=    Menu 3.2 - DNS IP number
    Secondary DNS Server=  Menu 3.2 - optional
    Gateway=               Menu 3.2 - the router's IP address
    Netmask=               Menu 3.2
    Domain=                destined for Oberon.Text
    Host=                  destined for Oberon.Text

1. General Setup
        System Name= zyxel
        Location= at-home
        Contact Person's Name= andre

2. ISDN Setup
        Switch Type= DSS-1
        B Channel Usage= Switch/Switch

        ISDN Data= (the MSN of the caller)
        A/B Adapter 1= (the telephone no. of this adapter, e.g. for a fax terminal)
        A/B Adapter 2= (the telephone no. of this adapter)
        Note: these adapters offer more flexibility than the A/B adapters on the Swisscom
        Network Terminator, but they are not operational when the router is powered off.

3. Ethernet Setup
        1. General Setup
        Ethernet Interface= 10BaseT
        2. TCP/IP and DHCP Setup
        DHCP Setup:
        DHCP= Server
        Client IP Pool Starting Address= 192.168.0.2
        Size of Client IP Pool= 252
        Primary DNS Server=
        Secondary DNS Server=
        TCP/IP Setup:
        IP Address= 192.168.0.1
        IP Subnet Mask= 255.255.255.0
        RIP Direction= None

4. Internet Access Setup
        ISP's Name= ETHDial
        Pri Phone #=
        Sec Phone #=
        My Login=
        My Password= ********
        Single User Account= Yes
        IP Addr= 0.0.0.0

        Telco Options:
        Transfer Type= 64K

        Multilink= Off (the choices are: Off / BOD / Always)
        Idle Timeout= 60


    Do not forget to specify a non-zero Timeout. Otherwise, the connection will never be broken.

11. Remote Mode Setup
        After having configured your ISP in Menu 4, the ISP will also appear in position 1 of
        this menu to accept further specifications, if needed.

23. System Password
        For security reasons, you should definitely change the factory supplied password
        and affix a label with the new password directly to the router's case.
        Do not lose it!!!!

The DHCP Setup is the best choice from a practical point of view in conjunction with other OSs (Oberon will also support DHCP soon). Oberon, however, requires that a valid IP address is assigned to each machine. With Windows, OS/2 and Macintosh your workstation must be configured as a DHCP client. The essential NetSystem section lines for the first machine, matching the router specifications given above are (leave the Oberon.Text lines which are not shown here unchanged!):

NetSystem = {
    Hosts = {
        Domain = { "<your-domain>", "" }
        {* The information concerning DNSs is placed in the router *}

        Device0 = { "Net3Com509.InstallDevice", "" } (or "Net3Com905B.InstallDevice")
        Route0 = {
            Device = "device0"
            Mode = "arp"    {* "arp" for LAN, "" for PPP or SLIP *}
            Host = { "<your-pc>", "192.168.0.2" }    {* your PC's name & IP address *}
            Gateway = { "gateway", "192.168.0.1" }    {* your router IP address *}
            Netmask = { "netmask", "255.255.255.0" }
        }
    }

How this all fits together

When a service request, which cannot be obtained from the private network, originates at your PC, it is forwarded to the router. The router dials the ISP automatically and when contact is established, the router is assigned a unique valid Internet IP address. Though it is always the same address (true at least for the ETH Dialup800 service), the user should not make use of any particular value, since the ISP may change it at time. The router then forwards the service request with this IP address. The resulting structure appears as a normal Internet message, is processed and the reply is returned to the router which reverses the process and forwards it to the local machine. this mechanism is known as "NAT" (Network Address Translation). ETH members and students will find a short description of it in http://www.kom.id.ethz.ch/dialup800/natinfo_EN.html

How to monitor the router

Whilst the router is operational, its activity and internal status can be monitored using the Oberon Telnet client mentioned earlier. To this effect, open the connection with the router, enter the password, and select 24 in the main menu. Now, in the System Maintenance menu, select 1 to display a complete overview of the router's activity. Among others, you will find out:
    - which B channel is active with which remote node
    - the current and the average line utilization of each channel
    - the total outcall time for both channels (reset when powered off)
The information is updated every second and does not interfere with the other Internet activity. In particular, the router will effectively break the connection after the specified time-out, thereby saving communications costs. The same holds true when using a browser under Windows and the Telnet Application.

Troubleshooting

If you are experiencing difficulties establishing a connection, check the proper communication protocol with your ISP. The command ATBnn is useful to change the ISDN B channel protocol. To check the state of NetSystem, execute NetSystem.Show:

    Host: 192.168.0.2 / xyz.inf.ethz.ch / inf.ethz.ch
    Device0: open 00:C0:4F:D2:FD:70 / FF:FF:FF:FF:FF:FF
    Route0: 192.168.0.2 / 255.255.255.0 / 192.168.0.1 -> 0 arp
    DNS: 129.132.x.y*

Connection flexibility

All the connections described can be tested on the same machine using Native Oberon, simply editing Oberon.Text and eventually the ISDN router configuration. Little will go wrong after gaining some practice. In particular, users enjoying the privilege of a line service paid by the employer (such as Dialup800), should, if they are being honest, change the ISP dial number when using Internet for private purposes. The Telnet.Panel is the ideal tool for reconfiguring the router quickly: only the ISP dial number must be changed.
    Concerning the multilink capability of the ISDN router, you should know that the Multilink parameter (in Menu 4) can be changed at any time during a session using the Telnet.Panel (provided the channels are idle). The B1 or/and B2 channels can also be dropped using the Menu 24.1. Experience shows that the ETH ISP supports Multilink and BOD, Swisscom does not.

Mail and News relevant specifications in Oberon.Text

ETH Dialup and Dialup800 (adjust the values to your situation)

    SMTP = "xyz.ethz.ch"    {* outgoing mail server *}
    POP = "xyz.ethz.ch"    {* incoming mail server *}
    NNTP = "news.ethz.ch"    {* news server *}
    POPMode = "POP3"    {* POP3 or APOP *}

    EMail = "p.muster@xyz.ethz.ch"    {* your return address *}
    MailSignature = "Mail.Sig.Text"    {* text appended to every outgoing mail *}
    NewsSignature = "News.Sig.Text"    {* text appended to every outgoing news posting *}
    LeaveOnServer = Yes    {* Mail.Panel leaves email on POP server when downloading *}
    TraceMail = No    {* display mail protocol information in System.Log *}

    NewsThreading = Yes    {* Newsreader keeps message threads together? *}
    NewsFont = Courier10.Scn.Fnt    {* Font for news articles *}

Swisscom specific values:

    SMTP = "mail.bluewin.ch"    {* outgoing mail server *}
    POP = "pop.bluewin.ch"    {* incoming mail server *}
    NNTP = "news.bluewin.ch"    {* news server *}
    POPMode = "POP3"    {* POP3 or APOP *}

    EMail = "p.muster@bluewin.ch"    {* your return address *}

These values are used by default and some of them can be overwritten in the Mail.Panel.

Accessing other OSs with Oberon VNC

ETH Oberon VNC is an implementation of the VNC [VNC] protocol developed by ORL (Olivetti Research Laboratory). The current version of Oberon VNC supports VNC 3.3.1 and 3.3.2 and has been tested with Sun Solaris and Linux-based servers at the ETH in Zürich. It emerged from an ETH Summer Semester project conducted by Jörg Krienbühl - VNC-Viewer for Oberon -
        http://www.cs.inf.ethz.ch/group/gutknecht/stud_work/1999SS_jkreienb/
    Any machine running the VNC server, which is nothing but a small daemon lurking in the background, can make its desktop and all running applications available to anyone with an Internet (or Intranet) connection and the VNC viewer software, which itself runs on a number of platforms. The Oberon VNC client (25 KB) allows you to access a remote MacOS, Windows 95, 98, NT, Solaris or Linux desktop computer, that is, to view and control all applications, to collaborate with a person currently working at his desktop.
    On the server (lillian at the ETH), do this in Telnet:
        > cd /export/project/oberon/system3/vnc/
        > ./startvnc        (* executes: vncserver -geometry 620x730 -depth 24 *)

and note the display number (:nn) that is assigned automatically.
    On Oberon, do this:
        NetSystem.SetUser vnc:yourname@server ~
        Enter your password in the System.Log
        Desktops.OpenDoc "server:59nn" (VNCViewerDocs.NewDoc) ~

using the number recorded earlier - prefix a single digit value with a zero!
    This procedure must be executed once only, otherwise several VNC processes will be started on the server. You will have to kill them manually.
    When the Oberon VNC client is activated, a background task is installed in the Oberon loop. To remove the task, execute a VNCTask.UnInstall command.
    There is one known bug, where the viewer sometimes pauses for a long time before continuing an update. When the mouse cursor is moved, the update continues immediately. The reason has not been found yet, but a problem on the server side is suspected.
    You can cut-and-paste text between Oberon and X Windows. From Oberon to X Windows: select text in Oberon, place the mouse focus at the insertion point in X Windows and press MM to copy. From X Windows to Oberon: select text, for example in an xterm, by dragging ML over it, place the mouse focus at the insertion point in Oberon and then interclick ML+MM. X Windows buffers the copied text and you can use Neutralize (F2) to clear the buffer. Unfortunately, Netscape's cut-and-paste does not seem to be integrated with X Windows (at least in the default configuration), so it is not possible to transfer data to or from Netscape.

Contact

Send your suggestions, ideas, bug reports to Jörg Kreienbühl - mailto:jkreienb@iiic.ethz.ch. Please write "Oberon VNC" in the subject of your e-mail.

Serial connect

In addition to using an external modem connected to a serial port, it is also possible to establish direct communication to another computer by connecting the serial ports through a crossed serial cable (also known as a null-modem cable) and using a generic communications program (in Oberon use the V24.Panel). The most likely use you will have for this technique is trapping debug output from a problematic machine to another faultless machine for analyzing the debug information and diagnosing the problem. This technique is described under the heading "Low-level tracing" in
http://www.ethoberon.ethz.ch/native/WebTrace.html .

Troubleshooting


Symptom 1 - Oberon-0 does not boot

If the "OBERON loading..." message does not appear during start-up, or only the first characters appear, it is very likely that the install diskette contains bad sectors. Use another diskette, or reformat it (not quick-format) and try again.
    If the screen goes blank, and the Oberon display does not appear, there might be compatibility problems between the Oberon drivers and your PC. To help us track down these problems, please obtain the trace information as explained in Appendix D7. If a run-time error occurs, TRAP xx will be displayed followed by a list of module names with PC = nnn values. It might be possible to infer from this what is causing the problem. If not, please send the first few lines of the module name information, as well as the number of the TRAP to us. This will help us to pinpoint the error in the source code.
    If no trace messages appear, it could mean that the CPU type detection is not functioning on your processor. Override the detection by entering the config string "CPU=n", where n is 3 for a 386, 4 for a 486 and 5 for a Pentium or compatible processor.
    The document http://www.ethoberon.ethz.ch/native/WebTrace.html describes how to perform low-level tracing in last resort.

Symptom 2 - Black screen when booting Oberon

If the screen stays black when booting a successfully installed system for the first time, there could be device driver conflicts. Boot the installation diskette Oberon-0 and try Oberon out with another display device driver (e.g. the standard VGA driver). You may skip step 2 (installing the files).

If this still does not work, reboot Oberon and send us the trace information obtained as explained in Appendix D7.

If the "black screen" symptom occurs after the system has functioned correctly for some time, the file system might have been corrupted, or a system module may have been overwritten or deleted. Boot the Oberon-0 install diskette and execute Install.Directory to see if the directory is accessible. If no trap occurs, the file system is probably intact, and you can re-install the basic system modules using the "update" option in "Step 2". If Install.Directory causes a trap, the file directory is corrupt. Reboot Oberon-0 and use the Scavenger commands in Appendix B of Install.Tool to rebuild the directory, as explained below. Note: Scavenger is not available in this beta release.
    Execute Scavenger.Scan to scan through the whole file system for file headers and build a new directory in memory (this takes long). Scavenger.Display can optionally be used to display the list of files found. Then use Scavenger.WriteDirectory to write the new directory. In case where multiple versions of a file is found, the Scavenger recovers the file with the latest time and date. It should therefore only be used as a last resort, and only if the real-time clock of the PC functions correctly.

Symptom 3 - Grey screen when booting Oberon

If the installed system seems to boot correctly, but displays a grey screen instead of the default viewers, there is probably something wrong in Oberon.Text. Press Ctrl-Break to get a trap viewer to type commands. Type the command Edit.Open Oberon.Text (or ET.Open) and middle click on it to open the configuration text. Check if the braces and quotes in recently edited parts of the text occur in matching pairs.

Symptom 4- NetSystem configuration problems

To help trace network configuration problems, the NetSystem modules contain some global counter variables that can be viewed with System.State ^. The most useful counters are in the Net3Com509 or Net3Com905B modules. Nsent counts the number of EtherNet packets sent and Nreceived counts the number of packets received. There are also Nsent and Nreceived counters in modules NetIP, NetUDP, NetTCP and NetDNS.

Appendices

Appendix A: Sample multiple system configuration

The following configuration was installed successfully on an 8.4 GB EIDE hard disk and used in the examples given.

      Device       Size Part  Description
                        Type
   hda1 IDE0#01   400Mb   6 * c:/ DOS FAT16 >= 32M (DOS 6.21)
   hda2 IDE0#02  2039Mb   6 d:/ DOS FAT16 >= 32M (Win NT & Windows Oberon)
   hda3 IDE0#03   196Mb  79 Native Oberon or QNX Posix
   hda4 IDE0#04  5388Mb   5 Extended
   hda5 IDE0#05   196Mb  76 |Native Oberon, Aos
   hda6 IDE0#06  1004Mb 131 |Linux fs (SuSE 6.1 & Linux-based Oberon)
   hda7 IDE0#07   117Mb 130 |Linux swap
   hda8 IDE0#08  1004Mb   6 |e:/ DOS FAT16 >= 32M

The first column conveys Linux information and the following columns the information obtained with Partitions.Show, with a few added comments.
    This configuration uses up the maximum of three primary partitions plus one extended partition. It is thus not possible to use a boot manager requiring a primary partition for itself, such as the one included in PartitionMagic. The Windows NT boot manager is used instead. The third boot menu position directs to a DOS boot menu, the last boot menu position directs to a LILO boot menu. The LILO boot sector is stored in the Linux native partition. All the systems, except Linux-based Native Oberon, can be booted from diskettes.
    Many useful informations are found in "Multiple OS Booting Using Windows NT Loader" [MOS]

Appendix B: Example files

Example NATIVE\NATIVEP.PAR file

# Configuration generated by Oberon-0
MT="PS2"
MP="1"
MB="-3"
DMASize="14800H"
Display="S3Trio."
Init="bb0501b8024fcd10"
DWidth="1024"
DHeight="768"
DDepth="8"

Example Windows NT boot manager file BOOT.INI

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT=
    "Windows NT Workstation Version 4.00"
multi(0)disk(0)rdisk(0)partition(2)\WINNT=
    "Windows NT Workstation Version 4.00 [VGA mode]" /basevideo /sos
C:\ = "DOS boot menu"
C:\bootlinx.bin="LILO menu (SuSE Linux 6.1)"

Example files for DOS/Win boot menu

These texts control the access to three co-resident Oberon systems.

CONFIG.SYS

[Menu]
Menuitem=dos, MS-DOS 6.21
Menuitem=nativep, Oberon in own primary partition
Menuitem=nativel, Oberon in logical drive
Menuitem=linux, SuSE Linux 6.1 - using loadlin
Menudefault=dos, 20

[common]
...

[dos]
...

[nativep]
[nativel]
[linux]

AUTOEXEC.BAT

@echo off
rem Editor for noboot (hold Shift-key or activate ScrollLock)
set editor=c:\dos\edit.com

goto %config%

:dos
...
goto end

:nativep
rem The display refresh rate can be adjusted now before starting Oberon.
rem The DOS command is usually provided by the video card manufacturer.
rem s3refrsh applies to the S3 Trio64V+ chip set.
rem The x and y values are obtained by executing: s3refrsh /?

c:\dos\s3refrsh x y >nul
cd native
nativep

:nativel
cd native
nativel

:linux
cd loadlin
linux hda6

:end

NATIVE\NATIVEP.BAT

@echo off
rem Run this under DOS or in MS-DOS mode under Windows 95/98.
rem Does not work under Windows 3.11 or NT.
rem
rem To create an icon for starting Oberon:
rem 1. Create a shortcut to "nativep.bat" (an icon is provided).
rem 2. Right-click on the shortcut and select "Properties" from the menu.
rem 3. Click "Program" tab, then "Advanced..." and select "MS-DOS mode".
rem 4. Confirm the setting by clicking on "OK".

if not exist nativep.par goto usage

rem Show boot status at top left
cls
echo . - Native Oberon booting...

rem DOS commands may be inserted here before Oberon starts.
rem E.g. a command to set the correct display refresh rate.

noboot native.bin nativep.par

rem We should never get back here
goto end

:usage
echo Please change to the directory containing the installed Native Oberon

:end

Appendix C: How to determine which Oberon is active

When several Oberon systems co-reside on the same system, execute OFSTools.Watch to determine which system was booted. To determine which Linux-based Oberon is active you must execute Partitions.Show and look for the name of the host file.

Appendix D: How to change the configuration

The configuration of a starting Oberon system can be changed on-the-fly by holding down the Shift key or by activating ScrollLock during booting. Within seconds the boot process is interrupted and the configuration strings with their name and current value are listed on the screen:

    OBERON loading...
    BootVol=IDE0#9
    MT=PS2
    ...
    OBL>

Enter "h" (for help) to recall the rules for replying to the Oberon Boot Loader (OBL) prompt (terminate each reply with a carriage return):

    name=val - set config string
    name=    - delete config string
    c        - continue booting
    w        - write config to boot device

Enter the new config strings one after the other and type them exactly as documented - the case matters! To make the changes permanent, enter "w" and the configuration will be written back to the boot device. To continue with booting, enter a final "c".

The configuration of a running Oberon system can be displayed by executing Partitions.GetConfig (see http://www.ethoberon.ethz.ch/betadocu.html).

If noboot.exe is used to start Oberon (Appendix G), the boot process is also interrupted but the editor of choice determined by a SET Editor= command is called to edit the configuration stored in the native.par file. When the editor is exited, booting is resumed. If no editor is defined, booting proceeds normally without giving an opportunity to modify native.par.

Obviously, configuration strings can also be changed by editing native.par whenever required. Only the size of the file containing Oberon (in the Linux file system) can be changed in Linux-based Native Oberon.

Of the numerous configuration strings described in detail in the technical document http://www.ethoberon.ethz.ch/native/WebConfig.html, a few interesting ones are described below.

D1: To switch mice

The "MT" config string selects the mouse type. Enter MT="PS2" for a PS/2 mouse and some other value for a serial mouse. This makes it possible to switch mice on a laptop equiped with a mouse stick (between the G and H keys) and two buttons below the space bar (PS/2), and an external 3-button mouse (serial port), added for working with Oberon.

A more straightforward method consists in executing a ConfigMouse.Configure command in a running Oberon system. The really elegant solution is to add this command to the System.InitCommands section of Oberon.Text, which will prompt to choose a suitable mouse at each system start.

D2: To remap the mouse buttons

The "MM=digits" config string arranges the mouse buttons. digits is exactly 3 digits, with each digit from 0-2 representing a mouse button. The buttons are numbered from the right to the left 0, 1, 2. The default value of digits is "012". "210" is the mapping required for a left-hand mouse. For a Logitech cordless mouse use "021".

D3: To handle non-standard disk configurations

The ATA disk driver supports up to four controllers: IDE1, IDE2, IDE3 and IDE4. If your IDE hard disk controller is not located at the standard primary addresses (IRQ 14, I/O base 1F0H and 3F6H), or if your hard disk for Oberon is on the secondary IDE controller, you can configure it by entering a config string. For example, if the secondary controller is at IRQ 15, I/O base 170H and 376H, enter: "IDE=15,170H,376H". If you do not know what the second I/O base address is, try 3X6H, where X is the middle digit of the first I/O base address. If you enter an IDE config string, you also have to specify the disk size manually using a string like "Disk0=1200Mb" (example for 1.2 GB disk). It is safe to specify a value smaller than the actual disk size.
    Similarly, the AHA1520 driver parameters can be configured. For example, if the controller is at IRQ 12, port 140H and host id 5, enter: "AHA1520=12,140H,5".

D4: To configure the display controller driver

A Native Oberon system is reconfigured like it is installed, booting Oberon-0 first (Activity 4). Go through steps 1, 2 and 4 first, then move to step 6 to specify the display device driver and store the configuration.

D5: To define Neutralize / ESC

By default "EscCompat=1", meaning that the ESC key will be interpreted as Neutralize key. The Neutralize key is used to remove all marks on the display, including the caret, the marker and text selections. The F2 key is defined as Neutralize key for all the Oberon system implementations. It has also been a common practice to assign the same function to the ESC key, with the negative consequence that the ESC character cannot be generated in certain applications needing it. Instead, the ESC character CHR(27) is generated with F3, Shift-ESC or Alt-027. By entering "EscCompat=0", the ESC will recover its original meaning.

D6: To convert the Syntax fonts during import

By default "FontConv=1", meaning that when a text document using Syntax fonts is imported, these fonts are automatically mapped to Oberon fonts. If "FontConv=0", no such mapping takes place.

D7: To troubleshoot an ailing system

The "Init" config string initializes the display mode but as a convenience for tracing start-up problems, setting "Init=9090" will force the system to present trace information when booting is resumed. The section "Troubleshooting" describes this is put to work when necessary.

Appendix E: How to change the size of the file containing Oberon

The size of the file in the Linux file system containing Oberon can be enlarged by executing the Oberon command Linux.Expand diskname size

Appendix F: How to start another operating system

When Oberon is installed for direct boot (A2), another operating system is started:

- from within the active Oberon system by activating the other system's partition with the command Partitions.Activate dev#part . The dev#part value is obtained by executing Partitions.Show. It must correspond to a primary partition on the first disk. After that, the computer must be rebooted.

- otherwise, by one of the following methods:
    o booting it from a diskette
    o using the fdisk tool of another operating system, e.g. DOS or Linux
    o executing PQBoot in DOS mode (PartitionMagic program)
    o executing PQMagic in DOS mode (PartitionMagic program)

Appendix G: How to start Oberon with noboot.exe

noboot is a DOS program which loads the Oberon kernel and starts Oberon. The kernel is stored in a DOS directory in a file usually named "native.bin". The load process is directed by configuration specifications contained in another file stored in the same directory (usually "native.par"). noboot integrates itself seamless in an existing DOS or Windows 95/98 environment and can be used with most of the boot managers discussed to start Oberon.
    Since Oberon does not use or alter the Master Boot Record (MBR), the danger of malignous side effects due the addition of Oberon on your system is minimized.
    In summary, and for Linux users: noboot is to Oberon what loadlin is to Linux. This should become clear when looking at the example CONFIG.SYS and AUTOEXEC.BAT files in Appendix B.

Keep in mind that the noboot boot loader requires a bare-bone DOS system. If Oberon fails to start, e.g. hangs in the middle of the boot process, analyze the CONFIG.SYS and AUTOEXEC.BAT files and REM the lines related to memory management. In particular, those mentioning HIGH, or those involving the use of EMS or XMS. Alternatively, force Oberon to enter a debug mode as explained below.

Oberon can be started with noboot in two ways:

  1. By executing noboot from a running system to switch directly to Oberon.

    If the running system is DOS*, it is easy to start Oberon at the DOS prompt by executing the command:
                    noboot [-dptv] kernel params

    (*) May be MS-DOS, IBM DOS, Caldera DOS, IBM DOS 2000
    The latter two OS are Y2K conform. Oberon was tested with Caldera DOS.
    If Windows 95/98 is used, MS-DOS 7.0 is be started by restarting Windows in
    DOS mode or by pressing Shift-F5 when Windows starts.

    -d    debug mode. Trace data is then presented on the console
    -p    don't reset processor
    -t    trace mode (no boot)
    -v    verbose message output
    kernel    kernel image filename (normally: native.bin)
    params    parameter filename (normally: native.par)

    If the running system is Windows 95/98, noboot must be started in DOS-mode from the user interface. A special icon native.ico is provided for that purpose.

    It is not possible to switch directly from Windows NT to Oberon. A DOS boot diskette or an extra DOS partition must be started in that case, via a boot manager for example.

  2. By selecting among different configurations offered in a DOS boot menu at system start.

    Appendix H: How to change the display refresh rate

    The display refresh rate can be changed by executing a DOS refresh command immediately before starting Oberon. The most immediate solution is to insert the refresh command in the AUTOEXEC.BAT file used to start Oberon. The example AUTOEXEC.BAT file gives all the details.

    Appendix I: How to inspect the installed hardware components

    Do the following depending on which operating system is installed on your system:

    o ETH Oberon:

    Investigate the installed PCI and AGP devices by executing PCITool.Scan. This command might be particularly useful if you can only just operate in VGA mode (default) when your graphic card is presumably better.

o Windows 95/98: follow "Start -> Settings -> Control Panel -> System"

o Linux: view or print /var/log/boot.msg

o DOS:

When the manufacturer's documentation is not available or for a noname computer, seek help from a program such as PC Analyser [PCA] for instance.

Use the program vesainfo.exe to find out which VESA version is supported by your graphic card. Obtain that program by ftp from:
    ftp://ftp.ethoberon.ethz.ch/ETHOberon/Contrib/Native/

Use the 3Com utility 3link-id.exe in DOS mode, to precisely identify your 3Com Ethernet adapter.

o DOS with an access to a CD-ROM drive:

If you can get hold of a Windows NT 4.0 CD-ROM, you can use the DOS utility programs \SUPPORT\HQTOOL\Makedisk.bat (Hardware Query Tool) to obtain the desired information. Insert a formatted 1.44 MB diskette in the diskette drive and call the program. A boot diskette is then written together with a few utility programs. After booting your system from that diskette, these programs will inspect the installed hardware and present the results on the screen. The information may also be stored in a file.
Another utility \SUPPORT\SCSITOOL\Makedisk.bat can be used in the same manner.

Appendix J: LILO boot manager and boot menu

To configure the Linux LILO boot manager to boot Oberon in its own partition (A5 and B5), boot Linux, log-in as 'root' and run "fdisk -l". Look for an Oberon partition, normally of Id 79 (4f), and determine its Linux Device name, say /dev/hda3. Edit /etc/lilo.conf, adding a section like:

   # Oberon in its own partition
      other=/dev/hda3
      label=Oberon
      loader=/boot/chain.b

Execute "lilo" to initialize the boot manager. It will say "Adding Oberon" (among other things). Oberon will appear in the LILO boot manager when the system is booted.

An improved LILO boot menu

By making use of the configuration parameter "alias" in the /etc/lilo.conf file and by editing an ASCII /etc/lilo.msg file, considerably more comfort can be achieved with little work. After having modified these files, execute "lilo" again.

Example /etc/lilo.msg file:

   Operating system list

      [1] SuSE Linux 6.1
      [2] Native Oberon in primary partition - PartType = 79
      [3] Native Oberon in logical drive - PartType = 80

   Enter 1, 2 or 3 and press Enter

Example /etc/lilo.conf file extract:

Warning: This file may contain a multitude of options that make the LILO boot manager very flexible. Consult the documentation that comes with Linux, to take sure steps. The following example does not reveal the rules of the game.

   # LILO Configuration data
   # Start LILO global section
   boot=/dev/hda6
   vga=normal
   read-only
   prompt
   timeout=100
   message=/etc/lilo.msg
   # End LILO global section

   # Linux partition
      image=/boot/vmlinuz
      root=/dev/hda6
      label=Linux
      alias=1
   # Oberon in primary partition - PartType = 79
      other=/dev/hda3
      label=OberonP
      loader=/boot/chain.b
      alias=2
   # Oberon in logical drive - PartType = 80
      other=/dev/hda5
      label=OberonL
      loader=/boot/chain.b
      alias=3

References

To find the definition of some of the terms and acronyms (e.g. PPP, SLIP) used in this text, we recommend to consult the ZD Webopaedia - http://www.zdwebopedia.com

[BP] BootPart for Win NT - http://ourworld.compuserve.com/homepages/gvollant/bootpart.htm

[CDOS] Caldera DOS - http://www.caldera.com

[CHAP] - Challenge Handshake Authentication Protocol -
        http://www.freesoft.org/CIE/RFC/1334/9.htm

[MOS] Multiple OS Booting -
        http://www.wwnet.net/~stevelim/booting.html

[PAP] Password Authentication Protocol
        http://www.freesoft.org/CIE/RFC/1334/4.htm

[PCA] PC Analyser - http://www.pcanalyser.de

[PQ] PowerQuest - http://www.powerquest.com
        includes Partition Magic, BootMagic and PQBoot.

[VESA] Video Electronics Standards Association - http://www.vesa.org

[VNC] Virtual Network Computing - http://www.uk.research.att.com/vnc/
        or http://www.cam-orl.co.uk/vnc/

Legal information

ETH Oberon / PC Native 26.05.2000
Copyright (C) 1990-2000 by Institute for Computer Systems, ETH Zürich

Permission to use, copy, modify or distribute this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of ETH not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.
    ETH disclaims all warranties with regard to this software, including all implied special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of this software.

Oberon, Native Oberon and ETH Oberon are trademarks of the Swiss Federal Institute of Technology Zürich.
PartitionMagic is a trademark of PowerQuest Corporation.
Linux is a trademark of Linus Torvalds.
Microsoft, MS, Windows and MS-DOS are trademarks of Microsoft Corporation.
IBM and OS/2 are trademarks of IBM Corporation.
Intel and Pentium are trademarks of Intel Corporation.
SuSE and YaST are trademarks of SuSE GmbH.
Be, BeOS, and the Be and BeOS logos are registered trademarks of Be Incorporated.
All trademarks are used without warranty of their free use. Some of them might be registered trademarks.


Contact address

The frequently updated Native Oberon web site at http://www.ethoberon.ethz.ch/native/ contains information about projects, releases, technical issues and general news about Native Oberon. It also provides a module name registry to avoid naming conflicts when you distribute your Oberon software.
    For timely information on updates, and moderated discussion, join the Native Oberon electronic mailing list by sending a message "subscribe native-oberon FirstName LastName" to listproc@inf.ethz.ch. Replace FirstName and LastName with your names. Your e-mail address is taken from the reply address of your mail.

For technical correspondence, please contact:
    ETH Oberon Team
    Institute for Computer Systems
    ETH Zentrum
    CH-8092 Zürich
    SWITZERLAND

    e-mail: oberon@inf.ethz.ch / Fax: +41 (0) 1 632 1307

Send comments on Linux-based Native Oberon to Peter Matthias (matthias@ngi.de), especially if you know how to handle a signal on stack overflow.

Pieter Muller, Peter Matthias, André Fischer - July 2000

21 Jul 2000 - Copyright © 2000 ETH Zürich. All rights reserved.
E-Mail: oberon@inf.ethz.ch
Homepage: http://www.ethoberon.ethz.ch/