openwrt编译固件详细步骤及常见问题汇总

正在查看 18 条回复
  • 作者
    帖子
    • okass - WirelessLink社区okass
      参与者
      #1190
      Up
      -1
      Down
      ::

      如下是openwrt编译固件的详细步骤,总流程如下

      package → dl → build_dir → staging_dir → bin

       

      编译成功的几个关键点

      • 磁盘root空间必须保证在40以上,为了保险起见,建议50G以上,越大越好。根据经验,一套源码大概要40G的空间才能顺利完成。否则编译过程中会提示root根目录空间不够
      • 确保源码内文件\文件夹权限正确,非必要尽量不要使用root用户权限;如果使用了,记得恢复为当前用户权限
      • 包的完整行一定要保证,不然中途可能失败
      • 在编译的过程中终端terminal界面无提示,不用人为干预,要一次run到底;不要轻易ctrl+c打断编译,否则只能重头再来。

       

      1. 升级组件及安装依赖

      sudo apt-get update
      sudo apt-get upgrade
      sudo apt install gcc g++ unzip make libncurses-dev mkisofs

       

      2.下载openwrt最新源码

      sudo git clone https://git.openwrt.org/openwrt/openwrt.git
      
      #cd openwrt
      
      # ./scripts/feeds update -a
      # ./scripts/feeds install -a

       

      3. 编译,根据自己的需求选择详细配置

      make menuconfig
      
      Target System ---> x86
      Subtarget ---> x86_64
      Target Images --->ext4
      --->Build LiveCD image
      Global build settings --->Compile with support for patented functionality

       

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1191
      Up
      0
      Down
      ::

      下面以LUCI为列解释更详细的编译过程如下

      目录

      一、基础环境准备
      二、编译具体步骤
      2.1 编译详细过程记录
      2.2 Menuconfig 编译参数详解
      2.2.1 LUCI全部插件列表及解释
      2.2.2 Openwrt 各默认配置文件说明
      2.3 Openwrt编译成功后固件的各种格式说明
      三、常见问题及解决方案
      四、参考文章

       

       

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1192
      Up
      0
      Down
      ::

      一、基础环境准备

      1. Linux系统,建议Ubuntu或Linuxmint,这里是Mint 20.3版本

      2. 出国留学环境准备(网络环境十分重要,不然后面下载一些dl依赖文件可能会缺失最终导致编译失败)
      我这里的环境需要将network设置为automatic,如果设置为manual 则会在编译过程中出现某些网址无法ping通的情况

      3.  SSH或者Putty 等其他远程登录工具,本地开发者可忽略

       

      二、编译具体步骤

      Openwrt 的编译过程含基础软件包的更新和Menuconfig参数的详细配置

      2.1 编译详细过程记录

      !!! 第一次编译过程详细记录

      1>. 首先装好 Ubuntu 64bit,推荐 Ubuntu 18 LTS x64 / 本地使用的是linuxmint 20
      2>. 更新软件源及安装依赖

      # sudo apt-get update
      
      # sudo apt-get -y install build-essential asciidoc binutils bzip2 curl gawk gettext git libncurses5-dev libz-dev patch python3.5 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf  ninja-build

       

      3>. 下载固件源码

      本地创建openwrt目录

      # mkdir openwrt
      # cd openwrt
      # git clone https://git.openwrt.org/openwrt/openwrt.git

       

      (非必选) passwall 版本的源如下

      #git clone -b 19.07 –single-branch https://github.com/Lienol/openwrt openwrt

      以非root用户进行后续编译操作,将openwrt文件夹改为当前用户权限
      # sudo chown -R $USER:$USER openwrt (推荐)
      # sudo chmod 777 -R openwrt(修改权限,重要!!)

       

      4>. 如果发现某些插件链接失效,则可以在本地进行修改更新。具体的源可以自己到github寻找
      # vim feeds.conf.default

      在文件后添加一行仓库地址
      src-git laohu https://github.com/xxxxx

      5>. 更新feeds 软件包集合

      # ./scripts/feeds clean
      # ./scripts/feeds update -a
      # ./scripts/feeds install -a

       

      6> 配置编译参数

      # make menuconfig

      如果出现文件权限提示: xxxx overriding mode 0644 (rw-r–r–)?  直接输入  -f  进行强制执行即可

       

      • 基本的CPU型号配置,和生成固件格式

      Target System:可以选择路由器的CPU品牌、架构等信息。
      Subtarget:进一步精确选择,一般可以精确到CPU型号(部分路由器可能不显示此项)。
      Target Profile:可以选择具体的路由器型号。
      Target Image: 编译输出的固件格式。

      另外target Image参数下面的–>Image Option –>Root file system size(in MB) 也建议设置一下。可以根据经验评估下编译后固件的大小。不然尺寸太小可能会在后续编译过程中出现错误提示:您的磁盘空间不够。一般建议写512左右,当然可以根据实际情况调整。

       

      wirelesslink.net | openwrt menuconfig参数配置

       

      • LUCI  –>Collections –[*]LUCI, 即开启Uhttpd。这部分一定要配置好,不然编译成功后无法进入web 后台

      wirelesslink.net | openwrt luci uhttpd

       

      • LUCI常用的插件配置,LuCI –> Applications –>[]luci-app-xxx 这个根据自己的需求适当选择;也可以在后续手动安装插件包

      wirelesslink.net | openwrt luci 插件app

       

      • LUCI 主题配置, LuCI –> Themes –> []luci-theme-xxx 当然也可以后续使用其他的主题进行安装

      wirelesslink.net | openwrt luci theme

       

      • LuCI 中文语言包,LuCI –>Modules–> Translations –> [*] chinese simplified 根据自己需求选择即可。

      wirelesslink.net | openwrt luci lang config

      一般选择好这几项参数后就可以编译了

       

      如果不打算调整组件则输入make defconfig,它会检测编译环境并生成默认的编译配置文件。

      #make defconfig

       

      7>选好CPU/路由器型号后,进入Luci——Application菜单项,即可找到相应的插件。

      如果你需要安装插件,那么上下键移动选中此项,按Y键即可添加。

      8>.各项功能设置完毕后,左右键选择save并回车保存设置,保存过程中一路OK回车即可。

      9>.保存完毕后,左右键选择exit并回车,一路退出配置界面。

       

      10>.运行以下命令预下载编译所需的软件包(国内请尽量全局出国留学),这一步非常重要,如果包下载不完整,后面的编译大概率会失败!!!

      #make -j8 download V=s
      ps:这里的j8,后面的8代表的是CPU的核心数,如果是4核,写成j4 替代
      如果遇到包下载失败,可以尝试使用root用户下载
      #sudo make -j8 download V=s
      下载完毕后会有部分包恢复到root权限,再使用chwon命令将包改为当前用户权限
      #cd dl
      # sudo chown -R $USER:$USER *

      # sudo chmod 777 -R openwrt(修改权限,重要!!)

      -j8是指使用8个线程下载,理论上是数字越大下载越快,但似乎有个上限,实测5线程以上其实速度相差不了多少,在网络好的情况下,基本在5分钟以内能下载完。

       

      11> 检查文件的完整性

      #find dl -size -1024c -exec ls -l {} \;

      此命令可以列出下载不完整的文件(根据经验得出小于1k的文件属于下载不完整),如果存在这样的文件可以使用命令

      find dl -size -1024c -exec rm -f {} \;

      将它们删除,然后重新执行make download下载并反复检查,确认所有文件完整可大大提高编译成功率,避免浪费时间。

       

      12>.运行以下命令开始编译固件,

      第一次编译可能耗时较长,耐心等待2—3个小时。

      第二次编译大概时间为30分钟(非root账户编译,openwrt不建议root账户编译)

      make -j1 V=s

      -j 后面是线程数,这里使用单线程编译。第一次编译推荐用单线程, 即可开始编译你要的固件了,新手推荐单线程编译,一是因为玄学问题可能成功率高,二是方便查看错误日志。

      比如电脑时4核CPU,编译可以选择 make -j5 V=99,其它cpu可以使用内核数量N+1来相应修改

      启用多线程编译后的效果,可以看到4核心CPU全速运行

      wirelesslink.net | openwrt 多线程编译

       

      13>.编译完成后镜像输出路径:

      openwrt19/bin/targets

       

      编译成功后,登录系统后台如下

      wirelesslink.net| openwrt编译成功后的后台

       

      !!! 第二次编译详细记录
      1> [非必选] 更新软件包

      长期未编译的环境建议更新下,短期多次编译的可以不用操作

      #sudo apt update && sudo apt upgrade

      #cd openwrt

      拉取最新的openwrt版本源码

      #sudo  git pull

      更新 feeds 源中的软件包源码

      # ./scripts/feeds update -a

      安装feeds 源中的软件包源码

      # ./scripts/feeds install -a

       

       

      2> 编译环境旧文件清理

      2.1> [非必选] 清除旧的编译产物

      make clean
      在源码有大规模更新或者内核更新后执行,以保证编译质量。此操作会删除/bin和/build_dir目录中的文件。

       

      2.2> [非必选] 清除旧的编译产物、交叉编译工具及工具链等目录

      make dirclean
      更换架构编译前必须执行。此操作会删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件。

       

      2.3> [非必选]  清除 Open­Wrt 源码以外的文件

      make distclean
      除非是做开发,并打算 push 到 GitHub 这样的远程仓库,否则几乎用不到。此操作相当于make dirclean外加删除/dl、/feeds目录和.config文件。

       

      2.4> [非必选]  还原 Open­Wrt 源码到初始状态

      git clean -xdf
      如果把源码改坏了,或者长时间没有进行编译时使用。

       

      2.5> [必选] 清除临时文件

      rm -rf tmp
      删除执行make menuconfig后产生的一些临时文件,包括一些软件包的检索信息,删除后会重新加载package目录下的软件包。若不删除会导致一些新加入的软件包不显示。

       

      2.6> [必选]  删除编译配置文件

      rm -f .config
      在不删除的情况下如果取消选择某些组件它的依赖组件不会自动取消,所以对于需要调整组件的情况下建议删除。

       

       

      3> 重新编译

      3.1 > 配置menuconfig

      # make menuconfig

       

      3.2> 涉及到包的更新配置请重新download并改权限(这里之所以用sudo,是因为我的环境下有些包必须要root权限才能下载)

      #sudo make -j8 download V=s
      下载完毕后会有部分包恢复到root权限,再使用chwon命令将包改为当前用户权限
      #cd dl
      # sudo chown -R $USER:$USER *

      #cd ..

       

      检查包的完整性

      # find dl -size -1024c -exec ls -l {} \;

       

      #make clean

      3.3> 编译。多线程编译后自动进入单线程编译

      # make -j$(nproc) || make -j1 || make -j1 V=s

      或者

      # make -j8 V=s

       

      如果遇到编译失败,一些玄学问题无法解决。可以尝试使用root用户重复第五部分: 如果需要重新配置menuconfig , 重新来一遍

       

       

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1193
      Up
      0
      Down
      ::

      2.2 Menuconfig 编译参数详解

       

      2.2.1  LUCI全部插件列表及解释

      LuCI —> Applications —> luci-app-accesscontrol #访问时间控制

      LuCI —> Applications —> luci-app-acme #ACME自动化证书管理环境

      LuCI —> Applications —> luci-app-adblock #ADB广告过滤

      LuCI —> Applications —> luci-app-adbyby-plus #广告屏蔽大师Plus +

      LuCI —> Applications —> luci-app-advanced-reboot #Linksys高级重启

      LuCI —> Applications —> luci-app-ahcp #支持AHCPd

      LuCI —> Applications —> luci-app-airplay2 #AirPlay音乐推流(安卓+IOS)

      LuCI —> Applications —> luci-app-amule #aMule下载工具

      LuCI —> Applications —> luci-app-aria2 # Aria2下载工具

      LuCI —> Applications —> luci-app-arpbind #IP/MAC绑定

      LuCI —> Applications —> luci-app-asterisk #支持Asterisk电话服务器

      LuCI —> Applications —> luci-app-attendedsysupgrade #固件更新升级相关

      LuCI —> Applications —> luci-app-autoreboot #支持计划重启

      LuCI —> Applications —> luci-app-baidupcs-web #百度网盘管理

      LuCI —> Applications —> luci-app-bcp38 #BCP38网络入口过滤(不确定)

      LuCI —> Applications —> luci-app-bird1-ipv4 #对Bird1-ipv4的支持

      LuCI —> Applications —> luci-app-bird1-ipv6 #对Bird1-ipv6的支持

      LuCI —> Applications —> luci-app-bmx6 #BMX6路由协议

      LuCI —> Applications —> luci-app-bmx7 #BMX7路由协议

      LuCI —> Applications —> luci-app-cifs-mount #CIFS/SMB挂载设置

      LuCI —> Applications —> luci-app-cifsd #CIFS/SMB网络共享

      LuCI —> Applications —> luci-app-cjdns #加密IPV6网络相关

      LuCI —> Applications —> luci-app-clamav #ClamAV杀毒软件

      LuCI —> Applications —> luci-app-commands #Shell命令模块

      LuCI —> Applications —> luci-app-cshark #CloudShark捕获工具

      LuCI —> Applications —> luci-app-ddns #动态域名 DNS(集成阿里DDNS客户端)

      LuCI —> Applications —> luci-app-diag-core #core诊断工具

      LuCI —> Applications —> luci-app-diskman #磁盘管理工具

      —luci-app-diskman —> Include btrfs-progs #新型的写时复制 (COW)

      —luci-app-diskman —> Include lsblk #lsblk命令 用于列出所有可用块设备的信息

      —luci-app-diskman —> Include mdadm #mdadm命令 用于创建、管理、监控RAID设备的工具

      —luci-app-diskman —> Include kmod-md-raid456 #RAID 4,5,6 驱动程序模块

      —luci-app-diskman —> Include kmod-md-linear #RAID 驱动程序模块

      LuCI —> Applications —> luci-app-dnscrypt-proxy #DNSCrypt解决DNS污染

      LuCI —> Applications —> luci-app-dnsforwarder #DNSForwarder防DNS污染

      LuCI —> Applications —> luci-app-dockerman #Docker容器

      LuCI —> Applications —> luci-app-dump1090 #民航无线频率(不确定)

      LuCI —> Applications —> luci-app-dynapoint #DynaPoint(未知)

      LuCI —> Applications —> luci-app-e2guardian #Web内容过滤器

      LuCI —> Applications —> luci-app-familycloud #家庭云盘

      LuCI —> Applications —> luci-app-filetransfer #文件传输(该功能支持浏览器安装ipk包)

      LuCI —> Applications —> luci-app-firewall #添加防火墙

      LuCI —> Applications —> luci-app-flowoffload #Turbo ACC网络加速(集成FLOW,BBR,NAT,DNS…)

      LuCI —> Applications —> luci-app-freifunk-diagnostics #freifunk组件 诊断(未知)

      LuCI —> Applications —> luci-app-freifunk-policyrouting #freifunk组件 策略路由(未知)

      LuCI —> Applications —> luci-app-freifunk-widgets #freifunk组件 索引(未知)

      LuCI —> Applications —> luci-app-frpc #内网穿透Frp客户端

      LuCI —> Applications —> luci-app-frps #内网穿透Frp服务端

      LuCI —> Applications —> luci-app-fwknopd #Firewall Knock Operator服务器

      LuCI —> Applications —> luci-app-guest-wifi #WiFi访客网络

      LuCI —> Applications —> luci-app-haproxy-tcp #HAProxy负载均衡-TCP

      LuCI —> Applications —> luci-app-hd-idle #硬盘休眠

      LuCI —> Applications —> luci-app-hnet #Homenet Status家庭网络控制协议

      LuCI —> Applications —> luci-app-ipsec-vpnd #VPN服务器 IPSec

      LuCI —> Applications —> luci-app-kodexplorer #KOD可道云私人网盘

      LuCI —> Applications —> luci-app-lxc #LXC容器管理

      LuCI —> Applications —> luci-app-meshwizard #网络设置向导

      LuCI —> Applications —> luci-app-minidlna #完全兼容DLNA / UPnP-AV客户端的服务器软件

      LuCI —> Applications —> luci-app-mjpg-streamer #兼容Linux-UVC的摄像头程序

      LuCI —> Applications —> luci-app-mtwifi #联发科 MT WiFi驱动的支持,其它硬件配置不要选这个

      LuCI —> Applications —> luci-app-music-remote-center #DAAP遥控音乐服务器

      LuCI —> Applications —> luci-app-mwan3 #MWAN3负载均衡

      LuCI —> Applications —> luci-app-mwan3helper #MWAN3分流助手

      LuCI —> Applications —> luci-app-n2n_v2 #N2N内网穿透 N2N v2 VPN服务

      LuCI —> Applications —> luci-app-netdata #Netdata实时监控(图表)

      LuCI —> Applications —> luci-app-nfs #NFS网络共享

      LuCI —> Applications —> luci-app-nft-qos #QOS流控 Nftables版

      LuCI —> Applications —> luci-app-nlbwmon #网络带宽监视器

      LuCI —> Applications —> luci-app-noddos #NodDOS Clients 阻止DDoS攻击

      LuCI —> Applications —> luci-app-ntpc #NTP时间同步服务器

      LuCI —> Applications —> luci-app-ocserv #OpenConnect VPN服务

      LuCI —> Applications —> luci-app-olsr #OLSR配置和状态模块

      LuCI —> Applications —> luci-app-olsr-services #OLSR服务器

      LuCI —> Applications —> luci-app-olsr-viz #OLSR可视化

      LuCI —> Applications —> luci-app-openvpn #OpenVPN客户端

      LuCI —> Applications —> luci-app-openvpn-server #易于使用的OpenVPN服务器 Web-UI

      LuCI —> Applications —> luci-app-p910nd #打印服务器模块

      LuCI —> Applications —> luci-app-pagekitec #Pagekite内网穿透客户端

      LuCI —> Applications —> luci-app-polipo #Polipo代理(是一个小型且快速的网页缓存代理)

      LuCI —> Applications —> luci-app-pppoe-relay #PPPoE NAT穿透 点对点协议(PPP)

      LuCI —> Applications —> luci-app-privoxy #Privoxy网络代理(带过滤无缓存)

      LuCI —> Applications —> luci-app-qbittorrent #BT下载工具(qBittorrent)

      LuCI —> Applications —> luci-app-qos #流量服务质量(QoS)流控

      LuCI —> Applications —> luci-app-radicale #CalDAV/CardDAV同步工具

      LuCI —> Applications —> luci-app-ramfree #释放内存

      LuCI —> Applications —> luci-app-rp-pppoe-server #Roaring Penguin PPPoE Server 服务器

      LuCI —> Applications —> luci-app-samba #网络共享(Samba)

      LuCI —> Applications —> luci-app-samba4 #网络共享(Samba4)

      LuCI —> Applications —> luci-app-sfe #Turbo ACC网络加速(flowoffload二选一)

      LuCI —> Applications —> luci-app-s-s-libes #SS-libev服务端

      LuCI —> Applications —> luci-app-shairplay #支持AirPlay功能

      LuCI —> Applications —> luci-app-siitwizard #SIIT配置向导 SIIT-Wizzard

      LuCI —> Applications —> luci-app-simple-adblock #简单的广告拦截

      LuCI —> Applications —> luci-app-softethervpn #SoftEther VPN服务器 NAT穿透

      LuCI —> Applications —> luci-app-splash #Client-Splash是无线MESH网络的一个热点认证系统

      LuCI —> Applications —> luci-app-sqm #流量智能队列管理(QOS)

      LuCI —> Applications —> luci-app-squid #Squid代理服务器

      LuCI —> Applications —> luci-app-ssr-plus #ShadowsocksR Plus+

      —luci-app-ssr-plus —> Include Shadowsocks V2ray Plugin #SS V2Ray插件

      —luci-app-ssr-plus —> Include V2Ray #V2ray客户端

      —luci-app-ssr-plus —> Include Trojan #Trojan客户端

      —luci-app-ssr-plus —> Include redsocks2 #redsocks2代理

      —luci-app-ssr-plus —> Include Kcptun #Kcptun加速

      —luci-app-ssr-plus —> Include ShadowsocksR Server #SSR服务器

      LuCI —> Applications —> luci-app-ssrserver-python #SSR Python服务器

      LuCI —> Applications —> luci-app-statistics #流量监控工具

      LuCI —> Applications —> luci-app-syncdial #多拨虚拟网卡(原macvlan)

      LuCI —> Applications —> luci-app-tinyproxy #Tinyproxy是 HTTP(S)代理服务器

      LuCI —> Applications —> luci-app-transmission #BT下载工具

      LuCI —> Applications —> luci-app-travelmate #旅行路由器

      LuCI —> Applications —> luci-app-ttyd #网页终端命令行

      LuCI —> Applications —> luci-app-udpxy #udpxy做组播服务器

      LuCI —> Applications —> luci-app-uhttpd #uHTTPd Web服务器

      LuCI —> Applications —> luci-app-unblockmusic #解锁网易云灰色歌曲3合1新版本

      —UnblockNeteaseMusic Golang Version #Golang版本

      —UnblockNeteaseMusic NodeJS Version #NodeJS版本

      LuCI —> Applications —> luci-app-unblockneteasemusic-go #解除网易云音乐(合并)

      LuCI —> Applications —> luci-app-unblockneteasemusic-mini #解除网易云音乐(合并)

      LuCI —> Applications —> luci-app-unbound #Unbound DNS解析器

      LuCI —> Applications —> luci-app-upnp #通用即插即用UPnP(端口自动转发)

      LuCI —> Applications —> luci-app-usb-printer #USB 打印服务器

      LuCI —> Applications —> luci-app-v2ray-server #V2Ray服务器

      LuCI —> Applications —> luci-app-verysync #微力同步

      LuCI —> Applications —> luci-app-vlmcsd #KMS服务器

      LuCI —> Applications —> luci-app-vnstat #vnStat网络监控(图表)

      LuCI —> Applications —> luci-app-vpnbypass #VPN BypassWebUI 绕过VPN设置

      LuCI —> Applications —> luci-app-vsftpd #FTP服务器

      LuCI —> Applications —> luci-app-watchcat #断网检测功能与定时重启

      LuCI —> Applications —> luci-app-webadmin #Web管理页面设置

      LuCI —> Applications —> luci-app-webshell #网页命令行终端

      LuCI —> Applications —> luci-app-wifischedule #WiFi计划任务

      LuCI —> Applications —> luci-app-wireguard # WireGuard VPN

      LuCI —> Applications —> luci-app-wirelessregdb #WiFi无线

      LuCI —> Applications —> luci-app-wol #WOL网络唤醒

      LuCI —> Applications —> luci-app-wrtbwmon #实时流量监测

      LuCI —> Applications —> luci-app-xlnetacc #迅雷快鸟

      LuCI —> Applications —> luci-app-zerotier #ZeroTier内网穿透

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1195
      Up
      1
      Down
      ::

      2.2.2 Openwrt 各默认配置文件说明

      配置说明文件路径
      镜像生成方式控制
target/linux/ramips/image/Makefile
      board检测配置脚本(对升级有影响)
匹配/proc/cpuinfo中字段设置board名字target/linux/ramips/base-files/lib/ramips.sh
      升级镜像检查脚本
      根据board名字来检测镜像中magic是否匹配
      target/linux/ramips/base-files/lib/upgrade/platform.sh
      uboot-evntools 分区设置
根据board名字设置uboot env分区所在的mtd及大小,之后在系统中可以通过fw_printenv、fw_setenv来查看或设置uboot env中的变量package/boot/uboot-envtools/files/ramips
      usb_led、wifi_led设置
根据board名字设置led为在dts中定义的gpiotarget/linux/ramips/base-files/etc/board.d/01_leds
      status_led设置
      根据board名字设置status_led为在dts中定义的gpis
      target/linux/ramips/base-files/etc/diag.sh
      Wifi参数配置
wifi的默认开启方式、ssid、加密方式等配置package/kernel/mac80211/files/lib/wifi/mac80211.sh
      硬件资源的配置
(usb、gpio、flash等),即dts
target/linux/ramips/dts/下文件
      以太网网络配置(lan/wan配置)
      设置switch的port vlan,及lan、wan端口的配置,lan、wan的mac地址配置
      target/linux/ramips/base-files/etc/board.d/02_network
      配置默认主机名package/base-files/files/etc/config/system
      配置默认登录密码package/base-files/files/etc/shadow
      配置默认登录SSHpackage/network/services/dropbear/files/dropbear.config

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1197
      Up
      0
      Down
      ::

      2.2.3 Openwrt编译成功后的各种固件格式说明

       

      固件格式说明
      openwrt-x86-generic-combined-ext4.img.gzrootfs工作区
存储格式为ext4
      openwrt-x86-generic-combined-jffs2-128k.imgjffs2可以修改,也就是可以自行更换(删除)rootfs的配置文件,而不需要重新刷固件
      openwrt-x86-generic-combined-squashfs.imgsquashfs是个只读的文件系统,相当于win的ghost,使用中配置错误,可直接恢复默认
      openwrt-x86-generic-rootfs-ext4.img.gzrootfs的镜像,不带引导,可自行定义用grub或者syslinux来引导,存储区为ext4

      为了更清楚的说明这个问题,可以参考以下文章:
      http://wiki.openwrt.org/doc/techref/header
      从这里可以看出一个完整的镜像文件至少要包含三个部分:Loader 、Kernel 、RootFS

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1199
      Up
      0
      Down
      ::

      编译常见问题汇总

       

      1. [issue] openwrt编译失败,必须使用root 权限才能编译,但openwrt还不让用root。

      解决的问题记录下
      方案1:使用普通用户无权限编译失败
      原因:用普通用户编译失败原因是普通用户没有对openwrt里文件操作的权限,可以通过ubuntu文件夹观看,所有文件都有锁。
      解决:

      # sudo chmod -R 777 openwrt

      更改文件夹及里边嵌套的文件的使用权限。

       

      方案2:使用root编译报错
      原因:因为openwrt不建议用root编译
      解决:
      Export FORCE_UNSAFE_CONFIGURE=1
      Export FORCE=1

      修改 include/prereq-build.mk。最新的版本已去掉这个限制。

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1200
      Up
      0
      Down
      ::

      2. [issue]  ./scripts/feeds install -a 出现编译环境警告

      WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libpam', which does not exist WARNING: Makefile 'package/utils/busybox/Makefile' has a build dependency on 'libpam', which does not exist
      WARNING: Makefile 'package/network/utils/curl/Makefile' has a dependency on 'libgnutls', which does not exist
      WARNING: Makefile 'package/network/utils/curl/Makefile' has a dependency on 'libopenldap', which does not exist
      WARNING: Makefile 'package/network/utils/curl/Makefile' has a dependency on 'libidn2', which does not exist
      WARNING: Makefile 'package/network/utils/curl/Makefile' has a dependency on 'libssh2', which does not exist
      WARNING: Makefile 'package/boot/kexec-tools/Makefile' has a dependency on 'liblzma', which does not exist
      WARNING: Makefile 'package/network/services/lldpd/Makefile' has a dependency on 'libnetsnmp', which does not exist

       

      重新run一遍,
      # ./scripts/feeds update -a
      # ./scripts/feeds install -a

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1201
      Up
      0
      Down
      ::

      [question] make config,make menuconfig,make oldconfig,make xconfig,make defconfig,make gconfig?

      在进行内核配置,或者是对一些软件的配置和编译中,常常会遇到:

      make config

      make menuconfig

      make oldconfig

      make xconfig

      make defconfig

      make gconfig

      —————————————————————————————

      1、make config

      是文本式,对话式,基于命令行的一种配置。

      2、make menuconfig

      这是有菜单选项以及有辅助图形界面的配置,基于ncurses库。(常常使用)

      3、make oldconfig

      使用旧的(之前)的配置

      4、make xconfig

      真正意义上的用到了图形界面的配置,使用的是QT的库。由于会加载额外的库,并不是用得很多。

      5、make deconfig

      直接使用某个默认的配置,和配置内容相关,与使用何种配置方式无关。

      6、make gconfig

      也是使用的图形界面,用到的是GTK的库。

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1202
      Up
      0
      Down
      ::

      3. [issue] 编译时错误ERROR: tools/ninja failed to build

       

      要安装

      apt-get install ninja-build,

      如果还不行,安装后配合root账户编译就可以了。

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1203
      Up
      0
      Down
      ::

      4. [issue] 编译错误: cannot change permissions of /openwrt/staging_dir/host/bin’: Operation not permitted

      切换回root用户编译就可以Pass了

       

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1204
      Up
      0
      Down
      ::

      5. [issue] openwrt使用root用户权限才能编译,普通用户编译不通过

      一般提示权限错误:

      error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment……..

       

      方案1:使用普通用户无权限编译失败
      原因:用普通用户编译失败原因是普通用户没有对openwrt里文件操作的权限,可以通过ubuntu文件夹观看,所有文件都有锁。
      解决:

      用sudo chmod -R 777 openwrt 更改文件夹及里边嵌套的文件的使用权限。

      方案2:使用root编译报错
      原因:因为openwrt不建议用root编译
      解决:
      Export FORCE_UNSAFE_CONFIGURE=1
      Export FORCE=1

      或修改 include/prereq-build.mk。最新的版本已去掉这个限制。

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
      • okass - WirelessLink社区okass
        参与者
        #1211
        Up
        0
        Down
        ::

        如果仍然无法解决,可以考虑使用chown命令将文件(夹)拥有者改为当前用户

         

        1> 使用ll 命令查看openwrt目录的拥有者,可以看到属于root用户

        # ll

        drwxrwxr-x 9 Ubuntu Ubuntu 4096 10月 10 10:50 ./
        drwxr-xr-x 38 Ubuntu Ubuntu 4096 10月 10 12:20 ../
        drwxrwxr-x 17 root Ubuntu 4096 10月 10 12:16 openwrt/
        -rwxrwxrwx 1 Ubuntu Ubuntu 1768 10月 10 10:22 readme*

         

        2> 使用chown 修改用户权限

        #  sudo chown -R $USER openwrt
        #  sudo chown -R $USER:$USER openwrt
        注意 openwrt 后面的 / 字符,不然的话 不包括 openwrt 目录的 。

         

        然后再查看 “ll”, 可以看到已经刷新为当前用户ubuntu了

        drwxrwxr-x 9 Ubuntu Ubuntu 4096 10月 10 10:50 ./
        drwxr-xr-x 38 Ubuntu Ubuntu 4096 10月 10 12:20 ../
        drwxrwxr-x 17 Ubuntu Ubuntu 4096 10月 10 12:16 openwrt/
        -rwxrwxrwx 1 Ubuntu Ubuntu 1768 10月 10 10:22 readme*

         

        访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1213
      Up
      0
      Down
      ::

      6. 编译意外中断或者需要重新编译

       

      先清理一下之前的编译产物,但是config配置不变,再继续编译

      # make clean

      # make menuconfig (如果需要增删配置,没有则跳过)

      # make -j$(($(nproc) + 1)) V=s

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1214
      Up
      0
      Down
      ::

      7. [issue] 编译过程中出现如下错误

      SHELL= flock /home/xxx/openwrt/openwrt/tmp/.linux-firmware-20211216.tar.xz.flock -c ' /home/xxx/openwrt/openwrt/scripts/download.pl "/home/xxx/openwrt/openwrt/dl" "linux-firmware-20211216.tar.xz" "eeddb4e6bef31fd1a3757f12ccc324929bbad97855c0b9ec5ed780f74de1837d" "" "@KERNEL/linux/kernel/firmware" '
      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1216
      Up
      0
      Down
      ::

      8.[issue] x86_64 平台编译时错误

      time: package/feeds/packages/golang/host-compile#0.38#0.16#8.50
      ERROR: package/feeds/packages/golang [host] failed to build.
      make[2]: *** [package/Makefile:114: package/feeds/packages/golang/host/compile] Error 1
      make[2]: Leaving directory '/home/openwrt'
      make[1]: *** [package/Makefile:110: /home/openwrt/staging_dir/target-x86_64_musl/stamp/.package_compile] Error 2

       

      [fixed]

      尝试使用单线程编译可以解决,不再提示错误

      # make -j1 V=s

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1217
      Up
      0
      Down
      ::

      8.[issue] x86_64 luci 编译错误

      Fatal error: can't create po2lmo.o: Permission denied
      make[4]: *** [Makefile:2: po2lmo.o] Error 1
      make[4]: Leaving directory '/home/openwrt/feeds/luci/modules/luci-base/src'
      make[3]: *** [Makefile:45: /home/openwrt/build_dir/hostpkg/luci-base/.built] Error 2
      make[3]: Leaving directory '/home/openwrt/feeds/luci/modules/luci-base'

      [fixed]
      使用root权限可以编译通过

      # sudo make -j1 V=s

      全局使用root的潜在风险是你一般不会去确认每个代码都是正常的,万一某个代码里有类似删除的操作(eg. rm -rf ./*),只能重做系统

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1218
      Up
      0
      Down
      ::

      9. [issue] 自行编译的openwrt 无法ping通外网,无法更新软件包

       

      [fixed]

      请参考本章的文章: https://wirelesslink.net/4840.html  对LAN口做配置。注意DNS一定要写,不然会出现无法ping通的情况

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1226
      Up
      0
      Down
      ::

      10.[issue] Openwrt 编译过程太慢,如何优化

       

      编译慢的原因

      • 与硬件有关。高配置的电脑,编译更快,毫无疑问
      • 与网络有关(主因)。
        剖析
        openwrt 编译过程会检查依赖库在本地是否缓存,如果没有就会下载,这是首次编译超级慢的主要原因
        依赖库镜像都是在国外,天朝帝国内,访问不通畅,下载很慢,经常下载失败,即使有重试机制,但挂一个晚上也未必编译成功(当然你可以翻墙再编译)

       

      解决方法
      1> 先把 openwrt 源码克隆到本地

      https://gitee.com/harvey520/openwrt.git 每天自动从官方源拉取更新一次,不会存在更新不及时问题

      git clone https://gitee.com/harvey520/openwrt.git

       

      2>修改 openwrt 源码目录的 feeds.conf.default 文件中的镜像源

      https://git.openwrt.org/feed/packages.git 改为 https://gitee.com/harvey520/packages.git
      https://git.openwrt.org/project/luci.git 改为 https://gitee.com/harvey520/luci.git
      https://git.openwrt.org/feed/routing.git 改为 https://gitee.com/harvey520/routing.git
      https://git.openwrt.org/feed/telephony.git 改为 https://gitee.com/harvey520/telephony.git
      https://gitee.com/harvey520 中的镜像源每天自动从官方源更新一次,不会存在过期或更新不及时问题

       

      3> 提前下载依赖库源码放到 openwrt 源码目录中

      国内惟一仓库,只此一家,别无分号

      进入 openwrt 源码目录中,执行以下命令

      git clone https://e.coding.net/yao7778899/openwrt-dependent-dl.git dl
      # 依赖库源码总计约850M

       

      4> 开始你的编译

      执行以下命令开始你的编译,能够多快就看你家的宽带有多快了

      ./scripts/feeds update -a
      ./scripts/feeds install -a
      make V=99

       

       

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
    • okass - WirelessLink社区okass
      参与者
      #1232
      Up
      0
      Down
      ::

      11. 编译过程中出现http 400 proxy 错误

      使用root 权限 sudo -j8 V=s 可以解决

      访问ChatGPT的可用VPS机房IP推荐 Lisahost美国原生IP搬瓦工美西DMITTripodcloudFrantech
正在查看 18 条回复
  • 哎呀,回复话题必需登录。
WirelessLink社区
Logo