IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker环境编译openwrt -> 正文阅读

[系统运维]Docker环境编译openwrt

参考(转载)链接:
https://p3terx.com/archives/build-openwrt-with-docker.html
https://p3terx.com/archives/openwrt-compilation-steps-and-commands.html
https://shimo.im/docs/gYjt9QVr8T9Vhv9X/read
https://github.com/coolsnowwolf/lede

安装 Docker

GNU/Linux
使用官方一键安装脚本进行安装:

curl -fsSL get.docker.com | sudo sh
curl -fsSL get.docker.com | sudo sh -s --mirror Aliyun # 中国大陆地区使用此命令加速安装

直接使用root用操作

sudo systemctl enable docker
sudo systemctl start docker

创建docker容器

docker run -itd \
    --name lede-build \
    -h P3TERX \
    -p 10022:22 \
    -v ~/lede:/home/user/openwrt \
    p3terx/openwrt-build-env:20.04

检查设置目录文件权限

# 输入命令,获取uid和gid
id
#如果两个都为1000或者都为0(root 用户)则跳过修改UID和GID的步骤

# 修改UID(自行替换)
docker exec lede-build \
sudo usermod -u UID user

# 修改 GID(自行替换)
docker exec lede-build \
sudo groupmod -g GID user

# 重启容器
docker restart lede-build

# 修改文件归属,修改文件归属用户和用户组为user
# 这一步,我这耗时比较久,多等一会儿
docker exec lede-build \
sudo chown -hR user:user .

# 验证结果
# 进入容器
docker exec -it lede-build zsh

# 输入la命令列出文件。当所有归属都为user说明没有问题了。
# 结果如下,
-rw-r--r--  1 user user  220 Apr  5  2018 .bash_logout
# 还有很多行,省略了

进入docker环境

# 从宿主机进入容器
docker exec -it lede-build zsh
# 或者用其他命令行软件,用户名,密码都是user
IP:10022,user,user

编译

首次编译需要按下面操作

# 克隆 Open-Wrt 源码
git clone https://github.com/coolsnowwolf/lede openwrt

# 进入源码目录,
# 可以先判断一下是否已经在op目录了,如果在了就不用执行下面命令
cd openwrt

# 添加一些插件
# 01.用这个
src-git helloworld https://github.com/fw876/helloworld
src-git passwall https://github.com/xiaorouji/openwrt-passwall
# 02.或者这个
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
# ---------------------------------------------------------1或2选一个,我用的1,
#将上面内容添加到feeds.conf.default 里面
nano feeds.conf.default

# 下载安装 feeds 中的软件
./scripts/feeds update -a
./scripts/feeds install -a

# 调整 Open-Wrt 系统组件
make menuconfig

# 预下载编译所需的软件包
make download -j8 V=s

# 检查文件完整性
find dl -size -1024c -exec ls -l {} \;
#此命令可以列出下载不完整的文件(根据我多次编译的经验得出小于1k的文件属于下载不完整),
#如果存在这样的文件可以使用find dl -size -1024c -exec rm -f {} \;命令将它们删除,
#然后重新执行make download下载并反复检查,确认所有文件完整可大大提高编译成功率,
#避免浪费时间。

# 开始编译
make -j1 V=s
# -j1:使用单线程编译。新手推荐单线程编译,一是因为玄学问题可能成功率高,二是方便查看错误日志。
# V=s:输出详细日志,用于编译失败时找出错误。而且满屏代码在跑能装逼,一跑就是几个小时,装逼更持久。

img文件位置

生成的文件位置在源码(lede)目录下
bin/targets

再次编译 (适用于不更改配置功能和插件,仅升级)

cd openwrt
git pull
./scripts/feeds update -a && ./scripts/feeds install -a
make defconfig
make -j8 download
make -j$(($(nproc) + 1)) V=s

更改配置编译

cd openwrt
rm -rf ./tmp && rm -rf .config
make menuconfig
make -j$(($(nproc) + 1)) V=s

文件清理

# 清除旧的编译产物(可选)
make clean
#在源码有大规模更新或者内核更新后执行,以保证编译质量。此操作会删除/bin和/build_dir目录中的文件。

# 清除旧的编译产物、交叉编译工具及工具链等目录(可选)
make dirclean
#更换架构编译前必须执行。此操作会删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件。

# 清除 Open-Wrt 源码以外的文件(可选)
make distclean
#除非是做开发,并打算 push 到 GitHub 这样的远程仓库,否则几乎用不到。此操作相当于make dirclean外加删除/dl、/feeds目录和.config文件。

# 还原 Open-Wrt 源码到初始状态(可选)
git clean -xdf
#如果把源码改坏了,或者长时间没有进行编译时使用。

# 清除临时文件
rm -rf tmp
#删除执行make menuconfig后产生的一些临时文件,包括一些软件包的检索信息,
#删除后会重新加载package目录下的软件包。
#若不删除会导致一些新加入的软件包不显示。

开启IPV6

选上extra packages——ipv6helper
在 Network – Firewall – ip6tables 下启用 ip6tables-extra 和 ip6tables-mod-nat 项。

更改LAN口的默认IP地址

cd lede
nano package/base-files/files/bin/config_generate
# 大概在99行找到我们默认的原IP地址(192.168.1.1)

编译丰富插件时,建议修改下面两项默认大小,留足插件空间。( x86/64 )!!!

Target Images ---> (16) Kernel partition size (in MB)           #默认是 (16) 建议修改 (256)
Target Images ---> (160) Root filesystem partition size (in MB) #默认是 (160) 建议修改 (512)

如果需要 Cloudflare DDNS 组件
默认情况下 Open-Wrt 中并没有 Cloud-flare DDNS 功能,就算勾选了DDNS也不包含cloudflare运营商。所以需要在编译时选择相应的组件,其位置在

Network→IP Addresses and Names →ddns-scripets_cloudflare.com-v4
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:58:38  更:2021-08-15 15:59:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:27:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计