|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题:目录和文件名如何保存,如何读取?
3 s! J# h% c* q(目录只是一种固定格式的文件,可以“vim 目录”,看到这个目录文件的内容)5 w0 b! g! r# ]% B7 r
##2.2VFS 的建立3 u( E+ L! x! S2 a" y# _! B
经过前面的ext2 文件系统格式的介绍,我们起码知道了如何去获取文件系
- @6 k6 q. y, u( d8 |统的信息和如何读取文件内容。其中也建立了两个很重要的概念super block
* x# x9 y" H7 e' x% E! i" l W( Q8 g超级块和inode 节点信息,然后如果理解dentry(directory entry)概念就更
% l; e1 v" N' f; X: k% c6 |! V好了。
5 u% j3 P1 G; m; w$ Q" _+ H关于VFS,看开头的描述和逻辑图。0 `/ t0 [7 ]. `4 q
在2.6 内核中,启动的过程中由vfs 建立的rootfs 根文件系统过程如下:% d; r+ C% N2 i6 v: ~
kernel_start()) D' C" z( Q2 T
|____start_kernel()
2 c! G( s) C4 Z, G [0 y5 j|____vfs_caches_init()(fs/dcache.c)
1 t& W: c. l; O# D3 x+ f9 N|____dcache_init()" X% P5 Q5 m0 w) D) t9 F
|____inode_init() l- Z# ?- f1 I- R; w+ [
|____files_init()' _# s. |/ f* @, G5 _
|____mnt_init(); _7 z" J. G3 Y2 \1 K+ D, F1 q
| |____init_rootfs()8 s8 D. w- r1 A5 M5 [& F
| | |___register_filesystem(8 Y& {& U+ G9 J( m2 F& h
| | &rootfs_fs_type)
# _$ m* [2 f; y' u| |_init_mount_tree()! h% F4 ~0 T( G6 S' s7 e
| | do_kern_mount()
. s. f8 h4 l! |4 t| (建立系统的根”/”)4 \$ z5 {8 m2 X1 ?2 A3 `4 I* }
|____bdev_cache_init()
$ ^/ y2 O8 J+ z1 S% i. N|____chrdev_init()
2 u; @, q6 A: \- g. z###2.2.1第一步init_rootfs()
" f1 _! R. ]% n. M' |init_rootfs() 通过调用 register_filesystem(&rootfs_fs_type)
5 H7 h9 R3 m+ w函数来完成 rootfs 文件系统注册的,其中rootfs_fs_type 定义如下:
& z N" E0 L8 |9 R+ X/ D9 Ustruct file_system_type rootfs_fs_type = {
- e9 V3 o! y* nname: “rootfs”,
9 \. F' l6 Z* ]. Q& @# z; d8 a# jread_super: ramfs_read_super,
1 y+ k! u$ C& d# C3 z u- ifs_flags: FS_NOMOUNT|FS_LITTER,0 G7 b. u5 }/ ^) |' t. L8 n }( s
owner: THIS_MODULE,
) O( I$ ^! {+ {$ A) q}
; @7 c7 i" j, r4 t$ V/ G- r注册之后的 file_systems 链表结构如下图所示:
( |1 x- a" F, c. G$ e" }5 Q###2.2.2第二步而init_mount_tree()
' J6 \# D5 C4 Z! Y第二步而init_mount_tree() 是用来建立根“ / ” 目录的, 它会调用
) P0 M" C4 k7 w4 O4 I. U6 ]) w2 {do_kern_mount(“rootfs”, 0, “rootfs”, NULL) 来挂载前面已经注册了的' ~# d0 w) I; \5 \
rootfs 文件系统。: V3 k* \" q Y3 z. g
) |% p# t3 q# }) f [1 s& \5 }4 W( J$ q3 ?
过程如下:, F( f4 i- \0 R: Z
. x( ?9 c( N% ? n% C2 M
# X; Y) ?5 Z1 x& V
$ N% g. d5 B$ D% J1 A- v
, f7 }( u# a. j# i& D; K- t. z! V8 S) R9 B6 @: W' J
0 S$ K3 O" c: C" l" M9 \+ M( e
l8 x( @" S' Y" J0 q3 ]
1 ~! }2 R) u+ F! H
' o3 t# Q6 b7 y3 w7 [8 X5 K% d4 G) g5 m6 U; c
y2 v/ c: U& P3 d- [4 z8 t, r
" l( D; n$ | y0 d/ _8 [, |8 K& H
: v( S8 E |5 j* w6 U |
|