前言

本教程基于 LEDE 项目

首先需要安装Linux虚拟机或者使用WSL虚拟环境,这里使用后者

正文

准备工作

首先自然是配置依赖环境

sudo apt -y update

sudo apt -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

因为要对LEDE固件做一些修改,所以我们需要去Folk一份源码

Folk源码

然后把刚刚Folk的仓库clone到本地

请不要下载Zip存档,这样操作会丢失git配置,导致后续操作无法继续
# PS: 这里换成自己的仓库的地址
git clone https://github.com/chr233/lede 

请确保处于大小写敏感的文件系统下,否则无法使用配置工具(NTFS和FAT都不行, EXT4可以)

然后使用命令就可以进入配置菜单了

make menuconfig

编译配置菜单

编译配置菜单说明(部分)

  • Target System (Broadcom BCM27xx) #选择处理器架构

  • Subtarget (BCM2711 boards (64 bit)) #选择处理器

  • Target Profile (Raspberry Pi 4B/400/4CM (64bit)) #预制配置文件

  • Target Images #固件映像设置

    • ramdisk # 内存盘, 硬件内存充裕的话可以打开,有效提升性能

      • Compression # 压缩等级(none表示不压缩)
    • Root filesystem archives #根文件系统存档类型

      • cpio.gz
      • tar.gz
    • Root filesystem images #根文件系统格式

      • ext4 #适用于大容量闪存,易于修改分区大小,没有恢复出厂设置的功能
      • squashfs #适用于小容量闪存,不可修改分区大小,有恢复出厂设置的功能
      • Gzip images #Gzip存档
    • Image Options

      • Kernel partition size #内核分区大小,建议64M到256M,足够了
      • Root filesystem partition size #跟文件系统分区大小,根据闪存大小自行设定
      • Make /var persistent #持久化/var(开启后重启软路由/var下内容会保留)
  • 以下设置一般无需修改

  • Enable experimental features by default #默认启用实验性功能

  • Global build settings #全局编译设置

  • Advanced configuration options (for developers) #高级选项(仅供开发者)

  • Build the OpenWrt Image Builder #编译OpenWrt镜像编译器

  • Build the OpenWrt SDK #编译OpenWrt SDK

  • Package the OpenWrt-based Toolchain #打包OpenWrt工具链

  • Image configuration #镜像选项

  • 以下可以根据需要选择要加入的附加组件

    M代表编译成ipk包,不内置在固件中,可以之后单独安装,*代表内置在固件中
    • Base system #基本组件
    • Administration #管理员工具
    • Boot Loaders #引导程序
    • Development #开发者工具
    • Extra packages #额外包
    • Firmware #固件工具
    • Fonts #字体
    • Kernel modules #内核模块
    • Languages #额外的语言(Python3,PHP,NodeJS等)
    • Libraries #系统库
    • LuCI #LuCI插件(一般只需修改应用和主题)
        1. Collections #合集
        1. Modules #模块
        1. Applications #应用程序
        1. Themes #主题
        1. Protocols #协议支持
        1. Libraries #运行库
      • default-settings # 默认选项(自动配置语言包)
    • Mail #邮件
    • Multimedia #多媒体
    • Network #网络相关
    • Sound #音频
    • Utilities #各类实用软件(比如VIM)
    • Xorg

修改完成以后,按左右方向键选中Save,按回车键保存,无需修改文件名,保存为.config即可

保存配置

准备工作

为了能使用GitHub Action进行在线编译,我们需要将.config上传到自己的仓库中,可以手动上传,也可以在.gitignore中设置取消忽略

直接在.gitignore中删除/.config行即可

删除/.config

然后就可以使用Git进行提交了

git add .config
git commit -m "update"
git push

如果一切顺利,可以在自己的仓库中看到.config文件,这个就是编译配置文件了

编译配置文件已上传

然后切换到Actions页,点击绿色按钮启用GitHub Actions功能

Actions

然后回到仓库主页,右下角找到Release,进入Release页

Release

点击Draft a new release创建新的Release

新Release

标题和内容可以随便填,最后点Publish release发布

发布Release

然后回到Actions页,可以看到自动触发了一个workflow

workflows

然后只需要耐心等待,如果编译成功,图标会变成绿色,点进去就能下载编译好的固件了

编译好的固件

  • OpenWrt_buildinfo #固件编译信息,没什么用

  • OpenWrt_firmware #编译好的固件本体
    解压即可得到指定分区格式的镜像
    如果是第一次刷入,需要刷入带factory的镜像
    如果是通过网页升级,则需要上传带sysupgrade镜像

  • OpenWrt_package #编译好的ipk包
    可以在刷入固件以后手动安装到OpenWrt中

最后修改:2022 年 01 月 29 日
Null