The ARC boot process.

You've come to this page because you've asked a question similar to the following:

What is the boot process employed by ARC (Advanced RISC Computing) machine firmware?

This is the Frequently Given Answer to such questions.

Bootstrapping on ARC involves a boot manager that is built in to the firmware. ARC systems do not rely upon bootstrap programs stored in boot records (VBRs or MBRs) at all. The firmware knows how to read a partition table and understands the FAT filesystem format. (IBM PC compatible firmware does neither.) A designated partition, that is formatted with the FAT filesystem format, is known as the ARC System Partition. It contains boot loader programs, which are ARC executable programs that are loaded and run by the ARC Boot Manager.

The location of the ARC System Partition is specified by the value of a firmware variable that is held in non-volatile RAM, named SystemPartition. The value of this variable is the ARC Path for the system volume. An ARC Path is a general-purpose mechanism provided by ARC firmware for naming devices, disc volumes, and files.

The precise details of the boot manager may vary according to firmware implementation, but the operation of the boot process is driven by publicly documented firmware variables with defined named and semantics. The boot manager presents a menu of boot options to the user. The name of each boot option is determined by value of the LoadIdentifier firmware variable.

(The value of the LoadIdentifier firmware variable, like the values of the firmware variables mentioned later, is in fact an array, with one element of the array for each option on the ARC Boot Manager menu. Effectively, picking an option on the menu picks the array index that will be used to index into the variable values. For simplicitly, the discussion below will take the array indexing as implied.)

The boot manager inspects the value of the OSLoader firmware variable for the location, specified as an ARC Path, of the operating system boot loader program image file. The boot manager loads and invokes this program.

Usually the operating system boot loader is a file that resides on the ARC System Partition:

The operating system boot loader program is responsible for loading the and invoking the operating system kernel proper. The boot loader uses the values of several firmware variables.

The boot loader uses the value of the OSLoadFilename firmware variable to determine the location of the operating system kernel program image file, which it then loads and invokes. This file, too, is usually a file that resides on the ARC System Partition. The exact meaning of the ARC Path in the value of the variable depends from the operating system boot loader:

The boot loader uses the value of the OSLoadPartition firmware variable to determine the location of the system volume for the operating system. It passes this location to the operating system kernel in whatever format the operating system kernel requires. (For example: The Windows NT kernel understands ARC Paths, and so the Windows NT boot loader, NTLDR, simply passes the value of this variable to the kernel as it is.)

The boot loader uses the value of the OSLoadOptions firmware variable as a set of additional command-line options to pass to the kernel when it invokes it. These command-line options are kernel-specific:

further reading


© Copyright 2006,2011 Jonathan de Boyne Pollard. "Moral" rights asserted.
Permission is hereby granted to copy and to distribute this web page in its original, unmodified form as long as its last modification datestamp is preserved.