mkproto 命令
用途
构造一个原型文件系统。
语法
mkproto 特殊 原型
描述
mkproto 命令用来构造一个新文件系统的原型。 它仅与 Berkeley 软件分发 (BSD) 兼容。
Special 参数可以是 一个块设备名、raw 设备名或文件系统名。 Prototype 参数为原型文件名称,该文件指定了要创建的文件系统的结构和内容。 mkproto 命令调用 mkfs 命令使用 prototype 和 parameter 参数。
原型文件
mkproto 和 mkfs 命令要求一个扩展的原型文件来 创建一个日志文件系统(JFS)。 原型文件 是一个文件系统内容和结构的格式化清单。 原型文件通过一系列以空格和换行隔开的标记来描述文件系统。 原型文件的主体定义了文件系统的对象。
一个 JFS 原型文件包含主体,它由 proto 命令创建,前面有五个特殊标记。 这五个标记定义如下:
原型文件
| 项 | 描述 |
|---|---|
| 第一个标记 | 要作为引导程序或特殊令牌复制到块 0 的文件的名称<noboot>. |
| 第二个标记 | 文件系统大小。 对一个 JFS,大小用512字节块单位来表示。 如果第二个标记为0,mkfs 命令 创建文件系统来填充整个逻辑卷。 |
| 第三个标记 | 文件系统中 i-nodes 的数目。 JSF 不使用这个标记,但是必须提供以保留改位置。 |
| 第四个标记 | 文件系统片的大小,单位字节。 如果第四个标记是0 (zero),mkfs 命令使用缺省片大小。 对 JFS 而言,该标记必须为0(缺省使用值)、512、1024、2048或 4096。 对 JFS 而言,缺省段大小为 4096。 一个无效的片 大小导致 mkfs 命令失败。 |
| 第五个标记 | 每个 i-node(nbpi)的字节数。 如果该标记为0, mkfs 命令使用缺省的 nbpi。 对 JFS 来说,该标记必须为 0(缺省使用值)、512、1024、2048、4096、8192 或 16384。 对 JFS 而言,每个 i-node 的缺省字节数为4096。 无效的 nbpi 会导致 mkfs 命令失败。 |
剩下的标记定义了文件系统的内容和结构。 这些标志分组成集合,其中每个集合定义文件系统的一个对象。 每个集合的语法如下:
{ [ 名称 ] { - | { - | d | B | C | L | 我 | P } { - | 乌 } { - | G } { - | 特 } 方式 所有者 组 { 主要次命令 | 源文件 | 目录列表 } } | { $ }
其中:
标记
| 项 | 描述 |
|---|---|
| 名称 | 将对象名称指定为将在新文件系统中出现的名称。 除了根目录定义,每个对象都需要Name 标志。 |
| { - | d | B | C | L | 我 | P } { - | 乌 } { - | G } { - | 特 } | 代表有4个位置字符的字符串,其中:
所有对象都需要4字符标志。 |
| 方式 | 表示为3位8进制字符,这些字符定义了对象的读、写和执行许可权。 每个对象都需要 Mode 标记。 有关许可权的更多信息,请参阅 chmod 命令。 |
| 所有者 | 指定对象所有者的 UID。 每个对象都需要 owner 标记。 |
| 组 | 指定了对象所有者的 GID。 每个对象都需要 group 标记。 |
| 主次命令 | 如果对象的类型为块或字符特殊文件,指定了它的主要和次要设备号码。 如果对象不是块或字符特殊文件,将省略这些标记。 |
| SourceFile | 仅应用于常规文件、硬链路和符号链路对象。 对常规文件而言,该标记为到文件的路径名,从该路径名初始化对象文件。 对符号和硬链接而言,该标记为链路源。 对硬链路而言,链路源相对于新文件系统。 |
| DirectoryListing | 如果它是一个目录,定义了该对象的内容。 使用此处描述的标记语法定义目录的内容。 例如,一个目录列表可以包含一个或多个常规文件、一个或多个块文件和一个或多个目录列表。 mkfs 命令创建了目录项。 (点)和 .. (点点)。 每个目录列表用特殊的 $ 标记终止。 |
| $ | 终止当前目录列表或表示原型文件的结束。 |
示例原型规范
以下原型规范描述了一个 JFS,它在0号块没有引导程序并且占据了整个设备。 忽略了第三个标记。 第四和第五个标记定义片大小为1024字节,定义每个 i-node 的字节数为2048。 该原型的主体定义了文件系统内容。
<noboot> 0 0 1024 2048
d--- 755 0 0
dir1 d--- 755 0 2
block_dev b--- 644 0 0 880 881
char_dev c--- 644 0 0 990 991
named_pipe p--- 644 0 0
regfile3 ---- 644 0 0 /tmp/proto.examp/dir1/regfile3
regfile4 ---- 644 0 0 /tmp/proto.examp/dir1/regfile4
$
dir2 d--- 755 205 300
regfile6 ---- 644 0 0 /tmp/proto.examp/dir2/regfile6
symlnOutofFS l--- 644 0 0 /tmp/proto.examp/dir2/regfile6
symlnNoExist l--- 644 0 0 /home/foobar
symlnInFs l--- 644 0 0 /dir2/regfile6
regfile5 ---- 644 0 0 /tmp/proto.examp/dir2/regfile5
hardlink L--- 644 0 0 /dir2/regfile5
$
dir3 d--- 755 0 0
setgid --g- 755 0 0 /tmp/proto.examp/dir3/setgid
setuid -u-- 755 0 0 /tmp/proto.examp/dir3/setuid
sticky ---t 755 0 0 /tmp/proto.examp/dir3/sticky
$
dir4 d--- 755 0 0
dir5 d--- 755 0 0
dir6 d--- 755 0 0
$
dir7 d--- 755 0 0
$
$
regfile7 ---- 644 0 0 /tmp/proto.examp/dir4/regfile7
$
regfile1 ---- 555 205 1 /tmp/proto.examp/regfile1
regfile2 ---- 744 0 0 /tmp/proto.examp/regfile2
$
$三个条目dir2对象值得进一步检查:
dir2 对象
| 项 | 描述 |
|---|---|
| symlnOutofFS l—- 644 0 0 /tmp/proto.examp/dir2/regfile6 | 该项定义了一个符号链接,它指向了要创建的文件系统以外的一个文件。 命令ls -l列出类似的内容symlnOutofFS -> /tmp/proto.examp/dir2/regfile6. |
| symlnNoExist l—- 644 0 0 /home/foobar | 该项定义了一个符号链接,它指向了要创建的文件系统以外的一个不存在的文件。 命令ls -l列出类似的内容symlnNoExist -> /home/foobar. |
| symlnInFs l—- 644 0 0 /dir2/regfile6 | 该项定义了一个符号链接,它指向了要创建的文件系统以内的一个文件。 命令ls -l列出类似的内容symlnInFS -> /dir/regfile6. |
示例
要使用 "示例原型文件规范" 中描述的原型文件来创建原型 JFS:
- 使用 proto 命令或文本编辑器生成原型文件的主体。 为了本示例的目的,请调用文件/tmp/ProtoFile.
- 根据 JFS 的需要添加前 5 个令牌。 在该示例原型文件中,这些标记为:
<noboot> 0 0 1024 2048 - 创建逻辑卷以保存文件系统,如下所示:mklv -y protolv -t jfs SomeVGname 5此命令创建名为protolv在SomeVGname卷组。 逻辑卷的大小为5逻辑分区。
- 将相应的节添加到/etc/filesystem中。 一个最小的示例节为:
/protofs: dev = /dev/protolv vfs = jfs log = /dev/loglv00 mount = false - 运行以下 mkproto 命令:
此命令在protolv逻辑卷。 JFS 的大小为5逻辑分区,其片段大小为1024字节,并且其 nbpi 比率为2048.文件系统的结构和内容如原型文件中所指定/tmp/ProtoFile.mkproto /dev/protolv /tmp/ProtoFile
文件
文件
| 项 | 描述 |
|---|---|
| /usr/sbin/mkproto | 包含 mkproto 命令。 |