简介
单纯是吃饱没事干,用机顶盒、路由器去编译openwrt,
在机顶盒下载好环境,然后做成了docker镜像
环境要求
- 已测试环境: 905x2 4+64G +Docker
- 已测试环境: MT7981 1+64G +Docker
- 已测试环境: IPQ6000 1+256G +Docker
- 已测试环境: RK3399 4+32G +Docker
- 原则可行环境: arm硬件平台 512M + 32G +Docker
(在docker上按照大雕的教程搭的,大雕Lean的源码环境)
- ARM环境缺库
gcc-multilib g++-multilib libc6-dev-i386
,不能编译X86
Docker下载导入
- 镜像大小: 11GB左右
- 点击 这里下载 ubuntu_arm_openwrt_builder_docker_images.tar ,镜像在机顶盒里,慢慢下。
docker load -i ubuntu_arm_openwrt_builder_docker_images.tar
镜像很大,需耐心等待
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
其它操作照旧
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
全军出击
2核心还是勉强的很
最后没有成功,因为估计也许可能内存不够,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分钟
.
镜像搭建步骤
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