英语口语·吉米老师说
你有留意身边的老外聊天的时候,偶尔会蹦出一些语气词,比如 oops,你知道什么意思吗?今天就来跟吉米老师学习英语中的那些常见语气词吧!
英语·实用口语
oops
oops 糟糕,哎呀,用于表达惊奇、难过或者轻微的歉意。
whoops
whoops 和 oops 一样
表示险些出事故或小失误时说:哎呀
表示做了尴尬事或失言后说:唉。
Oops! I typed two Ls by mistake.
哎哟,我多打了两个L。
Whoops, I didn't mean to do that.
哎呀,我不是故意的。
oops-a-daisy
用于小孩摔倒时,说一句:起来没事啦!
英语中的语气词
aha
aha 译为“啊哈”,表示满意,快乐,胜利,得意,惊讶等,常含有冷嘲热讽或愚弄的意思。
Aha, now I see what you mean!
噢!现在我明白你什么意思了!
sh/shh/shhh
sh 译为“嘘”,用于告诉别人保持安静。
sh! Be quiet!
嘘,安静!
Shh! The baby is sleeping.
嘘!宝宝在睡觉。
phew
phew 表示松一口气,宽慰,疲倦,炎热或恶心等,啊!唷!唉!
Phew! I thought we were going to miss the bus!
哦!我还以为我们要赶不上公共汽车了!
Phew! What a long day it's been!
噢!多么漫长的一天啊!
well
well 有很好地,令人满意以及表示健康等意思,同时它也可以用作语气词,用于引出要说的话题,常用来表示惊讶、怀疑、不太同意或生气,也用来继续讲故事——啊,哎呀,哟,那么,好吧。
Well, what shall we do now?
那么,我们现在该做什么?
Well now/then, how are we going to arrange things?
那么,现在我们该怎样安排呢?
huh
huh 也是一个语气词,它主要有三种意思:
1.用于问题,建议等之后,尤其希望对方同意
So you won't be coming tonight, huh?
那么你今晚就不来了吗,嗯?
2.表示愤怒,惊奇,异议等,认为没有什么了不起的
Huh! What is there to understand?’
哼!有什么好理解的?
3.人们用来表示没有听清楚
Are you feeling OK?’ ‘Huh?’
“你感觉好吗?” “啊?”
duh
duh 是用于表示不高兴,蔑视,犹豫等咄,哧,比如气愤或者懊恼地表示当然或表示假装不知道某事。
It sure is dark out.” “Duh, it's the middle of the night.”
“外面肯定是漆黑一片。”“哧,现在是半夜。”
Why didn't you leave earlier?” “Duh, I don't know.”
“你为何不早点离开呢?”“哦,我不知道。”
拓展
网络聊天常用语
amigo=friends 朋友,源于西班牙语的朋友
asap= as soon as possible 尽快
b4 = before 在……以前
B/C = because 因为
cuz = cause 因为
ditto = agree 同意,你说得对,同上
diy = do it yourself 自己做、自制
f2f/ftf = face to face 当面,面对面
FAQ = Frequently Asked Question 常见问题
kx = kiss 亲吻
omg = oh my god 我的天呐
ooo = out of office 不在办公室
u = you 你
ur = your 你的
u r = you are 你是
lol=laughing out loud /laugh out loud 大笑
sry=不好意思
点个“赞”
不经历风雨
怎能见彩虹
今天的知识是不是很容易就学会了呢?别忘了在评论区提交作业哦。
◆◆今日作业◆◆
这些短语和句子你都理解对了吗?最后留给同学们一个作业:
( ), I spilled a little milk.
糟糕,我洒了一点牛奶。
A、Well
B、Bingo
C、Oops
这道题选什么呢?你做对了吗?同学们可以在右下角留言区写下你的答案哦, 老师会亲自点评~
本文图片均源于网络
root@firefly:~/mnt/module# insmod oops_module.ko [ 867.140514] Unable to handle kernel NULL pointer dereference at virtual address 00000000[ 867.141279] pgd = ffffffc0f0a65000[ 867.141582] [00000000] *pgd=0000000000000000, *pud=0000000000000000[ 867.142164] Internal error: Oops: 96000045 [#1] P[ 867.142592] Modules linked in: oops_module(O+)[ 867.143006] CPU: 4 PID: 1163 Comm: insmod Tainted: G O 4.4.194+ #7[ 867.143649] Hardware name: Firefly-RK3399 Board (Linux Opensource) (DT)[ 867.144236] task: ffffffc0cdc44380 task.stack: ffffffc00a4fc000[ 867.144761] PC is at init_oopsdemo+0x24/0x38 [oops_module][ 867.145247] LR is at init_oopsdemo+0x18/0x38 [oops_module][ 867.145732] pc : [<ffffff8000ef0024>] lr : [<ffffff8000ef0018>] pstate: 40000145[ 867.146386] sp : ffffffc00a4ffc40[ 867.146688] x29: ffffffc00a4ffc40 x28: ffffff80081376d0 [ 867.147178] x27: 0000000000000001 x26: ffffffc0cde6e880 [ 867.147491] x25: 0000000000000001 x24: ffffff8000ef2050 [ 867.147495] x23: 0000000000000000 x22: ffffff80095b7860 [ 867.147498] x21: ffffffc0cdce10c0 x20: ffffff80095b7860 [ 867.147501] x19: ffffff8000ef0000 x18: ffffff80897bfa97 [ 867.147504] x17: 0000007fb096c8a0 x16: ffffff800813b204 Segmentation fault[ 867.147508] x15: 0000000000000000 root@firefly:~/mx14: 00000000000224d6 nt/module# [ 867.147511] x13: 000000000000000a x12: 0000000000000030 [ 867.147515] x11: 00000000fffffffe x10: ffffff80097bfa9f [ 867.147518] x9 : 0000000005f5e0ff x8 : ffffff8008463c3c [ 867.147522] x7 : ffffff80096280b0 x6 : 0000000000000022 [ 867.147525] x5 : ffffffc0f7f24b38 x4 : 0000000000000001 [ 867.147528] x3 : 0000000000000007 x2 : 0000000000000007 [ 867.147534] x1 : 0000000019760817 x0 : 0000000000000000 [ 867.147536] [ 867.147536] PC: 0xffffff8000eeffa4:[ 867.147550] ffa4 ******** ******** ******** ******** ******** ******** ******** ********[ 867.147561] ffc4 ******** ******** ******** ******** ******** ******** ******** ********[ 867.147572] ffe4 ******** ******** ******** ******** ******** ******** ******** a9bf7bfd[ 867.147581] 0004 910003fd aa1e03e0 d503201f 58000100 95ca7426 d2800000 528102e1 72a32ec1[ 867.147590] 0024 b9000001 a8c17bfd d65f03c0 00ef1024 ffffff80 a9bf7bfd 910003fd aa1e03e0[ 867.147599] 0044 d503201f 58000080 95ca7418 a8c17bfd d65f03c0 00ef1038 ffffff80 00000000[ 867.147607] 0064 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147616] 0084 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147618] [ 867.147618] LR: 0xffffff8000eeff98:[ 867.147629] ff98 ******** ******** ******** ******** ******** ******** ******** ********[ 867.147639] ffb8 ******** ******** ******** ******** ******** ******** ******** ********[ 867.147650] ffd8 ******** ******** ******** ******** ******** ******** ******** ********[ 867.147659] fff8 ******** ******** a9bf7bfd 910003fd aa1e03e0 d503201f 58000100 95ca7426[ 867.147668] 0018 d2800000 528102e1 72a32ec1 b9000001 a8c17bfd d65f03c0 00ef1024 ffffff80[ 867.147677] 0038 a9bf7bfd 910003fd aa1e03e0 d503201f 58000080 95ca7418 a8c17bfd d65f03c0[ 867.147685] 0058 00ef1038 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147693] 0078 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147695] [ 867.147695] SP: 0xffffffc00a4ffbc0:[ 867.147705] fbc0 095b7860 ffffff80 00000000 00000000 00ef2050 ffffff80 00000001 00000000[ 867.147713] fbe0 cde6e880 ffffffc0 00000001 00000000 081376d0 ffffff80 0a4ffc40 ffffffc0[ 867.147726] fc00 00ef0018 ffffff80 0a4ffc40 ffffffc0 00ef0024 ffffff80 40000145 00000000[ 867.147734] fc20 ee9ae000 00000040 00012ffb 00000000 00000000 00000080 00000000 00000000[ 867.147743] fc40 0a4ffc50 ffffffc0 080830f8 ffffff80 0a4ffcd0 ffffffc0 0818d2d0 ffffff80[ 867.147765] fc60 00ef2000 ffffff80 095cd000 ffffff80 cde6e8c8 ffffffc0 cdce1140 ffffffc0[ 867.147774] fc80 00000000 00000000 0818d2a4 ffffff80 00ef2000 ffffff80 095cd000 ffffff80[ 867.147782] fca0 cde6e8c8 ffffffc0 095cd000 ffffff80 00000000 00000000 00ef2050 ffffff80[ 867.147785] [ 867.147785] X5: 0xffffffc0f7f24ab8:[ 867.147794] 4ab8 0000003f 00000000 0000003f 00000000 00000000 00000000 00000000 00000000[ 867.147803] 4ad8 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147811] 4af8 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147819] 4b18 afbe5356 00000001 00000000 00000000 0810d62c ffffff80 00000001 00000000[ 867.147828] 4b38 00000007 00000000 00000000 00000000 0810dd18 ffffff80 00000000 00000000[ 867.147836] 4b58 00000000 01400000 00000000 0000e293 00000000 00000000 00000000 00000000[ 867.147845] 4b78 00000000 00000000 d591d591 dead4ead ffffffff 00000000 ffffffff ffffffff[ 867.147853] 4b98 00000000 00000000 0008a70b 00000001 0008a701 00000001 0000000d 00000000[ 867.147855] [ 867.147855] X7: 0xffffff8009628030:[ 867.147863] 8030 f26a3900 ffffffc0 00000000 00000000 00000000 00000000 00110000 00000000[ 867.147872] 8050 000f0000 00000000 00000000 00000000 00040000 00000000 00080000 00000000[ 867.147880] 8070 00000000 00000000 00000000 00000000 00000001 00000000 00000000 00000000[ 867.147889] 8090 00000000 00000001 00000000 00000001 00000002 00000001 00000001 00000000[ 867.147897] 80b0 00000000 00000000 0927e623 ffffff80 04e804e8 dead4ead ffffffff 00000000[ 867.147905] 80d0 ffffffff ffffffff f2000000 ffffffc0 00040000 00000000 00000001 00000000[ 867.147914] 80f0 00000000 dead4ead ffffffff 00000000 ffffffff ffffffff 09628108 ffffff80[ 867.147922] 8110 09628108 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147924] [ 867.147924] X8: 0xffffff8008463bbc:[ 867.147933] 3bbc 9400054a aa1303e0 94000554 52800000 a94153f3 f94013f5 a8c37bfd d65f03c0[ 867.147942] 3bdc f9400413 17fffff6 f9400813 17fffff4 f9400c13 17fffff2 128002a0 17fffff5[ 867.147950] 3bfc 71001c1f 54000161 f9405ce0 f9400c00 b4000140 a9bf7bfd aa0603e2 aa0403e1[ 867.147959] 3c1c 910003fd 940004ce a8c17bfd d65f03c0 128002a0 d65f03c0 12800160 d65f03c0[ 867.147967] 3c3c a9bb7bfd 7100081f 910003fd a9025bf5 aa0403f6 a90153f3 aa0603f5 a90363f7[ 867.147975] 3c5c f9405cf3 54000181 f9400660 b4000a20 2a1503e2 aa1603e1 9400047d 52800000[ 867.147984] 3c7c a94153f3 a9425bf5 a94363f7 a8c57bfd d65f03c0 71000c1f 54000061 f9400a60[ 867.147992] 3c9c 17fffff3 71001c1f 54000061 f9400e60 17ffffef 35000820 51000420 7100041f[ 867.147994] [ 867.147994] X10: 0xffffff80097bfa1f:[ 867.148003] fa1c 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148011] fa3c 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148020] fa5c 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148028] fa7c 00000000 00000000 00000000 00000000 00000000 00000001 00000000 3820205b[ 867.148037] fa9c 312e3736 39343734 78205d31 203a3532 30303030 30303030 30303030 31303030[ 867.148045] fabc 5d3e3420 20726c20 3c5b203a 66666666 30386666 66653030 38313030 70205d3e[ 867.148054] fadc 74617473 34203a65 30303030 0a353431 30303030 0a303030 742f0a67 296d0a78[ 867.148062] fafc 3028202c 0a297320 3331200a 3a34353a 76203334 69737265 37206e6f 2e35332e[ 867.148071] fb1c 2e343831 35722e31 32412820 61745320 6e6f6974 5032502f 57462029 30204449[ 867.148074] [ 867.148074] X16: 0xffffff800813b184:[ 867.148083] b184 fa413002 9a9f87e2 b4000202 aa1303e2 aa1403e1 aa1503e0 940e73e9 b5000220[ 867.148093] b1a4 943672e0 8b1302b5 8b130294 eb1302f7 54fffde1 52800002 aa1603e1 910163a0[ 867.148101] b1c4 97fff7ff 17ffffc6 aa1303e2 52800001 aa1503e0 940e775a aa1303e0 17fffff0[ 867.148110] b1e4 f9402fa0 94021fc6 128001a0 17ffffbc 128000e0 17ffffba 12800160 17ffffb8[ 867.148118] b204 a9b67bfd 910003fd a90153f3 f90013f5 aa0003f5 aa1e03e0 aa0103f4 aa0203f3[ 867.148127] b224 d503201f a903ffbf a904ffbf a905ffbf a906ffbf a907ffbf a908ffbf f9004fbf[ 867.148135] b244 97ffefb2 340000c0 93407c00 a94153f3 f94013f5 a8ca7bfd d65f03c0 f000b220[ 867.148143] b264 913d0000 910aa000 79404401 361000e1 d00088a1 2a1303e4 aa1403e3 2a1503e2[ 867.148146] [ 867.148146] X18: 0xffffff80897bfa17:[ 867.148157] fa14 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148167] fa34 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148178] fa54 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148189] fa74 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148199] fa94 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148210] fab4 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148221] fad4 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148232] faf4 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148243] fb14 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148244] [ 867.148244] X19: 0xffffff8000eeff80:[ 867.148256] ff80 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148271] ffa0 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148282] ffc0 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148293] ffe0 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148303] 0000 a9bf7bfd 910003fd aa1e03e0 d503201f 58000100 95ca7426 d2800000 528102e1[ 867.148311] 0020 72a32ec1 b9000001 a8c17bfd d65f03c0 00ef1024 ffffff80 a9bf7bfd 910003fd[ 867.148320] 0040 aa1e03e0 d503201f 58000080 95ca7418 a8c17bfd d65f03c0 00ef1038 ffffff80[ 867.148328] 0060 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148330] [ 867.148330] X20: 0xffffff80095b77e0:[ 867.148338] 77e0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148346] 7800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148355] 7820 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148363] 7840 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148372] 7860 095b7860 ffffff80 095b7860 ffffff80 00000001 00000000 00005dc0 00000000[ 867.148380] 7880 00000009 756e694c 00000078 00000000 00000000 00000000 00000000 00000000[ 867.148388] 78a0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148397] 78c0 00000000 72696600 796c6665 00000000 00000000 00000000 00000000 00000000[ 867.148398] [ 867.148398] X21: 0xffffffc0cdce1040:[ 867.148407] 1040 746f6e2e 6e672e65 75622e75 2d646c69 00006469 dead0000 00000200 dead0000[ 867.148415] 1060 00000001 00000000 00000000 00000000 00000000 00000000 055aab56 00000000[ 867.148424] 1080 cdce1bc0 ffffffc0 cde6d909 ffffffc0 cde6d888 ffffffc0 cdce1bc8 ffffffc0[ 867.148433] 10a0 00000000 00000000 000003dd 6c62010e 6c6b6361 2e747369 666e6f63 00000000[ 867.148441] 10c0 cdce1080 ffffffc0 6d656473 6f5b206f 5f73706f 75646f6d 005d656c 00000000[ 867.148449] 10e0 00000000 00000000 0000000f 2e2e0202 00000000 00000000 00000000 00000000[ 867.148458] 1100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148466] 1120 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148468] [ 867.148468] X22: 0xffffff80095b77e0:[ 867.148476] 77e0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148484] 7800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148493] 7820 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148501] 7840 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148510] 7860 095b7860 ffffff80 095b7860 ffffff80 00000001 00000000 00005dc0 00000000[ 867.148518] 7880 00000009 756e694c 00000078 00000000 00000000 00000000 00000000 00000000[ 867.148526] 78a0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148535] 78c0 00000000 72696600 796c6665 00000000 00000000 00000000 00000000 00000000[ 867.148536] [ 867.148536] X24: 0xffffff8000ef1fd0:[ 867.148545] 1fd0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148553] 1ff0 00000000 00000000 00000000 00000000 00000001 00000000 095cd3a0 ffffff80[ 867.148562] 2010 095cd3a0 ffffff80 73706f6f 646f6d5f 00656c75 00000000 00000000 00000000[ 867.148570] 2030 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148578] 2050 f089a080 ffffffc0 f26add00 ffffffc0 f2117e88 ffffffc0 f26add28 ffffffc0[ 867.148588] 2070 f26add00 ffffffc0 095c4c08 ffffff80 dbb66f78 ffffffc0 00000003 00000007[ 867.148596] 2090 00ef2000 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148605] 20b0 f2f99c00 ffffffc0 00000000 00000000 00000000 00000000 f089ab40 ffffffc0[ 867.148606] [ 867.148606] X26: 0xffffffc0cde6e800:[ 867.148615] e800 00000001 00000000 d11d71a8 ffffffc0 00000000 00000000 00000000 00000000[ 867.148623] e820 cf2e6030 ffffffc0 00000000 00000000 0000046d 00000000 095c42c8 ffffff80[ 867.148632] e840 00000000 00000000 f7ec5e68 ffffffc0 00000000 00000000 00000000 00000000[ 867.148640] e860 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148649] e880 f106a880 ffffffc0 00000001 00000000 f089aa40 ffffffc0 00000124 00000000[ 867.148657] e8a0 00000024 00000000 00ef1000 ffffff80 081375b0 ffffff80 00000000 00000000[ 867.148665] e8c0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148674] e8e0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148675] [ 867.148675] X28: 0xffffff8008137650:[ 867.148684] 7650 a90153f3 aa0103f4 aa0203f3 aa1e03e0 d503201f f0008f21 913a1c21 f9402280[ 867.148693] 7670 b941d802 aa1303e0 940eb71d 93407c00 a94153f3 a8c27bfd d65f03c0 a9be7bfd[ 867.148701] 7690 910003fd a90153f3 aa0103f4 aa0203f3 aa1e03e0 d503201f f0008f21 913a1c21[ 867.148710] 76b0 f9402280 b9418802 aa1303e0 940eb70c 93407c00 a94153f3 a8c27bfd d65f03c0[ 867.148718] 76d0 a9be7bfd 910003fd a90153f3 aa0003f4 aa0203f3 aa1e03e0 d503201f aa1303e0[ 867.148727] 76f0 b0008b61 f9402282 91068021 940eb6fc 93407c00 a94153f3 a8c27bfd d65f03c0[ 867.148735] 7710 a9be7bfd 910003fd a90153f3 aa0003f3 aa0103f4 aa1e03e0 d503201f 52801801[ 867.148743] 7730 aa1403e0 72a04801 9401c11a f9006260 a94153f3 a8c27bfd d65f03c0 a9be7bfd[ 867.148745] [ 867.148745] X29: 0xffffffc00a4ffbc0:[ 867.148754] fbc0 095b7860 ffffff80 00000000 00000000 00ef2050 ffffff80 00000001 00000000[ 867.148763] fbe0 cde6e880 ffffffc0 00000001 00000000 081376d0 ffffff80 0a4ffc40 ffffffc0[ 867.148771] fc00 00ef0018 ffffff80 0a4ffc40 ffffffc0 00ef0024 ffffff80 40000145 00000000[ 867.148780] fc20 ee9ae000 00000040 00012ffb 00000000 00000000 00000080 00000000 00000000[ 867.148790] fc40 0a4ffc50 ffffffc0 080830f8 ffffff80 0a4ffcd0 ffffffc0 0818d2d0 ffffff80[ 867.148798] fc60 00ef2000 ffffff80 095cd000 ffffff80 cde6e8c8 ffffffc0 cdce1140 ffffffc0[ 867.148807] fc80 00000000 00000000 0818d2a4 ffffff80 00ef2000 ffffff80 095cd000 ffffff80[ 867.148815] fca0 cde6e8c8 ffffffc0 095cd000 ffffff80 00000000 00000000 00ef2050 ffffff80[ 867.148816] [ 867.148820] Process insmod (pid: 1163, stack limit = 0xffffffc00a4fc000)[ 867.148822] Stack: (0xffffffc00a4ffc40 to 0xffffffc00a500000)[ 867.148826] fc40: ffffffc00a4ffc50 ffffff80080830f8 ffffffc00a4ffcd0 ffffff800818d2d0[ 867.148829] fc60: ffffff8000ef2000 ffffff80095cd000 ffffffc0cde6e8c8 ffffffc0cdce1140[ 867.148832] fc80: 0000000000000000 ffffff800818d2a4 ffffff8000ef2000 ffffff80095cd000[ 867.148834] fca0: ffffffc0cde6e8c8 ffffff80095cd000 0000000000000000 ffffff8000ef2050[ 867.148837] fcc0: 0000000000000001 ffffffc0cde6e880 ffffffc00a4ffd00 ffffff800813ab5c[ 867.148840] fce0: ffffff8000ef2000 ffffffc00a4ffe58 ffffffc0cde6e8c8 ffffff80095cd000[ 867.148843] fd00: ffffffc00a4ffe20 ffffff800813b2b4 0000000000000000 00000055736b60f0[ 867.148846] fd20: 0000000000000003 0000007fb096c8c4 0000000040000000 0000000000000015[ 867.148849] fd40: 000000000000011d 0000000000000111 ffffff8008ef2000 ffffffc0cdc44380[ 867.148851] fd60: 0000000000000000 000000000002c098 ffffffc00a4ffe20 ffffff8008f00000[ 867.148854] fd80: 0000000000000000 00000055736b60f0 ffffffc000000064 ffffff8000000072[ 867.148857] fda0: ffffff800000006e ffffff800000003f ffffff8000000124 00000000024000c0[ 867.148860] fdc0: ffff81b400000030 000003e800000001 00000000000003e8 000000000002c098[ 867.148862] fde0: 00000000633eccfc 0000000000000000 0000000000000000 0000000000000000[ 867.148865] fe00: 0000000000000000 0000000000000000 0000000000000000 0000000000000000[ 867.148868] fe20: 0000000000000000 ffffff8008082f70 0000000000000000 00000040ee9ae000[ 867.148871] fe40: ffffffffffffffff 0000000000000001 0000000000000002 ffffff800bea0000[ 867.148874] fe60: 000000000002c098 ffffff800becb9d8 ffffff800becb8d0 ffffff800beb7748[ 867.148876] fe80: 0000000000003000 00000000000030d8 0000000000000000 0000000000000000[ 867.148879] fea0: 0000000000000478 0000001a00000019 0000000000000009 0000000000000004[ 867.148882] fec0: 0000000000000003 00000055736b60f0 0000000000000000 0000000000000003[ 867.148884] fee0: 0000000000000000 0000000000000218 0000000000000001 0000000000000001[ 867.148887] ff00: 0000000000000111 0000000000000003 0000000200000002 0000000000000000[ 867.148890] ff20: 00000000000010f0 0000000000000000 0000000000000000 0000000000000040[ 867.148892] ff40: 00000055736cddb0 0000007fb096c8a0 0000000000000000 0000005585e6b600[ 867.148895] ff60: 00000055736b60f0 0000000000000000 0000000000000000 0000005585e6b5d0[ 867.148898] ff80: 00000055736b2ef8 0000000000000000 0000000000000000 0000000000000000[ 867.148901] ffa0: 0000000000000000 0000007fdbea3bd0 00000055736abdc0 0000007fdbea3bd0[ 867.148903] ffc0: 0000007fb096c8c4 0000000040000000 0000000000000003 0000000000000111[ 867.148906] ffe0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000[ 867.148907] Call trace:[ 867.148911] Exception stack(0xffffffc00a4ffa70 to 0xffffffc00a4ffba0)[ 867.148913] fa60: ffffff8000ef0000 0000008000000000[ 867.148916] fa80: ffffffc00a4ffc40 ffffff8000ef0024 ffffff80097c02f8 0000000000000002[ 867.148918] faa0: ffffffc00a4ffac0 000000020001b57c 0000000000000000 0000000100000000[ 867.148921] fac0: ffffffc00a4ffb60 ffffff800810d674 ffffffc00a4ffbc0 ffffff8000ef1024[ 867.148924] fae0: ffffffc0cdce10c0 ffffff80095b7860 0000000000000000 ffffff8000ef2050[ 867.148927] fb00: 0000000000000001 ffffffc0cde6e880 0000000000000000 0000000019760817[ 867.148929] fb20: 0000000000000007 0000000000000007 0000000000000001 ffffffc0f7f24b38[ 867.148932] fb40: 0000000000000022 ffffff80096280b0 ffffff8008463c3c 0000000005f5e0ff[ 867.148935] fb60: ffffff80097bfa9f 00000000fffffffe 0000000000000030 000000000000000a[ 867.148937] fb80: 00000000000224d6 0000000000000000 ffffff800813b204 0000007fb096c8a0[ 867.148944] [<ffffff8000ef0024>] init_oopsdemo+0x24/0x38 [oops_module][ 867.148953] [<ffffff80080830f8>] do_one_initcall+0x78/0x194[ 867.148958] [<ffffff800818d2d0>] do_init_module+0x64/0x1c0[ 867.148962] [<ffffff800813ab5c>] load_module+0x199c/0x1ed0[ 867.148964] [<ffffff800813b2b4>] SyS_finit_module+0xb0/0xbc[ 867.148968] [<ffffff8008082f70>] el0_svc_naked+0x24/0x28[ 867.148972] Code: 95ca7426 d2800000 528102e1 72a32ec1 (b9000001) [ 867.148975] ---[ end trace 1983a52768236533 ]---
[ 867.140514] Unable to handle kernel NULL pointer dereference at virtual address 00000000
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
点击这里找小助理0元领取:点击文中蓝色字体即可领取
这里能够简要的告诉是什么问题触发了oops,显然是由于访问非法地址00000000异常。如果是由代码直接调用BUG()/BUG_ON()一类的,还能给出源代码中触发的行号。
[ 867.141279] pgd = ffffffc0f0a65000[ 867.141582] [00000000] *pgd=0000000000000000, *pud=0000000000000000
pgd,pud试图访问的地址的页表信息,本例中为0。
[ 867.142164] Internal error: Oops: 96000045 [#1] P
96000045表示错误码。后面[]内的数值是与页面有关的oops信息被显示的次数。之后显示内核的重要特性P和PREEMPT被显示的配置情况。这条信息所在的内核启用了P支持,所以只显示P。
96000045这种错误码我也是第一次见,内核中也没找到。一般见的最多的就是001,002这种形式的?有大佬知道原因的可以评论下。
Oops的错误代码根据错误的原因会有不同的定义,如果发现自己遇到的Oops和下面无法对应的话,最好去内核代码里查找:
* error_code: * bit 0 == 0 means no page found, 1 means protection fault * bit 1 == 0 means read, 1 means write * bit 2 == 0 means kernel, 1 means user-mode * bit 3 == 0 means data, 1 means instruction
[ 867.142592] Modules linked in: oops_module(O+) [last unloaded: hello_module]
Modules linked in为加载了的模块列表,hello_module为上次加载的模块。
[ 867.143006] CPU: 4 PID: 1163 Comm: insmod Tainted: G O 4.4.194+ #7[ 867.143649] Hardware name: Firefly-RK3399 Board (Linux Opensource) (DT)[ 867.144236] task: ffffffc0cdc44380 task.stack: ffffffc00a4fc000
CPU后的数字是错误所在逻辑CPU的编号,PID表示正在运行的进程ID1511,内核污染原因(G),内核版本( 4.4.194)。
内核污染原因包括私有驱动加载(P),模块强制加载(F),模块强制卸载(R),机器检查异常发生(M),检测到错误页(B)等。
如果涉及到了某项原因,就会显示为Tainted: G PF R这样。如果不存在问题,就会显示为Not Tainted。
其中Tainted的表示可以从内核中 kernel/panic.c 中找到:
Tainted描述‘G’if all modules loaded have a GPL or compatible license‘P’if any proprietary module has been loaded. Modules without a MODULE_LICENSE or with a MODULE_LICENSE that is not recognised by insmod as GPL compatible are assumed to be proprietary.‘F’if any module was force loaded by “insmod -f”.‘S’if the Oops occurred on an P kernel running on hardware that hasn’t been certified as safe to run multiprocessor. Currently this occurs only on various Athlons that are not P capable.‘R’if a module was force unloaded by “rmmod -f”.‘M’if any processor has reported a Machine Check Exception.‘B’if a page-release function has found a bad page reference or some unexpected page flags.‘U’if a user or user application specifically requested that the Tainted flag be set.‘D’if the kernel has died recently, i.e. there was an OOPS or BUG.‘W’if a warning has previously been issued by the kernel.‘C’if a staging module / driver has been loaded.‘I’if the kernel is working around a sever bug in the platform’s firmware (BIOS or similar).
Hardware name表示硬件平台的名称。
task表示当前进程的地址, task.stack表示当前进程栈的地址。
[ 867.144761] PC is at init_oopsdemo+0x24/0x38 [oops_module][ 867.145247] LR is at init_oopsdemo+0x18/0x38 [oops_module][ 867.145732] pc : [<ffffff8000ef0024>] lr : [<ffffff8000ef0018>] pstate: 40000145[ 867.146386] sp : ffffffc00a4ffc40
init_oopsdemo+0x24/0x38[oops_module]表示错误发生的地址是oops_module中的init_oopsdemo函数的第44个字节,0x38表示init_oopsdemo函数的大小。
第3行,第4行分别是PC,LR,SP寄存器的具体地址。
[ 867.146688] x29: ffffffc00a4ffc40 x28: ffffff80081376d0 [ 867.147178] x27: 0000000000000001 x26: ffffffc0cde6e880 [ 867.147491] x25: 0000000000000001 x24: ffffff8000ef2050 [ 867.147495] x23: 0000000000000000 x22: ffffff80095b7860 [ 867.147498] x21: ffffffc0cdce10c0 x20: ffffff80095b7860 [ 867.147501] x19: ffffff8000ef0000 x18: ffffff80897bfa97 [ 867.147504] x17: 0000007fb096c8a0 x16: ffffff800813b204 Segmentation fault[ 867.147508] x15: 0000000000000000 root@firefly:~/mx14: 00000000000224d6 nt/module# [ 867.147511] x13: 000000000000000a x12: 0000000000000030 [ 867.147515] x11: 00000000fffffffe x10: ffffff80097bfa9f [ 867.147518] x9 : 0000000005f5e0ff x8 : ffffff8008463c3c [ 867.147522] x7 : ffffff80096280b0 x6 : 0000000000000022 [ 867.147525] x5 : ffffffc0f7f24b38 x4 : 0000000000000001 [ 867.147528] x3 : 0000000000000007 x2 : 0000000000000007 [ 867.147534] x1 : 0000000019760817 x0 : 0000000000000000 [ 867.147536] [ 867.147536] PC: 0xffffff8000eeffa4:[ 867.147550] ffa4 ******** ******** ******** ******** ******** ******** ******** ********[ 867.147561] ffc4 ******** ******** ******** ******** ******** ******** ******** ********[ 867.147572] ffe4 ******** ******** ******** ******** ******** ******** ******** a9bf7bfd[ 867.147581] 0004 910003fd aa1e03e0 d503201f 58000100 95ca7426 d2800000 528102e1 72a32ec1[ 867.147590] 0024 b9000001 a8c17bfd d65f03c0 00ef1024 ffffff80 a9bf7bfd 910003fd aa1e03e0[ 867.147599] 0044 d503201f 58000080 95ca7418 a8c17bfd d65f03c0 00ef1038 ffffff80 00000000[ 867.147607] 0064 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147616] 0084 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147618] [ 867.147618] LR: 0xffffff8000eeff98:[ 867.147629] ff98 ******** ******** ******** ******** ******** ******** ******** ********[ 867.147639] ffb8 ******** ******** ******** ******** ******** ******** ******** ********[ 867.147650] ffd8 ******** ******** ******** ******** ******** ******** ******** ********[ 867.147659] fff8 ******** ******** a9bf7bfd 910003fd aa1e03e0 d503201f 58000100 95ca7426[ 867.147668] 0018 d2800000 528102e1 72a32ec1 b9000001 a8c17bfd d65f03c0 00ef1024 ffffff80[ 867.147677] 0038 a9bf7bfd 910003fd aa1e03e0 d503201f 58000080 95ca7418 a8c17bfd d65f03c0[ 867.147685] 0058 00ef1038 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147693] 0078 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147695] [ 867.147695] SP: 0xffffffc00a4ffbc0:[ 867.147705] fbc0 095b7860 ffffff80 00000000 00000000 00ef2050 ffffff80 00000001 00000000[ 867.147713] fbe0 cde6e880 ffffffc0 00000001 00000000 081376d0 ffffff80 0a4ffc40 ffffffc0[ 867.147726] fc00 00ef0018 ffffff80 0a4ffc40 ffffffc0 00ef0024 ffffff80 40000145 00000000[ 867.147734] fc20 ee9ae000 00000040 00012ffb 00000000 00000000 00000080 00000000 00000000[ 867.147743] fc40 0a4ffc50 ffffffc0 080830f8 ffffff80 0a4ffcd0 ffffffc0 0818d2d0 ffffff80[ 867.147765] fc60 00ef2000 ffffff80 095cd000 ffffff80 cde6e8c8 ffffffc0 cdce1140 ffffffc0[ 867.147774] fc80 00000000 00000000 0818d2a4 ffffff80 00ef2000 ffffff80 095cd000 ffffff80[ 867.147782] fca0 cde6e8c8 ffffffc0 095cd000 ffffff80 00000000 00000000 00ef2050 ffffff80[ 867.147785] [ 867.147785] X5: 0xffffffc0f7f24ab8:[ 867.147794] 4ab8 0000003f 00000000 0000003f 00000000 00000000 00000000 00000000 00000000[ 867.147803] 4ad8 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147811] 4af8 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147819] 4b18 afbe5356 00000001 00000000 00000000 0810d62c ffffff80 00000001 00000000[ 867.147828] 4b38 00000007 00000000 00000000 00000000 0810dd18 ffffff80 00000000 00000000[ 867.147836] 4b58 00000000 01400000 00000000 0000e293 00000000 00000000 00000000 00000000[ 867.147845] 4b78 00000000 00000000 d591d591 dead4ead ffffffff 00000000 ffffffff ffffffff[ 867.147853] 4b98 00000000 00000000 0008a70b 00000001 0008a701 00000001 0000000d 00000000[ 867.147855] [ 867.147855] X7: 0xffffff8009628030:[ 867.147863] 8030 f26a3900 ffffffc0 00000000 00000000 00000000 00000000 00110000 00000000[ 867.147872] 8050 000f0000 00000000 00000000 00000000 00040000 00000000 00080000 00000000[ 867.147880] 8070 00000000 00000000 00000000 00000000 00000001 00000000 00000000 00000000[ 867.147889] 8090 00000000 00000001 00000000 00000001 00000002 00000001 00000001 00000000[ 867.147897] 80b0 00000000 00000000 0927e623 ffffff80 04e804e8 dead4ead ffffffff 00000000[ 867.147905] 80d0 ffffffff ffffffff f2000000 ffffffc0 00040000 00000000 00000001 00000000[ 867.147914] 80f0 00000000 dead4ead ffffffff 00000000 ffffffff ffffffff 09628108 ffffff80[ 867.147922] 8110 09628108 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000[ 867.147924] [ 867.147924] X8: 0xffffff8008463bbc:[ 867.147933] 3bbc 9400054a aa1303e0 94000554 52800000 a94153f3 f94013f5 a8c37bfd d65f03c0[ 867.147942] 3bdc f9400413 17fffff6 f9400813 17fffff4 f9400c13 17fffff2 128002a0 17fffff5[ 867.147950] 3bfc 71001c1f 54000161 f9405ce0 f9400c00 b4000140 a9bf7bfd aa0603e2 aa0403e1[ 867.147959] 3c1c 910003fd 940004ce a8c17bfd d65f03c0 128002a0 d65f03c0 12800160 d65f03c0[ 867.147967] 3c3c a9bb7bfd 7100081f 910003fd a9025bf5 aa0403f6 a90153f3 aa0603f5 a90363f7[ 867.147975] 3c5c f9405cf3 54000181 f9400660 b4000a20 2a1503e2 aa1603e1 9400047d 52800000[ 867.147984] 3c7c a94153f3 a9425bf5 a94363f7 a8c57bfd d65f03c0 71000c1f 54000061 f9400a60[ 867.147992] 3c9c 17fffff3 71001c1f 54000061 f9400e60 17ffffef 35000820 51000420 7100041f[ 867.147994] [ 867.147994] X10: 0xffffff80097bfa1f:[ 867.148003] fa1c 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148011] fa3c 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148020] fa5c 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148028] fa7c 00000000 00000000 00000000 00000000 00000000 00000001 00000000 3820205b[ 867.148037] fa9c 312e3736 39343734 78205d31 203a3532 30303030 30303030 30303030 31303030[ 867.148045] fabc 5d3e3420 20726c20 3c5b203a 66666666 30386666 66653030 38313030 70205d3e[ 867.148054] fadc 74617473 34203a65 30303030 0a353431 30303030 0a303030 742f0a67 296d0a78[ 867.148062] fafc 3028202c 0a297320 3331200a 3a34353a 76203334 69737265 37206e6f 2e35332e[ 867.148071] fb1c 2e343831 35722e31 32412820 61745320 6e6f6974 5032502f 57462029 30204449[ 867.148074] [ 867.148074] X16: 0xffffff800813b184:[ 867.148083] b184 fa413002 9a9f87e2 b4000202 aa1303e2 aa1403e1 aa1503e0 940e73e9 b5000220[ 867.148093] b1a4 943672e0 8b1302b5 8b130294 eb1302f7 54fffde1 52800002 aa1603e1 910163a0[ 867.148101] b1c4 97fff7ff 17ffffc6 aa1303e2 52800001 aa1503e0 940e775a aa1303e0 17fffff0[ 867.148110] b1e4 f9402fa0 94021fc6 128001a0 17ffffbc 128000e0 17ffffba 12800160 17ffffb8[ 867.148118] b204 a9b67bfd 910003fd a90153f3 f90013f5 aa0003f5 aa1e03e0 aa0103f4 aa0203f3[ 867.148127] b224 d503201f a903ffbf a904ffbf a905ffbf a906ffbf a907ffbf a908ffbf f9004fbf[ 867.148135] b244 97ffefb2 340000c0 93407c00 a94153f3 f94013f5 a8ca7bfd d65f03c0 f000b220[ 867.148143] b264 913d0000 910aa000 79404401 361000e1 d00088a1 2a1303e4 aa1403e3 2a1503e2[ 867.148146] [ 867.148146] X18: 0xffffff80897bfa17:[ 867.148157] fa14 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148167] fa34 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148178] fa54 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148189] fa74 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148199] fa94 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148210] fab4 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148221] fad4 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148232] faf4 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148243] fb14 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148244] [ 867.148244] X19: 0xffffff8000eeff80:[ 867.148256] ff80 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148271] ffa0 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148282] ffc0 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148293] ffe0 ******** ******** ******** ******** ******** ******** ******** ********[ 867.148303] 0000 a9bf7bfd 910003fd aa1e03e0 d503201f 58000100 95ca7426 d2800000 528102e1[ 867.148311] 0020 72a32ec1 b9000001 a8c17bfd d65f03c0 00ef1024 ffffff80 a9bf7bfd 910003fd[ 867.148320] 0040 aa1e03e0 d503201f 58000080 95ca7418 a8c17bfd d65f03c0 00ef1038 ffffff80[ 867.148328] 0060 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148330] [ 867.148330] X20: 0xffffff80095b77e0:[ 867.148338] 77e0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148346] 7800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148355] 7820 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148363] 7840 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148372] 7860 095b7860 ffffff80 095b7860 ffffff80 00000001 00000000 00005dc0 00000000[ 867.148380] 7880 00000009 756e694c 00000078 00000000 00000000 00000000 00000000 00000000[ 867.148388] 78a0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148397] 78c0 00000000 72696600 796c6665 00000000 00000000 00000000 00000000 00000000[ 867.148398] [ 867.148398] X21: 0xffffffc0cdce1040:[ 867.148407] 1040 746f6e2e 6e672e65 75622e75 2d646c69 00006469 dead0000 00000200 dead0000[ 867.148415] 1060 00000001 00000000 00000000 00000000 00000000 00000000 055aab56 00000000[ 867.148424] 1080 cdce1bc0 ffffffc0 cde6d909 ffffffc0 cde6d888 ffffffc0 cdce1bc8 ffffffc0[ 867.148433] 10a0 00000000 00000000 000003dd 6c62010e 6c6b6361 2e747369 666e6f63 00000000[ 867.148441] 10c0 cdce1080 ffffffc0 6d656473 6f5b206f 5f73706f 75646f6d 005d656c 00000000[ 867.148449] 10e0 00000000 00000000 0000000f 2e2e0202 00000000 00000000 00000000 00000000[ 867.148458] 1100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148466] 1120 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148468] [ 867.148468] X22: 0xffffff80095b77e0:[ 867.148476] 77e0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148484] 7800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148493] 7820 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148501] 7840 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148510] 7860 095b7860 ffffff80 095b7860 ffffff80 00000001 00000000 00005dc0 00000000[ 867.148518] 7880 00000009 756e694c 00000078 00000000 00000000 00000000 00000000 00000000[ 867.148526] 78a0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148535] 78c0 00000000 72696600 796c6665 00000000 00000000 00000000 00000000 00000000[ 867.148536] [ 867.148536] X24: 0xffffff8000ef1fd0:[ 867.148545] 1fd0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148553] 1ff0 00000000 00000000 00000000 00000000 00000001 00000000 095cd3a0 ffffff80[ 867.148562] 2010 095cd3a0 ffffff80 73706f6f 646f6d5f 00656c75 00000000 00000000 00000000[ 867.148570] 2030 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148578] 2050 f089a080 ffffffc0 f26add00 ffffffc0 f2117e88 ffffffc0 f26add28 ffffffc0[ 867.148588] 2070 f26add00 ffffffc0 095c4c08 ffffff80 dbb66f78 ffffffc0 00000003 00000007[ 867.148596] 2090 00ef2000 ffffff80 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148605] 20b0 f2f99c00 ffffffc0 00000000 00000000 00000000 00000000 f089ab40 ffffffc0[ 867.148606] [ 867.148606] X26: 0xffffffc0cde6e800:[ 867.148615] e800 00000001 00000000 d11d71a8 ffffffc0 00000000 00000000 00000000 00000000[ 867.148623] e820 cf2e6030 ffffffc0 00000000 00000000 0000046d 00000000 095c42c8 ffffff80[ 867.148632] e840 00000000 00000000 f7ec5e68 ffffffc0 00000000 00000000 00000000 00000000[ 867.148640] e860 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148649] e880 f106a880 ffffffc0 00000001 00000000 f089aa40 ffffffc0 00000124 00000000[ 867.148657] e8a0 00000024 00000000 00ef1000 ffffff80 081375b0 ffffff80 00000000 00000000[ 867.148665] e8c0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148674] e8e0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000[ 867.148675] [ 867.148675] X28: 0xffffff8008137650:[ 867.148684] 7650 a90153f3 aa0103f4 aa0203f3 aa1e03e0 d503201f f0008f21 913a1c21 f9402280[ 867.148693] 7670 b941d802 aa1303e0 940eb71d 93407c00 a94153f3 a8c27bfd d65f03c0 a9be7bfd[ 867.148701] 7690 910003fd a90153f3 aa0103f4 aa0203f3 aa1e03e0 d503201f f0008f21 913a1c21[ 867.148710] 76b0 f9402280 b9418802 aa1303e0 940eb70c 93407c00 a94153f3 a8c27bfd d65f03c0[ 867.148718] 76d0 a9be7bfd 910003fd a90153f3 aa0003f4 aa0203f3 aa1e03e0 d503201f aa1303e0[ 867.148727] 76f0 b0008b61 f9402282 91068021 940eb6fc 93407c00 a94153f3 a8c27bfd d65f03c0[ 867.148735] 7710 a9be7bfd 910003fd a90153f3 aa0003f3 aa0103f4 aa1e03e0 d503201f 52801801[ 867.148743] 7730 aa1403e0 72a04801 9401c11a f9006260 a94153f3 a8c27bfd d65f03c0 a9be7bfd[ 867.148745] [ 867.148745] X29: 0xffffffc00a4ffbc0:[ 867.148754] fbc0 095b7860 ffffff80 00000000 00000000 00ef2050 ffffff80 00000001 00000000[ 867.148763] fbe0 cde6e880 ffffffc0 00000001 00000000 081376d0 ffffff80 0a4ffc40 ffffffc0[ 867.148771] fc00 00ef0018 ffffff80 0a4ffc40 ffffffc0 00ef0024 ffffff80 40000145 00000000[ 867.148780] fc20 ee9ae000 00000040 00012ffb 00000000 00000000 00000080 00000000 00000000[ 867.148790] fc40 0a4ffc50 ffffffc0 080830f8 ffffff80 0a4ffcd0 ffffffc0 0818d2d0 ffffff80[ 867.148798] fc60 00ef2000 ffffff80 095cd000 ffffff80 cde6e8c8 ffffffc0 cdce1140 ffffffc0[ 867.148807] fc80 00000000 00000000 0818d2a4 ffffff80 00ef2000 ffffff80 095cd000 ffffff80[ 867.148815] fca0 cde6e8c8 ffffffc0 095cd000 ffffff80 00000000 00000000 00ef2050 ffffff80[ 867.148816]
上面打印出的这些都是异常发生时寄存器的值。
PC:PC也叫计数寄存器,用于存放下一条要执行的指令的地址,因此在子程序返回后,要将LR中的地址存入PC,即mov PC LR。
LR:子程序的返回地址:从子程序返回后,主程序继续执行的指令的地址称为子程序的返回地址.LR也叫链接寄存器,用于存放子程序的返回地址。在要进入子程序之前,先将子程序的返回地址存入LR
SP:SP也叫堆栈寄存器,用于存放要执行的数据。
X0~X7:传递子程序的参数和返回值,使用时不需要保存,多余的参数用堆栈传递,64位的返回结果保存在x0中。
X8:用于保存子程序的返回地址,使用时不需要保存。
X9~X15:临时寄存器,也叫可变寄存器,子程序使用时不需要保存。
X16~X17:子程序内部调用寄存器(IPx),使用时不需要保存,尽量不要使用。
X18:平台寄存器,它的使用与平台相关,尽量不要使用。
X19~X28:临时寄存器,子程序使用时必须保存。
X29:帧指针寄存器(FP),用于连接栈帧,使用时必须保存。
X30:链接寄存器(LR),用于保存子程序的返回地址。
X31:堆栈指针寄存器(SP),用于指向每个函数的栈顶。
[ 867.148820] Process insmod (pid: 1163, stack limit = 0xffffffc00a4fc000)[ 867.148822] Stack: (0xffffffc00a4ffc40 to 0xffffffc00a500000)[ 867.148826] fc40: ffffffc00a4ffc50 ffffff80080830f8 ffffffc00a4ffcd0 ffffff800818d2d0[ 867.148829] fc60: ffffff8000ef2000 ffffff80095cd000 ffffffc0cde6e8c8 ffffffc0cdce1140[ 867.148832] fc80: 0000000000000000 ffffff800818d2a4 ffffff8000ef2000 ffffff80095cd000[ 867.148834] fca0: ffffffc0cde6e8c8 ffffff80095cd000 0000000000000000 ffffff8000ef2050[ 867.148837] fcc0: 0000000000000001 ffffffc0cde6e880 ffffffc00a4ffd00 ffffff800813ab5c[ 867.148840] fce0: ffffff8000ef2000 ffffffc00a4ffe58 ffffffc0cde6e8c8 ffffff80095cd000[ 867.148843] fd00: ffffffc00a4ffe20 ffffff800813b2b4 0000000000000000 00000055736b60f0[ 867.148846] fd20: 0000000000000003 0000007fb096c8c4 0000000040000000 0000000000000015[ 867.148849] fd40: 000000000000011d 0000000000000111 ffffff8008ef2000 ffffffc0cdc44380[ 867.148851] fd60: 0000000000000000 000000000002c098 ffffffc00a4ffe20 ffffff8008f00000[ 867.148854] fd80: 0000000000000000 00000055736b60f0 ffffffc000000064 ffffff8000000072[ 867.148857] fda0: ffffff800000006e ffffff800000003f ffffff8000000124 00000000024000c0[ 867.148860] fdc0: ffff81b400000030 000003e800000001 00000000000003e8 000000000002c098[ 867.148862] fde0: 00000000633eccfc 0000000000000000 0000000000000000 0000000000000000[ 867.148865] fe00: 0000000000000000 0000000000000000 0000000000000000 0000000000000000[ 867.148868] fe20: 0000000000000000 ffffff8008082f70 0000000000000000 00000040ee9ae000[ 867.148871] fe40: ffffffffffffffff 0000000000000001 0000000000000002 ffffff800bea0000[ 867.148874] fe60: 000000000002c098 ffffff800becb9d8 ffffff800becb8d0 ffffff800beb7748[ 867.148876] fe80: 0000000000003000 00000000000030d8 0000000000000000 0000000000000000[ 867.148879] fea0: 0000000000000478 0000001a00000019 0000000000000009 0000000000000004[ 867.148882] fec0: 0000000000000003 00000055736b60f0 0000000000000000 0000000000000003[ 867.148884] fee0: 0000000000000000 0000000000000218 0000000000000001 0000000000000001[ 867.148887] ff00: 0000000000000111 0000000000000003 0000000200000002 0000000000000000[ 867.148890] ff20: 00000000000010f0 0000000000000000 0000000000000000 0000000000000040[ 867.148892] ff40: 00000055736cddb0 0000007fb096c8a0 0000000000000000 0000005585e6b600[ 867.148895] ff60: 00000055736b60f0 0000000000000000 0000000000000000 0000005585e6b5d0[ 867.148898] ff80: 00000055736b2ef8 0000000000000000 0000000000000000 0000000000000000[ 867.148901] ffa0: 0000000000000000 0000007fdbea3bd0 00000055736abdc0 0000007fdbea3bd0[ 867.148903] ffc0: 0000007fb096c8c4 0000000040000000 0000000000000003 0000000000000111[ 867.148906] ffe0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
stack limit显示的大小为kstack内核选项指定的大小。Stack 是栈开头部分的值。
[ 867.148907] Call trace:[ 867.148911] Exception stack(0xffffffc00a4ffa70 to 0xffffffc00a4ffba0)[ 867.148913] fa60: ffffff8000ef0000 0000008000000000[ 867.148916] fa80: ffffffc00a4ffc40 ffffff8000ef0024 ffffff80097c02f8 0000000000000002[ 867.148918] faa0: ffffffc00a4ffac0 000000020001b57c 0000000000000000 0000000100000000[ 867.148921] fac0: ffffffc00a4ffb60 ffffff800810d674 ffffffc00a4ffbc0 ffffff8000ef1024[ 867.148924] fae0: ffffffc0cdce10c0 ffffff80095b7860 0000000000000000 ffffff8000ef2050[ 867.148927] fb00: 0000000000000001 ffffffc0cde6e880 0000000000000000 0000000019760817[ 867.148929] fb20: 0000000000000007 0000000000000007 0000000000000001 ffffffc0f7f24b38[ 867.148932] fb40: 0000000000000022 ffffff80096280b0 ffffff8008463c3c 0000000005f5e0ff[ 867.148935] fb60: ffffff80097bfa9f 00000000fffffffe 0000000000000030 000000000000000a[ 867.148937] fb80: 00000000000224d6 0000000000000000 ffffff800813b204 0000007fb096c8a0[ 867.148944] [<ffffff8000ef0024>] init_oopsdemo+0x24/0x38 [oops_module][ 867.148953] [<ffffff80080830f8>] do_one_initcall+0x78/0x194[ 867.148958] [<ffffff800818d2d0>] do_init_module+0x64/0x1c0[ 867.148962] [<ffffff800813ab5c>] load_module+0x199c/0x1ed0[ 867.148964] [<ffffff800813b2b4>] SyS_finit_module+0xb0/0xbc[ 867.148968] [<ffffff8008082f70>] el0_svc_naked+0x24/0x28
栈回溯信息,可以从中看出函数调用关系
[ 867.148972] Code: 95ca7426 d2800000 528102e1 72a32ec1 (b9000001) [ 867.148975] ---[ end trace 1983a52768236533 ]---Segmentation fault
code是错误发生时PC指向的地址处的开头20字节的代码,括号里的是出错的具体指令。
如何根据OOPS找出bug确定出错位置在内核函数还是驱动System.map文件记录了所有符号的运行地址,这里的符号可以理解成函数名和变量。
System.map一般在内核编译完成后,根目录下生成。
0000000000000000 A __rela_size0000000000000000 A _kernel_flags_le_hi320000000000000000 A _kernel_offset_le_hi320000000000000000 A _kernel_size_le_hi32000000000000000a A _kernel_flags_le_lo320000000000000200 A PECOFF_FILE_ALIGNMENT0000000000080000 A _kernel_offset_le_lo32000000000159e638 A __rela_offset0000000001800000 A _kernel_size_le_lo32ffffff8008080000 t _headffffff8008080000 T _textffffff8008080800 T __exception_text_startffffff8008080800 T _stextffffff8008080800 T do_undefinstrffffff8008080a18 T do_sysinstrffffff8008080ab4 T do_mem_abortffffff8008080b60 T do_sp_pc_abortffffff8008080c34 T do_debug_exceptio.............ffffff8009879a48 b __key.30413ffffff8009879a48 b __key.30416ffffff8009879a48 b __key.48814ffffff8009879a48 b __key.48818ffffff8009879a48 b __key.48819ffffff8009879a48 b __key.48820ffffff8009879a48 b __key.48821ffffff800987a000 B idmap_pg_dirffffff800987d000 B swapper_pg_dirffffff800987f000 B tramp_pg_dirffffff8009880000 B _end
System.map中内核函数的范围是:ffffff8008080000 ~ ffffff8009880000。而PC出错的位置是ffffff8000ef0024。
所以,可以判定不是内核函数出错引起的,而是某个驱动模块。
如果把oops_module.ko直接编译进ko中,就是内核引起的错误了。PC出错时的地址也会刚好在System.map中。
反汇编驱动文件而OOPS信息也告诉我们,错误是出在了init_oopsdemo。
[17981.657899] PC is at init_oopsdemo+0x24/0x38 [oops_module][17981.658385] LR is at init_oopsdemo+0x18/0x38 [oops_module]
那如果OOPS没有打印出出错驱动的名字呢?
我们可以使用 cat /proc/kallsyms > kallsyms.txt命令,在kallsyms.txt中找出与PC值接近的符号。kallsyms.txt内容如下。
ffffff8008080800 T do_undefinstrffffff8008080800 T _stextffffff8008080800 T __exception_text_startffffff8008080a18 T do_sysinstrffffff8008080ab4 T do_mem_abortffffff8008080b60 T do_sp_pc_abortffffff8008080c34 T do_debug_exception.........ffffff80094cfc0c T sparse_mem_map_populateffffff80094cfc64 T _einittext0000000000000000 a oops_module.c [oops_module]ffffff8000ef0000 t $x [oops_module]ffffff8000ef0000 t init_oopsdemo [oops_module]ffffff8000ef0030 t $d [oops_module]ffffff8000ef0038 t $x [oops_module]ffffff8000ef0038 t cleanup_oopsdemo [oops_module]ffffff8000ef0058 t $d [oops_module]ffffff800bee40c8 ? __UNIQUE_ID_license2 [oops_module]ffffff800bee40d4 ? __UNIQUE_ID_author1 [oops_module]ffffff800bee40e3 ? __UNIQUE_ID_license0 [oops_module]ffffff800befb368 n $d [oops_module]0000000000000000 a oops_module.mod.c [oops_module]ffffff8000ef2000 d $d [oops_module]ffffff800bee40f8 ? $d [oops_module]ffffff800bee40f8 ? __module_depends [oops_module]ffffff800bee4101 ? __UNIQUE_ID_vermagic0 [oops_module]ffffff8000ef2000 d __this_module [oops_module]ffffff8000ef0038 t cleanup_module [oops_module]ffffff8000ef0000 t init_module [oops_module]ffffff800818d0ac u printk [oops_module]ffffff800808e770 u _mcount [oops_module]
从上面可以看出,PC的值和ffffff8000ef0058很接近。所以,基本可以确定出错的模块是oops_module。而这个模块正是我自己写的例程。
接下来,我们就要准备反汇编oops_module.ko了,根据反汇编可以进一步确认出错的行数。
aarch64-linux-gnu-objdump -D oops_module.ko > oops_module.dis
oops_module.dis 内容如下
oops_module.ko: file format elf64-littleaarch64Disassembly of section .note.gnu.build-id:0000000000000000 <.note.gnu.build-id>: 0: 00000004 st 0x00000004 ; undefined 4: 00000014 st 0x00000014 ; undefined 8: 00000003 st 0x00000003 ; undefined c: 00554e47 st 0x00554e47 ; undefined 10: 70d55614 adr x20, fffffffffffaaad3 <__UNIQUE_ID_vermagic0+0xfffffffffffaaa9a> 14: 56a7eb64 st 0x56a7eb64 ; undefined 18: a66fbdf8 st 0xa66fbdf8 ; undefined 1c: 2b31c03f cmn w1, w17, sxtw 20: bd9e1ffe st 0xbd9e1ffe ; undefinedDisassembly of section .text:0000000000000000 <init_module>: 0: a9bf7bfd stp x29, x30, [sp, #-16]! 4: 910003fd mov x29, sp 8: aa1e03e0 mov x0, x30 c: 94000000 bl 0 <_mcount> 10: 58000100 ldr x0, 30 <init_module+0x30> 14: 94000000 bl 0 <printk> 18: d2800000 mov x0, #0x0 // #0 1c: 528102e1 mov w1, #0x817 // #2071 20: 72a32ec1 movk w1, #0x1976, lsl #16 24: b9000001 str w1, [x0] 28: a8c17bfd ldp x29, x30, [sp], #16 2c: d65f03c0 ret ... 0000000000000038 <cleanup_module>: 38: a9bf7bfd stp x29, x30, [sp, #-16]! 3c: 910003fd mov x29, sp 40: aa1e03e0 mov x0, x30 44: 94000000 bl 0 <_mcount> 48: 58000080 ldr x0, 58 <cleanup_module+0x20> 4c: 94000000 bl 0 <printk> 50: a8c17bfd ldp x29, x30, [sp], #16 54: d65f03c0 ret ...Disassembly of section .modinfo:0000000000000000 <__UNIQUE_ID_license2>: 0: 6563696c fnmls z12.h, p2/m, z11.h, z3.h 4: 3d65736e ldr b14, [x27, #2396] 8: 004c5047 st 0x004c5047 ; undefined
根据反汇编和之前 PC is at init_oopsdemo+0x24/0x38 [oops_module],可以确定发生错误的是0x24的位置。
24: b9000001 str w1, [x0] #将w1寄存器的值,传送到地址值为x0的(存储器)内存中
而根据18: d2800000 mov x0, #0x0 // #0 可以确定x0 为0。
到这里也基本可以确定,是w1的值赋值给0地址时出错了。
其他方法gdb➜ oops_module aarch64-linux-gnu-gdb -q ./oops_module.ko Reading symbols from ./oops_module.ko...done.(gdb) list *init_oopsdemo+0x240x4c is in init_oopsdemo (/home/zhongyi/code/module/oops_module/oops_module.c:10).5 MODULE_AUTHOR("ZHONGYI");67 static int init_oopsdemo(void)8 {9 printk("oops module init! \n");10 *((int*)0x00) = 0x19760817;11 return 0;12 }1314 module_init(init_oopsdemo);(gdb) addr2line
Linux下addr2line命令用于将程序指令地址转换为所对应的函数名、以及函数所在的源文件名和行号。当含有调试信息(-g)的执行程序出现crash时(core dumped),可使用addr2line命令快速定位出错的位置。
如果无法确定文件名或函数名,addr2line将在它们的位置打印两个问号;如果无法确定行号,addr2line将打印0或一个问号。
参数说明:
-a:在函数名、文件名和行号信息之前,以十六进制形式显示地址。-b:指定目标文件的格式为bfdname。-C:将低级别的符号名解码为用户级别的名字。-e:指定需要转换地址的可执行文件名,默认文件是a.out。-f:在显示文件名、行号信息的同时显示函数名。-s:仅显示每个文件名(the base of each file name)去除目录名。-i:如果需要转换的地址是一个内联函数,则还将打印返回第一个非内联函数的信息。-j:读取指定section的偏移而不是绝对地址。-p:使打印更加人性化:每个地址(location)的信息都打印在一行上。-r:启用或禁用递归量限制。--help:打印帮助信息。--version:打印版本号。➜ oops_module aarch64-linux-gnu-addr2line -e ./oops_module.ko -p -f 0x24init_oopsdemo at /home/zhongyi/code/module/oops_module/oops_module.c:10➜ oops_module cat /home/zhongyi/code/module/oops_module/oops_module.c | tail -n +5 | head -n 10 MODULE_AUTHOR("ZHONGYI");static int init_oopsdemo(void){ printk("oops module init! \n"); *((int*)0x00) = 0x19760817; return 0;}module_init(init_oopsdemo);decodecode
在linux内核里面有很多脚本工具,位于linux/scripts/,里面有一个decodecode工具可以用来转换机器码,decodecode脚本可以在没有源代码或符号表的情况下,将oops异常的log作为输入就可以解析出错误位置的汇编代码。
oops_log.txt内容如下
call trace:[ 867.148911] Exception stack(0xffffffc00a4ffa70 to 0xffffffc00a4ffba0)[ 867.148913] fa60: ffffff8000ef0000 0000008000000000[ 867.148916] fa80: ffffffc00a4ffc40 ffffff8000ef0024 ffffff80097c02f8 0000000000000002[ 867.148918] faa0: ffffffc00a4ffac0 000000020001b57c 0000000000000000 0000000100000000[ 867.148921] fac0: ffffffc00a4ffb60 ffffff800810d674 ffffffc00a4ffbc0 ffffff8000ef1024[ 867.148924] fae0: ffffffc0cdce10c0 ffffff80095b7860 0000000000000000 ffffff8000ef2050[ 867.148927] fb00: 0000000000000001 ffffffc0cde6e880 0000000000000000 0000000019760817[ 867.148929] fb20: 0000000000000007 0000000000000007 0000000000000001 ffffffc0f7f24b38[ 867.148932] fb40: 0000000000000022 ffffff80096280b0 ffffff8008463c3c 0000000005f5e0ff[ 867.148935] fb60: ffffff80097bfa9f 00000000fffffffe 0000000000000030 000000000000000a[ 867.148937] fb80: 00000000000224d6 0000000000000000 ffffff800813b204 0000007fb096c8a0[ 867.148944] [<ffffff8000ef0024>] init_oopsdemo+0x24/0x38 [oops_module][ 867.148953] [<ffffff80080830f8>] do_one_initcall+0x78/0x194[ 867.148958] [<ffffff800818d2d0>] do_init_module+0x64/0x1c0[ 867.148962] [<ffffff800813ab5c>] load_module+0x199c/0x1ed0[ 867.148964] [<ffffff800813b2b4>] SyS_finit_module+0xb0/0xbc[ 867.148968] [<ffffff8008082f70>] el0_svc_naked+0x24/0x2
$ ARCH=arm64 CROSS_COMPILE=/home/zhongyi/code/rk3399_linux_release_v2.5.1_20210301/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- ./scripts/decodecode < /home/zhongyi/code/module/oops_module/oops_log.txtCode: 95ca7426 d2800000 528102e1 72a32ec1 (b9000001)All code======== 0: 95ca7426 .word 0x95ca7426 4: d2800000 .word 0xd2800000 8: 528102e1 .word 0x528102e1 c: 72a32ec1 .word 0x72a32ec1 10:* b9000001 .word 0xb9000001 <-- trapping instructionCode starting with the faulting instruction=========================================== 0: b9000001 .word 0xb9000001
执行脚本后,就可以得到出错的汇编代码。trapping instruction指出了出错的地址。根据oop_module.ko的反汇编可以知道出错的位置24: b9000001 str w1, [x0]。
注意:脚本认为该机器码是跟host结构相同的原生机器码,想要跨架构翻译要指定架构和交叉工具链。
faddr2line内核开发者为了方便问题的排查,也经常需要根据内核栈,快速定位导致问题发生的代码位置。所以,Linux 内核维护了一个 faddr2line 脚本,根据函数名+偏移量输出源码文件名和行号。
在使用这个脚本之前,还需要注意两个前提条件:
第一,带有调试信息的内核文件,一般名字为 vmlinux(注意,/boot 目录下面的 vmlinz 是压缩后的内核,不可以直接拿来使用)。第二,系统中需要安装 awk、readelf、addr2line、size、nm 等命令。对于第二个条件,这些命令都包含在 binutils 软件包中,只需要执行 apt 或者 dnf 命令安装即可。而对第一个条件中的内核调试信息,各个主要的发行版也都提供了相应的软件仓库,你可以根据文档进行安装。比如,对于 Ubuntu 来说,你可以执行下面的命令安装调试信息:
codename=$(lsb_release -cs)sudo tee /etc/apt/sources.list.d/ddebs.list << EOFdeb /d/file/gt/2023-09/bv3r3t2ffec ${codename} main restricted universe multiversedeb /d/file/gt/2023-09/bv3r3t2ffec ${codename}-updates main restricted universe multiverseEOFsudo apt-get install -y ubuntu-dbgsym-keyringsudo apt-get updatesudo apt-get install -y linux-image-$(uname -r)-dbgsym
由于我们这里的oops 是发生在ko中,而不是内核。因此,使用faddr2line指定oops_module.ko 即可。
➜ kernel git:(firefly) ✗ scripts/faddr2line /home/zhongyi/code/module/oops_module/oops_module.ko init_oopsdemo+0x24init_oopsdemo+0x24/0x30:init_oopsdemo at /home/zhongyi/code/module/oops_module/oops_module.c:18
如果oops发生在内核中,将oops_module.ko 换成对应的vmlinux即可。
最后,贴下oops_module.c的源代码,感兴趣的大家可以自己写一个分析下。
#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("BSD/GPL");MODULE_AUTHOR("ZHONGYI");static int init_oopsdemo(void){ printk("oops module init! \n"); *((int*)0x00) = 0x19760817; return 0;}module_init(init_oopsdemo);static void cleanup_oopsdemo(void){ printk("oops module exit! \n");}module_exit(cleanup_oopsdemo);MODULE_LICENSE("GPL");
原文链接:/d/file/gt/2023-09/q2vweent4xd 的具体方法
一、通过yum安装vsftpd
yum install -y vsftpd
二、修改vsftpd的配置文件
vi /etc/vsftpd/vsftpdnf
修改配置文件如下:
1.不允许匿名访问
anonymous_enable=NO
2.允许使用本地帐户进行FTP用户登录验证
local_enable=YES
3.使用户不能离开主目录
当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
chroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list
配置文件最后添加
allow_writeable_chroot=YES
要不然会报错
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
如果/etc/vsftpd/chroot_list不存在,则需要创建该文件
vi /etc/vsftpd/chroot_list
:wq直接保存并退出就行。
4.设定支持ASCII模式的上传和下载功能。
ascii_upload_enable=YESascii_download_enable=YES
最后 :wq 保存修改,重启vsftpd
systemctl restart vsftpd.service
三、新建FTP用户
useradd -d /var/ftp/public_root -g ftp -s /sbin/nologin ftpuser
修改该FTP用户密码
passwd ftpuser