|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
问题:目录和文件名如何保存,如何读取?
# t+ X/ ~8 O, J$ N5 r( `$ _(目录只是一种固定格式的文件,可以“vim 目录”,看到这个目录文件的内容)
- A) ^# l9 Y5 ~( S##2.2VFS 的建立
% l7 B4 ^ ~$ ?$ B; W1 w经过前面的ext2 文件系统格式的介绍,我们起码知道了如何去获取文件系
8 _6 ^/ Q5 s! ?7 \/ \4 Y+ j统的信息和如何读取文件内容。其中也建立了两个很重要的概念super block
2 l* e. ~2 a; ~3 L- H- J3 @- ?超级块和inode 节点信息,然后如果理解dentry(directory entry)概念就更
: I1 s" P7 }5 P2 x: y好了。
8 y9 u6 v5 b8 r. T关于VFS,看开头的描述和逻辑图。
7 `3 z6 Y7 {+ X- ^在2.6 内核中,启动的过程中由vfs 建立的rootfs 根文件系统过程如下:
' }$ m6 U) ?% Zkernel_start()
/ i$ f4 `4 l, s2 @; z2 K( {|____start_kernel()7 J9 E( ^$ |+ Q0 z0 X3 ~5 U
|____vfs_caches_init()(fs/dcache.c)
4 K8 ]3 s0 O' ^3 C% Y/ {|____dcache_init()
9 R/ t. w: c9 f4 Q|____inode_init()9 W! X1 L( p+ E0 o& K
|____files_init()
: z) S3 {6 o4 U3 Z4 r; Y0 w. k|____mnt_init(). Q$ G8 O; P1 ~) I4 _% P: j
| |____init_rootfs()) I1 R2 G9 y7 d9 B3 A
| | |___register_filesystem(
$ X* ]! Z7 H( E4 w| | &rootfs_fs_type)8 d* G% u0 n: c! E) G( j
| |_init_mount_tree()
4 H; b- |" Q, n& W- u| | do_kern_mount()! v2 W, d* [8 K7 L2 ?# \
| (建立系统的根”/”)
3 e& u9 K# H/ {8 O; C/ W& W|____bdev_cache_init()) U% V0 I' M; X+ l$ I- _* ?
|____chrdev_init()( N& ~/ p2 ~" I/ W6 m, S9 _
###2.2.1第一步init_rootfs()
3 k2 F3 x& ?" N5 E! cinit_rootfs() 通过调用 register_filesystem(&rootfs_fs_type)
! i) F/ ^+ |# i! M! w. \函数来完成 rootfs 文件系统注册的,其中rootfs_fs_type 定义如下:( Q2 j5 ~# d# ^) C8 y2 J. F! c
struct file_system_type rootfs_fs_type = {6 K* O8 M# ?# c2 r
name: “rootfs”,$ {; u# v0 f% @. g2 [
read_super: ramfs_read_super,& z+ I: T( j$ h% k$ i' s9 e2 G$ w
fs_flags: FS_NOMOUNT|FS_LITTER,
( h, F9 G8 D* Y5 Towner: THIS_MODULE,) x8 x* H0 L+ _' Y* O
}# Z. b2 L$ G7 o" M! F1 Y" u
注册之后的 file_systems 链表结构如下图所示:
$ V" w$ v) u3 {+ y; }###2.2.2第二步而init_mount_tree()4 ~+ C$ \" @ X9 V& E+ X
第二步而init_mount_tree() 是用来建立根“ / ” 目录的, 它会调用$ G, O4 X: Q& }
do_kern_mount(“rootfs”, 0, “rootfs”, NULL) 来挂载前面已经注册了的
: y/ J( p5 X- q0 u6 z: S3 Z$ |) krootfs 文件系统。. @- x* n% N7 M; R
3 s" P3 q& v+ [' f1 O& r
; ?0 E( o5 e) ? V过程如下:
$ n% F2 ^+ m, l* \) J2 e" _. ^% M% K& c; W' |, `8 w2 v5 M0 T
) Q1 d U. i# v( Y, X
9 p5 Z6 i: m$ d: L& t8 E |
0 }) x! K# o9 t P
/ q2 S" u% b' l4 b- W4 N- d' F# i
7 {$ }9 s1 H8 b, M6 P
% @7 P2 K5 `4 D, t# v% v; H
- ^$ {/ ?7 d- M) p9 d
5 |& { j0 `& h$ a. x8 ^* N- U7 x$ R' }
' y% |% Q4 ?& @
: Y5 ?) z8 O4 h* ?2 L7 [6 R, H$ B4 [1 ^% w# n/ K6 }$ j T. V
|
|