COHERENT manpages
This page displays the COHERENT manpage for mkfs [Make a new file system].
List of available manpages
Index
mkfs -- Command
Make a new file system
/etc/mkfs [-b boot] [-d] [-f name] [-i inodes] [-m arg] [-n arg] [-p pack] filesystem proto
mkfs makes a new file system. filesystem names the file (normally a block
special file) where the new file system will reside. The contents of the
newly created file system are described in proto. proto can be either a
number or a file name.
If proto is a number, mkfs creates an empty file system (containing only a
root directory) of the size in blocks given by proto. The number of i-nodes
is calculated as a percentage of this number. The command
/etc/mkfs /dev/fha0 2400
creates a file system on a high-density, 5.25-inch diskette in drive 0. If
the disk is a high-density, 3.5-inch diskette, use the command:
/etc/mkfs /dev/fva0 2880
If proto is a file name, however, the contents of that file will be used as
a prototype for modeling the new file system. This prototype file must be
laid out in the following manner:
bootstrap_file_name file_system_name device_name
no._of_blocks no._of_i-nodes n m
%b XX XX XX
...
directory_name
directory_name mode user_id group_id contents
...
$
$
Each line is described below.
The first line has three fields. Field 1, bootstrap_file_name, contains
the name of a file that holds the boot strap, which must fit into block 0
of the disk. Field 2, file_system_name, gives the name of the file system;
and field 3, device_name, gives the name of file system's physical device
(for example, /dev/hd1). Only the first six characters in field 2 and the
first 11 in field 3 are significant; all characters after them are ignored.
The second line contains four fields. Field 1, no._of_blocks, gives the
size of the file system in blocks; field 2, no_of_i-nodes, gives the number
of i-nodes in the file system. Because each file or directory requires one
i-node, this number represents the limit on the number of files that may be
created in the file system. A ratio of seven blocks per i-node generally
works well.
Fields 3 and 4 control free list interleaving on your disk. n is the size
of a ``virtual cylinder'': fsck allocates all the blocks on one virtual
cylinder before it advances to the next virtual cylinder. The value of n
must be less than or equal to 255, and should evenly divide the actual size
of a cylinder on the device. m tells the system how many blocks to skip
each time it increments a free list block number, i.e., the free list
``interleave''; n mod m must be zero. Choosing an optimal interleave value
may improve system performance for the device. The optimal values for n
and m are hardware-specific and can be determined by experimentation.
Next, the third line and following begin with %b. These list the bad
blocks on your storage device. One or more block numbers may appear on
each line, separated by white space. These blocks are allocated to the bad
block file (i-node 1).
The remaining lines in the proto file define the names, modes, and contents
of the directories and files in the file system. These lines are divided
into fields separated by white space (blanks or tabs) as follows:
-> The first field names the file or directory to be created. This field
is missing on the first line, which describes the root directory of the
file system.
-> The second field describes the mode of the file, which is six characters
long. The first character gives the file type, that is, whether the
file is ordinary (`-'), directory (`d'), block special (`b'), or
character special (`c'). The second character is `u' for set user id on
execution, and `-' otherwise. The third character is `g' for set group
id on execution, and `-' otherwise. Characters 4 through 6 specify
permissions in octal; for example, 644 specifies read and write
permission for the owner, read permission for other users from the same
group, and read permission for users from other groups.
If the above file type were a directory, subsequent files are
recursively defined under that directory, until the current level of
directory is terminated by a line containing a `$' character.
-> The next two fields specify the owner's numerical user id and group id.
-> The last field describes file contents. For a directory, it is not
needed. For an ordinary file, it is the name of a COHERENT file that
will be copied into the newly created file. For block or character-
special files, there are two fields that specify the numbers of the
major and minor devices.
Finally, each directory's description and the entire proto file must
terminate with dollar signs `$'.
The proto file need not contain all of the above fields. However, it must
contain the name of the boot block (line 1), the number of blocks and the
number of i-nodes (line 2), the list of bad blocks, the name of at least
one directory, and the dollar sign that ends the file.
Command-line Options
mkfs recognizes the following command-line options:
-b boot
Specifies the file to use as the ``bootstrap'' for the file system.
-d Preserve file dates and times on the new file system.
-f name
Label the file system with the given name. name must be less than seven
characters in length.
-i inodes
Use inodes as the number of inodes for the file system.
-m arg
Set the number of blocks to skip when incrementing virtual block number.
This is the same as the m option as set on line 2 of the prototype file.
You can use this option if you choose not to use a prototype file.
-n arg
Set the size of a ``virtual cylinder''. This is the same as the n
option as set on line 2 of the prototype file. You can use this option
if you choose not to use a prototype file.
-p pack
Set the file system ``pack name'' to pack. pack must be less than seven
characters in length.
Example
The following example specifies a proto file for a high-density, 5.25-inch
floppy disk; note that this floppy disk is faulty and contains a number of
bad blocks:
/conf/boot.fha
2400 100
%b 55
%b 185 86
d--755 3 1
coherent ---644 3 1 /coherent
tmp d--777 3 1
$
bin d--755 3 1
mail -u-755 0 1 /bin/mail
$
dev d--755 3 1
tty30 c--644 0 1 3 0
tty35 c--644 0 1 3 5
mt0 b--600 0 1 12 0
$
$
You can use the command badscan to draw up the list of bad blocks on your
disk and create a skeleton proto file.
See Also
badscan,
chmod,
commands,
fsck,
mount,
restor
Notes
When the command fsck checks a file system, it stores files that it cannot
decypher into directory lost+found. However, fsck cannot modify a file
system during its work. This rule was adopted to prevent fsck from
attempting to modify a corrupt file system, and so making matters worse.
However, this means that (among other things) fsck cannot change the size
of directory lost+found. Thus, if more files are detached from the file
system than lost+found can hold, fsck must delete them outright. If your
newly created file system will hold a large number of transient files
(e.g., a news system), you should increase the size of lost+found so that
it has a fighting chance of holding all detached files that fsck finds.
For example, the following script expands /lost+found so it can hold up to
500 files:
su root
for i in `from 1 to 500`
do
touch /lost+found/$i
done
rm /lost+found/*
Run this script for each file system whose lost+found directory you wish to
expand. For example, if you have a file system mount on directory /u, run
this script for directory /u/lost+found instead of for /lost+found.

















