Oberon Community Platform

Edit Page
Printable View

Configuration

Configuration Strings

Config(uration) strings are a low-level system configuration facility. Generally, a config string has the form

key = value

The config strings can be edited using the Oberon boot loader (OBL.Bin, installed on any AosFS formatted partition when you format it) even before the A2 kernel is loaded and later be accessed by the kernel. The config strings are stored in a special region in the AosFS file system.

There are multiple ways to edit config string:

Edit Configuration Strings with the Boot Loader

Hold down the CTRL key before the computer boots A2. There will be a command prompt showing all currently set config strings.

A new entry can be added by typing the key=value pair and pressing enter. sTo unset (delete) an entry, enter key= and press enter. To 'redefine' an entry, just set it to a different value.

You can write the currently defined config strings to disk by typing 'w' and then pressing enter. You can continue the boot process by typing 'c' followed by pressing enter

Edit Configuration Strings with the Partition Tool

WMPartitions.Open ~ opens the Partition Tool (under A2). Select your A2 partition, go to the tab 'A2' and press on 'Config'. This opens a graphical configuration string editor that should be self-explaining. The changes will require a reboot to become effective.

Edit Configuration Strings using Partitions.Mod

The Oberon command Partitions.SetConfig takes the device#partition and the config strings as parameter and writes them to the specified partition. For an example usage, have a look at the file Aos.Par (only on CD-ROM). You will also find some useful key-value-pairs there. The changes will require a reboot to become effective.

Notes:

  • Lines starting with the # character are comments
  • The file Aos.Par really just contains a Partitions.SetConfig command inclusing parameters. This file won't be relevant for anything other than executing the SetConfig command that writes the parameters to the disk
  • For "higher-level" configuration, have a look at the file Configuration.XML

The "Value" column enumerates the values that can be assigned (default in bold):

  • "none" meaning that the string is absent
  • a discrete numeric or string value
  • a value range or a type

Red: Critical string to consider first when a machine fails to start, i.e. in case of black screen.

Partitions, file systems to mount and commands to execute at start-up

