Erlo

docker部署openwrt系统编译环境

2025-04-07 14:29:01 发布   56 浏览  
页面报错/反馈
收藏 点赞

背景:首次接触docker。
1、拉取镜像。
2、通过初始镜像开启一个容器,并将容器重新设置一个tag,查看容器,通过exec开启终端,注:docker名称必须是小写的,查看docker容器列表。
docker run -it 861b7388600f91f3a0b82a496821eeb88733c8138b7228d3267161507af4aa89 /bin/bash
docker rename interesting_moser ubuntuforcompile
docker ps -a
docker exec -it ubuntuforcompile /bin/bash
3、禁用root远程登录ssh,并允许ubuntu账号登录,并锁定root账户。
sed -i 's/^#?PasswordAuthentication ./PasswordAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/^#?PermitRootLogin .
/PermitRootLogin no/' /etc/ssh/sshd_config
echo "AllowUsers ubuntu" >> /etc/ssh/sshd_config
sudo passwd -l root (反操作sudo passwd -u root)
4、将容器做成一个镜像,再创建ssh容器。
docker commit 861b7388600f91f3a0b82a496821eeb88733c8138b7228d3267161507af4aa89 ubuntuforcompile
docker run -d -p 2222:22 ubuntuforcompile /usr/sbin/sshd -D
docker rename XX ubuntuforcompile
5、安装编译环境。

点击查看代码
#!/bin/bash
set -e
echo "?? 更新 APT 软件源..."
sudo apt update
echo "?? 安装 OpenWrt 编译所需依赖包:"
# 编译工具链相关
sudo apt install -y 
  build-essential         # 编译 C/C++ 必备:gcc、make、libc 等
  g++                     # GNU C++ 编译器
  gcc                     # GNU C 编译器
  make                    # 编译自动化工具
  libtool                 # 用于构建共享库
# 预处理器/生成器
  flex                    # 词法分析工具
  bison                   # 语法分析工具
  swig                    # 生成语言接口封装工具
# 脚本 & 工具链支持
  gawk                    # GNU awk,makefile 中常用
  gettext                 # 国际化支持
  unzip                   # 解压 zip 包
  zlib1g-dev              # 压缩库开发文件
  file                    # 检测文件类型
  wget                    # 网络下载工具
  curl                    # 网络请求工具
  rsync                   # 高效文件同步工具
# OpenWrt 编译常用工具
  subversion              # SVN,用于拉代码
  git                     # Git 同上
  ccache                  # 编译缓存加速
  libelf-dev              # ELF 文件解析支持
  zstd                    # 新一代压缩算法支持
# 菜单配置支持(如 menuconfig)
  libncurses-dev          # 字符终端 UI 支持
# 安全/加密支持
  libssl-dev              # OpenSSL 开发头文件
# Python 支持
  python3                 # Python3 主程序
  python3-pip             # Python 包管理器
# Java 支持(某些模块会用)
  default-jre             # Java 运行环境
  default-jdk             # Java 开发工具
  ecj                     # Eclipse 编译器
  fastjar                 # 创建 Java jar 文件
  java-propose-classpath # Java 类路径提示工具
  ant                     # Java 构建工具
# XML/Perl 解析(如 feeds/patches 中会用)
  autoconf                # 自动配置脚本生成工具
  automake                # Makefile 辅助生成
  libxml-parser-perl      # Perl 的 XML 解析器
  xsltproc                 # XML 处理工具(XSLT 转换)
echo ""
echo "?? 检测 Python 版本..."
PYVER=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
DISTUTILS_PKG="python${PYVER}-distutils"
echo "?? 正在安装 ${DISTUTILS_PKG} ..."
if ! sudo apt install -y "$DISTUTILS_PKG"; then
  echo "?? 未找到 ${DISTUTILS_PKG},尝试建立软链接兼容"
  sudo ln -s "/usr/lib/python${PYVER}/distutils" "/usr/lib/python3/distutils"
fi
echo ""
echo "? 环境准备完成,可以开始编译 OpenWrt!"

6、克隆openwrt,并切换到openwrt-24.10,克隆自定义的插件
git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
git checkout openwrt-24.10
echo "src-git myfeed https://github.com/XXX/TestOpenwrt.git" >> feeds.conf.default
./scripts/feeds update -a
./scripts/feeds install -a

7.make memuconfig
主要选中了这些
LUCI中:
luci-app-ddns
luci-app-openclash
luci-app-openvpn
luci-app-samba4
luci-app-udpxy
luci-app-vlmcsd
VPN中:
openvpn-openssl

8、编译make
nproc 查看线程个数
make -j$(nproc)

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认