Openwrt-be

来自何亚红个人资料库
跳到导航 跳到搜索

说明

openwrt与其它大多数Linux发行版不同,其具有独特的系统初始化及配置方式,这导致openwrt上的程序不能在其它Linux环境运行(尤其是用到了openwrt独有的程序,如ubus、uci、luci等)。本docker镜像的目的是利用openwrt的x86_64版搭建一个可直接编译调试openwrt的开发环境。

特点如下:

  • 主体框架为openwrt,可直接运行调试openwrt程序(x86_64),可测试openwrt脚本。
  • 利用Alpine Linux的apk工具进行扩展,支持直接编译openwrt源代码。
  • 支持codeblocks编辑源代码

使用

拉取镜像

sudo docker pull heyahong/openwrt-be:22.03

启动镜像

可使用docker命令直接启动,也可以使用docker-compose,二者选一即可。

docker命令

注意:以下命令需要在桌面环境的终端中执行,否则不能使用codeblocks

sudo docker run -itd --device /dev/snd -v /tmp/.X11-unix:/tmp/.X11-unix  --restart=always --name openwrt-be heyahong/openwrt-be:22.03 /sbin/init

其中--device /dev/snd -v /tmp/.X11-unix:/tmp/.X11-unix用于启用声音与显示,若不是桌面环境需要去掉该参数。

docker-compose

docker-compose.yml 配置文件如下:

version: "3"

networks:
  openwrt-be:
    external: false

services:
  server:
    image: heyahong/openwrt-be:22.03
    container_name: openwrt-be
    restart: always
    networks:
      - openwrt-be
    volumes:
      - /tmp/.X11-unix:/tmp/.X11-unix
    devices:
      - /dev/snd:/dev/snd

启动时,可在docker-compose.yml 所在目录执行以下命令:

sudo docker-compose up  -d

需要停止时,可在docker-compose.yml 所在目录执行以下命令:

sudo docker-compose down

进入OpenWrt镜像

注意:此步骤的前提是启动镜像(只需要启动一次即可)。

使用docker exec进入镜像

sudo docker exec -it openwrt-be /bin/bash

进入镜像后,可使用ifconfig查看ip地址(eth0),知道ip地址后,可通过浏览器登陆luci界面(由于是docker,某些界面不可用)。

使用ssh进入镜像

注意:使用此方法的前提是知道了启动的镜像的ip地址(除非重新启动镜像,ip地址一般不变)。

ssh root@镜像ip地址

编译源码

进入镜像后,即可使用以下命令下载源代码并设置环境变量:

#进入root目录
cd /root
#使用git下载源代码
git clone -b openwrt-22.03 https://git.openwrt.org/openwrt/openwrt.git
#由于是使用的root用户,故需要设置以下变量
export FORCE_UNSAFE_CONFIGURE=1

编译过程中,可灵活使用sudo docker cp命令向容器中复制文件或者从容器中复制文件。

使用codeblocks

codeblocks需要在桌面环境执行。非桌面环境不可使用codeblocks。

使用codeblocks前需要把root用户添加至xhost。在宿主机中执行以下命令:

xhost +SI:localuser:root

权限添加完成后,可在进入OpenWrt镜像后执行以下命令打开codeblocks:

codeblocks

镜像docker仓库主页

https://hub.docker.com/r/heyahong/openwrt-be