ext2 inode 5(EXT2_BOOT_LOADER_INO)是否被任何操作系统使用?

时间:2014-08-09 17:28:24

标签: bootloader ext2

在ext2中,有许多保留的inode,例如inode 2是根目录。在Linux ext2 header file中,inode 5被定义为"引导加载程序inode"。

是否有任何操作系统实际使用此功能?

您如何阅读和写入此inode?

1 个答案:

答案 0 :(得分:0)

可以从linux/fs/ext2.h

的超级块结构中提取保留的inode数
/*
* Structure of the super block
*/
struct ext2_super_block {
...
    __le32  s_first_ino;        /* First non-reserved inode */
...
}

因此保留的inode数量为s_first_ino - 1.此数字取决于您使用的修订版本。

旧版本的第一个非保留inode的编号是:

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

此处还定义了所有保留的索引节点:

/*
* 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,它用于交换启动代码,因为你可以看到here),以便于放置和定位启动代码,所以你不必搜索

正如之前的链接所说,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.

...即使当时没有代码来读取或修改inode。