如何编译OpenWrt

来源:互联网 发布:按键精灵调用vb 编辑:程序博客网 时间:2024/06/06 13:01
 前言:很多玩家都想自行编译OP固件,但是很多教程都语焉不详,本人综合了其他教程做了点总结,这里非常感谢以往发教程的玩家。编译固件不需要什么很深奥的知识,但是要求起码能看懂英文,会使用SSH、WINSCP软件,了解OP的那些功能是由哪个软件包提供。
 一。安装ubuntu,具体安装流程可以百度谷歌,这里不详细描述。 桌面版、服务器版都可以,因为都是命令行操作,推荐使用服务器版本(这里需要注意的是一定要32位的系统,64位的系统也可以编译,但是有些莫名其妙的问题,具体原因未知)。 服务器版本安装时有个功能选项,选择安装SSH服务就可以了,其他功能完全可以不安装,因为用不到。 op官方不推荐虚拟机,但是本人用虚拟机也没什么大问题,有条件的还是用真实电脑来编译吧。
 二。ubuntu下OP编译环境需要安装很多组件,很多教程都是一道命令一起安装,其实这样会有一些组件没有装上的,所以还是老实的一个一个装吧。所有命令全部为SSH登陆后操作。
 升级组件包
 sudo apt-get update
 安装编译需要的组件
 sudo apt-get install gcc
 sudo apt-get install g++
 sudo apt-get install binutils
 sudo apt-get install patch
 sudo apt-get install bzip2
 sudo apt-get install flex
 sudo apt-get install bison
 sudo apt-get install make
 sudo apt-get install autoconf
 sudo apt-get install gettext
 sudo apt-get install texinfo
 sudo apt-get install unzip
 sudo apt-get install sharutils
 sudo apt-get install subversion
 sudo apt-get install libncurses5-dev
 sudo apt-get install ncurses-term
 sudo apt-get install zlib1g-dev
 sudo apt-get install subversion
 sudo apt-get install git
 sudo apt-get install gawk
 sudo apt-get install asciidoc
 sudo apt-get install libz-dev
 每一行回车后都会马上检测安装或升级那个组件,官方WIKI用的是单一条命令,本人分开了,因为这样更容易查看每一个组件的安装是否成功。下载东西之前会有提示本次要下载多少M的东西,问是否的,按y然后回车让它下载就行了。当中最后面的asciidoc组件是需要下载400多MB东西的,慢慢等了。
 三。开始编译前做些必要的步骤 新建一个openwrt目录
 mkdir openwrt
 注:WIKI中是OpenWrt,O和W是大写,请WINDOWS用户注意区分大小写! 进入openwrt目录
 cd openwrt
 下载官网源码到本地
 svn checkout svn://svn.openwrt.org/openwrt/trunk
 添加trunk目录权限
 sudo chmod -R 777 trunk
 四。编译流程。 编译完成的固件会保存在/openwrt/trunk/bin目录下面,可用WINSCP登陆上去提取。
 进入trunk目录
 cd openwrt/trunk
 更新最新源码
 ./scripts/feeds update -a
 安装最新源码
 ./scripts/feeds install -a
 更新版本号
 svn up
 进入编译组件包菜单
 make menuconfig
 恢复默认编译环境
 make defconfig
 开始编译
 make V=99
 编译完成后清除之前的编译作业(使用这个命令前,记得把编译好的固件备份出来,不然会被删除掉,切记)
 make clean
 其中make menuconfig会有一个编译管理器,在里面可以选择型号、OP功能组件,需要用到方向键、回车键、空格键。方向键是移动光标,回车键是确认,空格键是选择(在选项框按下空格键,*号是编译进固件,M是编译但是不编译进固件)。
 1.选择CPU型号
 Target System—–Atheros AR71xx/AR7240/AR913x/AR934x
 2.选择路由型号
 Target Profile—-TP-LINK TL-MR3420 v1
 3.添加luci
 LuCI—>Collections—– <*> luci
 4.添加luci的中文语言包
 LuCI—>Translations—- <*> luci-i18n-chinese
 5.添加DDNS
 LuCI—>Applications —> <*>luci-app-ddns.
 6.添加USB挂载
 Base system —> <*>block-mount
 7.添加硬盘格式支持
 Kernel modules —> Filesystems —> <*> kmod-fs-ext4
 8.添加UTF8编码
 Kernel modules —> Native Language Support —> <*> kmod-nls-utf8
 9.添加USB扩展支持
 Kernel modules —> USB Support —> <*> kmod-usb-storage-extras.
 110.添加自动挂载工具
 Utilities —> Filesystem —> <*> badblocks
 11.添加复位键支持
 Utilities —> <*> restorefactory
 12.添加一键开关无线
 Utilities —> <*> wifitoggle
 最简单的,只需要选正面两项,其余默认即可: 1、 Target System—–选择编译类型
 2、 Target Profile—-选择编译路由型号
 添加功能时尽量依靠依赖包,比如添加ddns时,只需要在luci选项里面选择luci-app-ddns,编译管理器会自动加上ddns-scripts及其他依赖库文件。 
MR3420的4M固件编译方法
 下面举个简单例子:
 编译一个mr3420的固件
 1.Target System—–选择Atheros AR71xx/AR7240/AR913x/AR934x
 2.Target Profile—-选择TP-LINK TL-MR3420 v1
 3.LuCI—-选择Collections—– <*> luci
 4.LuCI—-选择Translations—-<*> luci-i18n-chinese
 5.Exit—-Yes
 6.开始编译make V=99,最后会得到一个4M的带中文luci的mr3420固件。 
