LoongFire · 龙火 firewall · eBPF 防火墙 · eBPF

LoongFire v2.29 (core205) Release Notes

LoongFire v2.29(core205)发布说明

Official LoongArch64 support, a reworked toolchain, kernel 7.3.1, and a large batch of security fixes.

正式支持 LoongArch64、重构的工具链、7.3.1 内核,以及一大批安全修复。

Overview

LoongFire v2.29 is a major milestone release. Core205 brings official LoongArch64 support, a completely reworked toolchain, a refreshed kernel, and a large batch of package updates and security fixes.

Highlights

Official LoongArch64 Support

LoongArch64 is now a first-class architecture in LoongFire. The upstream IPFire project officially supports LoongArch64 starting with core205, and this release mirrors that.

  • Generic hardware compilation — the build now targets generic LoongArch64 hardware rather than a specific ISA revision, since there is not yet enough information to optimize for a specific version.
  • QEMU emulation support — the build system can emulate la464 for LoongArch64, allowing builds without physical hardware.
  • Toolchain alignment — LoongArch64 is now aligned with the other architectures in autotools/automake configuration, compiling order, and rust build setup.
  • python3 is now architecture-aware — shared objects receive the correct architecture tuple, fixing rootfile generation.
  • pcre JIT disabled on LoongArch64 for correct builds.

EFI Boot Filename Fix for Loongson 3A6000

Some Loongson 3A6000 firmware reads the ISO9660 filesystem case-sensitively and failed to find bootLOONGARCH64.efi. The CD-ROM now uses the uppercase BOOTLOONGARCH64.EFI on LoongArch only — valid UEFI naming that also works on unaffected firmware. Tested on a Morefine M700S (Loongson 3A6000). x86, ARM and RISC-V are unchanged.

Toolchain Upgrades

ComponentNew version
GCC16.1.0
glibc2.44
binutils2.47.0
cmake4.4.3
meson1.12.1
automake1.19
libtool2.6.2
abseil-cpp20260817.0
  • GCC builds are now mirrored from IPFire upstream for LoongArch64.
  • libatomic is no longer built separately on riscv64 (now included in standard GCC).
  • The toolchain is enabled when entering the build shell, so the environment can be entered at any time.
  • Host compiler flags are filtered out when cross-compiling.

Kernel & Boot

  • Linux kernel updated to 7.3.1 (from 7.2.13).
  • linux-atm package dropped — the 7.2 kernel removed the ATM UAPI headers.
  • dracut updated to 112 and renamed from dracut-ng back to dracut, including a workaround for a glibc 2.44 regression.
  • GRUB updated to 2.16 (from 2.14); the riscv64 medany patch was reworked.
  • Installer can now install EFI parts on riscv64 as well.

Smaller, Smarter Installer

  • Installer is compressed with zstd -19 (built only once, so heavier compression is affordable).
  • Installer omits CPU microcode, dracut's network stack, and unused modules (NFS, CIFS, LVM, …).
  • Netronome and LiquidIO drivers removed from the installer — their firmware alone is ~39 MiB, more than half of the installer.
  • The linker cache is updated before entering the chroot, fixing cases where the chroot shell would not start.

Rootfile Unification & Build System

A large mechanical overhaul unifies rootfiles across architectures, reducing drift and manual maintenance:

  • New placeholder scheme using @NAME@ (autoconf style):
    • xxxMACHINExxx → @ARCH@
    • xxxRUSTPLATFORMxxx → @RUST_PLATFORM@
    • BUILDTARGET → @BUILDTARGET@
    • KVER → @KERNEL_RELEASE@
    • New @ARCH_DASHED@ for Samba's Python libraries (e.g. x86-64).
  • ROOTFILE_KEEP_LITERAL marks packages that carry literal architecture names in paths (e.g. qemu-system-x86_64), replacing the old hard-maintained exclusion list.
  • Logs are written in rootfile notation — placeholders are put back automatically, eliminating manual copying and reducing per-architecture drift. Comparison is also much faster (no per-file grep).
  • Special per-package rootfiles dropped from make.sh.
  • Merged rootfiles for: boost, rust (aarch64/riscv64/x86_64 merged; LoongArch64 keeps its own), samba, stage2, grub (loongarch64/riscv64), linux-initrd, util-linux, lm_sensors, efivar, efibootmgr, rrdtool, initscripts (all architectures), python3-MarkupSafe, python3-yaml.
  • swconfig now shipped on all architectures (exits on non-aarch64), enabling a single initscripts rootfile.
  • sysctl hardening config added for loongarch64 and riscv64 — both have a BPF JIT but were not applying the hardening used on aarch64/x86_64.
  • make.sh: QEMU reserves up to 8 GiB virtual memory; QEMU check simplified; xz reset to -T0; parallelism for compression hard-coded.

