-
Notifications
You must be signed in to change notification settings - Fork 143
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
内核太大,加载的时候panic了。 #8
Comments
可先把 kernel/linux-2.6.36/usr/ramfs/usr/bin/busybox 删除,再将内核配置里的NFS关闭,将内核镜像的大小控制在2.7MB左右,再试试能否 tftp 加载成功 |
我也遇到这个问题了。是不是CFE更新了在搞一些限制啊?有没有办法更新CFE呢? |
有可能小米稍微改了CFE,加了限制。当时的测试环境是: CFE version v1.0.4 可以把整个固件刷回去。官方的固件更新,不定期会带 CFE 的更新,可以刷 0.4.92 这个版本 |
0.4.92版本的CFE还是不行;和内核大小没关系,我编译了一个内核比固件里解包出来的内核还小,但是我的内核加载就会报panic; |
比较了下两个内核文件,应该是lzma压缩时头部没有写解压的文件大小导致;看了下lzma的命令是没有记录文件大小选项的,可能是小米改了lzma |
记忆有偏差,刷 0.4.85 试试 官方发布的固件,带有 CFE 的版本(如 0.4.85, 0.4.92)内部只有两个文件 brcm4709_nor.bin 和 root.ext4.lzma,brcm4709_nor.bin 这个文件实际是直接写入 /dev/mtd8 这个分区的(实际是映射到整个16MB flash),这个可以查看路由系统下 /bin/flash.sh 这个脚本: 104 upnor() { ${surfix_ver} 变量的值在R1D上为4709 官方固件可以在路由系统上,用如下命令解包: root@XiaoQiang:/userdisk/rom/0.4.85# mkxqimage -x ../brcm4709_hdr_039ef_0.4.85.bin 额外再接一下flash 包即可,这个看看路由系统的 /bin/flash.sh 的做法即知: 292 [ -f brcm${surfix_ver}_nor.bin ] && { mice_cfe 为 CFE 镜像 |
看了下vmlinuz,代码编译出来的头为5D 00 00 10 00 FF FF FF FF FF FF FF FF,标记解压包长度为FFFF,而小米的固件解包后的vmlinuz头为5D 00 00 01 00 80 BB 51 00 00 00 00 00 00 ,包含了长度信息;所以应该是小米做了改动。 |
就像bruce322说的,现在的vmlinuz的lzma header缺少未压缩时的文件大小。 |
我使用教程编译了内核,并且做了 tftp 的 server 和 nfs 的 server。 但是发现无法启动路由器,通过日志发现不停的加载vmlinuz,然后分析可能是内核加载的时候出问题了。
我拆了路由器引出串口线。观察启动过程发现应该是内核太大panic了。看readme里面说的3M内核也没什么问题,但是在我这里就出问题了。
我的路由器是那个带1TB硬盘的那个,和本项目的硬件应该是一样的。
我想知道,如何设置可以解决加载比较大的内核,比如该3M的内核,或者该如何调整内核编译使得编译的内核更小(<262144 KBytes,根据日志发现)。
make menuconfig
的时候那些模块取消比较好。内核加载过程的部分日志如下:
The text was updated successfully, but these errors were encountered: