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