CapROS home
Kernel Development Guide

mkvol Reference



mkvol -- make new CapROS volume


mkvol [-b bootstrap_image] [-k kernel_image] volmap volume


The mkvol creates a new CapROS volume and formats the divisions on that volume. It optionally places a bootstrap image and kernel image on that volume at format time. Either can be altered with the setvol utility at a later time.

The volume can be, for example, a partition on a hard disk, a floppy disk, or a normal file that is later copied to a partition or disk.

Most of the input to mkvol comes from the volmap file, which describes the layout of the volume to be created. Entries in the volmap file appear one per line. All characters on a line following a '#' character are treated as comments.

Each line in the volmap file describes a division to be added to the volume, or an attribute to be set in the volume header. A single volume may contain up to 64 divisions.

Spare divisions are not used by CapROS, because both (E)IDE and SCSI drive technologies provide automatic sector remapping.

kernel size OID=oid

Add a kernel division to the volume, where size is the length of the division in pages. oid is the starting object identifier for the division, which will be used for later update from within CapROS. At most one kernel division can be present per volume.

By convention, the kernel devision OID is 0xFFFF00000000, and all OIDs in the range 0FFFF00000000 through 0xFFFFFFFFFFFF are reserved for future use by the implementation.

object size OID=oid

Add a division that will contain objects, where size is the length of the division in pages and oid is the starting object identifier for this division. The division will be initialized to contain as many zero-filled Pages as the division will hold, and the zero attribute is set for these pages in the associated allocation pots. All on-disk pages will actually be zeroed to improve compression.

If multiple object divisions are added, their oid numbering need not be consecutive. Object divisions can be replicated.

cklog size LID=logloc

Add a division for use in checkpointing, where that will contain objects, where size is the length of the division in pages and logloc is the starting log frame number for this division. All log frames will be zeroed to improve compression.

If multiple log divisions are added, their collected log locations must not contain numbering holes. Log divisions can be replicated.


Add a division containing a division table. The first division table added will be listed in the volume header as the primary division table. The second added (if any) will be listed as the secondary division table.

All division tables are one page

There is no provision for explicitly adding a boot division. Because the volume header resides in the boot division, the presence of a boot division is not optional. The first division is always the boot division.

The second division is always the DivisionTable division.

There is no provision for specifying the name of the bootstrap image file within the volmap file, because the approprite binary for the bootstrap image is media-dependent.

A random, hopefully unique, iplSysId is written. There is no provision for specifying the iplSysId. If you want to format a disk to add to an existing system, use lsvol on the existing boot volume to determine the desired iplSysId, use mkvol to format the new disk, and then use setvol to set the iplSysId of the new disk.


SourceForge.net Logo Copyright 1998 by Jonathan Shapiro, 2005, 2008 by Strawberry Development Group. All rights reserved. For terms of redistribution, see the GNU General Public License This material is based upon work supported by the US Defense Advanced Research Projects Agency under Contract No. W31P4Q-07-C-0070. Approved for public release, distribution unlimited.