2

ext2 には、ルート ディレクトリである inode 2 など、多数の予約済み inode があります。Linux ext2 ヘッダー ファイルでは、inode 5 が「ブート ローダー inode」として定義されています。

実際にこれを使用するオペレーティングシステムはありますか?

この inode をどのように読み書きしますか?

4

1 に答える 1

0

予約済み inode の数は、 linux/fs/ext2.hのスーパーブロック構造から抽出できます。

/*
* Structure of the super block
*/
struct ext2_super_block {
...
    __le32  s_first_ino;        /* First non-reserved inode */
...
}

したがって、予約された inode の数は s_first_ino - 1 です。この数は、使用しているリビジョンによって異なります。

古いリビジョンの最初の予約されていない i ノードの番号は次のとおりです。

/* First non-reserved inode for old ext2 filesystems */
#define EXT2_GOOD_OLD_FIRST_INO 11

すべての予約済み inode もここで定義されています。

/*
* Special inode numbers
 */
#define EXT2_BAD_INO             1  /* Bad blocks inode */
#define EXT2_ROOT_INO            2  /* Root inode */
#define EXT2_BOOT_LOADER_INO     5  /* Boot loader inode */
#define EXT2_UNDEL_DIR_INO       6  /* Undelete directory inode */

EXT2_BOOT_LOADER_INO は、ブートローダーが配置されている場所を指していますが、現在は使用されていません。これは、ブート コードの配置と検索を簡単にするための未使用のメカニズムです(カーネル バージョン 3.10 までは、ブート コードをスワップするために使用されていました)。

前のリンクが示すように、GRUB は将来、制御メカニズムとして EXT2_BOOT_LOADER_INO を使用したいと考えています。

* Support embedding a Stage 1.5 in the EXT2_BOOT_LOADER_INO of an ext2fs
partition, so that it won't be accidentally erased or modified by
the kernel.

...その時点で i ノードを読み取ったり変更したりするコードがなかったとしても。

于 2014-09-07T20:39:20.867 に答える