编译主机:Debian10 64位
编译SDK:MediaTek_APSoC_SDK5030_20170331
路由芯片:MT7688
问题描述:
编译生成xxxx_uImage固件烧录进板子里面,发现内核启动完毕引导init的时候不动了。
PPP generic driver version 2.4.2
PPP MPPE Compression module registered
NET: Registered protocol family 24
PPTP driver version 0.8.5
nf_conntrack version 0.5.0 (434 buckets, 1736 max)
IPVS: Registered protocols ()
IPVS: Connection hash table configured (size=4096, memory=32Kbytes)
IPVS: ipvs loaded.
GRE over IPv4 demultiplexor driver
gre: can't add protocol
ip_tables: (C) 2000-2006 Netfilter Core Team, Type=Restricted Cone
TCP cubic registered
NET: Registered protocol family 10
NET: Registered protocol family 17
L2TP core driver, V2.0
PPPoL2TP kernel driver, V2.0
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
Warning: unable to open an initial console.
Freeing unused kernel memory: 1832k freed
Algorithmics/MIPS FPU Emulator v1.5
系统启动到这里发现不会往下初始化了,系统卡死了?
无法出现如下代码,直到完成系统的初始化:
Welcome to
__ ___ _____ _____ _ _______ ______ _____ _ ___
| \ / || ___|| __ \ | || __ ||__ __|| ___|| | / /
| ^ || |__ | | \ \| || | | | | | | |__ | |/ /
| | | || ___|| | | || || |__| | | | | ___|| \
| | | || |___ | |__/ /| || __ | | | | |___ | |\ \
|__| |___||_____||_____/ |_||_| |_| |_| |_____||_| \__\
= Everyday Genius =
mdev: /sys/block: No such file or directory
mdev: /sys/class: No such file or directory
解决过程记录:
通过代码分析,大致觉得是busybox的问题,准备调试busybox的代码,在busybox里面的init_main加入打印语句。
在source/user/busybox目录下执行 make clean,清除编译产生的文件。在source目录下执行make,重新烧录固件,发现能够成功引导系统。
后面把加入的打印语句删除。busybox重新编译,重新烧录。
一切正常,能够进入如下画面:
BusyBox v1.12.1 (2020-09-09 11:00:56 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
# RT305x_ESW: Link Status Changed
#
#
#
#
#
可能busybox编译过程某些参数太旧,导致内核调用init失败。重新编译busybox解决问题,需要在busybox目录下面把原来编译产生的文件删除,再编译,直接在source下面执行make clean并不能把busybox里面清除干净。