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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
对SD卡进行分区,然后试图从SD加载EXT3文件系统。但是,在加载过程中会有如下报错:
) F+ T7 c- u) x2 t& s  K- M! y3 g' T( [9 p/ A4 {
.......
1 |* Z: {5 W- W: [& K5 B) ?$ ~# d% o1 v
VFS: Cannot open root device "179:2" or unknown-block(179,2)1 Y6 Y% F/ d( g# I0 T2 x
Please append a correct "root=" boot option
' M1 s6 L2 q+ r% b, Z, MKernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)$ `% J; q/ P6 X) \$ F  p

0 c* ^6 ?9 |8 G6 j+ `6 j( u5 f
) H0 B0 o+ j; m' W; h/ g; }
首先,先确保你的SD卡没有写保护。如果写保护了,也有可能造成上面的输出。
" r' {) |: K& @1 u2 l
5 I8 P: P+ v5 }. d2 K% J其次,修改Uboot的bootargs。修改内容如下:, K- y9 H: |8 y1 c7 g& h' H5 F, \5 E

; \- p# V! n, p+ V  A: V- oU-Boot> setenv bootargs noinitrd root=179:2 rw rootdelay=3 rootfstype=ext3 console=ttySAC0$ [1 P7 J4 G1 w- ^1 c

7 g6 I8 c& O% H- f1 C+ }& U其实就是增加rootdelay这个参数,该参数的目的是让根文件系统的加载时间推迟3秒。
3 G9 ^& f1 b9 s+ A! H% e5 u, {; q- E' r1 O: k" e. v7 Y
推迟3秒是为了让sd卡能够先初始化完毕,让后再从sd卡加载文件系统。" P* ^# Y1 ]0 e' }

1 l+ a$ h/ I1 x8 ?0 ZSo之所以内核会panic就是因为sd卡都没有初始化,还要让内核去sd卡加载文件系统,怎么可能加载成功。
. X- Z/ j- o# s( l
# u4 ?, C$ N5 D. I- N! X& H2 p( k0 v5 x8 d# q

8 V$ ]3 @7 u4 h! A那么怎么可以推断出是因为根文件系统的加载早于sd卡的初始化,所以造成内核panic的呢?/ d* `6 U& Y/ C9 v. U1 j
& N3 F! ]8 a: P* V/ K4 S! F
来看下正常情况下,根文件系统位于nandflash中,内核从nandflash加载yaffs2根文件系统,同时,SD卡已插入卡槽中。
% ~- C6 o: F& C7 @" y4 h4 p3 R& H( ?" b6 D0 ~+ N/ n7 _; ^, Z
给开发板上电,我们看下输出信息:9 \! `+ \% E0 n9 w# i6 o+ Y
! v- e- S& a( z- y# i
....% X1 w: U. w( N" k& B% p
3 ^2 {( ~2 d1 h  C! F! k  B
yaffs: dev is 32505856 name is "mtdblock0"
: F% w1 u2 z& p7 z7 P; Q. u5 Uyaffs: passed flags ""
) J+ N" M. v" k% N" B* w7 xyaffs: Attempting MTD mount on 31.0, "mtdblock0"! S2 C2 E  i' P% n/ {1 y
block 419 is bad/ x" T+ w: R5 V  {8 z
block 420 is bad
6 a6 D* G2 i0 }1 _6 w2 G2 ~! Yblock 421 is bad, E4 S2 r9 U  S# j+ T
block 423 is bad
! E# W& a1 ~: U2 Ublock 424 is bad
0 Q- }, f7 ]' G, Z0 pblock 425 is bad* w* O% k. Y9 X6 T4 Q/ x. M
block 426 is bad
+ a$ ]9 S/ P% h1 d7 Q$ u5 L5 M4 G" ~VFS: Mounted root (yaffs filesystem).% ?9 B# d6 x) e& ~+ H5 h$ n
Freeing init memory: 104K
4 \/ Y, p0 ?2 b5 Z0 ]mmc0: card is read-write
0 N9 |: {5 N2 Rmmcblk0: mmc0:5996 SD02G 1921024KiB
8 ]6 @) ]9 M8 p& T3 f! z5 c2 p mmcblk0: p1 p2
7 i( L( j- e' G0 d( Y: }  M0 Pstarting udev...kjournald starting.  Commit interval 5 seconds
  t4 |( ^8 d  `; s& ?7 X2 eEXT3 FS on mmcblk0p2, internal journal* @8 ?+ b; l* u# n! m7 u
EXT3-fs: recovery complete.
3 D8 S( `; V% a6 N( [EXT3-fs: mounted filesystem with ordered data mode.7 s9 ~( P1 }4 i
done
' z! i( Y$ O6 i. g! M' T. S, {
....
# _1 V1 o" x8 t% K7 Y7 ?3 m/ r
  ~" G5 P$ A# P+ S  p& X. {我们可以看到,内核首先加载了根文件系统yaffs,然后才加载了sd卡。
7 ~2 V) a- Y$ w% J& w2 Y2 [2 l
% a" M" ?0 S7 e' w6 U* e因此,如果不推迟根文件系统加载的时间,sd卡根本得不到初始化的机会。( N( q: k6 h* `  |
1 _$ v2 }7 W4 q% E

6 F, ?" x7 ?9 w3 f- F
( ~0 a: O$ v7 l# t. F2 \+ J+ G最后,我们看下加入rootdelay参数后的输出情况。
, i/ @& Q9 |4 I4 c  E# p) g
" ~5 {4 p3 p+ v, S' X...
9 }+ d- `3 Q! ~. V
# d. F/ R' [3 T, `3 k  h; a0 FWaiting 3sec before mounting root device...5 H# Q7 }# E) D' L' a7 D% q
mmc0: card is read-write
0 K- p# N. k3 r* V* h& ?, v" jmmcblk0: mmc0:5996 SD02G 1921024KiB   j) Y. I; v% H5 [& \1 e& m
mmcblk0: p1 p2
2 _) B2 Y2 I7 e1 @7 s) @kjournald starting.  Commit interval 5 seconds9 j5 q& n* g) N, c
EXT3 FS on mmcblk0p2, internal journal
% h( V) Q5 z; o- PEXT3-fs: recovery complete.
: _5 [- G+ W$ s  l* G7 WEXT3-fs: mounted filesystem with ordered data mode.( _+ z  {. u; V  M/ E6 s1 d/ D
VFS: Mounted root (ext3 filesystem).1 [  e6 _# r# ^/ r/ s1 B" O
Freeing init memory: 104K" S5 W6 v# ?8 A8 G' E2 A
starting udev...done) l7 h& G2 z0 U, g! v
& q. u* N* Z& i; ^8 r8 q
...
# w$ o. {1 c' g; P# O, Y9 S
% r+ S6 C5 e, @, A从上面的输出来看,内核推迟了3秒加载根文件系统,先加载了SD卡,然后挂载了ext3文件系统。
- H$ Z# c: r7 c# u! o: N' q7 h  q
0 c, _4 y- ^  O
% B0 `/ R, y, a4 a. {1 ~+ k2 g- T& D: w( o

  s. ]7 T% N# n' N

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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