Here's a table I made up, a few years back (June 2000), of the builtin EFI commands.
alias [-bdv] [sname] [value] | - Set/get alias settings |
attrib [-b] [+/- rhs] [file] | - View/sets file attributes |
bcfg -? | - Configures boot driver & load options |
cd [path] | - Updates the current directory |
cls [background color] | - Clear screen |
comp file1 file2 | - Compare two files |
cp file [file] ... [dest] | - Copy files/dirs |
date [mm/dd/yyyy] | - Get or set date |
dblk device [Lba] [Blocks] | - Hex dump of BlkIo Devices |
dh [-b] [-p prot_id] | [handle] | - Dump handle info |
dmpstore | - Dumps variable store |
echo [[-on | -off] | [text] | - Echo text to stdout or toggle script echo |
edit [file name] | - Edit a file |
endfor | - Script-only: Delimiter for loop construct |
endif | - Script-only: Delimiter for IF THEN construct |
err [level] | - Set or display error level |
exit | - exit |
for var in | - Script-only: Loop construct |
getmtc | - Get next monotonic count |
goto label | - Script-only: Jump to label location in script |
guid [-b] [sname] | - Dump known guid ids |
help [-b] [internal command] | - Displays this help |
if [not] condition then | - Script-only: IF THEN construct |
_load_defaults | - ??? |
load driver_name | - Loads a driver |
ls [-b] [dir] [dir] ... | - Obtain directory listing |
map [-bdvr] [sname[:]] [handle] | - Map shortname to device path |
mem [Address] [size] [;MMIO] | - Dump Memory or Memory Mapped IO |
memmap [-b] | - Dumps memory map |
mkdir dir [dir] ... | - Make directory |
mm Address [Width] [;Type] | - Memory Modify: Mem, MMIO, IO, PCI |
mode [col row] | - Set/get current text mode |
mount BlkDevice [sname[:]] | - Mount a filesytem on a block device |
mv sfile dfile | - Moves files |
pause | - Script-only: Prompt to quit or continue |
pci [bus dev] [func] | - Display PCI device(s) info |
reset [/warm] [reset string] | - Cold or Warm reset |
rm file/dir [file/dir] | - Remove file/directories |
set [-bdv] [sname] [value] | - Set/get environment variable |
setsize newsize fname | - sets the files size |
stall microseconds | - Delay for x microseconds |
time [hh:mm:ss] | - Get or set time |
touch [filename] | - View/sets file attributes |
type [-a] [-u] [-b] file | - Type file |
ver | - Displays version info |
vol fs [Volume Label] | - Set or display volume label |
To my mind, Apple did the right thing going out of the gate with EFI instead of BIOS.
This is one of those decisions that you only get to make once, and then live with it for decades. You have to get this one right, up front. EFI is a much more useful boot environment.
Thanks!
There is a build environment for making your own C programs, with a reasonable suite of system calls you can make, of similar use to the command line stuff I listed in the table above. You can run your own commands that you built, off your hard drive.
Red Hat should have no problem getting Linux to boot off one of these Macs. It should be a simple matter of recompiling and dealing with a few minor porting issues the same EFI and elilo (Intel's extended lilo) code that anyone working with Itanium IA64 has been dealing with for years.
Thanks for the explanation and link!