コマンドの出力を考慮してくださいls
。
$ ls -l /sbin/mkfs.ext4
lrwxrwxrwx 1 root root 6 Aug 4 00:10 /sbin/mkfs.ext4 -> mke2fs
$ type mkfs.ext4
mkfs.ext4 is hashed (/sbin/mkfs.ext4)
mkfs.ext4
mke2fs
コマンドへのシンボリックリンクです。奇妙なこともなく、すべて大丈夫です。したがって、走るのはmkfs.ext4
走るのと同じですmke2fs
。次のコマンドの出力に中括弧を追加しました。
$ mke2fs
Usage: {mke2fs} [-c|-l filename] [-b block-size] [-C cluster-size]
--sinp--
$ mkfs.ext4
Usage: {mkfs.ext4} [-c|-l filename] [-b block-size] [-C cluster-size]
--sinp--
明らかにmke2fs
、ファイル名を使用してオプションのリストを生成し、カスタマイズする適切なファイルシステムの種類を決定します。
$ ln -s /sbin/mke2fs mkmk
$ ls -l mkmk
lrwxrwxrwx 1 direprobs direprobs 12 Aug 8 14:25 mkmk -> /sbin/mke2fs
$ ./mkmk
Usage: mkmk [-c|-l filename] [-b block-size] [-C cluster-size]
--sinp--
mkmk
私はを使用して作成されたシンボリックリンクを使用してext2ファイルシステムを作成しましたln
。それはどういうmkmk
意味mke2fs
ですか?
mke2fs
生成するファイルシステムの種類を決定するために実行するファイル名をどのように使用できますか?
答え1
parse_fs_type
の機能を参照してくださいmke2fs.c
:
- ファイルシステムタイプが明示的に指定されている場合(を使用して
-t
)、そのタイプが使用されます。 - ツールがHurdで実行されている場合は、「ext2」を使用してください。
- プログラム名がある場合は
mke3fs
「ext3」を使用してください。 - プログラム名がある場合は
mke4fs
「ext4」を使用してください。 - プログラム名
mkfs.
;で始まる場合は、サフィックスを使用します。 /etc/mke2fs.conf
それ以外の場合(存在する場合)で定義されているデフォルト値を使用します。- それ以外の場合は「ext2」が使用されます。ただし、デフォルトでロギングが有効になっていない場合は、「ext3」が使用されます。
結果のテキスト文字列は、ファイルシステム定義を照会するために使用されます/etc/mke2fs.conf
(内部で処理される「ext2」を除く)。
したがって、mkmk
最終的にext2ファイルシステムタイプを使用します。
答え2
- この
-t
オプションは無条件のファイルシステムタイプを設定します。どのプログラム名は、プログラムの実行時に診断メッセージに出力されるプログラム名です。 - Hurdでは、プログラムがどの名前で呼び出されても、ext2がファイルシステムタイプとして使用され、これは診断メッセージにのみ影響します。
- それ以外の場合は、プロセスの0番目のパラメータのデフォルト名が解決されます。
mke3fs
デフォルト名で呼び出されると、指定したext3
ようにログを含むファイルシステムが作成されます。-j
- デフォルト名で呼び出すと、ファイルシステムが
mke4fs
作成されますext4
。 - デフォルト名が5文字で始まる場合は、
mkfs.
無条件に残りの文字をファイルシステムタイプとして使用します。デフォルト名もある場合は、指定したようにmkfs.ext3
ログを生成します。-j
- それ以外の場合は、他の名前の場合は通常のoldのように動作し、
mke2fs
構成ファイルからファイルシステムタイプをインポートしてから、ext2からext3(-j
そのオプションが指定されている場合)に変更されます。
mke2fs
これのほとんどはとマニュアルで見つけることができますmke2fs.conf
。説明を見るファイルシステムタイプ後沢説明する前者の一部。マニュアルで唯一欠けている部分は認識できない名前が実際にmke2fs
。