StringValueDescriptionModuleSystem
BootVol#
# is "1..9"
prefix alias [device#partition] ["|" fspar] . (1)
Boot device and partition to mount
in numerical order (2)
Example: AOS AosFS IDE2#5
BootConsoleAll
aliasalias = volume_generator file_system_generator .
generator = module "." command .

AosFS=DiskVolumes.New DiskFS.NewFS
NatFS=DiskVolumes.New DiskFS.NewFS
FatFS=FATVolumes.New FATFiles.NewFS
IsoFS=ISO9660Volumes.New ISO9660Files.NewFS
RamFS=RAMVolumes.New DiskFS.NewFS
FtpFS=RAMVolumes.New FTPFS.NewFS
ZipFS=NIL ZipFS.NewFS
RFS=RfsClientProxy.New RfsFS.NewFS
WinRelFS=NIL Win32RelFS.NewFS
File system hosted by a partitionBootConsole


All
All
All
All
All
All
All
All
WIN
Boot
Boot#
# is "1..9"
cmdlist = module "." command [tail] .
tail = ";" cmdlist .
Commands to execute blocked.
The main purpose is to start drivers. (3)
BootConsoleAll
BootSystem
BootSystem#
# is "1..9"
module "." command [tail] .
tail = ";" module "." command .
Commands to execute not blockedBootConsoleAll

(1) prefix: arbitrary, unique character string to assign to the file system to access. The prefix part of a filename is used to find the correct file system and the partition after the prefix is passed on to the file system to find the file. For example, "My.Text" residing in IDE2#5, will be accessed with "AOS:My.Text".

(2) The first partition specified (BootVol1) must contain a kernel including a driver capable of accessing the file system of, at least, that first partition.

(3) Common commands giving good results. The mode of operation of drivers is usually parameterized.

Commonly used commandsInstallRefer toSystem
DisplayLinear.InstallDisplay driverDisplayA2
DisplayWin32.InstallDisplay driver WIN
Keyboard.Install;MousePS2.InstallKeyboard and PS/2 mouse A2
Keyboard.Install;MouseSerial.InstallKeyboard and serial port mouse A2
WindowManager.InstallWindowing system All
The following commands may be moved to Configuration.XML
Loopback.InstallNetwork: Local loopback device driver A2
Ethernet3Com90x.InstallNetwork: 3Com 3C90x EtherLink XL 10/100Mbps driver3Com EtherLinkA2
RTL8139.InstallNetwork: RealTek RTL 8139 10/100Mbps driver A2
RTL8169.InstallNetwork: RealTek RTL 8169 Gigabit driver A2
Intel8255.InstallNetwork: Intel 8255x 10/100Mbps Controller family driver A2
AM79C970.InstallNetwork: AMD 79C970 PCnet-PCI LANCE virtual VMWare driver A2
PCITools.DetectHardwareAutomatic PCI/USB device detectionHardwareA2

Network:

  • More than one network driver may be installed, as would be the case on a server machine.
  • A2 supports the most important features of the IPv6 protocol in addition to the IPv4 protocol.
  • In Oberon, only IPv4 is supported.
  • The preferred network configuration repository is Configuration.XML.

See: "IPv6 Implementation and Integration in Bluebottle" - Diploma thesis WS 04/05 by Erwin Betschart.

File system cache

StringValueDescriptionModuleSystem
CacheSize97
Integer
Cache size used by AosFS in 4KB blocks.
A value <0 indicates that a write-back cache should be used
DiskVolumesA2/WIN

File system garbage collection

StringValueDescriptionModuleSystem
DiskGC10
10..100
Perform a disk GC when >= DiskGC% of the space is used,
when mounting a file system
DiskFS NatFS FTPFSA2/WIN

Processor(s)

StringValueDescriptionModuleSystem
DisableHyperthreadingnone
1
Hyperthreading support enabled
Hyperthreading support disabled
I386.Machine.ModA2 since revision 1365
MaxProcs (1)none
-1
1..max
Detect automatically max. number of processors allowed to boot
Single processor mode forced
User declared number of processors allowed to boot
I386.ProcessorsA2
MHz (2)none
Integer

User declared CPU clock frequency in MHz
I386.MachineA2
TimerRate1000
Integer
CPU timer rate in Hz (for time-slicing and profiling)
User declared CPU timer rate in Hz
I386.ProcessorsA2

(1) On some machines, the automatic detection of the processors fails, the machine does not start. Setting a value manually can help.
(2) Can be useful when calculating time differences using the CPU timestamp register.

Memory

StringValueDescriptionModuleSystem
ExtMemSizenone
Integer
Extended memory size (above 1MB) is normally automatically detected
User declared memory size in MB (1)
I386.MachineA2

(1) If for some reason the automatic detection fails (system crash), or if one wants to limit the memory size.
Setting a value that is a bit smaller than the actual amount of memory can help, e.g. set "63" if the machine has 64MB of memory.

Hardware in general

StringValueDescriptionModuleSystem
HardwareDetection (1)none
0
Automatic hardware detection enabled
Disable automatic hardware detection
DriverDatabaseA2

(1) Can be useful if the system does not boot because of a driver error, in case that PCITools.DetectHardware is placed in Configuration.XML.

Display

StringValueDescriptionModuleSystem
DCache (2)none
1
Do not use display cache
Enable Write-Combining for the display cache memory
DisplayLinearA2
DMemIntegerAmount of display memory in KBDisplayLinearA2
DWidth (1)IntegerDisplay width in pixelsDisplayLinearA2
DHeight (1)IntegerDisplay height in pixelsDisplayLinearA2
DDepth (1)IntegerDisplay color depthDisplayLinearA2
Init (3)117
3-hex digits
none
VESA mode defined at installation time
User declared VESA mode
Unset with "Init=" for tracing with TraceMode=1
DisplayLinearA2
SVGA1..8chipSet
In SVGA.Display.Mod refer to "CASE chipSet" and
the comment at the end of the file.
DisplayNative
Oberon

(1) Value automatically set by the boot loader in accordance to the Init value. 117 corresponds to 1024x768x16
(2) LFBWC Linear Frame Buffer Write-Combining of several writes into a cache line that can be busted out can increase the throughput to video RAM.
(3) The A2/Bluebottle Boot Manager can display the VESA modes supported by the machine

VESA mode numbers

Mode Number (hex)ResolutionColors
100640x400256
101640x480256
102800x60016
103800x600256
1041024x76816
1051024x768256
1061280x102416
1071280x1024256
108TEXT80x60
109TEXT132x25
10ATEXT132x43
10BTEXT132x50
10CTEXT132x60
10D320x20032K
10E320x20064K
10F320x20016.8M
110640x48032K
111640x48064K
112640x48016.8M
113800x60032K
114800x60064K
115800x60016.8M
1161024x76832K
1171024x76864K
1181024x76816.8M
1191280x102432K
11A1280x102464K
11B1280x102416.8M
  • These are all 15-bit VESA mode numbers defined by the VBE specification
  • VESA will not define new VESA mode numbers
  • Support for these mode numbers is NOT mandatory
  • Vendors can define their own mode numbers for other resolutions
  • The mode numbers supported by a graphics adapter can be queried using tools, e.g. our BootManager

If you are using a CRT display, it is possible to also adjust the display refresh rate. For more details, have a look at the module DisplayGTF.Mod that is part of the official A2 release.

Keyboard

StringValueDescriptionModuleSystem
Keyboardnone
Layout file
Default US keyboard layout KeyUS.Bin
User declared keyboard layout
I386.Keyboard, I386.UsbKeyboard, UsbHidDriverA2
NumLocknone
1
NumLock off at start-up
NumLock on at start-up
I386.Keyboard, I386.UsbKeyboard, UsbHidDriverA2
Layout fileCountry Layout fileCountry Layout fileCountry Layout fileCountry
KeyBE.BinBelgium KeyCA.BinCanada KeyCH.BinSwitzerland KeyD.BinGermany
KeyDV.BinDvorak KeyFR.BinFrance KeyIT.BinItaly KeyN.BinNorway
KeyPL.BinPoland KeySF.BinSuomi Finland KeyTR.BinTurkey KeyUK.BinUK

Another possibility is to use Keyboard.SetLayout in the AutoStart Section of Configuration.XML, see also: http://www.ocp.inf.ethz.ch/wiki/FAQ/Configuration#toc2

Mouse

StringValueDescriptionModuleSystem
MBnone
2 or -2
Middle mouse button is present
Ctrl-key + Left Mouse Button acts as Middle mouse button
OberonDisplay, InputsA2,iWIN
MouseRate100
1..150
PS/2 mouse report rate in HzMousePS2A2
The following strings determine the screen pointer behaviour
Speedup15
15..inf
Pointer movement speeds up according to ThresholdInputsA2
Threshold5
5...inf
Speedup value applies if the mouse displacement dx, dy exceeds ThresholdInputsA2

PCI

StringValueDescriptionModuleSystem
DisablePCI (1)none
1
Automatically detect PCI bus(ses)
Disable PCI support
I386.PCI.ModA2

(1) When PCI support is disabled, the configuration string ATADetect=legacy is often required

P-ATA, ATAPI, S-ATA devices

StringValueDescriptionModuleSystem
ATADetectnone
default
raid
other
raid+other
legacy
Detect PCI devices with class code for IDE or S-ATA
Detect PCI devices with specified vendor and device ids
Detect PCI devices with classcodes for IDE, S-ATA, RAID
Detect PCI devices with classcodes for IDE, S-ATA, OTHER
Detect PCI devices with classcodes for IDE, S-ATA, RAID, OTHER
Assume the presence of two legacy IDE controllers at standard I/O address 1F0h and 170h, IRQ 14/15.
This setting MUST be used if the IDE controller is not an PCI device
I386.ATADisksA2
ATAForcePIOnone
1
void
Force PIO mode for ATA devices
I386.ATADisksA2
ATAPIForcePIOnone
1
void
Force PIO mode for ATAPI devices
I386.ATADisksA2
ATATracenone
string
void
1 to 6 digits enclosed in " to issue verbose details on
0 issued commands
1 detected errors
2 Atapi commands
3 sense operations
4 buffer contents
5 initializations
I386.ATADisksA2

USB mass storage device to boot from

StringValueDescriptionModuleSystem
SerialNumbernone
string
Boot from USB0 (detected first)
Serial number of device among several
UsbStorageBootA2

3Com EtherLink

StringValueDescriptionModuleSystem
3C90xMedia9
7
6
5
4
2
1
Auto select (3C90xB only)
MII Media Independent Interface
100Base-RX
100Base-TX (3C900)
10Base2 BNC connector
10 mbps AUI connector
10Base-T
Ethernet3Com90xA2
3C90xDuplex2
1
0
Full-duplex
Half-duplex
Read setting from EPROM
Ethernet3Com90xA2

Diskette drive(s)

StringValueDescriptionModuleSystem
Diskette  DiskettesA2
TraceDiskette Trace diskette driver activityDiskettesA2

COM port(s)

StringValueDescriptionModuleSystem
COMi3F8H for 1
2F8H for 2
I/O address
Serial COM port I/O address. Used only when TraceMode=4I386.Machine, V24A2

Tracing

StringStringValueDescriptionModuleSystem
TraceMode1Send trace to the screen. Unset the Init string with Init=I386.MachineA2
 TraceMemIntegerDisplay buffer in KBI386.MachineA2
TraceMode4Send trace to the specified TracePort. Set TraceBPSI386.MachineA2
 TraceBPS38400
Integer
Port speed in bits/second
User declared port speed in BPS
I386.MachineA2
 TracePort1..MaxPortsDestination port numberI386.MachineA2
TraceModulesnone
1
no tracing of module activity
send a message to the kernel log when a module is loaded/unloaded
ModulesAll
TraceProcCPU numbertbdI386.ProcessorsA2

Trace information produced using Trace.Mod and KernelLog.Mod will either appear on screen or be transferred to the serial port.

Sending the trace to a serial port is more powerful than sending it to the screen but requires a second machine to receive the data.
The trace data is always collected even when the machine being inspected is faulty, halts or reboots.

Oberon only - antiquated

StringValueDescriptionModuleSystem
OberonWatch0
Integer
Oberon.Loop watchdog timer in secondsOberonOberon
MBnone
else
3-button mouse
Ctrl-key + Left mouse button acts as middle mouse button
OberonOberon
Colornone
else
Black and white
Color screen
OberonOberon
FontConvnone
else
No font conversion
Convert Syntax font to Oberon font
FontsOberon
Diskette  DiskettesOberon
TraceDiskette Trace diskette driver activityDiskettesOberon

Other strings (being worked on)

StringValuenoneDescriptionModuleSystem
ClockMode0, 1 or -100: Interrupt with test, 1: poll, -1: interrupt without testClockA2
LockTimeouttbdtbdtbdI386.MachineA2
OberonfilenameOberon.TextSpecify the filename of the Oberon configuration fileWin32.SystemeWIN
TestTrap0..20If set to "1" or "2", a test trap is forced while loading the moduleWin32.TrapsWIN

Configuration Data Structure

The configuration data structure is a 2048 bytes data structure located in sectors 4-7 on an AosFS formatted partition. When formatting, all bytes are set to 0FFH. Numbers are stored in little-endian.

There are two different entry types:

  • 07H: Boot image information
  • 08H: Configuration strings

General entry format:

  ||                  8 bytes Header                                || Data ||
  || 4 bytes entry type|| 4 bytes entry size in bytes (incl. header)|| Data ||

Boot image information entry:

  || 08 00 00 00 || 1C 00 00 00 || LoadAdr  (4 bytes) || checksum (2 bytes) 
  || NbrOfFrags (2 bytes) || StartAdr (4 bytes) 
  || Size of boot image in bytes (4 bytes) ||

Configuration string entry:

  || 07 00 00 00 || size of entry (4 bytes) || data ||

  whereas data is of the form

  {key 0X value} (key and value are ASCII strings)

Configuration.XML

This is the main configuration file.

File Systems

The mount command (FSTools.Mount) requires information on how to mount a specific file system. This includes

  • how to create a volume
  • how to create the actual file system
 <Section name="Files">
    <Section name="Alias">
    <Setting name="AosFS" value="DiskVolumes.New;DiskFS.NewFS"/>
    <Setting name="NatFS" value="DiskVolumes.New;DiskFS.NewFS"/>
    <Setting name="RamFS" value="RAMVolumes.New;DiskFS.NewFS"/>
    <Setting name="FatFS" value="FATVolumes.New;FATFiles.NewFS"/>
    <Setting name="IsoFS" value="ISO9660Volumes.New;ISO9660Files.NewFS"/>
    <Setting name="ZipFS" value="NIL;ZipFS.NewFS"/>
    <Setting name="WinRelFS" value="NIL;Win32RelFS.NewFS"/>
    </Section>
 </Section>

Example: The command FSTools.Mount DriveName AosFS IDE0#1 ~ would first generate a AosFS volume using the command DiskVolumes.New with parameter IDE0#1, then create the Files.FileSystem object by calling DiskFS.NewFS with the Volume object just created as parameter. If this all succeeds, the FileSystem object is given the name DriveName and it is registered.

Autostarts

The command Autostart.Run (typically executed by the BootConsole) parses the Autostart section in Configuration.XML and executes the commands described there in order of appearence (blocking executing).

The entries in the Autostart section look like:

 <Setting name="Some name" value="List of commands to be executed (semicolon separated)"/>

The attribute name is just a description.

Example:

 <Section name="Autostart">
    <Setting name="Start the main menu" value="StartMenu.Open" /> 
    <Setting name="Restore the desktop" value="WMRestorable.Load Auto.dsk" /> 
    <Setting name="DefaultSkin" value="SkinEngine.Load stijn.skin" /> 
    <Setting name="Hotkey support" value="HotKeys.Open" /> 
    <Setting name="Hardware Detection" value="PCITools.DetectHardware"/> 
    <Setting name="TrapWriter" value="WMTrapWriter.Install" /> 
 </Section>

Network Configuration

To configure the network device interfaces, edit the section NetConfig in Configuration.XML. Note that this section is commented in the config file distributed in the release.

The structure of this section looks like this:

 <Section name="NetConfig">

    <!-- Global settings applied to all network interfaces -->
    <Setting name="IPForwarding" value="FALSE"/>
    <Setting name="EchoReply" value="TRUE"/>
    <Setting name="PreferredProtocol" value="4"/>

    <Section name="IPv4">
       <Section name="AutoNetConfig">
          <Setting name="Enabled" value="TRUE"/>
       </Section>

       <!-- Here, IPv4 interfaces can be configured.

    </Section>

    <Section name="IPv6">
       <Section name="AutoNetConfig">
          <Setting name="Enabled" value="TRUE"/>
       </Section>

       <!-- Here, IPv6 interfaces can be configured.

    </Section>

 </Section>

IPv4 and IPv6 can be globally enabled/disabled by setting NetConfig->IPvX->AutoNetConfig->Enabled to TRUE or FALSE.

To configure a network interface for IPv4 and/or IPv6, add Interface sections.

Assigning a fixed IP address to a network interface:

 <Section name="Interface">
    <Setting name="Device" value="DeviceName#DeviceNumber"/>
    <Setting name="Name" value="Name of Interface"/>
    <Setting name="Domain" value="Domainname"/>
    <Setting name="DHCP" value="FALSE"/>
    <Setting name="LocalAdr" value="IP address"/>
    <Setting name="Netmask" value="Netmask"/>
    <Setting name="Gateway" value="IP address of gateway"/>
    <Setting name="DNS" value="IP address of DNS server"/>
 </Section>

Example:

 <Section name="Interface">
    <Setting name="Device" value="RTL8139#0"/>
    <Setting name="Name" value="localv4"/>
    <Setting name="Domain" value="mydomain.com"/>
    <Setting name="DHCP" value="FALSE"/>
    <Setting name="LocalAdr" value="192.168.1.17"/>
    <Setting name="Gateway" value="192.168.1.1"/>
    <Setting name="Netmask" value="255.255.255.0"/>
    <Setting name="DNS" value="192.168.1.1"/>
 </Section>

Autoconfiguration of network interface using DHCP:

 <Section name="Interface">
    <Setting name="Device" value="RTL8139#0"/>
    <Setting name="Name" value="localv4"/>
    <Setting name="DHCP" value="TRUE"/>
 </Section>
Copyright © 2007 ETH Zürich
Page last modified on December 13, 2015, at 08:39 PM