Opublikowano raport o postępach projektu FreeBSD za drugi kwartał 2025 roku. Do zmian można zaliczyć:
- Zespół FreeBSD Core opracowuje zasady korzystania z AI oraz dużych modeli językowych w procesie tworzenia oprogramowania. Możliwe zastosowania AI w FreeBSD obejmują tłumaczenie dokumentacji, streszczanie dużych/niewłaściwych dokumentów, śledzenie błędów oraz analizy kodu. Na razie nie planuje się stosowania AI do generacji kodu, głównie z powodu potencjalnych problemów licencyjnych.
- Do instalatora dodano wsparcie dla systemu pkgbase, który umożliwia instalację komponentów podstawowego systemu w formacie przydatnym do zarządzania i aktualizacji za pomocą menedżera pakietów pkg. Pakiety pkgbase mogą być dostarczane zarówno na nośniku instalacyjnym do instalacji offline, jak i pobierane z repozytorium pkg.freebsd.org.
- Trwa rozwój projektu bsd-user-4-linux, który umożliwia uruchamianie w systemach Linux aplikacji zbudowanych dla FreeBSD. Celem projektu jest możliwość budowy pakietów dla FreeBSD w systemie Linux przy użyciu natywnego narzędzia budowania FreeBSD. Do uruchamiania plików wykonywalnych FreeBSD w Linux wykorzystywany jest fork emulatora QEMU, działający w trybie emulacji użytkownika, przeznaczony do uruchamiania procesów skompilowanych dla innych CPU oraz systemów operacyjnych (QEMU wykonuje translację wywołań systemowych oraz obsługę sygnałów). Na obecnym etapie rozwoju możliwe jest już przebudowanie FreeBSD za pomocą polecenia „make -j80 buildworld”, będąc w systemie Linux. Działa uruchamianie podstawowych narzędzi systemowych, takich jak sh, bash, find, grep, git oraz clang. Z ostatnich zmian warto odnotować przejście na bazę kodu QEMU 9.2 oraz realizację wsparcia dla mechanizmu kqueue() w systemie Linux z wykorzystaniem libkqueue.
- Dla FreeBSD rozwijana jest platforma wirtualizacji Sylve, umożliwiająca zarządzanie uruchamianiem przez interfejs webowy. maszyn wirtualnych oparty na hypervisorze Bhyve i kontenerach w środowiskach Jail. Projekt ma na celu zaoferowanie funkcji podobnych do dystrybucji Linux Proxmox VE, ale bazujących na FreeBSD, Bhyve i ZFS. W drugim kwartale wprowadzono zmiany, takie jak dodanie wykresów do wizualizacji obciążenia CPU, zużycia RAM i aktywności sieciowej, interfejs do zarządzania interfejsami sieciowymi, możliwości pracy z systemem plików, partycjami, pulami i migawkami ZFS, wsparcie dla ładowania obrazów maszyn wirtualnych przez interfejs webowy oraz możliwości tworzenia i usuwania maszyn wirtualnych dla Bhyve z obsługą konsoli VNC, przekazywaniem urządzeń PCI i przypisaniem do wybranych rdzeni CPU.
- Ulepszono port libvirt dla hypervisora bhyve. Wprowadzono projekt testowania sterownika bhyve od libvirt w systemie ciągłej integracji z FreeBSD. Zwiększona kompatybilność sterownika bhyve. Dodano wsparcie dla urządzeń virtio-rnd, konfiguracji NVRAM oraz rozszerzonej statystyki. Wdrożono wsparcie dla dostępu sieciowego przez NAT oparty na filtrze pakietów pf.
- Ulepszono obsługę tlsbase na systemach amd64, co pozytywnie wpłynęło na działanie aplikacji, które ręcznie zarządzają TLS (Thread-Local Storage), takich jak Wine.
- W linkerze rtld (Runtime linker) wprowadzono opcję "-z initfirst", która oferuje dodatkowe możliwości zarządzania kolejnością inicjowania w aplikacjach dynamicznie związanych.
- Dodano wsparcie dla introspekcji kqueue i rozszerzono możliwości analizy użycia mechanizmów przetwarzania zdarzeń jądra w procesach. W narzędziu procstat wdrożono raport stanu kqueue.
- W jądrze wprowadzono flagę EXTERROR, informującą o dostępności rozszerzonej informacji o błędzie. Dzięki EXTERROR aplikacje mogą uzyskiwać dodatkowe dane diagnostyczne w przypadku błędów, które nie ograniczają się tylko do kodu błędu.
- W kodzie źródłowym FreeBSD 15 zaprzestano tworzenia obrazów instalacyjnych i budowy binarnych pakietów dla architektur 32-bitowych i386 oraz powerpc. Z platform 32-bitowych w gałęzi FreeBSD 15 pozostawiono tylko platformę armv7. Tryb COMPAT_FREEBSD32, umożliwiający uruchamianie 32-bitowych plików wykonywalnych w 64-bitowych środowiskach, został zachowany, ale w portach wsparcie dla 32-bitowych kompilacji zostanie zaprzestane.
- W gałęzi FreeBSD 15 zachowanie wywołań systemowych setgroups, getgroups i initgroups w obróbce grup użytkowników zbliżone jest do innych platform (różnica implementacji w FreeBSD polegała na przechowywaniu efektywnego identyfikatora grupy procesów w zerowym elemencie tablicy z listą grup).
- Trwa praca nad wymianą implementacji Kerberos w głównym składzie FreeBSD z Heimdal Kerberos na MIT Kerberos. MIT Kerberos jest już włączony w gałęzi FreeBSD 15-CURRENT, ale na razie aktywowany jest tylko przez opcję WITH_MITKRB5.
- Opublikowane zostały pierwsze wydania aplikacji SysctlTUI, która oferuje interfejs tekstowy do nawigacji po drzewie parametrów sysctl, przeglądania powiązanych metadanych oraz zmiany ustawień.

