简介

单纯是吃饱没事干,用机顶盒、路由器去编译openwrt,
在机顶盒下载好环境,然后做成了docker镜像

环境要求

  • 已测试环境: 905x2 4+64G +Docker
  • 已测试环境: MT7981 1+64G +Docker
  • 已测试环境: IPQ6000 1+256G +Docker
  • 已测试环境: RK3399 4+32G +Docker
  • 原则可行环境: arm硬件平台 512M + 32G +Docker

2023-10-31T10:59:56.png

(在docker上按照大雕的教程搭的,大雕Lean的源码环境)

  • ARM环境缺库 gcc-multilib g++-multilib libc6-dev-i386,不能编译X86

Docker下载导入

  • 镜像大小: 11GB左右

2023-10-31T11:00:44.png

2023-10-31T11:00:53.png

Docker 创建容器

docker run --name opbuild -it -v /home/wrt_bin:/home/lede/bin/ ubuntu_arm_openwrt_builder bash

Docker 进入并编译

docker exec -it opbuild bash

openwrt的容器不能联网

  • 创建一个网络

docker network create bridge2

  • 使用该网络创建容器

docker run --name ubuntu_openwrt -it --network bridge2 ubuntu_arm_openwrt_builder bash
2023-10-31T11:01:02.png

其它操作照旧

cd /home/lede
make menuconfig
make V=s -j$(nproc) || make -j1 V=s

错误情况

DNSmasq-full 编译错误,直接屏蔽它了。 (关掉DNSmasq-full 下的 ipv6,冲突)

在MT7981上编译IPQ6000

在emmc版的CMCC RAX3000M上编译IPQ6000
2023-10-31T11:01:23.png
全军出击
2023-10-31T11:01:34.png
2核心还是勉强的很
2023-10-31T11:01:40.png

最后没有成功,因为估计也许可能内存不够,512M太拉跨了,到了合并固件时候卡死了.

20231016 Update: 把MT7981路由内存改1G后,编译ipq6000成功了,耗时4小时左右。
20231020 Update: 把亚瑟IPQ6000路由,内存改1G后,编译mt7981的固件,耗时3小时16分钟.
20241103 Update: RK3399 4+32 编译ipq6000 ax18固件, 7:53 -> 8:48 ,耗时 55分钟

在IPQ6000上编译 MT7981

ipq6000上编译就快多了,得益于4和和高速的emmc IO.

编译mt7981的固件,耗时3小时16分钟.

2023-10-31T11:01:48.png

镜像搭建步骤

docker run --name ubuntu_openwrt -it ubuntu:18.04  bash
 ## 在容器里搞事
apt update -y
apt full-upgrade -y
apt install -y ack antlr3 aria2 asciidoc autoconf automake autopoint binutils bison build-essential
apt install -y bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext 
apt install -y  git gperf haveged help2man intltool  libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev
apt install -y libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz
apt install -y mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip libpython3-dev qemu-utils
apt install -y rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev
##ARM机顶盒装不上的库
##gcc-multilib g++-multilib libc6-dev-i386
##学习雷锋:用root账户的话,还要设置root环境变量
export FORCE_UNSAFE_CONFIGURE=1
git clone https://github.com/coolsnowwolf/lede
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
##我选了IPQ6000
##DNSmasq 编译错误,直接屏蔽它了。


##首次编译
 
 make download -j$(nproc)
 make V=s -j1