Linux
/sbin/mkfs.fs 就像一個二進製文件,即使它是一個符號連結文件
考慮
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
命令的符號連結。沒什麼奇怪的,一切都很好。因此, runningmkfs.ext4
與 running 相同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
。to 是什麼mkmk
意思mke2fs
,應該沒什麼!如何
mke2fs
使用執行它的文件名來確定要創建的文件系統類型?
請參閱中的
parse_fs_type
函式mke2fs.c
:
- 如果明確指定了文件系統類型(使用
-t
),則使用該文件系統類型- 如果該工具在 Hurd 上執行,請使用“ext2”;
- 如果程序名稱為
mke3fs
,則使用“ext3”;- 如果程序名稱為
mke4fs
,則使用“ext4”;- 如果程序名稱以 開頭
mkfs.
,則使用後綴;- 否則,使用 中定義的預設值
/etc/mke2fs.conf
(如果有);- 否則,使用“ext2”,除非預設啟用日誌,在這種情況下使用“ext3”。
生成的文本字元串用於查找文件系統定義
/etc/mke2fs.conf
(除了內部處理的“ext2”)。所以你
mkmk
最終會使用 ext2 文件系統類型。