mkfs.mfs: various programs
Split in as many programs as needed to support various variants of MFS
This commit is contained in:
parent
87c0f0dfbd
commit
b8f1fb33dd
|
|
@ -1,4 +1,4 @@
|
|||
HOSTPROGNAME= ${_TOOL_PREFIX}mkfs.mfs
|
||||
HOST_SRCDIR= usr.sbin/mkfs.mfs
|
||||
HOST_SRCDIR= usr.sbin/mkfs.mfs/v3
|
||||
|
||||
.include "${.CURDIR}/../Makefile.host"
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
PROG= mkfs.mfs
|
||||
SRCS= mkfs.c
|
||||
BINDIR= /sbin
|
||||
MAN=
|
||||
|
||||
.if ${HOST_OSTYPE:C/\-.*//:U} == "Minix" || !defined(HOSTPROGNAME)
|
||||
LDADD+= -lminlib -lcompat_minix
|
||||
SUBDIR= v3
|
||||
.if !defined(HOSTPROGNAME)
|
||||
#SUBDIR+= v1 v2 # Original V1 and V2 file systems
|
||||
#SUBDIR+= v1l v2l # Linux-extended variants
|
||||
#SUBDIR+= mfs3v2 # V2 as handled by regular MINIX 3.x; hacky
|
||||
.endif
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
.include <bsd.subdir.mk>
|
||||
|
|
|
|||
17
usr.sbin/mkfs.mfs/Makefile.mkfs
Normal file
17
usr.sbin/mkfs.mfs/Makefile.mkfs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
SRCS= mkfs.c
|
||||
BINDIR?= /usr/sbin
|
||||
MAN?=
|
||||
|
||||
.include <bsd.own.mk>
|
||||
.include "${.PARSEDIR}/../Makefile.inc"
|
||||
|
||||
.PATH: ${.CURDIR}/..
|
||||
|
||||
CPPFLAGS+= -I${.CURDIR}
|
||||
|
||||
.if ${HOST_OSTYPE:C/\-.*//:U} == "Minix" || !defined(HOSTPROGNAME)
|
||||
#DPADD
|
||||
LDADD+= -lminlib -lcompat_minix
|
||||
.endif
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
3
usr.sbin/mkfs.mfs/mfs3v2/Makefile
Normal file
3
usr.sbin/mkfs.mfs/mfs3v2/Makefile
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
PROG= mkfs.mfs3v2
|
||||
|
||||
.include <../Makefile.mkfs>
|
||||
15
usr.sbin/mkfs.mfs/mfs3v2/const.h
Normal file
15
usr.sbin/mkfs.mfs/mfs3v2/const.h
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
/* "V2" minixFS as handled by MINIX 3.x
|
||||
*
|
||||
* The difference with the normal V2 file systems is due to the use of
|
||||
* the V3 declaration for the super block (struct super) and the directory
|
||||
* entries (struct direct); this allows to use more than 65,535 inodes
|
||||
* and filenames of up to 60 characters.
|
||||
* A normal MINIX 2.0.x installation cannot read these file systems.
|
||||
*
|
||||
* The differences with a V3 file system with a block-size of 1024 are
|
||||
* limited to the use of a different magic number, since the inodes
|
||||
* have the same layout in both V2 and V3 file systems.
|
||||
*/
|
||||
|
||||
/* Constants; unchanged from regular V2... */
|
||||
#include "../v2/const.h"
|
||||
2
usr.sbin/mkfs.mfs/mfs3v2/mfsdir.h
Normal file
2
usr.sbin/mkfs.mfs/mfs3v2/mfsdir.h
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
/* Directory entry structure; unchanged from V3 */
|
||||
#include "../v3/mfsdir.h"
|
||||
2
usr.sbin/mkfs.mfs/mfs3v2/super.h
Normal file
2
usr.sbin/mkfs.mfs/mfs3v2/super.h
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
/* Super block; unchanged from regular V3 */
|
||||
#include "../v3/super.h"
|
||||
2
usr.sbin/mkfs.mfs/mfs3v2/type.h
Normal file
2
usr.sbin/mkfs.mfs/mfs3v2/type.h
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
/* Inode structure; unchanged from regular V2; V3 is identical anyway */
|
||||
#include "../v2/type.h"
|
||||
3
usr.sbin/mkfs.mfs/v1/Makefile
Normal file
3
usr.sbin/mkfs.mfs/v1/Makefile
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
PROG= mkfs.mfsv1
|
||||
|
||||
.include <../Makefile.mkfs>
|
||||
49
usr.sbin/mkfs.mfs/v1/const.h
Normal file
49
usr.sbin/mkfs.mfs/v1/const.h
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
#ifndef _MKFS_MFS_CONST_H__
|
||||
#define _MKFS_MFS_CONST_H__
|
||||
|
||||
/* Tables sizes */
|
||||
#define NR_DZONES 7 /* # direct zone numbers in a V1 inode */
|
||||
#define NR_TZONES 9 /* total # zone numbers in a V1 inode */
|
||||
|
||||
/* V1 file systems are special in that zone numbers are only 16-bit */
|
||||
#define zone_t uint16_t
|
||||
|
||||
/* Blocks are of a fixed size */
|
||||
#define MFS_STATIC_BLOCK_SIZE 1024
|
||||
|
||||
#define SUPER_BLOCK_BYTES MFS_STATIC_BLOCK_SIZE /* 1 block */
|
||||
|
||||
/* The type of sizeof may be (unsigned) long. Use the following macro for
|
||||
* taking the sizes of small objects so that there are no surprises like
|
||||
* (small) long constants being passed to routines expecting an int.
|
||||
*/
|
||||
#define usizeof(t) ((unsigned) sizeof(t))
|
||||
|
||||
/* File system types: magic number contained in super-block. */
|
||||
#define SUPER_V1 0x137F /* magic # for V1 file systems */
|
||||
#define SUPER_MAGIC SUPER_V1
|
||||
|
||||
/* Miscellaneous constants */
|
||||
#define SU_UID ((uid_t) 0) /* super_user's uid_t */
|
||||
#define SECTOR_SIZE 512
|
||||
|
||||
#define BOOT_BLOCK ((block_t) 0) /* block number of boot block */
|
||||
#define SUPER_BLOCK ((block_t) 1) /* block number of super block */
|
||||
#define START_BLOCK ((block_t) 2) /* first block of FS (not counting SB) */
|
||||
|
||||
#define ROOT_INODE ((ino_t) 1) /* inode number for root directory */
|
||||
|
||||
/* Derived sizes pertaining to the file system. */
|
||||
#define FS_BITMAP_CHUNKS(b) ((b)/usizeof(bitchunk_t)) /*# map chunks/blk*/
|
||||
#define FS_BITCHUNK_BITS (usizeof(bitchunk_t) * CHAR_BIT)
|
||||
#define FS_BITS_PER_BLOCK(b) (FS_BITMAP_CHUNKS(b) * FS_BITCHUNK_BITS)
|
||||
|
||||
#define ZONE_NUM_SIZE usizeof (zone_t) /* # bytes in zone */
|
||||
#define INODE_SIZE usizeof (struct inode) /* bytes in dsk ino */
|
||||
#define INODES_PER_BLOCK(b) ((b)/INODE_SIZE) /* # V2 dsk inodes/blk */
|
||||
#define INDIRECTS(b) ((b)/ZONE_NUM_SIZE) /* # zones/indir block */
|
||||
|
||||
#define DIR_ENTRY_SIZE usizeof(struct direct) /* # bytes/dir entry */
|
||||
#define NR_DIR_ENTRIES(b) ((b)/DIR_ENTRY_SIZE) /* # dir entries/blk */
|
||||
|
||||
#endif
|
||||
12
usr.sbin/mkfs.mfs/v1/mfsdir.h
Normal file
12
usr.sbin/mkfs.mfs/v1/mfsdir.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#ifndef _MKFS_MFSDIR_H
|
||||
#define _MKFS_MFSDIR_H
|
||||
|
||||
/* Minix MFS V1/V2 on-disk directory filename. */
|
||||
#define MFS_DIRSIZ 14
|
||||
|
||||
struct direct {
|
||||
uint16_t d_ino;
|
||||
char d_name[MFS_DIRSIZ];
|
||||
} __packed;
|
||||
|
||||
#endif /* _MKFS_MFSDIR_H */
|
||||
39
usr.sbin/mkfs.mfs/v1/super.h
Normal file
39
usr.sbin/mkfs.mfs/v1/super.h
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
#ifndef _MKFS_MFS_SUPER_H__
|
||||
#define _MKFS_MFS_SUPER_H__
|
||||
|
||||
/* Super block table. The entry holds information about the sizes of the bit
|
||||
* maps and inodes. The s_ninodes field gives the number of inodes available
|
||||
* for files and directories, including the root directory. Inode 0 is
|
||||
* on the disk, but not used. Thus s_ninodes = 4 means that 5 bits will be
|
||||
* used in the bit map, bit 0, which is always 1 and not used, and bits 1-4
|
||||
* for files and directories. The disk layout is:
|
||||
*
|
||||
* Item # blocks
|
||||
* boot block 1
|
||||
* super block 1
|
||||
* inode map s_imap_blocks
|
||||
* zone map s_zmap_blocks
|
||||
* inodes (s_ninodes + 'inodes per block' - 1)/'inodes per block'
|
||||
* unused whatever is needed to fill out the current zone
|
||||
* data zones (s_zones - s_firstdatazone) << s_log_zone_size
|
||||
*/
|
||||
|
||||
struct super_block {
|
||||
uint16_t s_ninodes; /* # usable inodes on the minor device */
|
||||
uint16_t s_nzones; /* total device size, including bit maps etc */
|
||||
int16_t s_imap_blocks; /* # of blocks used by inode bit map */
|
||||
int16_t s_zmap_blocks; /* # of blocks used by zone bit map */
|
||||
uint16_t s_firstdatazone; /* number of first data zone (small) */
|
||||
int16_t s_log_zone_size; /* log2 of blocks/zone */
|
||||
uint32_t s_max_size; /* maximum file size on this device */
|
||||
int16_t s_magic; /* magic number to recognize super-blocks */
|
||||
} superblock;
|
||||
|
||||
/* Some members have been overidden in later versions: */
|
||||
#define s_firstdatazone_old s_firstdatazone
|
||||
#define s_zones s_nzones
|
||||
|
||||
#undef MFSFLAG_CLEAN
|
||||
#undef MFSFLAG_MANDATORY_MASK
|
||||
|
||||
#endif
|
||||
18
usr.sbin/mkfs.mfs/v1/type.h
Normal file
18
usr.sbin/mkfs.mfs/v1/type.h
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
#ifndef _MKFS_MFS_TYPE_H__
|
||||
#define _MKFS_MFS_TYPE_H__
|
||||
|
||||
/* Declaration of the V1 inode as it is on the disk (not in core). */
|
||||
struct inode { /* V1 disk inode */
|
||||
uint16_t i_mode; /* file type, protection, etc. */
|
||||
uint16_t i_uid; /* user id of the file's owner. */
|
||||
uint32_t i_size; /* current file size in bytes */
|
||||
uint32_t i_mtime; /* when was file data last changed */
|
||||
uint8_t i_gid; /* group number */
|
||||
uint8_t i_nlinks; /* how many links to this file. */
|
||||
uint16_t i_zone[NR_TZONES]; /* zone nums for direct, ind, and dbl ind */
|
||||
};
|
||||
|
||||
/* Note: in V1 there was only one kind of timestamp kept in inodes! */
|
||||
#define MFS_INODE_ONLY_MTIME
|
||||
|
||||
#endif
|
||||
3
usr.sbin/mkfs.mfs/v1l/Makefile
Normal file
3
usr.sbin/mkfs.mfs/v1l/Makefile
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
PROG= mkfs.mfsv1l
|
||||
|
||||
.include <../Makefile.mkfs>
|
||||
13
usr.sbin/mkfs.mfs/v1l/const.h
Normal file
13
usr.sbin/mkfs.mfs/v1l/const.h
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/* Extended V1 minixFS as defined by Linux
|
||||
* The difference with the normal V1 file systems as used on MINIX are the
|
||||
* size of the file names in the directoru entries, which are extended
|
||||
* to 30 characters (instead of 14.)
|
||||
*/
|
||||
|
||||
/* Constants; unchanged from regular V1... */
|
||||
#include "../v1/const.h"
|
||||
|
||||
/* ... except for magic number contained in super-block: */
|
||||
#define SUPER_V1L 0x138F /* magic # for "Linux" extended V1 minixFS */
|
||||
#undef SUPER_MAGIC
|
||||
#define SUPER_MAGIC SUPER_V1L
|
||||
12
usr.sbin/mkfs.mfs/v1l/mfsdir.h
Normal file
12
usr.sbin/mkfs.mfs/v1l/mfsdir.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#ifndef _MKFS_MFSDIR_H
|
||||
#define _MKFS_MFSDIR_H
|
||||
|
||||
/* Linux-extended Minix MFS V1/V2 on-disk directory entry. */
|
||||
#define MFS_DIRSIZ 30
|
||||
|
||||
struct direct {
|
||||
uint16_t d_ino;
|
||||
char d_name[MFS_DIRSIZ];
|
||||
} __packed;
|
||||
|
||||
#endif /* _MKFS_MFSDIR_H */
|
||||
2
usr.sbin/mkfs.mfs/v1l/super.h
Normal file
2
usr.sbin/mkfs.mfs/v1l/super.h
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
/* Super block; unchanged from regular V1 */
|
||||
#include "../v1/super.h"
|
||||
2
usr.sbin/mkfs.mfs/v1l/type.h
Normal file
2
usr.sbin/mkfs.mfs/v1l/type.h
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
/* Inode structure; unchanged from regular V1 */
|
||||
#include "../v1/type.h"
|
||||
3
usr.sbin/mkfs.mfs/v2/Makefile
Normal file
3
usr.sbin/mkfs.mfs/v2/Makefile
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
PROG= mkfs.mfsv2
|
||||
|
||||
.include <../Makefile.mkfs>
|
||||
45
usr.sbin/mkfs.mfs/v2/const.h
Normal file
45
usr.sbin/mkfs.mfs/v2/const.h
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#ifndef _MKFS_MFS_CONST_H__
|
||||
#define _MKFS_MFS_CONST_H__
|
||||
|
||||
/* Tables sizes */
|
||||
#define NR_DZONES 7 /* # direct zone numbers in a V2 inode */
|
||||
#define NR_TZONES 10 /* total # zone numbers in a V2 inode */
|
||||
|
||||
/* Blocks are of a fixed size */
|
||||
#define MFS_STATIC_BLOCK_SIZE 1024
|
||||
|
||||
#define SUPER_BLOCK_BYTES MFS_STATIC_BLOCK_SIZE /* 1 block */
|
||||
|
||||
/* The type of sizeof may be (unsigned) long. Use the following macro for
|
||||
* taking the sizes of small objects so that there are no surprises like
|
||||
* (small) long constants being passed to routines expecting an int.
|
||||
*/
|
||||
#define usizeof(t) ((unsigned) sizeof(t))
|
||||
|
||||
/* File system types: magic number contained in super-block. */
|
||||
#define SUPER_V2 0x2468 /* magic # for V2 file systems */
|
||||
#define SUPER_MAGIC SUPER_V2
|
||||
|
||||
/* Miscellaneous constants */
|
||||
#define SU_UID ((uid_t) 0) /* super_user's uid_t */
|
||||
#define SECTOR_SIZE 512
|
||||
|
||||
#define BOOT_BLOCK ((block_t) 0) /* block number of boot block */
|
||||
#define SUPER_BLOCK ((block_t) 1) /* block number of super block */
|
||||
#define START_BLOCK ((block_t) 2) /* first block of FS (not counting SB) */
|
||||
|
||||
#define ROOT_INODE ((ino_t) 1) /* inode number for root directory */
|
||||
|
||||
/* Derived sizes pertaining to the file system. */
|
||||
#define FS_BITMAP_CHUNKS(b) ((b)/usizeof (uint32_t))/* # map chunks/blk */
|
||||
#define FS_BITCHUNK_BITS (usizeof(uint32_t) * CHAR_BIT)
|
||||
#define FS_BITS_PER_BLOCK(b) (FS_BITMAP_CHUNKS(b) * FS_BITCHUNK_BITS)
|
||||
|
||||
#define ZONE_NUM_SIZE usizeof (zone_t) /* # bytes in zone */
|
||||
#define INODE_SIZE usizeof (struct inode) /* bytes in dsk ino */
|
||||
#define INODES_PER_BLOCK(b) ((b)/INODE_SIZE) /* # V2 dsk inodes/blk */
|
||||
#define INDIRECTS(b) ((b)/ZONE_NUM_SIZE) /* # zones/indir block */
|
||||
|
||||
#define DIR_ENTRY_SIZE usizeof(struct direct) /* # bytes/dir entry */
|
||||
#define NR_DIR_ENTRIES(b) ((b)/DIR_ENTRY_SIZE) /* # dir entries/blk */
|
||||
#endif
|
||||
12
usr.sbin/mkfs.mfs/v2/mfsdir.h
Normal file
12
usr.sbin/mkfs.mfs/v2/mfsdir.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#ifndef _MKFS_MFSDIR_H
|
||||
#define _MKFS_MFSDIR_H
|
||||
|
||||
/* Minix MFS V1/V2 on-disk directory filename. */
|
||||
#define MFS_DIRSIZ 14
|
||||
|
||||
struct direct {
|
||||
uint16_t d_ino;
|
||||
char d_name[MFS_DIRSIZ];
|
||||
} __packed;
|
||||
|
||||
#endif /* _MKFS_MFSDIR_H */
|
||||
39
usr.sbin/mkfs.mfs/v2/super.h
Normal file
39
usr.sbin/mkfs.mfs/v2/super.h
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
#ifndef _MKFS_MFS_SUPER_H__
|
||||
#define _MKFS_MFS_SUPER_H__
|
||||
|
||||
/* Super block table. The entry holds information about the sizes of the bit
|
||||
* maps and inodes. The s_ninodes field gives the number of inodes available
|
||||
* for files and directories, including the root directory. Inode 0 is
|
||||
* on the disk, but not used. Thus s_ninodes = 4 means that 5 bits will be
|
||||
* used in the bit map, bit 0, which is always 1 and not used, and bits 1-4
|
||||
* for files and directories. The disk layout is:
|
||||
*
|
||||
* Item # blocks
|
||||
* boot block 1
|
||||
* super block 1
|
||||
* inode map s_imap_blocks
|
||||
* zone map s_zmap_blocks
|
||||
* inodes (s_ninodes + 'inodes per block' - 1)/'inodes per block'
|
||||
* unused whatever is needed to fill out the current zone
|
||||
* data zones (s_zones - s_firstdatazone) << s_log_zone_size
|
||||
*/
|
||||
|
||||
struct super_block {
|
||||
uint16_t s_ninodes; /* # usable inodes on the minor device */
|
||||
uint16_t s_nzones; /* total device size, including bit maps etc */
|
||||
int16_t s_imap_blocks; /* # of blocks used by inode bit map */
|
||||
int16_t s_zmap_blocks; /* # of blocks used by zone bit map */
|
||||
uint16_t s_firstdatazone; /* number of first data zone (small) */
|
||||
int16_t s_log_zone_size; /* log2 of blocks/zone */
|
||||
uint32_t s_max_size; /* maximum file size on this device */
|
||||
int16_t s_magic; /* magic number to recognize super-blocks */
|
||||
int16_t s_pad; /* try to avoid compiler-dependent padding */
|
||||
uint32_t s_zones; /* number of zones (replaces s_nzones in V2) */
|
||||
} superblock;
|
||||
|
||||
#define s_firstdatazone_old s_firstdatazone
|
||||
|
||||
#undef MFSFLAG_CLEAN
|
||||
#undef MFSFLAG_MANDATORY_MASK
|
||||
|
||||
#endif
|
||||
16
usr.sbin/mkfs.mfs/v2/type.h
Normal file
16
usr.sbin/mkfs.mfs/v2/type.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef _MKFS_MFS_TYPE_H__
|
||||
#define _MKFS_MFS_TYPE_H__
|
||||
|
||||
/* Declaration of the V2/V3 inode as it is on the disk (not in core). */
|
||||
struct inode { /* V2/V3 disk inode */
|
||||
uint16_t i_mode; /* file type, protection, etc. */
|
||||
uint16_t i_nlinks; /* how many links to this file. */
|
||||
uint16_t i_uid; /* user id of the file's owner. */
|
||||
uint16_t i_gid; /* group number */
|
||||
uint32_t i_size; /* current file size in bytes */
|
||||
uint32_t i_atime; /* when was file data last accessed */
|
||||
uint32_t i_mtime; /* when was file data last changed */
|
||||
uint32_t i_ctime; /* when was inode data last changed */
|
||||
uint32_t i_zone[NR_TZONES]; /* zone nums for direct, ind, and dbl ind */
|
||||
};
|
||||
#endif
|
||||
3
usr.sbin/mkfs.mfs/v2l/Makefile
Normal file
3
usr.sbin/mkfs.mfs/v2l/Makefile
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
PROG= mkfs.mfsv2l
|
||||
|
||||
.include <../Makefile.mkfs>
|
||||
13
usr.sbin/mkfs.mfs/v2l/const.h
Normal file
13
usr.sbin/mkfs.mfs/v2l/const.h
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/* Extended V2 minixFS as defined by Linux
|
||||
* The difference with the normal V2 file systems as used on MINIX are the
|
||||
* size of the file names in the directoru entries, which are extended
|
||||
* to 30 characters (instead of 14.)
|
||||
*/
|
||||
|
||||
/* Constants; unchanged from regular V2... */
|
||||
#include "../v2/const.h"
|
||||
|
||||
/* ... except for magic number contained in super-block: */
|
||||
#define SUPER_V2L 0x2478 /* magic # for "Linux" extended V2 minixFS */
|
||||
#undef SUPER_MAGIC
|
||||
#define SUPER_MAGIC SUPER_V2L
|
||||
2
usr.sbin/mkfs.mfs/v2l/mfsdir.h
Normal file
2
usr.sbin/mkfs.mfs/v2l/mfsdir.h
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
/* Directory entry structure; unchanged from V1L */
|
||||
#include "../v1l/mfsdir.h"
|
||||
2
usr.sbin/mkfs.mfs/v2l/super.h
Normal file
2
usr.sbin/mkfs.mfs/v2l/super.h
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
/* Super block; unchanged from regular V2 */
|
||||
#include "../v2/super.h"
|
||||
2
usr.sbin/mkfs.mfs/v2l/type.h
Normal file
2
usr.sbin/mkfs.mfs/v2l/type.h
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
/* Inode structure; unchanged from regular V2 */
|
||||
#include "../v2/type.h"
|
||||
6
usr.sbin/mkfs.mfs/v3/Makefile
Normal file
6
usr.sbin/mkfs.mfs/v3/Makefile
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
PROG= mkfs.mfs
|
||||
BINDIR= /sbin
|
||||
|
||||
SYMLINKS+= $(BINDIR)/$(PROG) /usr/sbin/mkfs.mfs3
|
||||
|
||||
.include <../Makefile.mkfs>
|
||||
Loading…
Reference in New Issue
Block a user