Openwrt-be:修订间差异
(→启动镜像) |
(→启动镜像) |
||
第17行: | 第17行: | ||
=== 启动镜像 === | === 启动镜像 === | ||
可使用docker命令直接启动,也可以使用docker-compose,二者选一即可。 | |||
==== docker命令 ==== | |||
注意:以下命令需要在桌面环境的终端中执行,否则不能使用codeblocks<syntaxhighlight lang="bash" line="1"> | 注意:以下命令需要在桌面环境的终端中执行,否则不能使用codeblocks<syntaxhighlight lang="bash" line="1"> | ||
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 | 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 | ||
</syntaxhighlight>其中--device /dev/snd -v /tmp/.X11-unix:/tmp/.X11-unix用于启用声音与显示,若不是桌面环境需要去掉该参数。 | </syntaxhighlight>其中--device /dev/snd -v /tmp/.X11-unix:/tmp/.X11-unix用于启用声音与显示,若不是桌面环境需要去掉该参数。 | ||
==== docker-compose ==== | |||
docker-compose.yml 配置文件如下:<syntaxhighlight lang="yaml+jinja" line="1"> | |||
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 | |||
</syntaxhighlight>启动时,可在docker-compose.yml 所在目录执行以下命令:<syntaxhighlight lang="bash" line="1"> | |||
sudo docker-compose up -d | |||
</syntaxhighlight>需要停止时可执行以下命令:<syntaxhighlight lang="bash" line="1"> | |||
sudo docker-compose down | |||
</syntaxhighlight> | |||
=== 进入OpenWrt镜像 === | === 进入OpenWrt镜像 === |
2022年11月20日 (日) 07:55的版本
说明
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
需要停止时可执行以下命令:
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