system-startup Reference¶
Narrative reference for the system-startup module, synthesised from the AmigaOS NDK 3.2 Release 4 (Autodocs/system-startup).
Unlike other entries in the library reference, this module is documented in the NDK as a narrative process description, not as a function catalog. It describes the role of the system-startup process — the first userland task that runs after dos.library finishes initialising itself — and the ROM-Updates mechanism it controls.
Background¶
system-startup is to AmigaDOS what init is to Unix. It is the initial
process that takes control as soon as all essential system libraries are
initialised. As part of its job, it also updates system components from
disk if newer replacements are available there — see ROM-Updates.
The system-startup module was factored out from dos.library and is now a
process and a module of its own. The functions it performs were previously
executed by the boot shell through CliInit(), a private and now obsolete
LVO of dos.library.
Startup mechanism¶
The system-startup process proceeds as follows:
system-startupcompletes buildingdos.library.system-startupinitialisesintuitionprovisionally.system-startupmounts all volumes collected and recorded inExpansionBase, left there by auto-bootable controllers.- If a newer file system has been loaded from the RDB, this file system is
placed in the
FileSystem.resource, then added asfilesystemto the resident list. system-startupcontinues to mount some important RAM-based handlers, namelyPRT:,PAR:,SER:andPIPE:.system-startupstarts the file system of the boot volume.- System assigns are made, namely
L:,FONTS:,DEVS:,LIBS:,S:,C:,SYS:andENVARC:. The latter is a "late assign". - All remaining file systems are started.
system-startupmountsRAW:andCON:, and adds thecon-handlerto the resident list.- Unless disabled by the boot menu,
system-startuplooks forROM-Updateson file systems (see ROM-Updates). - As part of this update process, any provisional version of
intuitionis shut down and replaced by the final version. - If the boot monitor is AGA-based,
graphicsandintuitionare "enlightened" — i.e. AGA modes are enabled. This does not happen by default for backwards compatibility. - All
RTF_AFTERDOSrom-modules are initialised. system-startupreadsDEVS:System-Configuration, the legacyintuitionpreferences.system-startupopens the boot console, and theStartup-Sequence.- Unless flagged as silent in
Expansion, the boot console is forced open. - If flagged by
Expansion, theSysLogmodule is loaded and initialised. - If flagged by
Expansion, thedebugandinteractiveshell variables are set. - The boot shell is initialised through
System(). system-startupdies down as the shell takes over.
ROM-Updates¶
The ROM-Updates mechanism is part of system-startup and is able to
replace some system-modules by corresponding RAM versions if available on
disk. ROM-Updates can be disabled from the Boot-Menu through a flag in
ExpansionBase. Note that ROM-Updates does not enforce a reboot.
A RAM-module replaces a ROM-Module if the version of the RAM module is
strictly larger than that of the ROM module — i.e. a V48 module can
replace a V47 module. The only exception is intuition, which can always
be downgraded to V40.
Search path¶
The search path for ROM-Updates is as follows:
- The boot volume. If a replacement module is found there, it is used. If, however, the boot volume contains a non-loadable (probably empty) dummy file of the name of a ROM component, scanning is aborted and the ROM module is not updated.
- Any other mounted volume, in the order they appear in the
DosList. The only exception isintuition.libraryin version 40, which is only scanned for on the boot volume. - The file system is upgraded automatically from the RDB if a new version exists there. It is not upgraded from file.
Upgradable modules¶
At the time of writing, the following ROM modules are upgradable from disk:
| Module | Source |
|---|---|
filesystem (aka FFS) |
from the RDB if a newer version is available |
con-handler |
from L: |
ram-handler |
from L: |
shell, BootShell, CLI |
from L:Shell-Seg |
intuition |
from LIBS:, with the option for downgrading to V40 |
console.device |
from DEVS: |
gadtools.library |
from LIBS: |
syslog |
from L: |
mathffp.library |
from LIBS: |
mathieeesingbas.library |
from LIBS: |
audio.device |
from DEVS: |
workbench.library / icon.library |
already RAM-based but use the same search path |
See also: dos.library — CliInit() (obsolete); exec.library — ExpansionBase, resident list, ROM modules.