Security Fixes & Networking

xdp-tools 1.5.5.8 — CVE-2026-98432 Mitigation

  • xdp_synproxy drops IPv4 packets with IP options (IHL > 5) in tcp_dissect(), preventing SYN packets with IP options from reaching the kernel stack and triggering the use-after-free. IPv6 unaffected. This is a temporary mitigation — a patched kernel is still required as the final fix.
  • New daemon mode (--daemon, --pidfile, --logfile) keeps the XDP program and BPF maps loaded after the launching shell exits.

Firewall & DNS

  • Knot resolver outgoing access restricted to DNS ports 53 (UDP/TCP) and 853 (TCP, DoT).
  • knot-resolver reworked patch replies from the correct address; compiled for release (no debugging/assertions).
  • bind updated to 9.20.29, knot to 3.6.0.

Other Security-Relevant Updates

  • strongswan 6.1.0 — includes 10 CVE fixes. IKEv1 is now disabled by default; re-enabled via --enable-ikev1, but IPSec users on IKEv1 are advised to migrate to IKEv2. The gcrypt plugin has been removed.
  • libtalloc 2.5.0 — includes 17 CVE fixes.
  • faad2 2.11.3 — 2 CVE fixes plus ~15 additional bug fixes; build switched from autotools to cmake.
  • lame 4.0 — 2 security fixes; now requires libmpg123 (new package libmpg123 1.33.7).
  • xdp-tools, libxml2 2.15.4, curl 8.22.0, openssh 10.5p1, openvpn 2.7.7 and many others updated.

Bug Fixes

  • libloc — location now returns 3 (not 0) when the database is the latest version, matching the man page (bug 14047).
  • suricata-reporter — fixed incorrect suricata-report-cron file being installed (bug 14048); also added the missing suricata-report-cron.
  • apache — regenerates empty ECDSA key/CSR/cert files on start (uses test -s instead of test -f), fixing a broken web UI after a low-entropy first boot.
  • zabbix_agent — added missing userparameter conf file; added Suricata metrics support (suricata.counters.get, suricata.version via suricatasc, with sudoers entries); updated to 7.0.29 LTS.
  • python3-zabbix-utils — new package v2.0.4.
  • shairport-sync 5.5.2 — improved compatibility with Apple OS 27; the 10-year-old alac addon is removed, replaced with --with-ffmpeg.

Package Updates (Selection)

Networking: frr 10.7.1, tcpdump 4.99.6, tshark 4.6.9, lldpd 1.0.22, iproute2 7.2.0, wpa_supplicant 2.12, dhcpcd 10.5.0, nfs 3.1.1, rpcbind 1.3.1, cifs-utils 7.8, libpcap 1.11.0, libtirpc 1.3.8

Databases & RPC: openldap 2.7.1, lmdb 1.0.2, aprutil 1.6.5, protobuf 36.1, protobuf-c (C++17 build fix)

System: systemd 261.3, util-linux 2.42.4, procps 4.0.7, shadow 4.20.0, coreutils 9.12, findutils 4.11.0, parted 3.8, lvm2 2.03.43, nut 2.8.5, htop 3.5.3, btrfs-progs 7.1, elfutils 0.196, fuse 3.18.3, ntfs-3g 2026.9.28, xorriso 1.5.8.pl02

Libraries: libpng 1.6.59, libgcrypt 1.12.4, libcap-ng 0.9.6, libksba 1.8.1, libmicrohttpd 1.0.10, libffi 3.8.0, libxxhash 0.8.4, jansson 2.15.1, pcre2 10.49, xz 5.8.4, gzip 1.15, readline 8.3 Patch-6, p11-kit 0.26.5, fontconfig 2.18.3, cairo 1.18.6, pixman 0.46.4, fribidi 1.0.17, freetype-dependent stack refreshed