- Trwa opracowywanie nowego menedżera partycji Geomman (GEOM Manager), opartego na sade i oferującego dodatkowe funkcje, takie jak przenoszenie, kopiowanie i wklejanie partycji dyskowych. Oprócz UFS w Geomman obsługiwane są ext2, ext3, ext4, exFAT i NTFS, a wsparcie dla ZFS jest planowane. Między innymi można zwiększać i zmniejszać rozmiar istniejących partycji z systemem plików ext4 oraz tworzyć nowe partycje exFAT.
- Kontynuowane są prace nad ulepszaniem stosu dźwiękowego FreeBSD. Przeprowadzono czyszczenie sterownika sound, dodano narzędzie sndctl, wprowadzono wsparcie dla AFMT_FLOAT, znacznie poprawiono działanie z urządzeniami dźwiękowymi w laptopach, rozpoczęto refaktoryzację podsystemu MIDI.
- Wykonano portowanie sterowników DRM (i915 i amdgpu) z jądra Linux 6.9. Zmiany są rozwijane dla gałęzi FreeBSD 15-CURRENT, ale prawdopodobnie zostaną przeniesione do gałęzi 14-STABLE.
- Trwa praca nad dodaniem trybów niskiego zużycia energii S0ix i s2idle (Suspend-To-Idle), które pozwolą na zmniejszenie zużycia energii podczas korzystania z FreeBSD na nowoczesnych laptopach z procesorami Intel i AMD, z których niektóre nie obsługują trybu snu S3. W sterowniku USB4 dodano możliwość przejścia do trybu zmniejszonego zużycia energii C3.
- Dla gałęzi FreeBSD 15 rozwija się wsparcie dla nazwanych atrybutów plików (rozszerzonych atrybutów w stylu Solaris), które mają być wspierane jako alternatywny mechanizm zarządzania rozszerzonymi atrybutami, dostępnymi dla ZFS i NFSv4. Różnice w porównaniu do tradycyjnych metod pracy z rozszerzonymi atrybutami w FreeBSD i Linuksie sprowadzają się do przedstawienia atrybutów w katalogu systemowym, niewidocznym w głównej przestrzeni nazw FS i skojarzonym z plikiem. Praca z atrybutami odbywa się jak z zwykłymi plikami, na przykład do określenia listy atrybutów można wykonać funkcję readdir().
- Przygotowane zostały patch'e z realizacją opcji montowania „packrat”, umożliwiającej organizowanie agresywnego buforowania danych w lokalnym, nieulotnym magazynie po stronie klienta dla NFSv4.1/4.2.
- Na bazie LinuxKPI, warstwy do uruchamiania sterowników Linuxa w FreeBSD, rozwija się zaktualizowany stos net80211 z wsparciem dla standardów Wi-Fi 5 (802.11ac) oraz Wi-Fi 6 (802.11ax). Firmware iwlwififw dla sterownika Intel iwlwifi zostało usunięte z bazowego systemu na rzecz instalacji z portów i użycia narzędzia fwget. W linuxkpi zrealizowano wsparcie dla wlan_tkip, umożliwiające korzystanie z protokołów kryptograficznych TKIP (Temporal Key Integrity Protocol) i Michael (Message Integrity Code).
- Zrealizowano wsparcie dla interfejsu debugowania, dostarczanego w kontrolerach XHCI USB, który umożliwia użycie specjalnego kabla USB 3 do zarządzania debugowaniem jądra FreeBSD. Taki interfejs może być używany do debugowania problemów w sterownikach graficznych, prowadzących do zakłóceń w wyjściu.
- Trwają prace nad portowaniem do jądra FreeBSD oryginalnej implementacji systemów plików HFS i HFS+, dla których sterownik został udostępniony przez firmę Apple.
- Przygotowano port FreeBSD dla smartfona Pinephone Pro, który zawiera firmware z obsługą zarządzania z ekranu dotykowego i prostym środowiskiem pulpitu. Niestety, kilka dni temu projekt Pine64 ogłosił zakończenie produkcji i sprzedaży smartfonów PinePhone Pro.
- Liczba portów wzrosła z 36332 do 36605. Wśród aktualizacji w portach: GCC 15, OpenJDK 24.0.1, GNOME 47, KDE Plasma 6.4.1, KDE Framework 6.15.0, Sway 1.11, Qt 6.9.1, Ruby 3.4.4, Rust 1.87.0, SDL 3.2.16, serwer Xorg 21.1.18. Domyślnie używane są wersje Go 1.24, Perl 5.40, Ruby 3.3, PostgreSQL 17. Środowisko dla Linuxulatora zaktualizowano do Rocky Linux 9.
- Dodano opcjonalne wsparcie dla budowy portów z określonymi flagami kompilatora, obejmującymi dodatkowe tryby wzmocnionej ochrony. W make.conf wprowadzono ustawienia:
- WITH_FORTIFY dla ochrony przed przepełnieniami bufora poprzez dodanie dodatkowych kontroli w takich funkcjach jak memcpy, strcpy i sprintf;
- WITH_STACK_AUTOINIT dla automatycznej inicjalizacji zmiennych lokalnych;
- WITH_ZEROREGS dla ochrony przed atakami ROP (Return-Oriented Programming) oraz wyciekami informacji przez rejestry CPU.
Źródło: opennet.ru

