在ext2中,有许多保留的inode,例如inode 2是根目录。在Linux ext2 header file中,inode 5被定义为"引导加载程序inode"。
是否有任何操作系统实际使用此功能?
您如何阅读和写入此inode? p>
答案 0 :(得分:0)
/*
* 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。