OpenWrt开发入门实战(1)Docker环境建设
2025-06-24 11:52:52 | 来源:人民网

1. 环境准备。
- 电脑(,有Windows10(64位)及以上专业版本;其他操作系统也可以只需使用Docker即可。
- CPU为X86_64。
- Docker(用于OpenWrt的编译和测试环境)。
2. OpenWrt编译环境采用Docker构建
本文采用docker-compse构建,脚本目录环境的构建为。
docker-linux-env/| docker-compose.yml|----ubuntu-compile-openwrt/| | dockerfile| | sources.list|。
以下是每个文件的具体内容。
docker-compose.yml。
version。:。'3'services。:。ubuntu-compile-openwrt。:。build。:。./ubuntu。-。compile。-。openwrt。 environment。:。TZ。:。Asia/Shanghai。 volumes。:。-。compile。-。openwrt。:。/root。 # compile-openwrt 是数据卷。-。compile。-。openwrt。-。home。:。/home。 ports。:。-。"2211:22"volumes。:。compile-openwrt。:。compile-openwrt-home。:。
Dockerfile。
# FROMM以最新的Ubuntu镜像为模板 ubuntu:24.04# 本目录下的sourcesss.List作为容器的文件ADD sources.list /root/sources.list# 使用国内Ubuntu源更新快RUN mv /etc/apt/sources.list /etc/apt/sources.list_bakRUN cp /root/sources.list /etc/apt/sources.listRUN apt update# 常用工具RUN的安装 apt install -y vim git nano# RUN相关工具安装和编译OpenWrt官方实例 apt install -y build-essential clang flex bison g++ gawk \gcc-multilib g++-multilib gettext git libncursess5-dev libssl-dev \python3-setuptools rsync swig unzip zlib1g-dev file wget# 对于当前OpenWrt编译,需要库RUN apt install -y libelf-dev locales# LOCALERUN设置 locale-gen en_US.UTF-8# 修改rot密码RUN echo 'root:pw' | chpasswd# 添加自定义用户RUNNN adduser buildbot \ && echo 'buildbot:pw' | chpasswd# 安装sshRUN apt install -y openssh-serverRUN mkdir -p /var/run/sshd# EXPOSE开放22端口 22#设置自启动命令CMD ["/usr/sbin/sshd", "-D"]。
sources.list。
# 默认注释源码镜像改进 apt update 速度,如有必要,可自行取消注释deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse# 以下安全更新软件源包括官方源和镜像站配置,如有必要,可自行修改注释切换deb http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse# deb-src http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse# 预发布软件源不建议启用# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse。
创建上述文件后,,docker-linux-执行env目录。
创建上述文件后,,docker-linux-执行env目录。docker-compose。 up ubuntu-compile-openwrt。
-d。
等待docker镜像和容器运行后,可通过ssh进入容器内部。可以通过 ssh -p 2211 buildbot@127.0.0.1 进入容器。
3. OpenWrt源码下载。
上述步骤正常执行后进入ubuntu-compile-openwrt容器内部,git配置的初始化,然后开始以下步骤。
- 3.1 fork自己的OpenWrt版本。
- 先去github上的OpenWrt(https://github.com/openwrt/openwrt)页面,点击fork创建自己的版本。
进入内部编译容器下载自己的OpenWrt源码。cd。/home/buildbot。git。 clone git@github.com:mourenZhu/openwrt.git。
- # 这是作者自己的地址,实际下载时换成自己的地址。
基于23.05发行版本的OpenWrt源创建分支。cd。openwrt。git。 remote。add。 upstream https://github.com/openwrt/openwrt.git。# 设置OpenWrt源地址为上游地址。git。 fetch upstream。# 获得上游所有分支。git。 pull upstream openwrt-23.05:openwrt-23.05。#pull openwrt-23.05。git。 checkout。-b。 openwrt-23.05-study-demo。
# 创建demo分支。
4. OpenWrt的编译。
4.1 编译前的准备。# 更新,下载软件包,如果由于众所周知的网络问题导致下载失败,代理可以先配置。 ./scripts/feeds update。-a。 ./scripts/feeds。install。
-a。OpenWrt项目。
staging_dir/host/bin。
目录中有与编译目标无关的通用工具,这些工具有助于我们以后的开发,将这些工具添加到环境变量中。export。PATH。=/home/buildbot/openwrt/staging_dir/host/bin:。
$PATH。最好添加上述命令。
~/.bash_profile。
中间,否则退出登录后会失效。
4.2 选择构建目标版本。# Target X86选择System, Subtarget选择x86_64 Target Profile选择Generice x86/64,然后按Esc退出并保存。选择X86是为了方便本机设备的测试。make。 menuconfig。
#make menuconfig 图形配置界面将被打开。
4.3 开始编译。make。V。= s。
#开始等待编译吧!。
如果没有意外openwrt//bin/targets许多文件将在/x86/64目录下生成。
5. 构建OpenWrt容器。
5.1 创建docker相关文件。
创建另一个目录,目录结构和文件的具体内容如下所示。
openwrt-example/| docker-compose.yml||---openwrt-23.05-study-demo/| | openwrt-23.05-study-demo/| | dockerfile| | -。
docker-compose.yml。version。:。'3'services。:。openwrt-23.05-study-demo。:。build。:。./openwrt。-。23.05。-。study。-。 demo。environment。:。TZ。:。 Asia/Shanghai。ports。:。-。"11122:22"-。
"11180:80"
Dockerfile。
# FROM空白镜像 scratchADD openwrt-x86-64-generic-rootfs.tar.gz /CMD ["/sbin/init"]。
5.1 获取rootfs。
ༀ在openwrt编译环境中c;把文件 openwrt/bin/targets/x86/64/openwrt-x86-64-generic-rootfs.tar.gz 下载到上面创建的文件夹openwrt-example/openwrt-23.05-study-demo/。
5.2 构建OpenWrt容器。
在openwrt-example文件夹下执行。docker-compose。 up openwrt-23.05-study-demo。
-d。
如果没有意外,可以看到容器已经运行了。(责编:人民网)
分享让更多人看到