当前位置:首页 » 《关于电脑》 » 正文

OpenWrt开发入门实战(一)Docker环境搭建

7 人参与  2024年10月20日 18:40  分类 : 《关于电脑》  评论

点击全文阅读


1. 环境准备

一台带有Windows10(64位)及以上专业版的电脑(其他操作系统也行,只要能用Docker就好了CPU为X86_64Docker(用作OpenWrt的编译环境和测试环境)

2. 使用Docker搭建OpenWrt编译环境

本文使用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

# 以最新的Ubuntu镜像为模板FROM ubuntu:24.04# 将本目录下的sources.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# 安装编译OpenWrt官方实例相关工具RUN apt install -y build-essential clang flex bison g++ gawk \gcc-multilib g++-multilib gettext git libncurses5-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# 修改root密码RUN echo 'root:pw' | chpasswd# 添加自定义用户RUN adduser buildbot \    && echo 'buildbot:pw' | chpasswd# 安装sshRUN apt install -y openssh-serverRUN mkdir -p /var/run/sshd# 开放22端口EXPOSE 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-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/buildbotgit clone git@github.com:mourenZhu/openwrt.git # 这是作者本人的地址,实际下载时换成自己的地址
从OpenWrt源创建一基于23.05发行版本的分支
cd openwrtgit 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.05git 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 System选择x86, Subtarget选择x86_64 Target Profile选择Generic 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编译环境中,把文件 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

如果不出意外就能看到容器已经运行


点击全文阅读


本文链接:http://zhangshiyu.com/post/174678.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1