谷动谷力

 找回密码
 立即注册
查看: 3975|回复: 1
打印 上一主题 下一主题
收起左侧

【openwrt学习笔记一】从搭建编译环境到编译openwrt全过程

[复制链接]
跳转到指定楼层
楼主
发表于 2022-3-4 21:49:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
【openwrt学习笔记一】从搭建编译环境到编译openwrt全过程



搭建编译环境


ubuntu 环境下操作

打开终端terminal
应用程序--附件--终端



更新 apt
  1. sudo apt-get update   
复制代码

编译环境准备

安装编译需要的组件(逐条执行):
  1. sudo apt-get install gcc
  2. sudo apt-get install g++
  3. sudo apt-get install binutils
  4. sudo apt-get install patch
  5. sudo apt-get install bzip2
  6. sudo apt-get install flex
  7. sudo apt-get install bison
  8. sudo apt-get install make
  9. sudo apt-get install autoconf
  10. sudo apt-get install gettext
  11. sudo apt-get install texinfo
  12. sudo apt-get install unzip
  13. sudo apt-get install sharutils
  14. sudo apt-get install subversion
  15. sudo apt-get install libncurses5-dev
  16. sudo apt-get install ncurses-term
  17. sudo apt-get install zlib1g-dev
  18. sudo apt-get install gawk
  19. sudo apt-get install asciidoc
  20. sudo apt-get install libz-dev
复制代码
如果是 64 位操作系统,需要多操作如下步骤:(注意libc6:i386 libncurses5:i386 libstdc++6:i386 中间要加冒号)
  1. sudo apt-get update
复制代码


这样编译环境搭建已经完成


编译前准备

创建一个openwrt文件夹
  1. mkdir openwrt
复制代码


进入openwrt文件夹
  1. cd openwrt   
复制代码


下载官网的源码
  1. git clone https://github.com/openwrt/openwrt.git
复制代码
  1. gh repo clone openwrt/openwrt
复制代码
上面的方法下载的最新版本是测试版本选项版本下载
[OpenWrt Wiki] OpenWrt 版本历史
[OpenWrt Wiki] 版本发布

feeds 脚本配置
vim feeds.conf.default
打开文件后,注释掉一些不需要的源,一般使用前三个源即可
src-gitpackages https://github.com/openwrt/packages.git;for-14.07
src-git luci https://github.com/openwrt/luci.git;luci-0.12src-git routing https://github.com/openwrt-routing/packages.git;for-14.07
#src-git telephony https://github.com/openwrt/telephony.git;for-14.07
#src-git management https://github.com/openwrt-management/packages.git;for-14.07
#src-git oldpackages http://git.openwrt.org/14.07/packages.git
#src-svn xwrt http://x-wrt.googlecode.com/svn/trunk/package
#src-svn phone svn://svn.openwrt.org/openwrt/feeds/phone
#src-svn efl svn://svn.openwrt.org/openwrt/feeds/efl
#src-svn xorg svn://svn.openwrt.org/openwrt/feeds /xorg
#src-svn desktop svn://svn.openwrt.org/openwrt/feeds/desktop
#src-svn xfce svn://svn.openwrt.org/openwrt/feeds/xfce
#src-svn Ixde svn://svn.openwrt.org/openwrt/feeds/lxde#src-link custom /usr/src/openwrt/custom-feed
更新软件包
  1. ./scripts/feeds update -a   
复制代码

安装软件包
  1. ./scripts/feeds install -a
复制代码

定制剪裁openwrt


进入定制界面(里面可以选择芯片的型号,集成的组件等等,根据实际情况选择)   
  1. make menuconfig
复制代码

一般只要选择板型或芯片型号,即可,其他默认

将Target Profile 设置为 可支持硬件板子
Target Profile
  1. Multiple devices (TARGET_MULTI_PROFILE)   //多种硬件
