|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题:目录和文件名如何保存,如何读取?
1 e& q$ f1 c; ~- ?0 S' L0 B. V(目录只是一种固定格式的文件,可以“vim 目录”,看到这个目录文件的内容)- G! B( A% f B5 _! _ d
##2.2VFS 的建立
9 n, O) ?% M! p8 A+ I经过前面的ext2 文件系统格式的介绍,我们起码知道了如何去获取文件系
/ w9 t. [' h" g8 Q" a, c% D- C0 |统的信息和如何读取文件内容。其中也建立了两个很重要的概念super block! a6 E! y$ B) T4 N! {$ s7 s
超级块和inode 节点信息,然后如果理解dentry(directory entry)概念就更# E/ o6 d/ w; y+ c4 N
好了。& |- C+ ~+ l7 O. _
关于VFS,看开头的描述和逻辑图。4 e" R9 @7 L- Z; W) R1 [
在2.6 内核中,启动的过程中由vfs 建立的rootfs 根文件系统过程如下:
! i5 y% V; `$ }: I" `kernel_start()
( Y; Q. ]$ y; P- h|____start_kernel()7 y" _- u0 x3 ?3 {2 j' `; W, H9 l
|____vfs_caches_init()(fs/dcache.c): I9 \2 M. g, Y+ M
|____dcache_init()
+ N/ m! J+ I6 K) ^- z|____inode_init()
( d* K/ @. n8 K* ||____files_init()
+ t' I9 c, s9 t8 V, W. Y|____mnt_init()
( p |1 b3 D$ d. [| |____init_rootfs()
9 E% O6 e" U( n- || | |___register_filesystem(
% o9 M3 e2 S- a& g- N| | &rootfs_fs_type)
0 o0 ]5 l. L- u5 y d# b| |_init_mount_tree()
1 P9 d% X8 D1 Y) c| | do_kern_mount(); m; b6 V7 u/ ]2 S4 M
| (建立系统的根”/”)) ]4 G4 m) l: A+ t5 o/ W/ h* r
|____bdev_cache_init()' N5 `2 ]* P/ o; W. e) w8 S
|____chrdev_init()
8 }6 E7 W! L1 [* H U# T0 P! w###2.2.1第一步init_rootfs()+ P, E0 B; W* q
init_rootfs() 通过调用 register_filesystem(&rootfs_fs_type)
9 b0 U$ G) b6 | o' v" r3 o( c函数来完成 rootfs 文件系统注册的,其中rootfs_fs_type 定义如下:
2 }6 W3 X6 ~6 l% [struct file_system_type rootfs_fs_type = {
* n& k h7 v- R# }2 d1 w3 sname: “rootfs”,- S. e) C- r5 V5 S3 N% A* `
read_super: ramfs_read_super,# y$ R5 D! O8 M7 F4 S
fs_flags: FS_NOMOUNT|FS_LITTER,
7 V" s% s9 g8 l) K* P2 V/ ^owner: THIS_MODULE,
, @% S; ~9 }; l2 L' v}5 I0 o& b; T* u' u# X
注册之后的 file_systems 链表结构如下图所示:
. v" V% q- x% p' w9 a9 U* |###2.2.2第二步而init_mount_tree()7 w- Y$ {: z% l2 b+ _$ M
第二步而init_mount_tree() 是用来建立根“ / ” 目录的, 它会调用
9 i. ?. J4 L( n; a# I# udo_kern_mount(“rootfs”, 0, “rootfs”, NULL) 来挂载前面已经注册了的2 V/ O. W( ~0 J, k2 Y
rootfs 文件系统。
. G; }, o9 ^( l5 F: X' ^7 e: ?! S& X1 J4 M! I( c+ N! H9 ?, F
3 r! I* ^2 p9 P- p: t X! Q" q. p, {
过程如下:
8 x E+ O; S- |& a
; m) E& a: r" _) G+ r$ K9 U
3 |- h$ x: I# a7 l( y7 k, G8 l4 ^6 u: K' @
, n* j8 D+ b$ w+ k
4 I5 p) Z; p) U/ R6 A# s6 m6 n7 U! f, V4 k" x% |
. Q3 x" q3 e4 j. ~4 K6 n
( m- D- W6 S5 f
( J; Y" |1 u" b! ~) g R2 f1 t+ c$ z
3 z+ j: H! o7 \# V. r, J
" _4 I$ d7 X. W' A
- H5 s* Q5 g! l |
|