MR3420的8M固件编译方法
 五。进阶设置。
 用WINSCP登陆
 1.在路径 /trunk/tools/firmware-utils/src/mktplinkfw.c 这个文件里边有个“fw max len”,默认3c0000是4M的,请改成7c0000 (这一步把固件最大限制改成8M),如果是16mflash,请改成fc0000(最大限制改成16m)。
 2、修改target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr841n.c(找相应文件)
4M:
 41 .name = "u-boot",
 42 .offset = 0,
 43 .size = 0x020000,
 44 .mask_flags = MTD_WRITEABLE,
 45 }, {
 46 .name = "kernel",
 47 .offset = 0x020000,
 48 .size = 0x140000,
 49 }, {
 50 .name = "rootfs",
 51 .offset = 0x160000,
 52 .size = 0x290000,
 53 }, {
 54 .name = "art",
 55 .offset = 0x3f0000,
 56 .size = 0x010000,
 57 .mask_flags = MTD_WRITEABLE,
 58 }, {
 59 .name = "firmware",
 60 .offset = 0x020000,
 61 .size = 0x3d0000,
 62 }
 63 };
8M::
 41 .name = "u-boot",
 42 .offset = 0,
 43 .size = 0x020000,
 44 .mask_flags = MTD_WRITEABLE,
 45 }, {
 46 .name = "kernel",
 47 .offset = 0x020000,
 48 .size = 0x140000,
 49 }, {
 50 .name = "rootfs",
 51 .offset = 0x160000,
 52 .size = 0x690000,
 53 }, {
 54 .name = "art",
 55 .offset = 0x7f0000,
 56 .size = 0x010000,
 57 .mask_flags = MTD_WRITEABLE,
 58 }, {
 59 .name = "firmware",
 60 .offset = 0x020000,
 61 .size = 0x7d0000,
 62 }
 63 };
16M::
 41 .name = "u-boot",
 42 .offset = 0,
 43 .size = 0x020000,
 44 .mask_flags = MTD_WRITEABLE,
 45 }, {
 46 .name = "kernel",
 47 .offset = 0x020000,
 48 .size = 0x140000,
 49 }, {
 50 .name = "rootfs",
 51 .offset = 0x160000,
 52 .size = 0xe90000,
 53 }, {
 54 .name = "art",
 55 .offset = 0xff0000,
 56 .size = 0x010000,
 57 .mask_flags = MTD_WRITEABLE,
 58 }, {
 59 .name = "firmware",
 60 .offset = 0x020000,
 61 .size = 0xfd0000,
 62 }
 63 };
8M::
 0x000000000000-0x000000020000 : "u-boot"
 0x000000020000-0x000000160000 : "kernel"
 0x000000160000-0x0000007f0000 : "rootfs"
 0x000000620000-0x0000007f0000 : "rootfs_data"
 0x0000007f0000-0x000000800000 : "art"
 0x000000020000-0x0000007f0000 : "firmware"
4M::
 0x000000000000-0x000000020000 : "u-boot"
 0x000000020000-0x000000160000 : "kernel"
 0x000000160000-0x0000003f0000 : "rootfs"
 0x000000304000-0x0000003f0000 : "rootfs_data"
 0x0000003f0000-0x000000400000 : "art"
 0x000000020000-0x0000003f0000 : "firmware"
16M::
 0x000000000000-0x000000020000 : "u-boot"
 0x000000020000-0x000000160000 : "kernel"
 0x000000160000-0x000000ff0000 : "rootfs"
 0x000000380000-0x000000ff0000 : "rootfs_data"
 0x000000ff0000-0x000001000000 : "art"
 0x000000020000-0x000000ff0000 : "firmware"
 如想节省编译时间可自行下载以下dl压缩包,编译时就不需要花时间在线下载了: 20110512新增:dl压缩包(国内网速真是快呀)http://u.115.com/file/dnahsytg# dl.rar
 把原来的DL删掉,复制过去。然后恢复默认编译环境 make defconfig 需要连续几个恢复: 进入编译组件包菜单 make menuconfig 也要恢复默认 进入编译组件包菜单 make menuconfig Reset to defaults
 然后继续 make clean make defconfig
 全部恢复后再 ./scripts/feeds update -a 安装最新源码 ./scripts/feeds install -a 更新版本号 svn up 进入编译组件包菜单 make menuconfig
 开始编译 make V=99
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 ppt转码失败怎么办 苹果xicloud满了怎么办 小米note3不充电怎么办 网易云海外会员怎么办 百度云支付失败怎么办 信用卡输入密码错误怎么办 相机储存卡被锁怎么办 sd卡检测不到怎么办 手机图标闪退怎么办 电视看爱奇艺版权受限怎么办 王者荣耀重复id怎么办 拼多多资源位下架怎么办 百度云网络异常怎么办 公开课没上好怎么办 ios云备份失败怎么办 网易云登录异常怎么办? 阴阳师网易账号冻结怎么办 梦幻账号被冻结怎么办 手机忘记解锁密码怎么办 胃疼持续一天怎么办 胃痛一天一夜怎么办 孩子爱玩电脑怎么办 ipad不显示画面怎么办 正版win10换电脑怎么办 电脑系统不是正版怎么办 苹果平板进水了怎么办 华为平板进水了怎么办 三星平板进水了怎么办 笔记本cpu运行过高怎么办 微博永久性封号怎么办 电脑占用内存多怎么办 直播签约后悔了怎么办 移动宽带网络不稳定怎么办 股票帐号被锁定怎么办 电脑帐号锁定了怎么办 云校家帐号被锁定怎么办 qq音乐停止运行怎么办 做事效率低怎么办教案 孩子做事效率低怎么办 百度搜不到答案怎么办 学乐云账号忘了怎么办