From: Frederick Roeber Newsgroups: comp.sys.apollo Subject: volume formats and boot files Date: Wed, 17 Apr 2002 10:40:19 -0700 Organization: Area Systems Message-ID: <3CBDB383.36E32E17@org.didyma> NNTP-Posting-Host: 209.157.142.123 Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------C4EC2ECDA0986679A5196030" X-Mailer: Mozilla 4.72 [en] (X11; U; Linux 2.0.35 i686) X-Accept-Language: en,fr,es Xref: news.eecs.umich.edu comp.sys.apollo:225 This is a multi-part message in MIME format. --------------C4EC2ECDA0986679A5196030 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Yesterday, I stumbled on a cache of some of my old files from CERN. In one of them were some notes on the physical and logical volume formats, and the files used in the boot process. I doubt HP really cares about this information anymore, and I know questions have come up as people try to restore, preserve, and emulate Apollos, so I'll post the information here for posterity. Share and enjoy. -- Frederick Roeber roeber at didyma dot org -- note my From address up there is munged. --------------C4EC2ECDA0986679A5196030 Content-Type: text/plain; charset=us-ascii; name="boot.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="boot.txt" DISK/VOLUME FORMAT ------------------ +================+ | | BLOCK 00 OF PHYSICAL VOLUME +----| PHYSICAL | (1 BLOCK) |+---| VOLUME LABEL | ||+--| | ||| +================+ ||+->| | BLOCK 00 OF LOGICAL VOLUME (1 BLOCK) || | LOGICAL |-----+ || | VOLUME LABEL |---+ | || | | | | || +----------------+ | | || | | | | BLOCK 01 OF LV (10 BLOCKS) || | BOOT | | | || | FILE | | | || | | | | || +----------------+ | | || | | | | BLOCK 0B OF LV || | FREE | | | || / / | | || | BLOCKS | | | || | | | | || +----------------+ | | || | |<--+ | || | VTOC | | || | | | || +----------------+ | || | |<----+ || | BAT | || | | || +----------------+ || | | || | FREE | NOTE: all disk addresses || / / (DADDRs) in a logical volume || | BLOCKS | are relative to the start || | | of a logical volume. || +----------------+ |+-->| | LAST BLOCK OF LOGICAL VOLUME | | LOGICAL VOLUME | | |LABEL (2nd COPY)| | | | | +================+ +--->| NEXT LOGICAL | | VOLUME | | ... | VOLUME LABEL -- PHYSICAL ------------------------ (type "pv_label_t" in vol.ins.pas) 31 16 15 0 +---------------+---------------+ +00 | VERSION | "A" "P" | .version, +---------------+---------------+ .apollo | "O" "L" "L" "O" | +-------------------------------+ +08 | | .name / VOLUME NAME / | | +-------------------------------+ +28 | UNIQUE ID | .id | OV VOLUME | +---------------+---------------+ +30 | UNUSED | DISK TYPE | .dtype +---------------+---------------+ +34 | TOTAL BLOCKS IN VOLUME | .blocks_per_pvol +---------------+---------------+ +38 |BLKS PER TRACK |TRACKS PER CYL | .blocks_per_track +---------------+---------------+ .tracks_per_cyl +3C | DADDR OF LOGICAL VOLUME [1] | .lv_list[1] +-------------------------------+ | | / . . . / | | +-------------------------------+ +60 | DADDR OF LOGICAL VOLUME [10] | .lv_list[10] +-------------------------------+ +64 | ALTERNATE LABEL DADDR [1] | .alt_lv_list[1] +-------------------------------+ +68 | | / . . . / | | +-------------------------------+ +88 | ALTERNATE LABEL DADDR [10] | .alt_lv_list[10] +-------------------------------+ +8C | START OF BADSPOT CYLINDER | .phys_badspot_daddr +-------------------------------+ +90 | START OF DIAGNOSTIC CYL | .phys_diag_daddr +--------------+----------------+ +94 | SECTOR START | SECTOR SIZE | .phys_sector_start, +--------------+----------------+ .size +98 | PRE-COMP CYL | .pre_comp +9A +--------------+ The DISK TYPE field describes variants of the physical disk, e.g., double density. Today there are none and the field contains 0. The PV label is the first block (cylinder 0, track 0, block 0) of a physical volume. VOLUME LABEL -- LOGICAL ----------------------- (type "lv_label_t" in vol.ins.pas) 31 16 15 0 +---------------+---------------+ +00 | VERSION | UNUSED | .version +---------------+---------------+ +04 | | .name / LOGICAL VOLUME NAME / | | +-------------------------------+ +24 | UNIQUE ID OF | .id + + | LOGICAL VOLUME | +-------------------------------+ +2C | | .bat_hdr / BAT HEADER / | | +-------------------------------+ +40 | | .vtoc_hdr / VTOC HEADER / | | +-------------------------------+ +B0 | TIME LABEL WRITTEN | .label_write_time +-------------------------------+ +B4 |----------| LAST MOUNTED NODE | .last_mounted_node +-------------------------------+ +B8 | TIME SYSTEM WAS BOOTED | .node_boot_time +-------------------------------+ +BC | TIME THIS VOLUME WAS MOUNTED | .mounted_time +-------------------------------+ +C0 |TIME THIS VOLUME WAS DISMOUNTED| .dismounted_time +-------------------------------+ +C4 |----------|NODE OF LAST SALVAGE| .salvage_node +-------------------------------+ +C8 | TIME SALVAGE COMPLETED | .salvage_time +---------------+---------------+ +CC |MODE OF SALVAGE|SHUTDOWN STATE | .salvage_mode, +-------------------------------+ .sys_shut_state +D0 | TIME DUMP STARTED | .dump_start_time +-------------------------------+ +D4 | TIME DUMP FINISHED | .dump_end_time +-------------------------------+ +D8 | UID OF CURRENT | .dump_cur_uid + + | ITEM BEING DUMPED | +---------------+---------------+ +E0 |# MINS FROM UTC| NAME OF ... | .utc_delta +---------------+---------------+ .timezone_name +E4 | ... TIMEZONE | LAST ... | .last_valid_time +---------------+---------------+ +E8 | ... VALID TIME| UNUSED | +---------------+---------------+ +EC | BAD SPOT BARRIER* | .bad_spot_barrier +-------------------------------+ +F0 | BAD SPOT LIST [60] | .bad_spot_list[60] +-------------------------------+ | - | / - / | - | +-------------------------------+ +3FC | BAD SPOT LIST [255] | +400 +-------------------------------+ salvage_mode: currently unused; always = 1 sys_shut_state: lv_dismounted = 0 lv_mounted = 1 lv_salvaged = 2 bad_spot_list allocated from end of list. * FFFFFFFF -> no badspot list overflow FFFFFFFE -> +F0 is DADDR of overflow block The LV label is the first block of a logical volume. The alternate LV label is a copy of the LV label and lives at or near the end of the logical volume. SYSTEM BOOT FILES ----------------- FILES REQUIRED DURING BOOT REQUESTING AGENT FILE ---------------- ---- prom /sysboot (records 2-b on track 0) (if DNx60 /saun/wcs.uc (microcode file) or DN5xx-T dcode.uc (instr. decode ram contents) spad.uc(DNx60 only)(scratchpad constants, temps) uload (program to load the above) sysboot /saun/aegis (aegis load file) /saun/salvol (only if salvage required) aegis [os paging file] (uncatalogued) // (uids found and saved by name_$init) / /com /sys/node_data /sys/peb_microcode or peb2_microcode(1) `node_data/boot_shell(2) (mapped by proc2_$init) shell /sys/apollo_logo(3) `node_data/startup_shell(3) (cmd file to override dflts) /sys/env (shell tells him what to run) env /lib/?* /sys/dm/dm "go" command or normal boot -or- /sys/boot "sh" or boot from sio line -or- /sys/spm/spm "spm" or normal boot on server node dm `node_data/dev/sio /sys/dm/fonts `node_data/startup[.19l,.color,.1280color,.1280bw](3) /sys/boot boot /registry/registry(4) (+ppo,account files pointed to) local_registry local_site/?* /com/sh NOTES: (1) PEB is disabled if microcode file not found. (2) If booted from cartridge tape, the tape is first searched for BSCOM/RBAK_SHELL. (3) Optional -- system will manage without it. (4) If no registries are available, you can login only as USER.NONE.NONE. --------------C4EC2ECDA0986679A5196030--