Media: flac 1.5.0 (soname bump; minidlna, mpd, mympd rebuilt and version-bumped), sdl2 2.32.10, taglib 2.3.1, mpg123 1.33.7

Data & Time: tzdata 2026e, iana-etc 20260911, Net-DNS 1.57, intel-microcode 20260925

Mail/Web: freeradius 3.2.10, keepalived 2.4.3, bacula 15.0.3

Tooling: perf build fix (.eh_frame_hdr overlapping FDEs workaround with -Wl,--no-eh-frame-hdr), pahole warning suppression

Architecture & Platform Notes

  • README updated to document x86_64 support status.
  • ipfire-netboot/syslinux rootfile removed for LoongArch64 (not required).
  • liboping updated to 1.10.0 to fix missing-liboping errors in LFS/CD-ROM builds.
  • mpd/minidlna/mympdc version-bumped for flac and ffmpeg soname bumps.
  • Manual pages: added missing help-page links for DNS, Dial and Wlanclient.
  • Images: linker cache updated before entering chroot.

Upgrade Notes

  1. IPSec users on IKEv1 should plan migration to IKEv2 — strongswan 6.1.0 disables IKEv1 by default and upstream plans to remove it.
  2. alac addon removed — shairport-sync now uses ffmpeg for ALAC decoding.
  3. linux-atm removed — no longer buildable against the 7.x kernel.
  4. CVE-2026-98432 is mitigated at the XDP layer only; update your kernel to receive the final fix.
  5. glibc 2.44 required dracut workarounds; ensure a full clean rebuild if building from source.
Full source: loongfire v2.29 / core205 — commit range core204..core205
Tested on: Morefine M700S (Loongson 3A6000), QEMU la464 emulation

Acknowledgements

Thank you to Vincent Li and all upstream IPFire contributors — Michael Tremer, Adolf Belka, Arne Fitzenreiter, Peter Müller, Robin Roevens, Matthias Fischer — whose work is mirrored in this release.

概述

LoongFire v2.29 是一个重要的里程碑版本。Core205 带来了正式支持 LoongArch64、全面重构的工具链、更新的内核,以及大量软件包更新和安全修复。

亮点

正式支持 LoongArch64

LoongArch64 现已成为 LoongFire 的一等架构。上游 IPFire 项目从 core205 开始正式支持 LoongArch64,本版本与之保持一致。

  • 通用硬件编译 —— 构建现在面向通用 LoongArch64 硬件,而非特定 ISA 版本,因为目前还没有足够信息来决定针对特定版本进行优化。
  • QEMU 模拟支持 —— 构建系统可以模拟 la464,无需物理硬件即可构建。
  • 工具链对齐 —— LoongArch64 现在在 autotools/automake 配置、编译顺序和 rust 构建配置上与其他架构保持一致。
  • python3 现已感知架构 —— 共享对象获得正确的架构元组,修复了 rootfile 生成问题。
  • LoongArch64 上禁用 pcre JIT,以确保正确构建。

Loongson 3A6000 的 EFI 启动文件名修复

部分 Loongson 3A6000 固件以区分大小写的方式读取 ISO9660 文件系统,无法找到 bootLOONGARCH64.efi。CD-ROM 现在仅在 LoongArch 上使用大写的 BOOTLOONGARCH64.EFI —— 这是合法的 UEFI 命名,在不受影响的固件上同样有效。已在 Morefine M700S(Loongson 3A6000)上测试。x86、ARM 和 RISC-V 保持不变。

工具链升级

组件新版本
GCC16.1.0
glibc2.44
binutils2.47.0
cmake4.4.3
meson1.12.1
automake1.19
libtool2.6.2
abseil-cpp20260817.0
  • LoongArch64 的 GCC 构建现在镜像自 IPFire 上游。
  • riscv64 上不再单独构建 libatomic(现已包含在标准 GCC 构建中)。
  • 进入构建 shell 时启用工具链,因此可以随时进入该环境。
  • 交叉编译时过滤掉宿主编译器不支持的标志。

内核与启动

  • Linux 内核更新至 7.3.1(从 7.2.13)。
  • 移除 linux-atm 软件包 —— 7.2 内核移除了 ATM UAPI 头文件。
  • dracut 更新至 112,并从 dracut-ng 改回 dracut,包含针对 glibc 2.44 回归问题的规避方案。
  • GRUB 更新至 2.16(从 2.14);riscv64 的 medany 补丁已重做。
  • 安装程序现在也可以在 riscv64 上安装 EFI 部分。

