找回密码
 注册
关于网站域名变更的通知
查看: 376|回复: 1
打印 上一主题 下一主题

ARM ------- 制作Linux 文件系统(5)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-6-29 09:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 18:49 , Processed in 0.187500 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表