- Contents of floppy

apb.exe         Alpha Processor bootloader v. 1.0.1.
apb.cfg         Sample apb configuration file.
up1000.pal      PAL code for Linux on UP1000.
vmlinux.gz      Linux kernel v. 2.2.12 with UP1000 patch.
System.gz       Kernel Symbol table.
INSTALL         This file.


- Installation of RedHat Linux from CD ROM

1. Copy this directory to a floppy disk.

2. Insert floppy disk and RedHat Linux CD ROM.
   This installation guide assumes 
   - hard disk is connected to primary channel as a master 
   - CD ROM drive is connected to primary channel as a slave 

3. From AlphaBIOS run apb.exe as a utility program.
   [F2]->Utility->Run maintanace program

4. At the apb command prompt, type
     apb> cd floppy
     apb> bootl up1000.pal vmlinux.gz root=/dev/hdb
   This assumes you have an ATAPI CD ROM drive which Linux recognizes
   as /dev/hdb (you may have to try /dev/hda, /dev/hdc, etc. depending
   on your configuration.  For a SCSI CD ROM drive,  /dev/scd or
   /dev/scd0.

5. This should get you into the RedHat installation program. During the
   disk partitioning phase of the installation be sure to allocate a small
   FAT partition to be used as the "boot" partition.  10 MB should be ample.
   If you choose 'Workstation' or 'Server' package then you don't need to
   partition the disk by yourself. 
   * Follow the common redhat installation procedure.
   * During install, Don't configure X server,
   * Select 'Startup through ARC console' on timezone setup menu.

6. Due to bugs in redhat 6.0, FAT partition is not formatted during installation
   depends on package selection.
   So, After installation, run apb.exe from flopy again and at the 
   apb command prompt, type
      apb> cd floppy
      apb> bootl up1000.pal vmlinux.gz root=/dev/hda5 single
   You'll get shell prompt then type following commands.
      # mkfs -t msdos /dev/hda1
      # mount /dev/hda1 /dos
      # mcopy a:*.* /dos
      # gzip -dc /dos/system.gz > /boot/System.map
      # ln -s Tsunami /etc/alpha_systype
      # init 6

8. Configure the OS selection menu of AlphaBIOS to start apb.exe
   from the boot partition.
   In 'OS Selection' menu([F2]->Operating system->OS selection setup), 
   Make an entry like this.

       Boot name: Linux
       Boot file: Disk 0 Partition 1   \apb.exe
       OS Path  : Disk 0 Partition 2   \winnt
       OS Options:  

   OS Path doesn't have any meaning, just leave it intact.

9. You can run apb from hard disk by selecting what you configured on step 8.

10. Set the environment variable APB_DEVICE to be the AlphaBIOS name 
   of the boot partition.
   For example,
      apb> setenv APB_DEVICE scsi(0)disk(0)rdisk(0)partition(1)
   type 'cd' once to make above environment variable change to be applied.
      apb> cd

11. Now, You can boot linux by selecting 'Linux' on BIOS' OS boot menu 
   and then type this on apb prompt

      apb> bootl up1000.pal vmlinux.gz root=/dev/hda5 

   If you don't want to type above long line everytime. You have two options
	1. Create apb.cfg file under /dos directory, Its contents look like

		linux|bootl up1000.pal vmlinux.gz root=/dev/hda5

	   then you can boot linux by typying 

	      apb> boot linux

	2. Put option string in OS Selection setup menu of BIOS setup.

	       Boot name: Linux
	       Boot file: Disk 0 Partition 1   \apb.exe
	       OS Path  : Disk 0 Partition 2   \winnt
	       OS Options: bootl up1000.pal vmlinux.gz root=/dev/hda5

	   Then this setup will boot linux without apb prompt.


-------------------------------------------------------------------------------


	APB -- Alpha Processor Bootstrap Loader for AlphaBIOS

			Alpha Processor, Inc.
			 130C Baker Ave. Ext.
			Concord, MA 01742, USA

		   David Daniel, Soohoon Lee, Stig Telfer 
		customer.support@alpha-processor.com

========================================================================

	     Copyright (c) 1999, Alpha Processor, Inc.
			All Rights Reserved

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the copyright notice and this permission notice appear
in all copies of software and supporting documentation, and that the
name of Alpha Processor not be used in advertising or publicity
pertaining to distribution of the software without specific, written
prior permission.  Alpha Processor grants this permission provided
that you prominently mark, as not part of the original, any
modifications made to this software or documentation.

Alpha Processor disclaims all warranties and/or guarantees with regard
to this software, including all implied warranties of fitness for a
particular purpose and merchantability, and makes no representations
regarding the use of, or the results of the use of, the software and
documentation in terms of correctness, accuracy, reliability,
currentness or otherwise; and you rely on the software, documentation
and results solely at your own risk.

========================================================================


0. Introduction

APB is a bootstrap loader for Alpha processor based systems with
AlphaBIOS firmware.  It is primarily intended to be used for booting
Linux, though it may also be useful for free BSD derived systems.

APB borrows ideas and some code from many places, notably Linux and
other Linux loaders for Alpha systems (aboot and MILO), and the ARCDos
example in the ARC Application Development Kit.  APB can also be
linked against zlib to support reading compressed kernel and PALcode
images.  See the file CREDITS for details.


1. Using APB

+ Overview

APB presents a simple command line interface with the following
commands

  boot TARGET                   boot a target in the configuration file
  bootl PALCODE KERNEL ARG1 ... boot Unix
  cd DEVICE                     set the current device
  cp | copy FILE1 FILE2         copy files
  exit | quit                   exit to AlphaBIOS
  halt | reset                  system shutdown options
  ls | dir                      list files on the current device
  mkdir DIR                     make a directory
  more FILE                     list a file
  mv | rename FILE1 FILE2       rename a file
  pwd                           print the current device
  rm | delete FILE              delete a file
  printenv [NAME]               print environment variable(s)
  setenv [NAME [VAL]]           (un)set environment variable
  show targets | devices        show information

At any time an AlphaBIOS is device is selected as the default or
current device.  On initialization this is set to the value of the
APB_DEVICE firmware environment variable, or "multi(0)disk(0)fdisk(0)"
(usually the floppy device) if this is not set.

To change the default device, use the "cd" command. For example

  cd scsi(0)disk(0)rdisk(0)partition(2)\os\linux

sets the default device to be the second partition of the disk 0 on
the 0th SCSI controller.  To save this for future invocations, set the
APB_DEVICE firmware environment variable using the "setenv" command:

  setenv APB_DEVICE scsi(0)disk(0)rdisk(0)partition(2)\os\linux

After this you can return to this device using "cd".

Also the special targets

  cd floppy
  cd cdrom

will take you to the (first) floppy and CD-ROM drives respectively.

If there is a file system supported by AlphaBIOS on the device -- FAT,
ISO 9660 (CD-ROM) -- then a directory listing can be obtained using
the "dir" or "ls" command:

  apb> ls
  Directory listing of scsi(0)disk(0)rdisk(0)partition(2):
  APB.CFG
  APB.EXE
  LINUX.PAL
  VMLINUX
  

+ Booting from disk

The recommended way to boot a system using APB is set aside a small
(10 - 30 MB) FAT partition on one disk to be used as a boot partition.
The following files should be placed on the boot partition:

  The APB image (APB.EXE)
  The PALcode image
  The kernel image
  An optional configuration file "APB.CFG" (see below)

Run APB (either from floppy or from the boot partition and use it to
set the environment variable APB_DEVICE to the name of the boot
partition.  For example if the boot partition is the first partition
on a SCSI disk with SCSI ID 3 on the first SCSI controller, and the files are in directory \os\linux set APB_DEVICE using

  apb> setenv APB_DEVICE scsi(0)disk(3)rdisk(0)partition(1)\os\linux

To enable autoboot

  apb> setenv APB_AUTOBOOT 1

This performs the first boot command it finds in the APB configuration
file, unless interrupted.

Otherwise boot manually using a command such as

  apb> bootl palcode kernel [kernel_arg1 [kernel_arg1 ...]]

or use one of the labels defined in the APB configuration file, for
example

  apb> boot linux

See below for the configuration file format.

+ Environment variables

APB uses the following firmware environment variables to set default
noptions:

  APB_DEVICE            Default device for all operations
  APB_AUTOBOOT          Determines whether an autoboot should be attempted

If these are not set on invocation, then they are set to reasonable
values, namely

  APB_DEVICE=multi(0)disk(0)fdisk(0)
  APB_AUTOBOOT=0

+ Configuration file

APB consults a configuration file "APB.CFG" that is assumed to be
located at the current device path (initially given by environment
variable APB_DEVICE).  The file consists of lines that are either
comments, or boot commands prefixed with a mnemonic label. For example

  # This is comment
  linux-2.2|bootl linux.pal vmlinux.gz root=/dev/sda3
  linux-2.0|bootl linux.pal vml20.gz root=/dev/sda3

In this case, to boot linux-2.2, type

  apb> boot linux-2.2

which is equivalent to

  apb> bootl linux.pal vmlinux.gz root=/dev/sda3

If the AUTO_BOOT environment variable is set TRUE, then the default
configuration will be booted after 10 seconds, unless a key is
pressed.

+ Boot devices

APB can boot from any filesystem supported by AlphaBIOS.  At present
these are limited to FAT, NTFS and ISO 9660 (CD-ROM).

+ Booting from a network device

Not yet implemented.


2. Building APB

APB is an AlphaBIOS/ARC application.  Currently it must be built on an
Microsoft Windows NT 4.0 Alpha processor system, with Microsoft Visual
C++ 5.0 (or higher), the Microsoft Software Development Kit (SDK) and
Device Driver Development Kit (DDK) for NT 4.0, and Compaq ARC
Application Development Kit (ADK) 1.3.

Optionally, APB can be linked against zlib (a free compression
library) to support reading compressed kernel and PALcode images.

To build, open a command window, set up the environment:

  VC++ (e.g "C:Program Files\DevStudio\VC\bin\vcvars32.bat")
  DDK (e.g. "C:\DDK\bin\setenv.bat C:\DDK")
  ADK (e.g. "set ADK=C:\adkv13\adk")

and then and make using nmake.  For example:

  C:\apb-1.0> nmake

where the DDK has been installed on the C: drive.

If building with compressed file support, obtain and unpack zlib
(http://www.cdrom.com/pub/infozip/zlib/), set the variable ZLIB to
the zlib directory, and then make.  For example

  C:\apb-1.0> set ZLIB=C:\zlib-1.1.3
  C:\apb-1.0> nmake

In either case, the executable is placed in the "obj\alpha"
subdirectory.


3. What APB does

Booting Linux with APB involves the following steps:

  AlphaBIOS loads and transfers control to APB.
  
  APB is called with an argument specifying the device (as known to
  AlphaBIOS) from which to read the Linux kernel, and additional
  arguments to be passed on to the kernel.
  
  APB sets up the environment for Linux, including loading and
  switching to the correct PAL code, setting up the HWRPB, copying
  kernel arguments to the right location in memory etc.
  
  APB reads the Linux kernel image into memory from the specified
  device (raw disk initially, and eventually filesystems or network
  devices via bootp) and transfers control.


4. Modifying APB

APB has been written with the aim of maintaining platform independence
across all AlphaBIOS (and ARC) systems.  Furthermore, all dependence
on the ARC API has been isolated in the file "arc.c", so that porting
to another firmware environment should not be too difficult as long as
it provides a sufficiently complete API.

Additional user commands can be incorporated through the command
dispatch table in "cmd.c".