správu o vývoji projektu FreeBSD od júla do septembra 2019. Medzi zmeny môžeme poznamenať:
- Všeobecné a systémové problémy
- Základný tím vo všeobecnosti schválil možnosť zahrnutia kódu do systému, ktorý je distribuovaný pod licenciou BSD s dodatočnou patentovou zmluvou (), ale rozhodnutie o zahrnutí každého komponentu do systému podľa tejto licencie musí byť schválené samostatne;
- Uskutočnilo sa prvé stretnutie pracovnej skupiny vytvorenej na realizáciu migrácie zdrojových kódov z centralizovaného systému riadenia zdrojov Subversion do decentralizovaného systému Git. Diskusia o uskutočniteľnosti migrácie stále prebieha a rozhodnutia o mnohých otázkach sa ešte musia vypracovať (napríklad čo robiť s contrib/, či je potrebné regenerovať hashe v aktuálnom git repozitári a ako najlepšie implementovať testovanie záväzkov);
- Z NetBSD Súprava nástrojov KCSAN (Kernel Concurrency Sanitizer), ktorá vám umožňuje zistiť rasové podmienky medzi vláknami jadra bežiacimi na rôznych CPU;
- Pracuje sa na použití Clangovho vstavaného assembleru (IAS) namiesto GNU binutils assembleru;
- Infraštruktúra emulácie prostredia Linux (LinuxUlator) bol upravený pre architektúru ARM64. Bolo implementované systémové volanie „renameat2“. Bol vylepšený nástroj strace na diagnostiku problémov v spustiteľných súboroch. Linux, spustený v roku Linuxulator. Problém so zlyhaniami pri linkovaní spustiteľných súborov s najnovším glibc bol vyriešený. Porty s Linux-komponenty pre LinuxAktualizovaný na CentOS 7.7;
- V rámci programu Google Summer of Code študenti úspešne ukončili šesť projektov: pripravila sa implementácia jednotnej (IPv4/IPv6) ping utility, vyvinuli sa nástroje na testovanie firewallov a identifikovanie chýb v jadre (Kernel sanitizer), mac_ipacl bol navrhnutý modul, bol napísaný kód na kompresiu virtuálnej pamäte a vykonala sa práca na oddelení procesu zostavovania portu od lokálnej inštalácie;
- Projekt fuzzing testovania jadra FreeBSD pomocou systému sa naďalej vyvíja . Počas sledovaného obdobia bolo pomocou syzkallera identifikovaných a odstránených viac ako desať chýb. Na spustenie syzkallera vo virtuálnych strojoch založených na bhyve je vyhradený samostatný server, ktorý sa používa
sysbot zaviedol testovanie rôznych subsystémov FreeBSD v infraštruktúre Google. Organizoval prenos informácií o všetkých zlyhaniach do služby backtrace.io, aby sa zjednodušilo ich zoskupovanie a analýza; - Pracuje sa na aktualizácii implementácie zlib na úrovni jadra.
Kód súvisiaci s kompresiou bol migrovaný zo zlib 1.0.4, ktorý bol vydaný pred viac ako 20 rokmi, na aktuálnu kódovú základňu zlib 1.2.11. Na zjednotenie prístupu k zlib boli do jadra pridané funkcie komprimovať, komprimovať2 a rozbaliť. Kód, ktorý zabezpečuje fungovanie protokolu PPP zo subsystému netgraph, bol namiesto vlastnej edície tejto knižnice prenesený do systémovej implementácie zlib. Subsystémy kern_ctf.c, opencryptodeflát, geom_uzip, subr_compressor, boli tiež prenesené do nového zlib.
if_mxge, bxe aktualizované a ng_deflát; - Vyvíja sa nové rozhranie jadra , ktorý umožňuje nájsť prvky v databáze parametrov sysctl, spracované vo forme MIB (Management Information Base) a preniesť informácie o objektoch do užívateľského priestoru.
- zabezpečenia
- Vyvinutý modul jadra , založený na TrustedBSD MAC Framework a implementujúci systém riadenia prístupu pre nastavenia sieťového zásobníka pre väzenské prostredia. Napríklad pomocou mac_ipacl môže administrátor hostiteľského systému zabrániť užívateľovi root vo väzenskom prostredí zmeniť alebo nastaviť IP adresy alebo nastavenia podsiete pre určité sieťové rozhrania. Navrhovaný povinný systém kontroly vstupu nastaviť zoznamy IP adries a podsietí povolených pre väzenie, zakázať inštaláciu určitých IP adries a podsietí vo väzení alebo obmedziť zmenu parametrov len pre určité sieťové rozhrania;
- Intel do projektu daroval port pre softvérový zásobník (Trusted Platform Module) na prepojenie s bezpečným výpočtovým čipom, ktorý sa zvyčajne používa na overené načítanie firmvéru a zavádzača OS. Komponenty zásobníka sú prezentované vo forme portov security/tpm2-tss, security/tpm2-tools a security/tpm2-abrmd. Port tpm2-tss obsahuje knižnice na používanie TPM2 API, tpm2-tools poskytuje nástroje príkazového riadka na vykonávanie operácií TPM a tpm2-abrmd obsahuje implementáciu procesov na pozadí komponentov TPM Access Broker a Resource Manager, ktoré multiplexujú požiadavky od rôznych používateľov TPM. do jedného zariadenia. Okrem overeného bootovania na FreeBSD možno TPM použiť na zvýšenie bezpečnosti Strongswan IPsec, SSH a TLS vykonávaním kryptografických operácií na samostatnom čipe;
- Jadro pre architektúru amd64 je prispôsobené na bootovanie pomocou ochrannej techniky W^X (write XOR execute), čo znamená, že k pamäťovým stránkam nie je možné pristupovať súčasne na zápis a spustenie (jadro je teraz možné načítať pomocou spustiteľných pamäťových stránok, pre ktoré je zápis Je zakázané). Nová metóda ochrany jadra je zahrnutá vo vetve HEAD a bude zahrnutá vo vydaniach FreeBSD 13.0 a 12.2;
- Pre systémové volania mmap a mprotect makro PROT_MAX(), ktoré vám umožňuje určiť množinu príznakov obmedzenia prístupu povolených pre ďalšie zmeny (PROT_READ, PROT_WRITE, PROT_EXEC). Pomocou PROT_MAX() môže vývojár zakázať prenos pamäťovej oblasti do kategórie spustiteľných súborov alebo požiadať o pamäť, ktorá neumožňuje spustenie, ale môže byť neskôr konvertovaná na spustiteľný súbor. Napríklad oblasť pamäte môže byť otvorená na zápis iba počas trvania dynamického prepájania alebo generovania kódu JIT, ale po dokončení zápisu je obmedzená len na čítanie a spúšťanie a v budúcnosti, ak bude kompromitovaná, na útočníka. nebude môcť povoliť zápis pre tento pamäťový blok. Okrem PROT_MAX() je implementovaný aj sysctl vm.imply_prot_max, ktorý po aktivácii určuje sadu platných príznakov na základe počiatočných parametrov prvého volania mmap;
- Na zvýšenie ochrany pred zneužitím zraniteľností sa okrem techniky randomizácie adresného priestoru (ASLR) používa mechanizmus na náhodné usporiadanie posunov ukazovateľov adresujúcich počiatočný rámec zásobníka a štruktúry umiestnené na zásobníku s informáciami o prostredí, parametroch spustenia programu a údajoch. pre spustiteľné obrázky sa navrhuje formát ELF;
- Pracovalo sa na odstránení funkcie nebezpečného získania z knižnice libc (od štandardu C11 bola táto funkcia vylúčená zo špecifikácie) a na oprave portov, ktoré túto funkciu stále používajú. Zmena sa plánuje ponúknuť vo FreeBSD 13.0;
- Bol spustený experimentálny projekt na vytvorenie nástrojov na organizáciu väzenských prostredí založených na tomto rámci na vytváranie a export obrázkov, implementovaný podobne ako Docker, a ovládač , ktorý poskytuje rozhranie pre dynamické spúšťanie aplikácií vo väzenskom prostredí. Navrhovaný model nám umožňuje oddeliť procesy vytvárania väzenských prostredí a nasadzovania aplikácií v nich. Jedným z cieľov projektu je poskytnúť prostriedky na manipuláciu s väznicami ako kontajnery v štýle Docker;
- Úložné a súborové systémy
- Od NetBSD po utilitu „makefs“. Podpora systému súborov FAT (msdosfs). Pripravené zmeny umožňujú vytvárať obrazy FS s FAT bez použitia ovládača md a bez oprávnenia root;
- Prepracovanie ovládača podsystému FUSE (File system in USErspace) bolo dokončené, čo umožňuje vytváranie implementácií súborového systému v užívateľskom priestore. Pôvodne dodaný ovládač obsahoval veľa chýb a bol založený na FUSE 7.8, ktorý bol vydaný pred 11 rokmi. V rámci projektu modernizácie ovládačov bola implementovaná podpora protokolu FUSE 7.23, pridaný kód na kontrolu prístupových práv na strane jadra („-o default_permissions“), pridané volania VOP_MKNOD, VOP_BMAP a VOP_ADVLOCK, bola poskytnutá možnosť prerušiť operácie FUSE, do fusefov bola pridaná podpora pre nepomenované pipe a unixové zásuvky, bolo možné použiť kqueue pre /dev/fuse, bolo možné aktualizovať parametre pripojenia cez „mount -u“, pridaná podpora pre export fusefov cez NFS implementoval účtovníctvo RLIMIT_FSIZE, pridal príznaky FOPEN_KEEP_CACHE a FUSE_ASYNC_READ, vykonal významné optimalizácie výkonu a zlepšil organizáciu ukladania do vyrovnávacej pamäte. Nový ovládač je zahrnutý vo vetvách head a stable/12 (zahrnuté vo FreeBSD 12.1);
- Implementácia NFSv4.2 (RFC-7862) pre FreeBSD je takmer dokončená. Hlavným zameraním počas sledovaného obdobia bolo testovanie. Testy kompatibility s implementáciou z... Linux, ale testovanie výkonu servera pNFS s NFSv4.2 stále prebieha. Kód sa vo všeobecnosti považuje za pripravený na integráciu do hlavných/aktuálnych vetiev FreeBSD. Nová verzia NFS pridáva podporu pre funkcie posix_fadvise a posix_fallocate, režimy SEEKHOLE/SEEKDATA v lseek a lokálne kopírovanie častí súboru na serveri (bez jeho prenosu na klienta).
- Hardvérová podpora
- Bol spustený projekt na zlepšenie výkonu FreeBSD na prenosných počítačoch. Prvým zariadením, ktoré prešlo auditom na hardvérovú podporu vo FreeBSD, bol notebook Lenovo X1 Carbon siedmej generácie;
- CheriBSD, vidlica FreeBSD pre architektúru výskumných procesorov (Capability Hardware Enhanced RISC Instructions), aktualizované na podporu pripravovaného procesora ARM Morello, ktorý bude podporovať systém riadenia prístupu do pamäte CHERI založený na bezpečnostnom modeli dizajnu Capsicum. Morello čip vydanie v roku 2021. Vývojári CheriBSD tiež pokračujú v monitorovaní vývoja referenčného prototypu CHERI založeného na architektúre MIPS;
- Rozšírená podpora pre čipy RockChip RK3399 používané v doskách RockPro64 a NanoPC-T4. Najvýraznejším zlepšením bola podpora pre eMMC a vývoj nového ovládača pre eMMC radič použitý na doske;
- Pokračujú práce na implementácii podpory pre ARM64 SoC Broadcom BCM5871X s procesormi ARMv8 Cortex-A57, zameranú na použitie v smerovačoch, bránach a sieťových úložiskách. Počas vykazovaného obdobia
Rozšírila sa podpora iProc PCIe a pribudla možnosť využívať hardvérové kryptografické operácie na zrýchlenie IPsec.
Integrácia kódu do pobočky HEAD sa očakáva v štvrtom štvrťroku; - Vo vývoji portu FreeBSD pre platformu powerpc64 došlo k výraznému pokroku. Zameriava sa na poskytovanie kvalitného výkonu na systémoch s procesormi IBM POWER8 a POWER9, ale voliteľne podporuje prevádzku na starších počítačoch Apple Power Mac, x500 a Amiga A1222. Vetva powerpc*/12 sa naďalej dodáva s gcc 4.2.1 a vetva powerpc*/13 bude čoskoro migrovaná na llvm90. Z 33306 portov je úspešne zostavených 30514;
- Portovanie FreeBSD pokračuje pre 64-bitový SoC NXP LS1046A založený na procesore ARMv8 Cortex-A72 s integrovaným motorom na zrýchlenie spracovania sieťových paketov, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 a USB 3.0. Počas sledovaného obdobia bola implementovaná podpora pre sieťové rozhranie USB 3.0, SD/MMC, I2C, DPAA a GPIO. Existujú plány na podporu QSPI a optimalizáciu výkonu sieťového rozhrania. Ukončenie prác a zaradenie do pobočky HEAD sa očakáva v 4. štvrťroku 2019;
- Ovládač ena bol aktualizovaný, aby podporoval druhú generáciu sieťových adaptérov ENAv2 (Elastic Network Adapter) používaných v infraštruktúre Elastic Compute Cloud (EC2) na organizovanie komunikácie medzi uzlami EC2 rýchlosťou až 25 Gb/s. Do ovládača ena bola pridaná a otestovaná podpora NETMAP a rozloženie pamäte bolo prispôsobené tak, aby umožňovalo režim LLQ v prostrediach Amazon EC2 A1;
- Aplikácie a systém portov
- Aktualizované komponenty grafického zásobníka a súvisiace porty xorg. Porty používajúce USE_XORG a XORG_CAT boli presunuté do rámca USES namiesto volania bsd.xorg.mk cez bsd.port.mk. Takéto porty teraz obsahujú vo svojich súboroch make-up príznak "USES=xorg". Funkcionalita XORG_CAT bola oddelená od bsd.xorg.mk a je teraz povolená príznakom "USES=xorg-cat". Pridané nástroje na priame generovanie portov xorg z úložiska git
freedesktop.org, ktorý napríklad umožňuje vytvárať porty pre ešte nevydané verzie. V budúcnosti plánujeme pripraviť nástroje na použitie systému zostavovania meson namiesto autotools na budovanie portov xorg.Pracovalo sa na vyčistení starých portov xorg viazaných na komponenty, ktoré už nie sú podporované, napríklad port x11/libXp bol odstránený a porty x11/Xxf86misc, x11-fonts/libXfontcache a graphics/libGLw boli zastarané. ;
- Po implementácii podpory pre nové funkcie Java 11, ako je Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, sa pracovalo na zlepšení podpory pre Java 8 a novších verziách vo FreeBSD, ako aj na portovaní niektorých zmien do vetvy Java 11. pre FreeBSD, DTrace, Javac Server, Java Sound a SCTP sa práca presunula na zabezpečenie úspešného vykonania všetkých testov kompatibility. Počet zlyhaní pri absolvovaní testov sa znížil z 50 na 2;
- Plazmová plocha KDE, rámce KDE, aplikácie KDE a Qt sú aktualizované a aktualizované na najnovšie vydania;
- Aktualizované porty s desktopom Xfce ;
- Strom portov FreeBSD presiahol 38000 2000 portov, počet neuzavretých PR je mierne nad 400, z ktorých 7340 PR ešte nebolo vyriešených. Počas sledovaného obdobia bolo vykonaných 169 1.12 zmien od 2.0.4 vývojárov. Dvaja noví účastníci (Santhosh Raju a Dmitri Goutnik) získali práva komisára. Bolo zverejnené nové vydanie správcu balíkov pkg 9.0 s podporou prekryvných vrstiev v strome portov a vyčistením bsd.sites.mk. Medzi významné aktualizácie verzií v portoch patria: Lazarus 5.30, LLVM 11, Perl2.6, PostgreSQL 69.0.1, Ruby 68.1.0, Firefox 76.0, Firefox-esr XNUMX, Chromium XNUMX;
- Vývoj projektu pokračuje , špecializovaná distribúcia na nasadenie infraštruktúry virtuálnych serverov. Čo sa týka úloh, ktoré rieši, ClonOS pripomína systémy ako Proxmox, Triton (Joyent), OpenStack, OpenNebula a Amazon AWS, pričom hlavným rozdielom je použitie FreeBSD a schopnosť spravovať, nasadzovať a spravovať kontajnery FreeBSD Jail a virtuálne prostredia založené na hypervízoroch Bhyve a Xen. Nedávne zmeny zahŕňajú podporu
cloud-init pre Linux/BSD VM a cloudbase-init pre Windows VM, začiatok prechodu na používanie vlastných obrazov, používanie Jenkins CI na testovanie zostavení a nový pkg repozitár na inštaláciu
ClonOS z balíkov.
- Aktualizované komponenty grafického zásobníka a súvisiace porty xorg. Porty používajúce USE_XORG a XORG_CAT boli presunuté do rámca USES namiesto volania bsd.xorg.mk cez bsd.port.mk. Takéto porty teraz obsahujú vo svojich súboroch make-up príznak "USES=xorg". Funkcionalita XORG_CAT bola oddelená od bsd.xorg.mk a je teraz povolená príznakom "USES=xorg-cat". Pridané nástroje na priame generovanie portov xorg z úložiska git
Zdroj: opennet.ru