更小、更智能的安装程序

  • 安装程序使用 zstd -19 压缩(只构建一次,因此可以承受更重的压缩)。
  • 安装程序省略 CPU 微码、dracut 的网络栈以及未使用的模块(NFS、CIFS、LVM……)。
  • 从安装程序中移除 Netronome 和 LiquidIO 驱动 —— 仅其固件就约 39 MiB,超过安装程序的一半。
  • 进入 chroot 前更新链接器缓存,修复了 chroot shell 无法启动的情况。

Rootfile 统一与构建系统

一次大规模的机械性重构统一了跨架构的 rootfile,减少了漂移和手动维护:

  • 新的占位符方案,使用 @NAME@(autoconf 风格):
    • xxxMACHINExxx → @ARCH@
    • xxxRUSTPLATFORMxxx → @RUST_PLATFORM@
    • BUILDTARGET → @BUILDTARGET@
    • KVER → @KERNEL_RELEASE@
    • 新增 @ARCH_DASHED@,用于 Samba 的 Python 库(例如 x86-64)。
  • ROOTFILE_KEEP_LITERAL 标记在路径中包含字面架构名称的软件包(例如 qemu-system-x86_64),取代了旧的硬编码排除列表。
  • 日志以 rootfile 记法写入 —— 占位符自动放回,消除了手动复制并减少了各架构间的漂移。比较速度也大幅提升(不再对每个文件执行 grep)。
  • 从 make.sh 中移除特殊的按包 rootfile。
  • 合并 rootfile:boost、rust(aarch64/riscv64/x86_64 合并;LoongArch64 保留自己的)、samba、stage2、grub(loongarch64/riscv64)、linux-initrd、util-linux、lm_sensors、efivar、efibootmgr、rrdtool、initscripts(所有架构)、python3-MarkupSafe、python3-yaml。
  • swconfig 现在在所有架构上发布(在非 aarch64 上直接退出),从而实现单一的 initscripts rootfile。
  • 为 loongarch64 和 riscv64 添加 sysctl 加固配置 —— 两者都有 BPF JIT,但此前未应用 aarch64/x86_64 上使用的加固措施。
  • make.sh:QEMU 预留最多 8 GiB 虚拟内存;简化 QEMU 检查;xz 重置为 -T0;压缩并行度硬编码。

安全修复与网络

xdp-tools 1.5.5.8 —— CVE-2026-98432 缓解

  • xdp_synproxy 丢弃带 IP 选项的 IPv4 数据包(IHL > 5),在 tcp_dissect() 中处理,防止带 IP 选项的 SYN 包到达内核栈并触发释放后使用漏洞。IPv6 不受影响。这是临时缓解措施 —— 最终修复仍需打补丁的内核。
  • 新增守护进程模式(--daemon、--pidfile、--logfile),使启动 shell 退出后 XDP 程序和 BPF map 保持加载。

防火墙与 DNS

  • Knot 解析器的出站访问限制为 DNS 端口 53(UDP/TCP)和 853(TCP,DoT)。
  • knot-resolver 重做的补丁从正确地址回复;为发布版编译(无调试/断言)。
  • bind 更新至 9.20.29,knot 更新至 3.6.0。

其他安全相关更新

  • strongswan 6.1.0 —— 包含 10 个 CVE 修复。IKEv1 现在默认禁用;通过 --enable-ikev1 重新启用,但建议 IKEv1 的 IPSec 用户迁移到 IKEv2。gcrypt 插件已移除。
  • libtalloc 2.5.0 —— 包含 17 个 CVE 修复。
  • faad2 2.11.3 —— 2 个 CVE 修复以及约 15 个额外 bug 修复;构建从 autotools 切换到 cmake。
  • lame 4.0 —— 2 个安全修复;现在需要 libmpg123(新软件包 libmpg123 1.33.7)。
  • xdp-tools、libxml2 2.15.4、curl 8.22.0、openssh 10.5p1、openvpn 2.7.7 等众多软件包已更新。

