【速记】openwrt - 编译、刷固件(资料整理)_openwrt固件-程序员宅基地

技术标签: OpenWRT ️  路由  编译  固件  linux  openwrt  

玩过的 OpenWRT 固件

  1. lede https://github.com/coolsnowwolf/lede
    (听说是s插件作者)
    问题:内核太老;无法指定版本,本体和依赖都改动频繁 —— (尤其编译老版本时) 凡是设置点东西就基本没法一次编译成功,后续升级维护也是问题
    稳定版 https://github.com/coolsnowwolf/openwrt (太旧)
  2. lienol https://github.com/Lienol/openwrt
    (听说是p插件作者)
    定期merge原生openwrt,但是有些插件要自己找
  3. immortalwrt https://github.com/immortalwrt/immortalwrt
    定期merge原生openwrt,自带的插件挺全的 —— 除了科学插件,还有黑客插件!
    (稳定性、可玩性非常高)
    在玩 2022年4月6日
    切换v21.02.6标签,(重度自定义)一次性编译成功,牛逼 2023年8月12日

OpenWRT 编译流程/笔记

准备“编译环境”: (个人尝试过的最低配置)

  1. 系统:Ubuntu(推荐)
  2. 硬件:
    1. cpu: 4核(理论上越多核,编译越快)
    2. 内存: 2G RAM (不太需要内存)
    3. 硬盘: 50G (依赖一般10~20G;输出一般60MB~100MB~300MB/个镜像)
  3. 科学的上网环境

# 虚拟机安装

本地编译

  1. ubuntu
  2. 分区 https://lawsssscat.blog.csdn.net/article/details/108436713
  3. 配置 https://lawsssscat.blog.csdn.net/article/details/108546556

# 编译流程

参考:

几点需要注意:

  1. 为了确保编译成功,第一次编译请什么都不要改

  2. 全局模式

  3. 增加安装包选项,请修改feeds.conf.default文件

  4. 可能涉及的参数调整介绍

  5. 插件的功能介绍参考:

    更多:

    • 编译 https://www.youtube.com/watch?v=FKyqTtbU_LU
    • 功能介绍 https://www.youtube.com/watch?v=nglEvMILpvE&t=167s
    • 加密选择 https://www.youtube.com/watch?v=HvLif9gf8y0
  6. 其他


编译流程大同小异,下面以lede为例(网上资料多)

sudo apt-get update
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync

git clone https://github.com/coolsnowwolf/lede.git
cd lede 

# 添加下面代码复制到 lede源码根目录 feeds.conf.default 文件
sed -i '$a src-git kenzo https://github.com/kenzok8/openwrt-packages' feeds.conf.default
sed -i '$a src-git small https://github.com/kenzok8/small' feeds.conf.default
# src-git kenzo https://github.com/kenzok8/openwrt-packages
# src-git small https://github.com/kenzok8/small

./scripts/feeds clean

./scripts/feeds update -a && ./scripts/feeds install -a

make menuconfig

make -j8 download V=s
make -j1 V=s
# make -j$(($(nproc) + 1)) V=s

immortalwrt 编译

git clone -b openwrt-18.06 --single-branch https://github.com/immortalwrt/immortalwrt
# 其他一样
./scripts/feeds update -a && ./scripts/feeds install -a
make menuconfig
make kernel_menuconfig
make -j1

# 二次编译

个人习惯,先无改动配置编译一次,然后二次编译时再添加自己的选择。

cd lede                                                   # 进入LEDE目录

rm -rf ./tmp                                              # 清除缓存
# rm -rf .config                                          # 清除编译配置
# ./scripts/feeds clean                                   # 清除feeds
# make clean                                              # (清除bin下面的以前编译的成果)

git pull                                                  # 同步更新源码
./scripts/feeds update -a && ./scripts/feeds install -a   # 更新FEEDS

# make defconfig 
make menuconfig                                           # 进入编译配置菜单
# make -j8 download V=s                                   #  V=s参数,就是会显示比较详细的信息
make V=s -j$(nproc)                                       # 多线程编译
# make V=s -j2                                            #(几核就写-j几) nproc 就是自动判断你的 CPU是有多少 核

# 其他常用命令

单独更新 feeds

todo

清理

# 清理feeds
./scripts/feeds clean
# 清理:封装 build_dir
make clean 

# 承上
# 清理:编译 staging_dir
make dirclean

