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

修正无法正常从SD卡加载根文件系统

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-6-11 15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
对SD卡进行分区,然后试图从SD加载EXT3文件系统。但是,在加载过程中会有如下报错:& P. p3 Z/ ^, W, o7 O+ g7 b
- Q$ A! B5 Y" Y0 N; h; D3 J
.......! Q! w' m, b4 |
* I6 k- e7 t% z4 m
VFS: Cannot open root device "179:2" or unknown-block(179,2)
% O% x+ Q/ ]2 T3 F5 wPlease append a correct "root=" boot option1 l$ w( k1 A6 u: ~9 }
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)
9 |8 N$ |; Z4 @
+ U$ \/ c2 K& ~5 n8 E5 S4 {, Q& k; {8 U4 a) D& W
, L& q( B- A8 i4 h+ N' n7 s
首先,先确保你的SD卡没有写保护。如果写保护了,也有可能造成上面的输出。
2 t& X5 S1 N6 G. s  [. j+ |- d- E: k/ `  k3 X
其次,修改Uboot的bootargs。修改内容如下:
. e9 E# K5 j9 t/ D& v; s) |& n* i9 E( u# Y' X3 d$ E; N
U-Boot> setenv bootargs noinitrd root=179:2 rw rootdelay=3 rootfstype=ext3 console=ttySAC0
0 Z5 H8 V. z# A: e+ |2 t4 m& |
% g. {/ t$ e1 |+ C/ k' R" O& L其实就是增加rootdelay这个参数,该参数的目的是让根文件系统的加载时间推迟3秒。$ F6 D) \( N7 U8 G3 K1 R
7 m4 E1 I9 m4 P" H# T% L
推迟3秒是为了让sd卡能够先初始化完毕,让后再从sd卡加载文件系统。
- A: P% ~9 A& Q6 ~7 S' n$ r( `0 |: r; ]$ z2 W
So之所以内核会panic就是因为sd卡都没有初始化,还要让内核去sd卡加载文件系统,怎么可能加载成功。
' R' V6 h# V/ p5 t4 [& B5 _" E7 [( }
' I: v6 I+ ~9 e4 E2 Q
9 F" R+ C) B9 U7 k$ k
那么怎么可以推断出是因为根文件系统的加载早于sd卡的初始化,所以造成内核panic的呢?
* J' \4 r6 v' a3 V6 V: p. l2 N8 @5 D" {( f
来看下正常情况下,根文件系统位于nandflash中,内核从nandflash加载yaffs2根文件系统,同时,SD卡已插入卡槽中。
, J) n  l% J- e" |. R: b" I( {8 W% `0 X8 H
给开发板上电,我们看下输出信息:
5 y8 C1 B( z5 t$ ^3 G; {2 S
7 y( g, z9 C, S....
3 ~, _! O5 ?& t) k" r% b1 f0 j8 e# K, N
yaffs: dev is 32505856 name is "mtdblock0"4 H1 A6 J9 l6 d& K/ Y; Q
yaffs: passed flags ""
5 R8 O0 d/ o! z+ {yaffs: Attempting MTD mount on 31.0, "mtdblock0"1 Q" S2 o: v4 h
block 419 is bad& P3 L2 Q8 I! n0 ?+ d1 q  t7 s- y
block 420 is bad! z+ U1 B. F- w% }. e; C9 X
block 421 is bad
* a7 _, ?2 K" @( Cblock 423 is bad2 {3 k' R7 O3 v
block 424 is bad! N" f5 t& T6 ~# k
block 425 is bad
5 N! C! g$ A( i& r5 Cblock 426 is bad+ Y$ g) F( s1 }: V' J% S- d, u
VFS: Mounted root (yaffs filesystem).
) R. }8 q8 R. ^Freeing init memory: 104K( |: D4 a6 S4 \$ p& p( M3 l
mmc0: card is read-write* n  D" P- `  \8 M. r+ C
mmcblk0: mmc0:5996 SD02G 1921024KiB - F# ]+ O5 O9 q; c" G( \- i
mmcblk0: p1 p21 M2 z1 Y) \$ H+ v3 K. N
starting udev...kjournald starting.  Commit interval 5 seconds
3 Y0 l% [' a2 t- h5 K/ R4 GEXT3 FS on mmcblk0p2, internal journal8 [$ k. e- H' o  B% T4 n) i" \
EXT3-fs: recovery complete.
% N) [2 m/ B7 h( C1 Y* OEXT3-fs: mounted filesystem with ordered data mode.
+ m* s5 W% u" H; h% fdone
3 |$ B" N8 A3 v) K( D$ ]
2 [3 ^5 K! Q, Y( v/ M" H! y: e9 O....
6 `6 U4 B+ P# X$ E# q! c2 Z  @( L9 ~; k5 ]
我们可以看到,内核首先加载了根文件系统yaffs,然后才加载了sd卡。8 A: c* h* H4 D" Y+ c8 C( Z9 O

! n2 h! v7 E. G- T因此,如果不推迟根文件系统加载的时间,sd卡根本得不到初始化的机会。
& F8 `( }' G% K4 c6 d$ K! b2 y5 H8 @% o  P$ {* K

; j9 r8 p" |( [. Q
+ i* n! S' m/ R  K4 p% s: d最后,我们看下加入rootdelay参数后的输出情况。9 A3 |: g& m5 Q. `4 ]
2 r6 P) M6 J7 \
...9 J/ U, {* |" H, X" M
2 c9 g9 [- X4 m/ K" C: V
Waiting 3sec before mounting root device...( m2 u3 T. C$ g. s
mmc0: card is read-write# O8 @2 a! W4 i/ B/ f& j0 i$ k
mmcblk0: mmc0:5996 SD02G 1921024KiB 7 P# J* f* o# K! E$ K
mmcblk0: p1 p2
9 M4 `2 e4 B, ]- \6 u* q. hkjournald starting.  Commit interval 5 seconds
% T$ Z- s0 E6 W4 ~( q8 M1 EEXT3 FS on mmcblk0p2, internal journal3 g' z+ D* \# f& c  x4 l9 Z# U- j$ U# W
EXT3-fs: recovery complete.
" a3 k3 O& [1 GEXT3-fs: mounted filesystem with ordered data mode.
$ W5 g# N$ N: a- J: wVFS: Mounted root (ext3 filesystem).
* h/ @- Y6 j( p( e9 nFreeing init memory: 104K4 i0 y3 H. W4 O: K3 ?( e
starting udev...done
( i; K2 a: J! V& a! ]# e/ E- J: Y8 C6 X. ]% v( f" X
...& K. Q/ u8 y: o3 ~
) |* X% D# [" v, E! i: n
从上面的输出来看,内核推迟了3秒加载根文件系统,先加载了SD卡,然后挂载了ext3文件系统。$ l. ^( R- m* l

# x, b$ o3 h+ p
1 {8 t2 a* t( p' Y) n2 z+ f% _' |+ q; q9 q& o0 I) e
& l6 k0 V) I+ x2 M1 I

该用户从未签到

2#
发表于 2020-6-11 16:42 | 只看该作者
从SD卡加载根文件系统
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-25 20:04 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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