【速记】openwrt - 编译、刷固件(资料整理)
固件
官方 https://downloads.openwrt.org/releases/19.07.4/targets/x86/64/
整合 https://op.dllkids.xyz/op/firmware/
文章
【记录】openwrt - 编译过程梳理 - https://lawsssscat.blog.csdn.net/article/details/107305357
【笔记】openwrt - 前世今生、版本、目录结构 - https://lawsssscat.blog.csdn.net/article/details/106740304
文章目录
# 虚拟机安装
# 编译流程
# 二次编译
# 其他
# 问题:数字摘要 ⚠️
# 问题:img 转换 vmdk
# 问题:如何后台编译
选择cpu内核
网卡选择
cpu省电、电源管理
samba4
开启IPV6
更改LAN口的默认IP地址
更改分区空间
如果需要 Cloudflare DDNS 组件
固件版本信息
编译 ac2100
前言
lede 编译
immortalwrt 编译
openwrt 原生编译
通过 GitHub Actions 编译
刷写新固件
恢复出厂设置
测试

sudo apt-get updatesudo 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 rsyncgit clone https://github.com/coolsnowwolf/lede.gitcd lede # 添加下面代码复制到 lede源码根目录 feeds.conf.default 文件sed -i '$a src-git kenzo https://github.com/kenzok8/openwrt-packages' feeds.conf.defaultsed -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 -amake menuconfigmake -j8 download V=smake -j1 V=s# make -j$(($(nproc) + 1)) V=s
其他
(初次)编译视频:https://www.youtube.com/watch?v=ZMh-AvQV8n0
调整系统组件:https://www.youtube.com/watch?v=jq3gt7xGRO0
openwrt编译过程讲述 https://www.youtube.com/watch?v=35ImdukpmyY
(u盘)安装 https://www.youtube.com/watch?v=7TAUlkAnoIo
插件
编译 https://www.youtube.com/watch?v=FKyqTtbU_LU
功能介绍 https://www.youtube.com/watch?v=nglEvMILpvE&t=167s
加密选择 https://www.youtube.com/watch?v=HvLif9gf8y0
# 二次编译
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
ss
清理
# 清理feeds./scripts/feeds clean
# 清理:封装 build_dirmake clean # 承上# 清理:编译 staging_dirmake dirclean# 承上# 清理:源码 feeds# 潜力:编译准备 packagemake 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 组件
默认情况下 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
编译 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
型号:mt7621Target 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 》 见仁见智,注意大小
线刷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
修改了之后再去看,已经没有数字摘要不一致的提示了
# 问题: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.imgfile 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
# 創建screenscreen# 退出 screenCtrl+A+D# 查看現有screenscreen -ls# 進入現有screenscreen -r 23483# 23483 是前面的hash值
immortalwrt 编译
git clone -b openwrt-18.06 --single-branch https://github.com/immortalwrt/immortalwrt# 其他一样./scripts/feeds update -a && ./scripts/feeds install -amake menuconfigmake kernel_menuconfigmake -j1
openwrt 原生编译
openwrt: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 编译
esirplayground 视频 https://www.youtube.com/watch?v=9YO7nxNry-4
P3TERX 文字 https://p3terx.com/archives/build-openwrt-with-github-actions.html
KFERMercer 文字 https://github.com/KFERMercer/OpenWrt-CI
https://github.com/LawssssCat/AutoBuild-OpenWrt
https://github.com/P3TERX/Actions-OpenWrt/
刷写新固件
通过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 in594944+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

推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://sg.hqyman.cn/post/4380.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
打赏

微信支付宝扫一扫,打赏作者吧~
休息一下~~