使用Docker拉取OP编译环境并进行编译
最近台式机电脑电源坏了,送厂返修,很长一段时间没有台式机用,遂决定使用安装了OMV的小主机进行编译。由于系统版本较老,安装环境无法成功,于是使用Ubuntu-docker进行环境的搭建,并打包上传到DockerHub,以便下次使用,并且节省空间。
声明
- 此次只是博主的一次尝试,docker image并没有进行精简,提及可能会比较大。
- op的一些包已经下载完成,减少多次下载的烦恼。
- docker可以根据需要将编译成果或者整个Lede目录挂载到本机方便文件操作,本篇只使用
docker cp
命令进行文件的转移。 - 不喜勿喷,大佬勿喷。
使用Docker编译环境
拉取镜像
请前往dockerHub拉取镜像,传送门。选择最新的docker镜像的tag进行拉取:
1 | docker pull frank921/opcompile:v3 |
部署镜像
1 | docker run -itd --name opcompile frank921/opcompile:v3 |
通过docker exec 进入容器并进行编译操作。
注意:这里可以通过 -v 参数添加目录映射,具体请查询docker文档
1 | docker exec -it opcompile /bin/bash |
由于openwrt的编译程序不支持使用root用户进行编译,切换至lede用户进行编译并进入lede主目录:
1 | su lede |
lede用户的用户密码默认是12345678,为了安全性,请及时更改
进行环境更新:
1 | sudo apt update -y |
进行仓库更新:
1 | git pull |
默认配置文件中我加入了一些常用插件,如果不需要这类插件,输入:
1 | rm -rf ./tmp && rm -rf .config |
然后进入编译流程:
1 | make menuconfig |
特别提示
由于编译过程ssh不能中断,在网络较差的环境下,请使用screen进行持久化。
创建窗口:
1 | screen -S compiler |
此时会进入窗口,可以进行编译操作,如果要推出窗口,请按 Ctrl +AD
(按住Ctrl,一次按下A和D)
此时就能退出窗口
连接回窗口:
1 | screen -r compiler |
如果发现因为窗口Attached无法连接,可以输入:
1 | screen -d compiler |
分离会话,然后输入:
1 | screen -r compiler |
进入会话。
编译完成
当无错误编译完成以后,可以进入bin/targets找到相应的固件。
进入主机,输入:
1 | docker ps |
查询相应容器ID。
记住ID
输入:
1 | docker cp 容器ID:/home/lede/lede/bin/targets 主机目录 |
复制完成固件,复制过程会等待几分钟,正常现象。
接着进入主机相应目录获取固件。
Enjoy!
特别鸣谢
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment