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 \
|
less loadkeys loadramdisk logger look lp \
|
||||||
lpd ls lspci mail MAKEDEV \
|
lpd ls lspci mail MAKEDEV \
|
||||||
mesg mined mkfifo \
|
mesg mined mkfifo \
|
||||||
mkproto mount mt netconf nice acknm nohup \
|
mount mt netconf nice acknm nohup \
|
||||||
nonamed od paste patch \
|
nonamed od paste patch \
|
||||||
ping postinstall poweroff pr prep printf printroot \
|
ping postinstall poweroff pr prep printf printroot \
|
||||||
profile progressbar pr_routes ps pwd pwdauth \
|
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 \
|
install.1 isodir.1 isoinfo.1 isoread.1 join.1 kill.1 \
|
||||||
last.1 loadfont.1 loadkeys.1 logger.1 \
|
last.1 loadfont.1 loadkeys.1 logger.1 \
|
||||||
look.1 lp.1 ls.1 lspci.1 mail.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 \
|
mkproto.1 mount.1 mt.1 nice.1 nm.1 nohup.1 od.1 \
|
||||||
paste.1 ping.1 playwave.1 pr.1 prep.1 \
|
paste.1 ping.1 playwave.1 pr.1 prep.1 \
|
||||||
profile.1 ps.1 pwd.1 rcp.1 recwave.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
|
zic
|
||||||
|
|
||||||
# LSC MINIX Specific
|
# LSC MINIX Specific
|
||||||
SUBDIR+= mkfs.mfs
|
SUBDIR+= mkfs.mfs \
|
||||||
|
mkproto
|
||||||
|
|
||||||
.include <bsd.subdir.mk>
|
.include <bsd.subdir.mk>
|
||||||
|
|
|
@ -92,6 +92,7 @@ block_t zone_map; /* where is zone map? (depends on # inodes) */
|
||||||
int inodes_per_block;
|
int inodes_per_block;
|
||||||
int fs_version;
|
int fs_version;
|
||||||
size_t block_size;
|
size_t block_size;
|
||||||
|
int extra_space_percent;
|
||||||
|
|
||||||
FILE *proto;
|
FILE *proto;
|
||||||
|
|
||||||
|
@ -178,7 +179,8 @@ char *argv[];
|
||||||
fs_version = 3;
|
fs_version = 3;
|
||||||
inodes_per_block = 0;
|
inodes_per_block = 0;
|
||||||
block_size = 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) {
|
switch (ch) {
|
||||||
case '1':
|
case '1':
|
||||||
fs_version = 1;
|
fs_version = 1;
|
||||||
|
@ -201,11 +203,17 @@ char *argv[];
|
||||||
case 'o': override = 1; break;
|
case 'o': override = 1; break;
|
||||||
case 't': donttest = 1; break;
|
case 't': donttest = 1; break;
|
||||||
case 'B': block_size = atoi(optarg); break;
|
case 'B': block_size = atoi(optarg); break;
|
||||||
|
case 'x': extra_space_percent = atoi(optarg); break;
|
||||||
default: usage();
|
default: usage();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc == optind) 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(fs_version == 3) {
|
||||||
if(!block_size) block_size = _MAX_BLOCK_SIZE; /* V3 default block size */
|
if(!block_size) block_size = _MAX_BLOCK_SIZE; /* V3 default block size */
|
||||||
if(block_size%SECTOR_SIZE || block_size < _MIN_BLOCK_SIZE) {
|
if(block_size%SECTOR_SIZE || block_size < _MIN_BLOCK_SIZE) {
|
||||||
|
@ -283,10 +291,16 @@ char *argv[];
|
||||||
usrid = atoi(token[1]);
|
usrid = atoi(token[1]);
|
||||||
grpid = atoi(token[2]);
|
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();
|
detect_fs_size();
|
||||||
blocks = blockcount;
|
blocks = blockcount + extrablocks;
|
||||||
inodes = inocount;
|
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,
|
printf("dynamically sized filesystem: %d blocks, %d inodes\n", blocks,
|
||||||
(unsigned int) inodes);
|
(unsigned int) inodes);
|
||||||
}
|
}
|
||||||
|
@ -699,7 +713,6 @@ ino_t parent;
|
||||||
mode = mode_con(p);
|
mode = mode_con(p);
|
||||||
usrid = atoi(token[2]);
|
usrid = atoi(token[2]);
|
||||||
grpid = atoi(token[3]);
|
grpid = atoi(token[3]);
|
||||||
if (grpid & 0200) fprintf(stderr, "A.S.Tanenbaum\n");
|
|
||||||
n = alloc_inode(mode, usrid, grpid);
|
n = alloc_inode(mode, usrid, grpid);
|
||||||
|
|
||||||
/* Enter name in directory and update directory's size. */
|
/* Enter name in directory and update directory's size. */
|
||||||
|
@ -1487,7 +1500,8 @@ block_t n;
|
||||||
void usage()
|
void usage()
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
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);
|
progname);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue