openwrt(LEDE)(ubuntu 16.04)编译配置个性路由器固件笔记

为了编译配置过程备忘,所以做了一下详细记录,集合了出错处理方法,个性设置方法。有基本linux基础的都能看懂。编译环境ubuntu 16.04,以netgear wndr4300为例,手头只有wndr4300可以折腾。

  1. Ununtu 安装编译环境

    1
    2
    sudo apt-get update
    sudo apt-get upgrade
  2. 创建安装目录

    1
    2
    3
    mkdir openwrt
    sudo chmod 777 openwrt
    cd openwrt
  3. 下载lede源代码

  • 稳定版
    1
    git clone -b v18.06.4 https://git.openwrt.org/openwrt/openwrt.git
  • 这是最新版源码,bug比较多,新手建议用稳定版
    1
    git clone https://github.com/lede-project/source.git
    1
    cd source
  • 大雕lean源代码包含各种服务
    1
    2
    git clone https://github.com/coolsnowwolf/lede
    cd lede
  • 同步库更新本地分支
    1
    2
    3
    4
    git branch -a              ----查看分支(如果直达18.06.2,这条和下面tag命令不需要)
    git tag                    ----查看版本
    git checkout v18.06.4      ----签出V18.06.4
    git pull origin v18.06.4   ----更新V18.06.4
  • 有冲突时先将本地修改存储起来
    1
    git stash
  • 可以看到保存的信息
    1
    git stash list
  • Pull后还原暂存的内容
    1
    git stash pop stash@{0}
  • 更新软件包
    1
    2
    ./scripts/feeds update -a
    ./scripts/feeds install -a

  1. 测试编译环境:

    1
    make defconfig
  2. 配置固件菜单:(新手参考OpenWrt MenuConfig设置和LuCI插件选项说明

    1
    make menuconfig





  • 支持 iPv6:
    Extra packages —> ipv6helper (选定这个后下面几项自动选择了)
    Network —> odhcp6c
    Network —> odhcpd-ipv6only
    LuCI —> Protocols —> luci-proto-ipv6
    LuCI —> Protocols —> luci-proto-ppp

  • 打开适用于VMware的VM Tools
    Utilities —> open-vm-tools

  1. 预先下载dl库,可以避免下载造成的编译失败

    1
    make download V=s
  2. 可以开始编译固件了

    1
    make V=99 或者 make -j1 V=s
  3. 第二次编译:

  • 进入LEDE目录
    1
    cd lede
  • 同步更新大雕源码
    1
    git pull
  • 更新Feeds
    1
    2
    ./scripts/feeds update -a
    ./scripts/feeds install -a
  • 清除编译配置和缓存
    1
    rm -rf ./tmp
  • 清除编译配置和缓存
    1
    rm -rf .config
  • 进入编译配置菜单
    1
    make menuconfig
  1. 开始编译 n=线程数+1,例如4线程的I5填-j5
    1
    make -jn V=99
  • 编译过程需要2-3小时,具体有你的电脑配置决定,该干嘛干嘛,等编译好就可以刷入你的路由器,一般默认IP:192.168.1.1 登录名:admin 密码:password
  1. 下面介绍一些个性设置方法
  • 扩展128m分区

    1
    sed -i s/'23552k(ubi),25600k@0x6c0000(firmware)'/'120832k(ubi),122880k@0x6c0000(firmware)'/ target/linux/ar71xx/image/legacy.mk
  • 开启FPU方法
    选型好了之后,执行make kernel_menuconfig,Kernel type →选中 MIPS FPU Emulator
    默认没有开FPU,要在global build settings -> Kernel build options里面,把Compile the kernel with MIPS FPU Emulator选中

  • 支持ipv6及转发
    Kernel modules > Netfilter Extensions>kmod-ipt-nat6

  • 配置dnsmasq-full
    Base system>dnsmasq-full

  • Lede 17.01.5 高通fast-path打补丁
    wget https://github.com/lede-project/source/commit/b87b4734c6e56fa45ec612350e2aa480ed2d8dd6.patch
    patch -p1 < b87b4734c6e56fa45ec612350e2aa480ed2d8dd6.patch
    (略过了4.9内核)
    把 target/linux/generic/hack-4.4内所有文件拷贝到 patches-4.4
    Kernel modules > Network Support >kmod-fast-classifier,kmod-shortcut-fe

  • 修改默认语言主题:

  • 修改 vim feeds/luci/modules/luci-base/root/etc/config/luci 文件
    config core main
    option lang ‘zh_cn’
    option mediaurlbase /luci-static/bootstrap
    option resourcebase /luci-static/resources
    config internal languages
    option zh_cn ‘普通话 (Chinese)’
    config internal themes
    option Bootstrap ‘/luci-static/bootstrap’
    option Material ‘/luci-static/material’

  • 修改主机名,设定时区,IP地址

  • 修改位置: vim package/base-files/files/bin/config\_generate
    generate_static_system() {
    uci -q batch <<-EOF
    delete system.@system[0]
    add system system
    set system.@system[-1].hostname=’LEDE’
    set system.@system[-1].timezone=’CST-8’ #正八区
    set system.@system[-1].zonename=’Asia/Shanghai’ #这句话要加上,不然还是UTC
    lan) ipad=${ipaddr:-‘192.168.1.1’} ;; #修改默认IP

  • 修改WIFI名称

  • 修改位置: vim package/kernel/mac80211/files/lib/wifi/mac80211.sh
    set wireless.radio${devidx}.disabled=0 #改为0显示wifi
    set wireless.default_radio${devidx}=wifi-iface
    set wireless.default_radio${devidx}.device=radio${devidx}
    set wireless.default_radio${devidx}.network=lan
    set wireless.default_radio${devidx}.mode=ap
    set wireless.default_radio${devidx}.ssid=LEDE #wifi名称
    set wireless.default_radio${devidx}.encryption=psk2 #wifi加密方式,没有是none
    set wireless.default_radio${devidx}.key=password #wifi密码

  • 修改登录密码(可以用files大法,文件在/etc下的shadow,在“管理权”设置好密码,直接SCP备份shadow文件,以下各项同样方法配制)
    修改shadow文件,位于package/base-files/files/etc 
    root:1$BuM.Ox4e$X/RX2ftRaBzzVzoL6TkI0/:17943:0:99999:7:::    —————-root后面的两个root::17943之间一串乱码就是加密后的密码(需要在“管理权”设置好SCP上去打开复制下来,不能直接填入明文),此处示例为admin。

  • 修改路由连接数(可以用files大法,文件在ect下的sysctl.conf)
    修改sysctl.conf文件,位于package/base-files/files/etc
    net.netfilter.nf_conntrack_max=262144

  • ssr plus+服务菜单显示命令
    echo 0xDEADBEEF > /etc/config/google_fu_mode

  • 源更新不了,opkg被神经病锁定不能安装app,删除/var/lock/opkg.lock

  • 软件包列表更新提示:timeout 太短。
    Collected errors:
    * opkg_conf_load: Could not lock /var/lock/opkg.lock: Resource temporarily unavailable.

  • 解决办法:在 SSH 中操作,别在 LuCI 中。
    echo “nameserver 114.114.114.114”>/tmp/resolv.conf
rm -f /var/lock/opkg.lock
opkg update

  • 自己替换“总览”页面
    /feeds/luci/modules/luci-mod-status/luasrc/view/admin_status/index.htm

  • 压缩虚拟盘
    cd C:\Program Files (x86)\VMware\VMware Workstation
    vmware-vdiskmanager.exe -k “G:\Ubuntu\Ubuntu 64 位.vmdk”

  • 加入x86的多核心以及大内存支持
    Processor type and features  —>
    Symmetric multi-processing support
    Processor family (Core 2/newer Xeon)  —>#自行选择处理器平台
    Supported processor vendors  —>#自行选择处理器平台
    (2) Maximum number of CPUs #自行编辑
    SMT (Hyperthreading) scheduler support#超线程支持
    Multi-core scheduler support
    High Memory Support (64GB)  —>

  1. 网件wndr4300 v1固件,2019年11月8日更新