05
2023
09
21:23:27

【速记】openwrt - 编译、刷固件(资料整理)

  • 固件

    1. 官方 https://downloads.openwrt.org/releases/19.07.4/targets/x86/64/

    2. 整合 https://op.dllkids.xyz/op/firmware/

  • 文章

    1. 【记录】openwrt - 编译过程梳理 - https://lawsssscat.blog.csdn.net/article/details/107305357

    2. 【笔记】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 组件

    默认情况下 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
    型号: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 》 见仁见智,注意大小

    • 编译基础设置
      https://www.youtube.com/watch?v=sMFQiQj1j_I&t=3s
      https://www.youtube.com/watch?v=kfT6_jUpCts&t=216s

    • 刷机总教程
      https://www.youtube.com/watch?v=iDPAORQHP3g&ab_channel=悟空的日常

    • 线刷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… 已安装。

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

    在这里插入图片描述

    解决方法

    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.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

    • 视频:
      【老湿基】OpenWRT 高级编译总览、编译插件|第一弹
      https://www.bilibili.com/video/BV1854y1W7fu
      【老湿基】OpenWRT 编译细节透视|第二弹
      https://www.bilibili.com/video/BV1fS4y117XU


    修改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

    在这里插入图片描述




    推荐本站淘宝优惠价购买喜欢的宝贝:

    image.png

    本文链接:https://hqyman.cn/post/4380.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

    分享到:
    打赏





    休息一下~~


    « 上一篇 下一篇 »

    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    请先 登录 再评论,若不是会员请先 注册

    您的IP地址是: