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

1. 环境准备

  • 一台带有Windows10(64位)及以上专业版的电脑(其他操作系统也行,只要能用Docker就好了
  • CPU为X86_64
  • Docker(用作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_bak
RUN cp /root/sources.list  /etc/apt/sources.list

RUN apt update
# 安装常用工具
RUN apt install -y vim git

# 安装编译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

# 设置LOCALE
RUN locale-gen en_US.UTF-8

# 修改root密码
RUN echo 'root:pw' | chpasswd

# 添加自定义用户
RUN adduser buildbot \
    && echo 'buildbot:pw' | chpasswd

# 安装ssh
RUN apt install -y openssh-server
RUN 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 multiverse
deb 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 multiverse
deb 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版本

  1. 先去github上的OpenWrt(https://github.com/openwrt/openwrt)页面,点击fork创建一个自己的版本。
  2. 进入编译容器内部,下载自己的OpenWrt源码
cd /home/buildbot
git clone git@github.com:mourenZhu/openwrt.git # 这是作者本人的地址,实际下载时换成自己的地址
  1. 从OpenWrt源创建一基于23.05发行版本的分支
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

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 scratch

ADD 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

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

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值