Bug 修复

  • libloc —— 当数据库为最新版本时,location 现在返回 3(而非 0),与手册页一致(bug 14047)。
  • suricata-reporter —— 修复了安装错误的 suricata-report-cron 文件的问题(bug 14048);同时添加了缺失的 suricata-report-cron。
  • apache —— 启动时重新生成空的 ECDSA 密钥/CSR/证书文件(使用 test -s 而非 test -f),修复了低熵首次启动后 Web UI 损坏的问题。
  • zabbix_agent —— 添加缺失的 userparameter 配置文件;新增 Suricata 指标支持(通过 suricatasc 的 suricata.counters.get、suricata.version,并配置 sudoers 条目);更新至 7.0.29 LTS。
  • python3-zabbix-utils —— 新软件包 v2.0.4。
  • shairport-sync 5.5.2 —— 改善与 Apple OS 27 的兼容性;已有 10 年历史的 alac 插件被移除,替换为 --with-ffmpeg。

软件包更新(部分)

网络:frr 10.7.1、tcpdump 4.99.6、tshark 4.6.9、lldpd 1.0.22、iproute2 7.2.0、wpa_supplicant 2.12、dhcpcd 10.5.0、nfs 3.1.1、rpcbind 1.3.1、cifs-utils 7.8、libpcap 1.11.0、libtirpc 1.3.8

数据库与 RPC:openldap 2.7.1、lmdb 1.0.2、aprutil 1.6.5、protobuf 36.1、protobuf-c(C++17 构建修复)

系统:systemd 261.3、util-linux 2.42.4、procps 4.0.7、shadow 4.20.0、coreutils 9.12、findutils 4.11.0、parted 3.8、lvm2 2.03.43、nut 2.8.5、htop 3.5.3、btrfs-progs 7.1、elfutils 0.196、fuse 3.18.3、ntfs-3g 2026.9.28、xorriso 1.5.8.pl02

库:libpng 1.6.59、libgcrypt 1.12.4、libcap-ng 0.9.6、libksba 1.8.1、libmicrohttpd 1.0.10、libffi 3.8.0、libxxhash 0.8.4、jansson 2.15.1、pcre2 10.49、xz 5.8.4、gzip 1.15、readline 8.3 Patch-6、p11-kit 0.26.5、fontconfig 2.18.3、cairo 1.18.6、pixman 0.46.4、fribidi 1.0.17,freetype 依赖栈已刷新

媒体:flac 1.5.0(soname 升级;minidlna、mpd、mympdc 重新构建并版本递增)、sdl2 2.32.10、taglib 2.3.1、mpg123 1.33.7

数据与时间:tzdata 2026e、iana-etc 20260911、Net-DNS 1.57、intel-microcode 20260925

邮件/Web:freeradius 3.2.10、keepalived 2.4.3、bacula 15.0.3

工具:perf 构建修复(使用 -Wl,--no-eh-frame-hdr 规避 .eh_frame_hdr 重叠 FDE 问题)、pahole 警告抑制

架构与平台说明

  • 更新 README,记录 x86_64 支持状态。
  • 移除 LoongArch64 的 ipfire-netboot/syslinux rootfile(不需要)。
  • liboping 更新至 1.10.0,修复 LFS/CD-ROM 构建中缺失 liboping 的错误。
  • mpd/minidlna/mympdc 因 flac 和 ffmpeg soname 升级而递增版本。
  • 手册页:为 DNS、Dial 和 Wlanclient 添加缺失的帮助页链接。
  • 镜像:进入 chroot 前更新链接器缓存。

升级注意事项

  1. 使用 IKEv1 的 IPSec 用户应计划迁移到 IKEv2 —— strongswan 6.1.0 默认禁用 IKEv1,上游计划移除它。
  2. alac 插件已移除 —— shairport-sync 现在使用 ffmpeg 进行 ALAC 解码。
  3. linux-atm 已移除 —— 无法再针对 7.x 内核构建。
  4. CVE-2026-98432 仅在 XDP 层缓解;请更新内核以获得最终修复。
  5. glibc 2.44 需要 dracut 规避方案;如果从源码构建,请确保完全干净重建。
完整源码:loongfire v2.29 / core205 — 提交范围 core204..core205
测试平台:Morefine M700S(Loongson 3A6000)、QEMU la464 模拟

致谢

感谢 Vincent Li 以及所有上游 IPFire 贡献者 —— Michael Tremer、Adolf Belka、Arne Fitzenreiter、Peter Müller、Robin Roevens、Matthias Fischer,本版本镜像了他们的工作。

All posts全部文章 Home首页