ext2 には、ルート ディレクトリである inode 2 など、多数の予約済み inode があります。Linux ext2 ヘッダー ファイルでは、inode 5 が「ブート ローダー inode」として定義されています。
実際にこれを使用するオペレーティングシステムはありますか?
この inode をどのように読み書きしますか?
ext2 には、ルート ディレクトリである inode 2 など、多数の予約済み inode があります。Linux ext2 ヘッダー ファイルでは、inode 5 が「ブート ローダー inode」として定義されています。
実際にこれを使用するオペレーティングシステムはありますか?
この inode をどのように読み書きしますか?
予約済み 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 ノードを読み取ったり変更したりするコードがなかったとしても。