> 2. Broadcom SoC, BCM43xx WiFi (b43, brcmfmac, default) (TARGET_bcm53xx_generic_Generic)    //博通的Soc
  3. ASUS RT-AC56U (TARGET_bcm53xx_generic_DEVICE_asus_rt-ac56u)  //华硕主板
  4. ASUS RT-AC68U (TARGET_bcm53xx_generic_DEVICE_asus_rt-ac68u)
  5. ASUS RT-AC87U (TARGET_bcm53xx_generic_DEVICE_asus_rt-ac87u)
  6. ASUS RT-N18U (TARGET_bcm53xx_generic_DEVICE_asus_rt-n18u)
  7. Buffalo WXR-1900DHP (TARGET_bcm53xx_generic_DEVICE_buffalo_wxr-1900dhp)  //我不认识这个了
  8. Buffalo WZR-600DHP2 (TARGET_bcm53xx_generic_DEVICE_buffalo_wzr-600dhp2)
  9. Buffalo WZR-900DHP (TARGET_bcm53xx_generic_DEVICE_buffalo_wzr-900dhp)
  10. Buffalo WZR-1750DHP (TARGET_bcm53xx_generic_DEVICE_buffalo_wzr-1750dhp)
  11. D-Link DIR-885L (TARGET_bcm53xx_generic_DEVICE_dlink_dir-885l)  //D-Link DIR-885L路由器
  12. Linksys EA6300 v1 (TARGET_bcm53xx_generic_DEVICE_linksys_ea6300-v1)  //以下的都不识
  13. Linksys EA6500 v2 (TARGET_bcm53xx_generic_DEVICE_linksys_ea6500-v2)
  14. Linksys EA9200 v1 (TARGET_bcm53xx_generic_DEVICE_linksys_ea9200)
  15. Linksys EA9500 (TARGET_bcm53xx_generic_DEVICE_linksys_ea9500)
  16. Luxul ABR-4500 (TARGET_bcm53xx_generic_DEVICE_luxul_abr-4500)
  17. Luxul XAP-1610 (TARGET_bcm53xx_generic_DEVICE_luxul_xap-1610)
  18. Luxul XBR-4500 (TARGET_bcm53xx_generic_DEVICE_luxul_xbr-4500)
  19. Luxul XWR-3150 (TARGET_bcm53xx_generic_DEVICE_luxul_xwr-3150)
  20. Meraki MR32 (TARGET_bcm53xx_generic_DEVICE_meraki_mr32)
  21. NETGEAR R6250 (TARGET_bcm53xx_generic_DEVICE_netgear_r6250)
  22. NETGEAR R6300 v2 (TARGET_bcm53xx_generic_DEVICE_netgear_r6300-v2)
  23. NETGEAR R7000 (TARGET_bcm53xx_generic_DEVICE_netgear_r7000)
  24. NETGEAR R7900 (TARGET_bcm53xx_generic_DEVICE_netgear_r7900)
  25. NETGEAR R8000 (TARGET_bcm53xx_generic_DEVICE_netgear_r8000)
  26. NETGEAR R8500 (TARGET_bcm53xx_generic_DEVICE_netgear_r8500)
  27. SmartRG SR400ac (TARGET_bcm53xx_generic_DEVICE_smartrg_sr400ac)
  28. PHICOMM K3 (TARGET_bcm53xx_generic_DEVICE_phicomm_k3)   //小米 PHICOMM K3路由器
  29. Tenda AC9 (TARGET_bcm53xx_generic_DEVICE_tenda_ac9)  //腾达 AC9路由器
  30. TP-Link Archer C5 v2 (TARGET_bcm53xx_generic_DEVICE_tplink_archer-c5-v2)  //TP-Link Archer C5 路由器
  31. TP-Link Archer C9 v1 (TARGET_bcm53xx_generic_DEVICE_tplink_archer-c9-v1) //TP-Link Archer C9 路由器
市场上路由器基本上用OpenWrt做的。
我的开发板是MT7628的选择
MediaTek Ralink MIPS(MTK MIPS)

Subtarget(MT76x8 base boards)

选择Package the OpenWrt-base Toolchain是为了有搭建交叉编译环境方便,不是必选的。
Target System (MediaTek Ralink MIPS) --->
        Subtarget (MT76x8 based boards) --->
                Target Profile (Jotale JS76x8 16M)
LuCI  --->
        1. Collections  --->
                <*> luci................... LuCI interface with Uhttpd as Webserver (default)

此外,勾选LuCI(网页形式的控制台)还是非常必要的。要勾选(前面出现*号):


最后Save,退出。

以上是基本的固件编译,如果需要其他功能,要再勾选或添加。


编译命令:
make 会权限不够:
改openwrt所有者
  1. chown -R user_name openwrt/
复制代码
编译然后再编译
  1. make FOCRE_UNSAFE_CONFIGURE=1 -j4 V=99
复制代码

剩下的就是等待了,第一次编译需要的时间相对比较长,这个跟你的电脑配置和网速(编译时要下载很多依赖包)有关。
***注:编译的过程中要保持电脑联网
V=s 代表显示编译信息,一定要勾选,否则出错的话无法看到错误信息。
-j4代表使用的CPU线程数量,4C8T的CPU可是使用8个线程提高速度,使用时有时会出错,可以改成-j1或者不加这个参数。


得到固件:

显示如下信息时并且终端上没有error时,代表编译成功

Signing package index...
make[2]: Leaving directory '~/openwrt'


~/openwrt/bin/ramips/openwrt-ramips-mt76x8-jotale_js76x8-16m-squashfs-sysupgrade.bin

这个文件就是我们想要的固件。
编译的时候可能会遇到形形色色的错误,大部分都是文件下载错误(源码的服务器在国外,最好自备梯子),有时候需要科学上网才行。或者网上去找到缺失的包用p2p下载软件下载下来放到相应的位置(一般在dl这个目录下)。至于其它错误,要具体情况具体对待了,我也会在以后的博客里记录一下。



串口终端打印


我这用最新版本(Snapshot 版本)
了解各版本区别:
OpenWrt哪个固件版本区别 哪个好-谷动谷力 (sunsili.com)


详细请参阅:
Openwrt | 编译openwrt源码

本帖被以下淘专辑推荐:

回复

使用道具 举报

沙发
 楼主| 发表于 2022-7-27 17:31:52 | 只看该作者
sudo apt-get install zlib1g-dev sharutils  libncurses5-dev  ncurses-term  asciidoc  libz-dev g++
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-4-25 01:57 , Processed in 0.102919 second(s), 41 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表