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

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

[复制链接]

该用户从未签到

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

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 23:15 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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