Evilmass

Openwrt BuildRoot

不知道为什么编译这个东西会有这么多坑

Requirement

推荐在 VPS 上操作,省很多时间
DigitalOcean 选个 Ubuntu 16.04 x32 即可,不用换更新源

VMware Workstation Pro 12.5.9

激活码:5A02H-AU243-TZJ49-GTC7K-3C61N

Ubuntu 16.04.3 LTS (Xenial Xerus) i386

非root用户

useradd -m openwrt
passwd openwrt  # enter password twice
usermod -a -G sudo openwrt
chsh -s /bin/bash openwrt
su openwrt
cd ~

USTC 源

deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

注释了源码镜像以提高 apt update 速度

依赖

sudo apt-get install libudns-dev build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip vim gettext autoconf libtool libpcre3-dev asciidoc xmlto libev-dev libc-ares-dev automake -y

Openwrt Build-Root

请确认当前用户非 ROOT
请确认当前用户非 ROOT
请确认当前用户非 ROOT

如果已经用 ROOT 用户进行 git clone 操作,请改变目录权限:sudo chown -R user:user /openwrt/

下载编译环境

15.05 分支(Chaos_Calmer)

git clone https://github.com/openwrt/chaos_calmer.git

LEDE 分支

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

目前新主分支是 LEDE,与 Openwrt 的区别和联系可以看这里:
LEDE:OpenWrt 的新生

Openwrt 和 LEDE 有何区别

有兴趣的话也可尝试编译:https://lede-project.org/docs/guide-developer/start

下载并安装所有可用的软件包

cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a  # 可选 -p package_name

运行下面的命令让 OpenWrt 编译系统检查你的编译环境中缺失的软件包

make menuconfig

如无意外能进入到这个界面,选择好芯片类型、路由器型号、以及 Luci 界面之后保存退出
make_menuconfig


开启内核 FPU Emulator 功能

其实本文的目的就是开启这个然后跑新版的 KCPTun,至于 DNS-Forwarder + ChinaDNS + SS + KCPTun, 放到下篇

make kenerl_menuconfig

Kernel Type -> FPU Emulator -> y
fpu_emulator


最关键的一步来了,第一次编译 Build-Root 环境时请:全程科学上网和不要使用 -j 参数

make V=s

vm_success

编译成功后最好保存一下干净的编译环境的虚拟机快照
还有 make clean 别乱用。。。。

这是在 VPS 上编译成功的图,建议备份一下目录
vps_success

编译成功之后就可以使用 -j 参数了,之后无论是编译软件包还是固件都很快,在 openwrt/bin/ar71xx 的目录下能找到编译好的固件
bin_packages

遇到的坑

  1. 用 Ubuntu 12 也能编译成功,但是 libmbedtls-dev 和 libsodium-dev(SS 加密依赖库)无法正常安装
  2. Ubuntu 14、17 也有各种各样的问题
  3. 一开始没考虑到依赖包下载问题,在虚拟机编译的时候各种被墙
  4. 在VPS上切换各种除 Ubuntu 以外的系统都在 make 这一步失败了(GCC 版本问题?
  5. make menuconfig (推荐使用此命令)
    或者
    make defconfig
    或者
    make prereq
    //如果以上3个命令都运行了,编译会出错!




这个打赏二维码好像有什么不对

支付宝
支付宝
微信
微信