gzf / rg100a-aa

An ADSL enabled OpenWrt for RG100A-AA (BCM 96358VW2)
GNU General Public License v2.0
18 stars 4 forks source link

固件编译成功,但是刷机提示“Image上载失败,选择的文件包含一个非法映像” #2

Closed tsl0922 closed 11 years ago

tsl0922 commented 11 years ago

试着在Ubuntu 10.04.4下使用master分支的源码编译出来了固件,但是无法刷入路由,cfe界面上传固件后提示:Image上载失败,选择的文件包含一个非法映像,在OpenWrt的刷写固件页面同样提示不支持文件格式,不知道这是什么原因导致的呢?

源码使用 DSL2760 1.04 + OpenWRT attitude_adjustment 12.09 编译步骤按照 这里 来的:

简单说一下流程: 1:下载2760和backfire的源码,这个没啥好说的,注意2760的源码解压后,把toolchains目录移到2760U的源码下面,因为我修改了Makefile,指定了toolchains的相对路径

  1. 安装quilt,把patches目录下的补丁给2760源码打上,当然你也可以用patch直接打补丁。。然后make,等待编译结束。然后进入hostTools目录,执行make clean; make,等待编译结束
  2. 把backfire/patches下的补丁给backfire源码打上,拷贝backfire/defconfig到backfire目录里,make menuconfig根据你的需求修改配置,保存,make,等待编译结束。完了之后把bin/brcm63xx下的OpenWrt-ImageBuilder-brcm63xx-for-Linux-x86_64.tar.bz2解压
  3. 修改Build.defs,修改BCMFW,IMAGEBUILDER,分别指向2760的源码目录和ImageBuilder的解压目录,或者直接创建两个符号链接:DSL-2760U,ImageBuilder
  4. 指行./createlinks, 然后进入ImageBuilder的目录,执行 make image/4m-noweb/4m-luci
  5. 进入modules目录,执行make
  6. 回到顶层目录,make/make cfe/make oldcfe就可以生成我发布的那几个固件

中间遇到了一些错误,但都解决了。Ubuntu下需要把/bin/sh软连接到/bin/bash(默认是/bin/dash),不然fakeroot会编译出错。

tsl0922 commented 11 years ago

好吧,找到原因了:我是在虚拟机里编译的,和主机之间文件交换使用的网络共享,导致复制文件的时候文件总是损坏的,ssh连到虚拟机把文件传回来就OK了 :smile: