博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Centos6下编译LEDE/OpenWrt
阅读量:7078 次
发布时间:2019-06-28

本文共 8269 字,大约阅读时间需要 27 分钟。

准备工作

1. 安装依赖软件

这是提供的依赖列表

yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel zlib-static make patch unzip perl-ExtUtils-MakeMaker glibc glibc-devel glibc-static quilt ncurses-libs sed sdcc intltool sharutils bison wget git-core openssl-devel xz

除此以外, 建议加上 glib2-devel

2. 编译升级gcc

Centos6自带的gcc版本只到4.4.7, 不支持c++11, 必须升级. 参考 升级到gcc 6.4.0

3. 导出最新源码

例如在home下的用户目录下, 新建一个lede目录, 然后在此目录下执行, 然后将source目录更名为 source_master

git clone https://git.lede-project.org/source.git

注意: 编译将在此目录下执行, 根据官方文档的要求, 路径中要避免出现空格等特殊字符, 以免编译失败

Update 2018-08-12 LEDE与原OpenWRT合并后, 代码主干URL变成了

git clone https://git.openwrt.org/openwrt/openwrt.git/

切换到tag:

$ git tag$ git checkout -b v18.06.1 v18.06.1

配置工作

1. 当git代码库有更新时, 更新源码

git pull

2. 更新组件源

# 更新组件源./scripts/feeds update -a# 安装所有组件, 安装后, 在make menuconfig中才可以选择./scripts/feeds install -a# 安装指定组件./scripts/feeds install 

Update 2018-08-12: 在编译 v18.06.0 时, 出现了 time checking failed的错误

...Checking 'wget'... ok.Checking 'time'... failed.Checking 'perl'... ok....Build dependency: Please install GNU 'time' or BusyBox 'time' that supports -f

经检查, 检查语句是

$ grep -rnw './' -e 'that supports -f'./include/prereq-build.mk:141:$(eval $(call SetupHostCommand,time,Please install GNU 'time' or BusyBox 'time' that supports -f, \$ more include/prereq-build.mk $(eval $(call SetupHostCommand,time,Please install GNU 'time' or BusyBox 'time' that supports -f, \        gtime --version 2>&1 | grep GNU, \        time --version 2>&1 | grep GNU, \        busybox time 2>&1 | grep -- '-f FMT'))

而 time 命令是bash shell内建的, 无法更改, 故下载了最新版的gnu time编译安装并ln -s为 gtime 命令, 这样检查就通过了

$ wget https://ftp.gnu.org/gnu/time/time-1.9.tar.gz$ tar zxvf time-1.9.tar.gz$ ./configure$ make$ sudo make install $ ln -s /usr/local/bin/time /usr/bin/gtime

 

3. 设置编译目标设备以及包含的组件, 主要是两个命令

# 重置默认的设备和组件make defconfig# 进入配置界面make menuconfig

使用make menuconfig时, 需要注意的

  • 常用的mt7620/7621芯片所属的target位于 Target System -> MediaTek Ralink MIPS
  • 设置之后, 除了save到.config_[device name]以外, 还需要设置到.config, 否则编译时因为.config没变, 你的设置不会生效

Update 2018-11-23:

在make menuconfig之后在开始编译之前, 现在增加了一个步骤, 在编译前进行下载

# download all dependency source files before final make, enables multi-core compilation);make download

 

开始编译

1. 执行编译命令行

make -j2 V=s TARGET_DEVICES=hc5761# -j2 表示用2核, 根据当前机器配置而定# V=s 表示显示详细输出

2. 如果需要后台进行, 使用

nohup make -j2 V=s TARGET_DEVICES=hc5761 > ~/lede/logs/20171011.log 2>&1 &

Updated 2018-08-12: 编译v18.06.0, 会出现"b2a_base64() argument 1 must be string or read-only buffer, not bytearray" 错误, 经google查询发现这是python2.6的一个bug, 在python2.7以后已经修复, 但是在Centos6.8下, 多次尝试包括编译安装python2.7并alias python到python2.7依然无法将默认的python环境改为2.7, 最后放弃Centos6, 重建Centos7虚机进行编译

遇到的问题

1. 编译时因网络问题下载失败

自行下载文件后放到dl目录下

2. 编译transmission时出现 config.status: error: cannot find input file: `po/Makefile.in.in' 错误

这是因为没安装glib2-devel

设备测试

1. 极路由二 HC5761

使用 r5040-f98f83e版本代码编译, 工作正常
  问题: 除了5GHz的wlan. 在目前的kernel 4.9.x 上尚未找到解决办法.

2. 小米路由MINI

使用 r5040-f98f83e版本代码编译, 工作正常

3. NeWiFi D1

使用 r5040-f98f83e版本代码编译, 工作正常
  问题: 不能软重启(即在Luci界面或命令行通过reboot重启), 经查是因为32M flash带来的问题, 可以通过补丁修复, 不过无所谓了...

 

Update 2018-08-02:

NeWiFi D1不能reboot的原因是其闪存MX25L25635F被系统当成了MX25L25635E来处理, MX25L25635F是支持无状态4字节读写的, 但是MX25L25635E不支持. 因为这两个型号使用的是同样的硬件ID, 所以系统无法区分.

: "The Newifi D1 has most likely a MX25L25635**F**. But the MX25L25635E and MX25L25635F share the same "hardware id" 0xc22019, therefore can't be distinguished and are handled as MX25L25635E by the kernel. The MX25L25635F supports stateless 4-byte read and write (you can use SPI_NOR_4B_OPCODES). Where the MX25L25635E does **not** support any stateless 4-byte command."

对应的补丁在 . 补丁修改的是 drivers/mtd/spi-nor/spi-nor.c 文件.

Update 2018-11-23:

把make menuconfig里面勾选的自定义项都记录一下

Base System-*- block-mount........................... Block device mounting and checking<*> blockd......................................... Block device automountingKernel modules    Filesystems        <*> kmod-fs-ext4..................................... EXT4 filesystem support │ │          <*> kmod-fs-msdos................................... MSDOS filesystem support │ │          -*- kmod-fs-nfs................................ NFS filesystem client support │ │          -*- kmod-fs-nfs-common......................... Common NFS filesystem modules │ │          <*> kmod-fs-nfs-v3............................ NFS3 filesystem client support │ │          <*> kmod-fs-nfs-v4............................ NFS4 filesystem client support │ │          <*> kmod-fs-ntfs..................................... NTFS filesystem support │ │          -*- kmod-fs-vfat..................................... VFAT filesystem support │    USB Support             <*> kmod-usb-ohci............................... Support for OHCI controllers │ │               -*- kmod-usb-storage..................................... USB Storage support │ │               <*> kmod-usb-storage-extras.................... Extra drivers for usb-storage │ │               <*> kmod-usb-uhci............................... Support for UHCI controllers │ │               <*> kmod-usb2................................... Support for USB2 controllers │ │               <*> kmod-usb3................................... Support for USB3 controllers │ │  Luci    Collections        <*> luci................... LuCI interface with Uhttpd as Webserver (default)    Applications        <*> luci-app-adblock................................ LuCI support for Adblock        <*> luci-app-aria2.................................... LuCI Support for Aria2        <*> luci-app-samba.................... Network Shares - Samba SMB/CIFS module │ │          <*> luci-app-shadowsocks-libev............ LuCI Support for shadowsocks-libev        <*> luci-app-transmission...................... LuCI Support for Transmission         <*> luci-app-upnp................. Universal Plug & Play configuration module        Network    BitTorrent             <*> transmission-daemon-openssl............. BitTorrent client (with OpenSSL) │ │               <*> transmission-remote-openssl............. BitTorrent client (with OpenSSL) │ │               <*> transmission-web........................ BitTorrent client (webinterface) │ │    File Transfer        <*> aria2....................................... lightweight download utility │ │          Aria2 Configuration  --->                                               │                  SSL Library (OpenSSL)  --->                                               │ │               [*] Enable Bittorrent Support (NEW)                                           │ │               [*] Enable JSON-RPC over WebSocket Support (NEW)                   <*> vsftpd............................... Fast and secure FTP server (no TLS)        <*> wget............... Non-interactive network downloader (with SSL support)   Web Servers/Proxies         -*- shadowsocks-libev-config................ shadowsocks-libev config scripts │ │          <*> shadowsocks-libev-ss-local.................... shadowsocks-libev ss-local │ │          -*- shadowsocks-libev-ss-redir.................... shadowsocks-libev ss-redir │ │          <*> shadowsocks-libev-ss-rules.................... shadowsocks-libev ss-rules │ │          <*> shadowsocks-libev-ss-server.................. shadowsocks-libev ss-server │ │          <*> shadowsocks-libev-ss-tunnel.................. shadowsocks-libev ss-tunnel │    <*> adblock... Powerful adblock script to block ad/abuse domains by using DNS   <*> iftop............................. display bandwith usage on an interface   <*> ipset....................................... IPset administration utility │ │     <*> ipset-dns................. A lightweight DNS forwarder to populate ipsets │ │    <*> samba36-server................................. Samba 3.6 SMB/CIFS server │ │              (-1)  Maximum level of compiled-in debug messages (NEW)                     Utilities    Disc        <*> fdisk.................................... manipulate disk partition table        <*> gdisk............ GPT aware disk manipulation utility for interactive use        <*> hd-idle..................... Another idle-daemon for attached hard drives        <*> hdparm........................... Hard disk drive configuration utilitity    <*> usbutils................................... USB devices listing utilities

.

转载地址:http://sopml.baihongyu.com/

你可能感兴趣的文章
关于 51CTO家园无忧币领取制度的调整公告
查看>>
拥有丰富经验的移动广告聚合平台-KeyMob
查看>>
ActiveMQ(三)消息机制
查看>>
CentOS yum安装mcrypt详细图解教程
查看>>
我的友情链接
查看>>
FastDFS 安装部署
查看>>
我的友情链接
查看>>
查看命令帮助 help 、man
查看>>
Linux下Squid正向/反向代理配置
查看>>
android sdk 更新代理
查看>>
企业快速开发的优点
查看>>
WIN7 64位系统使用SCRT 7.064位、GNS3以及SCRT与GNS3的关联(一)
查看>>
MONGO_URL
查看>>
监控服务器Nagios之三 监控案例
查看>>
最简单的jdbc程序
查看>>
c#索引器
查看>>
C/C++内存管理 笔记
查看>>
对象数组去重合并
查看>>
Ubuntu 安装网络扫描和嗅探工具 Zenmap
查看>>
云计算与openstack学习(七)
查看>>