Inferno Network Operating System
MPC 823 FADS Board Support Package
ABSTRACT
Inferno(tm) is a network operating system
which is a product of the Inferno Business Unit of
Lucent Technologies and was developed in coopera-
tion with the Computing Science Research Center of
Bell Labs.
This document describes the requirements for
the MPC 823 FADS board support package and details
instructions for building the boot loader, kernel,
and BSP distribution. It also describes how to
install the built boot loader and kernel onto a
target and details how to setup a network file
server to serve applications to the target.
1. Requirements
1.1. Supported Target Hardware
MPC 823 FADS Board, although can be ported to
other MPC 8XX variants.
1.2. Supported Boot Environment
The MPC 823 BSP's configured environment is network
based, that is to say that the system expects to access
the application file system from a file server using an
ethernet network. The system may also be configured to
boot it's kernel from the network. In order for this
to work correctly, you must have a network file server
running a hosted version of Inferno 2.3.
2. Building
2.1. Building the Kernel
cd <builddir>/os/mpc
mk install acid
2.2. Building the Boot Loader
Note: The boot loader must be built after the kernel
cd <builddir>/os/boot/mpc
mk f.mx
2.3. Building a Solaris BSP distribution from a source distri-
bution
cd <builddir>/os/boot/mpc
mk clean
cd <builddir>/os/mpc
chmod u+x Dist.a
iar vu Dist.a bootp.q compress.q devip.q gre.q icmp.q \
il.q ip.q ipaux.q ipextproto.q media.q netlog.q \
pktifc.q ppp.q tcp.q udp.q \
chk.q dat.q fcall.q fswren.q kcon.q sub.q console.q dentry.q \
fs.q iobuf.q kfs.q uid.q
chmod u+w mkfile
remove $LIBNAME dependency from <builddir>/os/mpc/mkfile
cd <builddir>/os/boot/mpc
chmod u+w mkfile
remove libkern.a dependency from <builddir>/os/boot/mpc
mk clean
cd <builddir>/utils
mk clean
Make a tar archive using <builddir>/os/mpc/mpcddkproto as
a file list.
2.4 Building an NT BSP distribution from a source distribution
cd <builddir>/os/boot/mpc
mk clean
cd <builddir>/os/mpc
chmod 777 Dist.a
iar vu Dist.a bootp.q compress.q devip.q gre.q icmp.q \
il.q ip.q ipaux.q ipextproto.q media.q netlog.q \
pktifc.q ppp.q tcp.q udp.q \
chk.q dat.q fcall.q fswren.q kcon.q sub.q console.q dentry.q \
fs.q iobuf.q kfs.q uid.q
chmod 666 mkfile
remove $LIBNAME dependency from <builddir>/os/mpc/mkfile
mk clean
cd <builddir>/os/boot/mpc
chmod 666 mkfile
remove libkern.a dependency from <builddir>/os/boot/mpc
mk clean
cd <builddir>/utils
mk clean
The InstallShield files assume the <builddir> is c:\usr\inf2.3,
it this is not correct than the files in the File Groups directory
must be changed to point to the correct <builddir>. The MPC 823
BSP InstallShield files are in the tar file.
<builddir>\scripts\InstallShield\mpc823.tar
The files should be extracted from the tar file into
C:\My Installations\MPC823 Directory. Using InstallShield 5.0 or
later, open the file 'mpc 823 bsp.ipr'. Create the media using the
button Build -> Make Media, and than send to the media.
3. Installation and Boot
3.1. Installing the Boot Loader
3.2. Setting Up a Bootp File Server Host
3.2.1. Setting Up Bootp
In order to boot the x86 target, you must create
an entry for it in the Bootp database. The
default location for this database is /ser-
vices/bootp/db. In order to create an entry, you
must first obtain the target's hardware ethernet
address, IP address, subnet mask and gateway
information. You must have also decided on a file
server, authentication server, and boot file name.
Bootp database entries are colon-separated fields,
one line per machine in the following format:
<name>:<h/w addr>:<ip
addr>:<boot-file>:<sub-net>:<gateway>:\
<file server>:<auth server>:
Example:
nativepc:ha=080020880AE2:ip=135.3.60.180:bf=ipc:sm=255.255.255.0: \
gw=135.3.60.150:fs=135.3.60.232:au=135.3.60.232:
<name> designates the symbolic name of the system
you are booting.
<h/w addr> is the hardware ethernet address which
by default is 00108bf12900 as defined in the file
os/boot/mpc/conf.c in the variable, defplan9ini.
This should be changed for each system.
<ip addr> is the IP address you wish to assign to
the target.
<boot-file> is the path to the kernel (Relative to
tftpd) that you wish to boot.
<gateway> is the ip address of the target's gate-
way.
<file server> is the ip address of the target's
file server (running styxd).
<auth server> is the ip address of the target's
authentication server.
Make sure to leave a blank line at the end of the
Bootp database. If bootp can't process the
database (due to formating errors) it will print
error messages and may not start. Try using the
debug flags (-d, -D, and -v) if you are having
trouble.
You can start bootp in two ways on an Host running
the Inferno host command emu, manually, or
using lib/srv. To start bootp manually, simply
run lib/bootp from the shell:
inferno$ lib/bootp &
You may also start bootp automatically when you
start lib/srv by adding an entry to /ser-
vices/server/config:
10 M 67 udp /dis/lib/bootp.dis
3.2.2. Setting Up Tftpd
In order to start up tftpd (which allows you to
boot kernels across the network), simply create a
directory called /services/tftpd and copy kernels
you wish to boot there. Then either start tftpd
manually from the shell:
inferno$ lib/tftpd
or add another line to /services/server/config:
10 M 69 udp /dis/lib/tftpd.dis
NOTE: Since bootp & tftpd use ports in the "reserved"
range under Unix, you may need to run emu as root
depending on how your system is configured.
3.2.3. Exporting the File System
In order to set up a simple file server for devel-
opment, simply run lib/srv from the shell:
inferno$ lib/srv
If properly configured, this will start up bootp
and tftpd for you as well. For more details on
the components and functions of lib/srv along with
a more detailed description of how to setup
authenticated file service, please reference the
Inferno user's manuals.
3.3. Booting
The MPC 823 boot program can load the kernel from either
the network or from flash. When booting the kernel via the
network the bootp server must be have the correct ethernet
address in the ea field for the MPC board. The boot loader
code is in the file os/boot/mpc/f.mx in S-record format.
This file is loaded into the MPC 823 FADS board's flash memory
using Motorola's MPC8BUG utility. The command to use is the
loadf. Refer to your MPC8BUG documentation for information on
how to connect your MPC 823 FADS board to the MPC8BUG command.
Once the MPC 823 is reset the boot loader runs and examines the
Dip Switch one(DS1) settings to determine:
1) filesystem is in flash(off) or network file server(on).
2) load kernel from network(on) or flash(off).
3) oscillators is 4(on) or 5(off) Mhz.
The LSB of the DS1 switch is on the right. Once the kernel is loaded
it accesses the file system as defined in DS1 on continues to boot.
The Serial port of the MPC 823 FADS board is the console output
during boot loader and the kernel operation. This port can be
connected via a null modem cable to a serial port at 9600 baud,
8 bits, no parity and no xon-xoff. A terminal emulator can be
running to gather console output and send commands to the console,
because the MPC 823 has no keyboard input.
If the debug driver is included the serial port after the kernel
starts the debug driver uses the serial port for diagnostics.
So, console keyboard input is disabled.
3.4. Flash
The MPC 823 board has only 2 MB of flash memory, which is divided
into 256Kb sectors. The boot loader is loaded into the first sector,
and the kernel is loaded into sectors two through four. If a
filesystem is loaded in the flash memory it is stored in sector five
through seven. The last sector is reserved for updating other flash
segments. This scheme limits the size of the flash kernel and
filesystem to 727040 bytes, to allow for some reserved portions of
the segments.
Once the kernel is booted and running with a connection to a file
server the following commands can be used to create a filesystem
and load it onto the MPC's flash.
# Zero out the filesystem
$ zeros 1024 |dd -bs 1024 -of myfs.kfs -count 2048
Use kfs(1) to create the contents of the filesystem in myfs.kfs.
# clear flash and copy the contents of myfs.kfs to flash
$ echo format > '#X/ftlctl'
$ cp myfs.kfs '#X/ftldata'
# tell kfs to access the file system
$ echo filsys main '#X/ftldata' > '#Kcons/kfsctl'
$ echo cons flashwrite > '#Kcons/kfsctl'
# check filesystem than add to local namespace
$ echo cons check v > '#Kcons/kfsctl'
$ bind -c '#Kmain' /n/local
3.4. Configuration
The configuration information is compiled into the boot loader
in the variable, defplan9ini. This is an array of strings
defining the ethernet hardware comfiguration SCC and ethernet
address, the size of the lcd screen in pixels, the amount
of memory available to the kernel, and the console output
parameters. There is no current method of modifying this
information via the flash. Although, the structure is in the
boot loader to determine this.
3.5. Debugging with Acid
In order to debug the kernel with the acid command, you must include
the debug driver and powerbreak files into the kernel build. This
is done in the dev section of the mpc kernel configuration file,
os/mpc/mpc, as follows:
dev
dbg powerbreak portbreak
Rebuild the kernel and copy it to your bootp server. To have the
most information available, you should also run the mk acid rule.
After the system boots, the debugger is in control of the serial port,
and sets the speed to 19200 baud. The serial port must be connected
via a null modem cable to a working serial port on your host.
An example command to run acid on the host is:
acid -R <serial_port_name> -l impc.acid impc