2013-07-05 3 views
0

Какой макрос соответствует какой файловой системе в Linux. в ReadHat Linux Вот это [Ссылка] http://lxr.free-electrons.com/source/include/uapi/linux/magic.h#L24Какой макрос соответствует какой файловой системе в linux

Eg: 
#define EXT2_SUPER_MAGIC  0xEF53 
#define EXT3_SUPER_MAGIC  0xEF53 
#define EXT4_SUPER_MAGIC  0xEF53 
------------------------------> are file system EXT2/EXT3/EXT4 
what is the others?// HFS、NFS、XFS、JFS、Minix fs ...... 

Спасибо!

+0

Возможно, это поможет, если вы сделали шаг назад и отправили фактическую проблему, которую вы пытаетесь решить. Вы можете обнаружить, что «определить тип файловой системы» не является существенным для решения вашей проблемы. Например, можете ли вы просто загружать UML и на самом деле монтировать файл? (Никаких специальных perms не требуется.) – BraveNewCurrency

ответ

1

Файл magic.h, на который вы ссылаетесь, не может быть полезен для идентификации файловых систем по магическим числам их формата. Во-первых, он дает магические числа для некоторых файловых систем, но он ничего не говорит о том, где в формате файловой системы на диске искать его! Например, магическое число 0xef53, которое вы цитируете для ext *, должно быть найдено, если посмотреть на смещение 0x438 с начала файловой системы, тогда как магическое число в файловой системе XFS найдено в начале (смещение байта 0), и вы можете искать магическое число reiserfs при смещении 0x10034. Даже не обязательно, чтобы файловая система была идентифицирована по магическому числу - это просто хорошая практика. Таким образом, этот файл magic.h никогда не может быть полным и полезным.

Если вы хотите идентифицировать различные типы файловых систем, я предлагаю использовать file. Вы можете посмотреть на filesystems magic file from its source code. Он содержит правила соответствия для большинства типов файловых систем, о которых вы упомянули.

Примечание: вы упомянули NFS тоже. Поскольку NFS является сетевой файловой системой и не имеет какого-либо формата на диске, как он может иметь магическое число, как другие?

0

Это старый вопрос, но я предоставлю свою точку зрения, чтобы кто-то его расколол, поскольку я искал причину, по которой Linux/magic.h кажется неполным, и я не вижу определения для XFS_SUPER_MAGIC или значения, которое, я считаю, должно быть в любых файлах заголовков системы.

Это зависит от того, что вы пытаетесь выполнить. Если, например, вы пытаетесь прочитать на некоторых носителях, что вы не знаете форматирования, то Celada правильна, вам понадобится дополнительная информация о макете этой файловой системы, и в таких случаях, как NFS, может быть, что Магическое число не имеет смысла.

Однако, если вы используете системный вызов statfs(), чтобы определить, какой тип файловой системы используется inode, возможно, глядя на записи с dirent или что-то в этом роде, тогда магические числа в файле linux/magic.h насколько я могу это сказать. К сожалению, по-видимому, есть пробелы, поскольку я обнаружил, что ищу их для XFS. Который, кстати, кажется, возвращается из statfs() как 0x58465342. К лучшему или худшему (скорее всего, к сожалению), у меня есть сейчас:

#include <linux/magic.h> 
#ifndef XFS_SUPER_MAGIC 
#define XFS_SUPER_MAGIC 0x58465342 
#endif 
Смежные вопросы