# 承上
# 清理:源码 feeds
# 潜力:编译准备 package
make disclean

在这里插入图片描述

# 常见问题

## 选择cpu内核

make kernel_menuconfig
processor type and features > processor famlly

## 网卡选择

https://www.youtube.com/watch?v=X9v6Nd3wxkk
网卡驱动
kernel modules > network devices
无线驱动
kernel modules > wireless devices

## cpu省电、电源管理

make kernel_menuconfig
power management and ACPI options
勾选

  • device power management core functionality
  • enable workqueue power - efficient mode by default
  • ACP(Advanced configuration and power interface)support
  • power management timer support

还有选择cpu频率缩放>频率调速器
(cpu frequency scaling > default cpureq governor )
选一个

  • preformance 性能模式
  • powersave 节能模式
  • userspace
  • ondemand 按需模式(推荐)
  • conservative 保守
## samba4

想选择luci-app-samba4,首先在Extra packages —> 把autosamba取消,在选择插件的那里把luci-app-samba取消,然后在Network —> 把 samba36-server取消,最后选择luci-app-samba4

https://www.right.com.cn/forum/thread-4110418-1-1.html

## 开启IPV6

选上extra packages——ipv6helper

检察:
在 Network – Firewall – ip6tables 下启用 ip6tables-extra 和 ip6tables-mod-nat 项。

## 更改LAN口的默认IP地址

编译前改这里

vim package/base-files/files/bin/config_generate
# 或者这里(版本不同,位置不同)
# /package/base-files/files/lib/functions/uci-defaults.sh

编译后的固件改这里

固件路径/1.img/bin/config_generate
# 如:C:\Users\lawsssscat\Downloads\aabb\20220324-Ipv6-Plus-5.4-x86-64-generic-squashfs-combined-efi.img\1.img\bin\config_generate

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

## 更改分区空间

