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
la464for 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
| Component | New version |
|---|---|
| GCC | 16.1.0 |
| glibc | 2.44 |
| binutils | 2.47.0 |
| cmake | 4.4.3 |
| meson | 1.12.1 |
| automake | 1.19 |
| libtool | 2.6.2 |
| abseil-cpp | 20260817.0 |
- GCC builds are now mirrored from IPFire upstream for LoongArch64.
libatomicis 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-atmpackage dropped — the 7.2 kernel removed the ATM UAPI headers.- dracut updated to 112 and renamed from
dracut-ngback todracut, including a workaround for a glibc 2.44 regression. - GRUB updated to 2.16 (from 2.14); the riscv64
medanypatch 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_LITERALmarks 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.
swconfignow 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;xzreset to-T0; parallelism for compression hard-coded.
Security Fixes & Networking
xdp-tools 1.5.5.8 — CVE-2026-98432 Mitigation
xdp_synproxydrops IPv4 packets with IP options (IHL > 5) intcp_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-resolverreworked patch replies from the correct address; compiled for release (no debugging/assertions).bindupdated to 9.20.29,knotto 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
libmpg1231.33.7). xdp-tools,libxml22.15.4,curl8.22.0,openssh10.5p1,openvpn2.7.7 and many others updated.
Bug Fixes
- libloc —
locationnow returns 3 (not 0) when the database is the latest version, matching the man page (bug 14047). - suricata-reporter — fixed incorrect
suricata-report-cronfile being installed (bug 14048); also added the missingsuricata-report-cron. - apache — regenerates empty ECDSA key/CSR/cert files on start (uses
test -sinstead oftest -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.versionviasuricatasc, 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/syslinuxrootfile removed for LoongArch64 (not required).libopingupdated to 1.10.0 to fix missing-liboping errors in LFS/CD-ROM builds.mpd/minidlna/mympdcversion-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
- IPSec users on IKEv1 should plan migration to IKEv2 — strongswan 6.1.0 disables IKEv1 by default and upstream plans to remove it.
alacaddon removed — shairport-sync now uses ffmpeg for ALAC decoding.linux-atmremoved — no longer buildable against the 7.x kernel.- CVE-2026-98432 is mitigated at the XDP layer only; update your kernel to receive the final fix.
- glibc 2.44 required dracut workarounds; ensure a full clean rebuild if building from source.
core204..core205Tested 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 保持不变。
工具链升级
| 组件 | 新版本 |
|---|---|
| GCC | 16.1.0 |
| glibc | 2.44 |
| binutils | 2.47.0 |
| cmake | 4.4.3 |
| meson | 1.12.1 |
| automake | 1.19 |
| libtool | 2.6.2 |
| abseil-cpp | 20260817.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(新软件包
libmpg1231.33.7)。 xdp-tools、libxml22.15.4、curl8.22.0、openssh10.5p1、openvpn2.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/syslinuxrootfile(不需要)。 liboping更新至 1.10.0,修复 LFS/CD-ROM 构建中缺失 liboping 的错误。mpd/minidlna/mympdc因 flac 和 ffmpeg soname 升级而递增版本。- 手册页:为 DNS、Dial 和 Wlanclient 添加缺失的帮助页链接。
- 镜像:进入 chroot 前更新链接器缓存。
升级注意事项
- 使用 IKEv1 的 IPSec 用户应计划迁移到 IKEv2 —— strongswan 6.1.0 默认禁用 IKEv1,上游计划移除它。
alac插件已移除 —— shairport-sync 现在使用 ffmpeg 进行 ALAC 解码。linux-atm已移除 —— 无法再针对 7.x 内核构建。- CVE-2026-98432 仅在 XDP 层缓解;请更新内核以获得最终修复。
- glibc 2.44 需要 dracut 规避方案;如果从源码构建,请确保完全干净重建。
core204..core205测试平台:Morefine M700S(Loongson 3A6000)、QEMU la464 模拟
致谢
感谢 Vincent Li 以及所有上游 IPFire 贡献者 —— Michael Tremer、Adolf Belka、Arne Fitzenreiter、Peter Müller、Robin Roevens、Matthias Fischer,本版本镜像了他们的工作。