技术标签: OpenWRT ️ 路由 编译 固件 linux openwrt
- 固件
- 文章
- 【笔记】openwrt - 架构梳理 - https://lawsssscat.blog.csdn.net/article/details/103633167
- 【记录】openwrt - 编译过程梳理 - https://lawsssscat.blog.csdn.net/article/details/107305357
- 【笔记】openwrt - 前世今生、版本、目录结构 - https://lawsssscat.blog.csdn.net/article/details/106740304
准备“编译环境”: (个人尝试过的最低配置)
本地编译
参考:
- 官方 - https://openwrt.org/docs/guide-developer/toolchain/beginners-build-guide (详细)
- lede - https://github.com/coolsnowwolf/lede (简单)
默认登陆IP 192.168.1.1 密码 password
几点需要注意:
为了确保编译成功,第一次编译请什么都不要改
全局模式
增加安装包选项,请修改feeds.conf.default
文件
可能涉及的参数调整介绍
插件的功能介绍参考:
更多:
- 编译 https://www.youtube.com/watch?v=FKyqTtbU_LU
- 功能介绍 https://www.youtube.com/watch?v=nglEvMILpvE&t=167s
- 加密选择 https://www.youtube.com/watch?v=HvLif9gf8y0
其他
编译流程大同小异,下面以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
make kernel_menuconfig
processor type and features > processor famlly
https://www.youtube.com/watch?v=X9v6Nd3wxkk
网卡驱动
kernel modules > network devices
无线驱动
kernel modules > wireless devices
make kernel_menuconfig
power management and ACPI options
勾选
还有选择cpu频率缩放>频率调速器
(cpu frequency scaling > default cpureq governor )
选一个
想选择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
选上extra packages——ipv6helper
检察:
在 Network – Firewall – ip6tables 下启用 ip6tables-extra 和 ip6tables-mod-nat 项。
编译前改这里
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)
默认情况下 OpenWrt 中并没有 Cloudflare 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
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
- 线刷breed教程
红米AC2100刷机Padavan固件全图解,超超超详细 https://post.smzdm.com/p/aoo85457/- 网刷breed教程
[AC2100(RM2100)] 小米 红米【AC2100】一键刷BREED【30秒刷完】小白帅小伙专用 检查坏块 | 无需Telnet https://www.right.com.cn/forum/thread-4066963-1-1.html- 官方bootloader
[AC2100(RM2100)] 小米AC2100和红米AC2100可以刷的breed。另附小米和红米官方的bootloader https://www.right.com.cn/forum/thread-4023403-1-2.html- 还原官方教程
[AC2100(RM2100)] [2020年11月28日更新]breed刷机红米AC2100小米AC2100原厂固件官方固件 https://www.right.com.cn/forum/thread-4028850-1-1.html- padavan源码
https://github.com/MeIsReallyBa/padavan-4.4- 超频设置
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=4041776
视频:
https://www.youtube.com/watch?v=iMf4RjCJXi4&t=57s
(解决数字摘要引起的自编固件上任意安装使用官方源软件问题)
如:
已安装的软件包 kernel 版本不兼容,需要 5.4.188-1-db222399… 而 5.4.188-1-a3831ee4… 已安装。
这种提示就是数字摘要问题
解决方法
找到官方源的摘要:
如在 /etc/opkg/distfeeds.conf
找到源地址,网页访问,找里面的 *.manifest
文件中的 kernel
中的数字摘要
到固件里面修改 /usr/lib/opkg/status
将自编译出来的数字摘要替换成官方的
sed 's/a3831ee49b29946af4fa939af1b7fd4f/db222399ef90ea6bd3453fe08b323a74/g' /usr/lib/opkg/status -i
其中
自编译数字摘要:a3831ee49b29946af4fa939af1b7fd4f
官方的数字摘要:db222399ef90ea6bd3453fe08b323a74
修改了之后再去看,已经没有数字摘要不一致的提示了
方法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: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>>
通过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
文章浏览阅读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..._达梦数据库导入导出
文章浏览阅读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
文章浏览阅读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
文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输
文章浏览阅读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...
文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure
文章浏览阅读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++ 字符串分割
文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答
文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。
文章浏览阅读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怎么进入
文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf