mkfs, mkproto: minor improvements
. mkfs: -x feature for extra space . rename manpage to mkfs.mfs.1 to follow the binary . move mkproto so it can become part of the tools easily
This commit is contained in:
parent
62aac7f191
commit
cf6fa5ad92
8 changed files with 144 additions and 9 deletions
|
@ -16,7 +16,7 @@ SUBDIR= add_route arp ash at backup banner basename btrace cal \
|
|||
less loadkeys loadramdisk logger look lp \
|
||||
lpd ls lspci mail MAKEDEV \
|
||||
mesg mined mkfifo \
|
||||
mkproto mount mt netconf nice acknm nohup \
|
||||
mount mt netconf nice acknm nohup \
|
||||
nonamed od paste patch \
|
||||
ping postinstall poweroff pr prep printf printroot \
|
||||
profile progressbar pr_routes ps pwd pwdauth \
|
||||
|
|
|
@ -10,7 +10,7 @@ MAN= ash.1 at.1 banner.1 basename.1 \
|
|||
install.1 isodir.1 isoinfo.1 isoread.1 join.1 kill.1 \
|
||||
last.1 loadfont.1 loadkeys.1 logger.1 \
|
||||
look.1 lp.1 ls.1 lspci.1 mail.1 \
|
||||
mesg.1 mixer.1 mkfs.1 \
|
||||
mesg.1 mixer.1 mkfs.mfs.1 \
|
||||
mkproto.1 mount.1 mt.1 nice.1 nm.1 nohup.1 od.1 \
|
||||
paste.1 ping.1 playwave.1 pr.1 prep.1 \
|
||||
profile.1 ps.1 pwd.1 rcp.1 recwave.1 \
|
||||
|
|
113
man/man1/mkfs.mfs.1
Normal file
113
man/man1/mkfs.mfs.1
Normal file
|
@ -0,0 +1,113 @@
|
|||
.TH MKFS 1
|
||||
.SH NAME
|
||||
mkfs \- make a file system
|
||||
.SH SYNOPSIS
|
||||
\fBmkfs \fR[\fB\-Ldot\fR] [\fB\-B \fIblocksize\fR] [\fB\-i \fIinodes\fR] [\fB\-b \fIblocks\fR] \fIspecial \fIprototype\fR
|
||||
.br
|
||||
.de FL
|
||||
.TP
|
||||
\\fB\\$1\\fR
|
||||
\\$2
|
||||
..
|
||||
.de EX
|
||||
.TP 20
|
||||
\\fB\\$1\\fR
|
||||
# \\$2
|
||||
..
|
||||
.SH OPTIONS
|
||||
.TP 5
|
||||
.B \-L
|
||||
# Make a listing on standard output
|
||||
.TP 5
|
||||
.B \-d
|
||||
# Use mod time of \fImkfs\fR binary for all files
|
||||
.TP 5
|
||||
.B \-o
|
||||
# Use a drive other than 0 or 1 (safety precaution)
|
||||
.TP 5
|
||||
.B \-t
|
||||
# Do not test if file system fits on the medium
|
||||
.TP 5
|
||||
.B \-1
|
||||
# Make a version 1 file system (for backward compatibility)
|
||||
.TP 5
|
||||
.B \-i
|
||||
# Number of i-nodes (files)
|
||||
.TP 5
|
||||
.B \-B
|
||||
# Filesystem block size (in bytes)
|
||||
.TP 5
|
||||
.B \-b
|
||||
# Filesystem size (in blocks)
|
||||
.TP 5
|
||||
.B \-x
|
||||
# Extra space after dynamic sizing (blocks and inodes)
|
||||
.SH EXAMPLES
|
||||
.TP 20
|
||||
.B mkfs /dev/fd1 proto
|
||||
# Make a file system on \fI/dev/fd1\fR
|
||||
.TP 20
|
||||
.B mkfs -b 360 /dev/fd1
|
||||
# Make empty 360 block file system
|
||||
.TP 20
|
||||
.B mkfs /dev/fd1 360
|
||||
# Alternate way to specify the size
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
.I Mkfs
|
||||
builds a file system and copies specified files to it.
|
||||
The prototype file tells which directories and files to copy to it.
|
||||
If the prototype file cannot be opened, and its name is just a string of
|
||||
digits, an empty file system will be made with the specified number of
|
||||
blocks.
|
||||
A sample prototype file follows.
|
||||
The text following the \fI#\fR sign in the example below is comment.
|
||||
In real prototype files, comments are not allowed.
|
||||
.PP
|
||||
.nf
|
||||
.ta 0.20i 0.70i 1.10i 3i 3.5i 4i
|
||||
boot # boot block file (ignored)
|
||||
360 63 # blocks and i-nodes
|
||||
d--755 1 1 # root directory
|
||||
bin d--755 \|2 1 # bin dir: mode (755), uid (2), gid (1)
|
||||
sh \|---755 2 1 /user/bin/shell # shell has mode \fIrwxr-xr-x\fP
|
||||
mv -u-755 2 1 /user/bin/mv # u = SETUID bit
|
||||
login -ug755 2 1 /user/bin/login # SETUID and SETGID
|
||||
$ # end of \fI/bin\fP
|
||||
dev d--755 2 1 # special files: tty (char), fd0 (block)
|
||||
tty c--777 2 1 4 0 # uid=2, gid=1, major=4, minor=0
|
||||
fd0 b--644 2 1 2 0 360 # uid, gid, major, minor, blocks
|
||||
$ # end of \fI/dev\fP
|
||||
user d--755 12 1 # user dir: mode (755), uid (12), gid (1)
|
||||
ast d--755 12 1 # \fI/user/ast\fP
|
||||
$ # \fI/user/ast\fP is empty
|
||||
$ # end of \fI/user\fP
|
||||
$ # end of root directory
|
||||
.PP
|
||||
.fi
|
||||
The first entry on each line (except the first 3 and the $ lines, which
|
||||
terminate directories) is the name the file or directory will get on the
|
||||
new file system.
|
||||
Next comes its mode, with the first character being
|
||||
\fB\-dbc\fR for regular files, directories, block special files and character
|
||||
special files, respectively.
|
||||
The next two characters are used to specify the SETUID and SETGID bits, as
|
||||
shown above.
|
||||
The last three characters of the mode are the
|
||||
.I rwx
|
||||
protection bits.
|
||||
.PP
|
||||
Following the mode are the uid and gid.
|
||||
For special files, the major and minor devices are needed.
|
||||
.PP
|
||||
The maximum size of a file system is 1 Gb for a version 2 file system,
|
||||
and 64 Mb for a version 1 file system. Alas the 8086
|
||||
.I fsck
|
||||
runs out of memory on a V2 file system larger than 128 Mb, so for the 8086
|
||||
version of
|
||||
\s-1MINIX 3\s-1
|
||||
you have to limit yourself to file systems of that size.
|
||||
.SH "SEE ALSO"
|
||||
.BR mkproto (1),
|
||||
.BR fsck (1),
|
||||
.BR mount (1).
|
7
tools/mkproto/Makefile
Normal file
7
tools/mkproto/Makefile
Normal file
|
@ -0,0 +1,7 @@
|
|||
|
||||
HOSTPROGNAME= ${_TOOL_PREFIX}mkproto
|
||||
HOST_SRCDIR= usr.sbin/mkproto
|
||||
#CPPFLAGS+= -I${.CURDIR}/../compat/sys
|
||||
|
||||
LDADD= #defined
|
||||
.include "${.CURDIR}/../Makefile.host"
|
|
@ -14,6 +14,7 @@ SUBDIR= \
|
|||
zic
|
||||
|
||||
# LSC MINIX Specific
|
||||
SUBDIR+= mkfs.mfs
|
||||
SUBDIR+= mkfs.mfs \
|
||||
mkproto
|
||||
|
||||
.include <bsd.subdir.mk>
|
||||
|
|
|
@ -92,6 +92,7 @@ block_t zone_map; /* where is zone map? (depends on # inodes) */
|
|||
int inodes_per_block;
|
||||
int fs_version;
|
||||
size_t block_size;
|
||||
int extra_space_percent;
|
||||
|
||||
FILE *proto;
|
||||
|
||||
|
@ -178,7 +179,8 @@ char *argv[];
|
|||
fs_version = 3;
|
||||
inodes_per_block = 0;
|
||||
block_size = 0;
|
||||
while ((ch = getopt(argc, argv, "12b:di:lotB:")) != EOF)
|
||||
extra_space_percent = 0;
|
||||
while ((ch = getopt(argc, argv, "12b:di:lotB:x:")) != EOF)
|
||||
switch (ch) {
|
||||
case '1':
|
||||
fs_version = 1;
|
||||
|
@ -201,11 +203,17 @@ char *argv[];
|
|||
case 'o': override = 1; break;
|
||||
case 't': donttest = 1; break;
|
||||
case 'B': block_size = atoi(optarg); break;
|
||||
case 'x': extra_space_percent = atoi(optarg); break;
|
||||
default: usage();
|
||||
}
|
||||
|
||||
if (argc == optind) usage();
|
||||
|
||||
/* Percentage of extra size must be nonnegative.
|
||||
* It can legitimately be bigger than 100 but has to make some sort of sense.
|
||||
*/
|
||||
if(extra_space_percent < 0 || extra_space_percent > 2000) usage();
|
||||
|
||||
if(fs_version == 3) {
|
||||
if(!block_size) block_size = _MAX_BLOCK_SIZE; /* V3 default block size */
|
||||
if(block_size%SECTOR_SIZE || block_size < _MIN_BLOCK_SIZE) {
|
||||
|
@ -283,10 +291,16 @@ char *argv[];
|
|||
usrid = atoi(token[1]);
|
||||
grpid = atoi(token[2]);
|
||||
|
||||
if(blocks == 0 && inodes == 0){
|
||||
if(blocks <= 0 && inodes <= 0){
|
||||
block_t extrablocks = 0;
|
||||
ino_t extrainodes = 0;
|
||||
if(blocks < 0) extrablocks = -blocks;
|
||||
if(inodes < 0) extrainodes = -inodes;
|
||||
detect_fs_size();
|
||||
blocks = blockcount;
|
||||
inodes = inocount;
|
||||
blocks = blockcount + extrablocks;
|
||||
inodes = inocount + extrainodes;
|
||||
blocks += blocks*extra_space_percent/100;
|
||||
inodes += inodes*extra_space_percent/100;
|
||||
printf("dynamically sized filesystem: %d blocks, %d inodes\n", blocks,
|
||||
(unsigned int) inodes);
|
||||
}
|
||||
|
@ -699,7 +713,6 @@ ino_t parent;
|
|||
mode = mode_con(p);
|
||||
usrid = atoi(token[2]);
|
||||
grpid = atoi(token[3]);
|
||||
if (grpid & 0200) fprintf(stderr, "A.S.Tanenbaum\n");
|
||||
n = alloc_inode(mode, usrid, grpid);
|
||||
|
||||
/* Enter name in directory and update directory's size. */
|
||||
|
@ -1487,7 +1500,8 @@ block_t n;
|
|||
void usage()
|
||||
{
|
||||
fprintf(stderr,
|
||||
"Usage: %s [-12dlot] [-b blocks] [-i inodes] [-B blocksize] special [proto]\n",
|
||||
"Usage: %s [-12dlot] [-b blocks] [-i inodes]\n"
|
||||
"\t[-x extra] [-B blocksize] special [proto]\n",
|
||||
progname);
|
||||
exit(1);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue