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.