在driver/firmware/efi/efi.c 中通過subsys_initcall(efisubsys_init);來初始化efisubsys
static int __init efisubsys_init(void)
error = generic_ops_register();
if (error)
goto err_put;
if (efi_enabled(efi_runtime_services))
efivar_ssdt_load();
error = sysfs_create_group(efi_kobj, &efi_subsys_attr_group);
if (error)
error = efi_runtime_map_init(efi_kobj);
if (error)
goto err_remove_group;
/* and the standard mountpoint for efivarfs */
error = sysfs_create_mount_point(efi_kobj, "efivars");
if (error)
}在efisubsys_init 中會通過kobject_create_and_add在/sys/firmware/下建立efi的目錄,然後會通過sysfs_create_group來efi_subsys_attr_group group
static struct attribute_group efi_subsys_attr_group = ;
繼續看efi_subsys_attrs
static struct attribute *efi_subsys_attrs = ;
在efisubsys_init 中通過sysfs_create_mount_point 來建立efivars的mountpoint。
而efi_runtime_map_init 則為每一段efi.memmap 建立sys介面,而所有的介面都是放在map_entries 這個list中
int __init efi_runtime_map_init(struct kobject *efi_kobj)
i = 0;
for_each_efi_memory_desc(md)
*(map_entries + i++) = entry;
}return 0;
out_add_entry:
for (j = i - 1; j >= 0; j--)
out:
return ret;
}因此實際我們可以看到如下:
[root@centos efi]# pwd
/sys/firmware/efi
[root@centos efi]# ls
efivars fw_platform_size systab vars
sys 檔案系統下的目錄結構
這個目錄其實跟 proc非常類似,也是乙個虛擬的檔案系統,主要也是記錄不核心 相關的資訊。包括目前已載入的核心模組不核心偵測到的硬體裝置資訊等等。這個目錄同樣丌佔硬碟容量。表 1.sys 下的目錄結構 sys 下的子目錄 所包含的內容 sys devices 這是核心對系統中所有裝置的分層次表達模型...
檔案系統介面
檔案系統介面 1.檔案概念 檔案是記錄在外存上的相關資訊的具有名稱的集合。通常檔案表示程式和資料。資料檔案可以是數字 字元 字元數字或二進位制。檔案可以是自由形式,如文字檔案,也可以是具有嚴格的格式。因此,檔案的概念極為廣泛。1.1檔案屬性 檔案有一定的屬性,這根據系統而有所不同,但是通常都包括如下...
Linux 核心 sys 檔案系統介紹3
常見 sysfs 屬性的功能 使用 sysfs 的關鍵就是掌握這些 sysfs 屬性的用法,下面以一些常見的 sysfs 屬性來展示它的用法 使用裝置 pci 的 sysfs 屬性檔案 ps xfa grep xorg 2001 tty1 ss 2 24 usr bin xorg 0 nr verb...