编译丰富插件时,建议修改下面两项默认大小,留足插件空间。( 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更改

## 固件版本信息
sed -i "s/OpenWrt /$(date +%Y.%m.%d) by BIGDONGDONG /g" package/lean/default-settings/files/zzz-default-settings
## 编译 ac2100

openwrt官方:https://openwrt.org/toh/xiaomi/xiaomi_redmi_router_ac2100
在这里插入图片描述
make menuconfig
/ 搜索 ac2100 看在哪个架构下

Xiaomi Redmi Router AC2100 (TARGET_DEVICE_ramips_mt7621_DEVICE_xiaomi_redmi-router-ac2100 [=n])

cpu:ramips
型号:mt7621

Target System 》 MediaTel Ralink MIPS
Subtarget 》 MT7621 based boards
Target Profile 》 (小米,圆柱形那个)Xiaomi Mi Router AC2100
					(红米,四方扁平的六根天线那个)Xiaomi Redmi Router AC2100 

在这里插入图片描述

如果 Target Images 》 勾选了 ext4 会多出个选项 :Root filesystem partition size(in MB) 请遵循下面考虑:
AC2100官方闪存125M,加上1M=1000K的厂商算法,实际上自由122M,再算上系统硬件要占用的内存,104M是一个最合理的大小
在这里插入图片描述
在这里插入图片描述

luci

  • luci 》 Collections 》 luci
  • luci 》 Modules 》 Translations 》 Chinese Simplified(zh_cn)
  • luci 》 Applications 》 见仁见智,注意大小
## 数字摘要 ️

视频:
https://www.youtube.com/watch?v=iMf4RjCJXi4&t=57s
(解决数字摘要引起的自编固件上任意安装使用官方源软件问题)

如:
已安装的软件包 kernel 版本不兼容,需要 5.4.188-1-db222399… 而 5.4.188-1-a3831ee4… 已安装。

这种提示就是数字摘要问题

在这里插入图片描述

解决方法

  1. 找到官方源的摘要:
    如在 /etc/opkg/distfeeds.conf 找到源地址,网页访问,找里面的 *.manifest 文件中的 kernel 中的数字摘要
    在这里插入图片描述
    在这里插入图片描述

  2. 到固件里面修改 /usr/lib/opkg/status 将自编译出来的数字摘要替换成官方的
    sed 's/a3831ee49b29946af4fa939af1b7fd4f/db222399ef90ea6bd3453fe08b323a74/g' /usr/lib/opkg/status -i

    其中
    自编译数字摘要:a3831ee49b29946af4fa939af1b7fd4f
    官方的数字摘要:db222399ef90ea6bd3453fe08b323a74

修改了之后再去看,已经没有数字摘要不一致的提示了

## 问题:img 转换 vmdk

方法1:
编译时在 target 里面选择 vmdk

方法2:
如果不是自己编译的,只有固件那需要转换

视频:https://www.bilibili.com/video/av503837985/

软件 QEMU
https://www.qemu.org/
win https://qemu.weilnetz.de/w64/
安装完要手动配置环境变量

# 查看固件信息
qemu-img info <*.img>

# 转换
qemu-img convert -f raw -O vmdk <src-img> <dst-file>
# -f 支持格式
# Supported formats: rbd host_cdrom blkdebug qcow host_device vpc qcow2 cloop 
#	vdi sheepdog qed nbd tftp vvfat ftp ftps https http dmg vmdk parallels iscsi 
#	raw bochs quorum null-aio null-co vhdx blkverify file

先把 img.gz 解压成 img

$ qemu-img info C:\Users\lawsssscat\Downloads\aabb\openwrt-19.07.4-x86-64-combined-squashfs.img
image: C:\Users\lawsssscat\Downloads\aabb\openwrt-19.07.4-x86-64-combined-squashfs.img
file format: raw
virtual size: 19.5 MiB (20406784 bytes)
disk size: 19.5 MiB


$ qemu-img convert -f raw -O vmdk C:\Users\lawsssscat\Downloads\aabb\openwrt-19.07.4-x86-64-combined-squashfs.img C:\Users\lawsssscat\Downloads\aabb\openwrt-19.07.4-x86-64-combined-squashfs.vmdk
## 如何后台编译

使用 screen工具

sudo apt update 
sudo apt -y install screen 
# 創建screen
screen

# 退出 screen
Ctrl+A+D

# 查看現有screen
screen -ls

# 進入現有screen
screen -r 23483
# 23483 是前面的hash值

openwrt 原生编译

openwrt:https://openwrt.org/zh-cn/doc/howto/build](https://openwrt.org/zh-cn/doc/howto/build


修改feeddefault文件或者手动添加包

./package/openwrt-wall**pass

必选清单

target>>设置固件格式、分区大小
luci>>collection>>luci
luci>>modules>>luci-compact 压缩(否则打开页面会卡)
luci>>modules>>dashboard 总览
luci>>modules>>translations>>chinese simplified (zh_hans) 
luci>>themes>>luci-theme-bootstrap 默认主题
luci>>applications>>luci-app-ddns 动态域名解析
luci>>applications>>luci-app-opkg 包管理
luci>>applications>>luci-app-wall****pass ???
luci>>applications>>luci-app-qos 服务质量
luci>>applications>>luci-app-wol 域名唤醒
luci>>protocls>>luci-proto-ipv6
luci>>protocls>>luci-proto-ppp
# network>>project v>>ray**v # 看情况
utilities>>editors>>vim-full
utilities>>shells>>zsh
# journaling filesystem # ext4 格式必须打开

设置网卡

# 有线(如:万兆)
kernel modules>>network devices>>mlx4-core
kernel modules>>network devices>>mlx5-core
# 无线
kernel modules>>wireless drivers>>

通过 GitHub Actions 编译

刷写新固件

通过DD命令刷新固件
使用winscp或其他方法将img镜像文件上传至路由器,例如/tmp/upload/路径下。

SSH登录路由器,确认img镜像文件已上传。

以文件名为openwrt-x86-64-combined-squashfs.img为例。

root@OpenWrt:~# ls -l /tmp/upload
-rw-r--r-- 1 root root 304611328 Jun 12 23:25 openwrt-x86-64-combined-squashfs.img

确认文件上传正常,文件大小正常。

执行DD命令写入

  dd if=//tmp/upload/openwrt-x86-64-combined-squashfs.img of=/dev/sda

会回显一个写入信息

  594944+0 records in
  594944+0 records out

执行reboot重启机器,固件即生效。

恢复出厂设置

firstboot

参考:
【笔记】openwrt - 备份、还原、定期备份
https://lawsssscat.blog.csdn.net/article/details/104858015

测试

cpu加解密跑分

openssl speed -evp aes-256-gcm
openssl speed -evp chacha20-poly1305

在这里插入图片描述
https://www.youtube.com/watch?v=DnJj1pUJILY

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LawssssCat/article/details/103744761

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签