Zpráva o vývoji FreeBSD za třetí čtvrtletí 2019

Byl zveřejněn Zpráva o vývoji projektu FreeBSD od července do září 2019. Mezi změnami lze zmínit:

  • Obecné a systémové otázky
    • Tým Core v zásadě schválil možnost zahrnout do systému kód dodávaný pod licencí BSD s dodatečnou dohodou o používání patentů (BSD+Patent), avšak rozhodnutí o zahrnutí každé komponenty pod touto licencí musí být schváleno samostatně;
    • Proběhlo první zasedání pracovní skupiny, která byla zřízena pro migraci zdrojových textů z centralizovaného systému správy zdrojového kódu Subversion do decentralizovaného systému Git. Diskuze o účelnosti migrace stále probíhá a v mnoha otázkách ještě zbývá nalézt řešení (například jak postupovat s contrib/, zda je třeba regenerovat hash v aktuálním git-repozitáři a jak nejlépe provádět testování commitů);
    • Z NetBSD portováno nástroj KCSAN (Kernel Concurrency Sanitizer), který umožňuje odhalit vznikání závodních podmínek mezi vlákny jádra běžícími na různých CPU;
    • Pracuje se na využití vestavěného assembléru Clang (IAS) namísto assembléru z GNU binutils;
    • Infrastruktura emulace Linuxového prostředí (Linuxulator) byla přizpůsobena pro práci na architektuře ARM64. Byla implementována systémová výzva "renameat2". Nástroj strace byl vylepšen pro diagnostiku problémů v spustitelných souborech Linuxu spuštěných v Linuxulator. Byla vyřešena otázka vzniku chyb při spojování spustitelných souborů s čerstvým glibc. Porty s linuxovými komponentami pro Linuxulator byly aktualizovány na CentOS 7.7;
    • V rámci programu Google Summer of Code studenti úspěšně realizovali šest projektů: byla připravena implementace unifikovaného (IPv4/IPv6) nástroje ping, byly vyvinuty nástroje pro testování firewallů a odhalování chyb v jádře (Kernel sanitizer), byl navržen modul mac_ipacl, byl napsán kód pro kompresi virtuální paměti a byla provedena práce na oddělení procesu sestavení portů od místní instalace;
    • Projekt fuzzingového testování jádra FreeBSD s využitím systému syzkaller. Během hodnotícího období bylo pomocí syzkalleru odhaleno a odstraněno více než deset chyb. Pro spuštění syzkalleru ve virtuálních strojích na bázi bhyve byl vyčleněn samostatný server, a pomocí
      Syzbot zajišťuje kontrolu různých subsystémů FreeBSD v infrastruktuře Google. Byla zorganizována výměna informací o všech pádech do služby backtrace.io pro usnadnění jejich seskupení a analýzy;
    • Probíhá práce na aktualizaci implementace zlib na úrovni jádra.
      Kód spojený se zpracováním dat byl převeden ze zlib 1.0.4, vydaného před více než 20 lety, na aktuální kódovou základnu zlib 1.2.11. Pro sjednocení přístupu k zlib byly do jádra přidány funkce compress, compress2 a uncompress. Kód zajišťující provoz protokolu PPP v subsystému netgraph byl převeden na systémovou implementaci zlib místo vlastní verze této knihovny. Na novou verzi zlib byly také převedeny subsystémy kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor,
      if_mxge, bxe aktualizováno a ng_deflate;
    • Vyvíjí se nové rozhraní jádra sysctlinfo, které umožňuje najít prvky v databázi parametrů sysctl, zpracovávané ve formátu MIB (Management Information Base), a předávat informace o objektech do uživatelského prostoru.
  • Bezpečnost
    • Byl vyvinut modul jádra mac_ipacl, založený na TrustedBSD MAC Framework a implementující systém řízení přístupu k nastavením síťového zásobníku pro jail prostory. Například pomocí mac_ipacl může správce hostitelského systému zabránit uživateli root v jailu měnit nebo nastavovat IP adresy nebo parametry podsítí pro určité síťové rozhraní. Navrhovaný systém mandantního řízení přístupu umožňuje umožňuje definovat seznamy IP adres a podsítí povolených pro Jail, zakazovat nastavování určitých IP a podsítí v Jail nebo omezovat změnu parametrů pouze pro určité síťové rozhraní;
    • Společnost Intel předala projektu port softwarového stacku TPM 2.0 (Trusted Platform Module) pro interakci s čipem pro bezpečné výpočty, který se obvykle používá pro ověřené načítání firmwaru a zaváděcího programu operačního systému. Složky zásobníku jsou prezentovány ve formě portů security/tpm2-tss, security/tpm2-tools a security/tpm2-abrmd. Port tpm2-tss zahrnuje knihovny pro používání API TPM2, tpm2-tools poskytuje příkazové řádky pro provádění operací s TPM, a tpm2-abrmd obsahuje na pozadí běžící proces s implementací komponentů TPM Access Broker a Resource Manager, multiplexující dotazy od různých uživatelů TPM na jedno zařízení. Kromě ověřeného načítání může být TPM ve FreeBSD použit pro posílení bezpečnosti Strongswan IPsec, SSH a TLS prováděním kryptografických operací na samostatném čipu;
    • Jádro pro architekturu amd64 bylo přizpůsobeno pro načítání pomocí techniky ochrany W^X (write XOR execute), která znamená, že stránky paměti nemohou být současně přístupné pro zápis a provedení (jádro nyní může být načítáno s použitím vykonatelných stránek paměti, pro které je zakázán zápis). Nová metoda ochrany jádra byla zahrnuta do větve HEAD a bude součástí vydání FreeBSD 13.0 a 12.2;
    • Pro systémové volání mmap a mprotect realizováno makro PROT_MAX(), které umožňuje určit povolený soubor značek omezení přístupu při dalším změně (PROT_READ, PROT_WRITE, PROT_EXEC). Pomocí PROT_MAX() může vývojář zakázat přechod oblasti paměti do kategorie vykonatelné nebo požádat o paměť, která nepovoluje provádění, ale může být později převedena na vykonatelné. Například, oblast paměti může být otevřena pro zápis pouze během dynamického vazby nebo generace kódu JIT, ale po dokončení zápisu je omezena pouze na čtení a provádění, a v případě kompromitace nebude útočník schopen povolit zápis pro tento blok paměti. Kromě PROT_MAX() je také implementován sysctl vm.imply_prot_max, při jehož aktivaci je sada povolených značek určena na základě počátečních parametrů prvního volání mmap;
    • Pro zajištění ochrany před zneužíváním zranitelností byl kromě techniky randomizace adresního prostoru (ASLR) navržen mechanismus randomizace posunů ukazatelů, které adresují počáteční rámec zásobníku a struktury umístěné ve zásobníku obsahující informace o prostředí, parametrech spuštění programu a datech pro spustitelné obrazy ve formátu ELF;
    • Byla provedena práce na odstranění nebezpečné funkce gets z libc (tato funkce byla vyřazena ze specifikace od standardu C11) a na úpravě portů, které tuto funkci stále používají. Změna se plánuje navrhnout ve FreeBSD 13.0;
    • Byl spuštěn experimentální projekt na vytvoření prostředků pro orchestraci jail-ů na základě rámce pot pro vytváření a exportování obrazů, realizovaného podle analogie s Dockerem, a ovladače nomad, který poskytuje rozhraní pro dynamické spouštění aplikací v jail-ovém prostředí. Navržený model umožňuje oddělit procesy vytváření jail-ových prostředí a nasazení v nich aplikací. Jedním z cílů projektu je poskytnout prostředek pro manipulaci s jaily jako kontejnery ve stylu Docker;
  • Systémy ukládání a souborové systémy
    • Z NetBSD do utility „makefs“ byla přenesena podporují souborový systém FAT (msdosfs). Připravené změny umožňují vytvářet obrazy FS s FAT bez použití ovladače md a bez oprávnění root;
    • Byla dokončena modernizace ovladače subsystému FUSE (File system in USErspace), který umožňuje vytvářet implementace souborových systémů v uživatelském prostoru. Původně dodávaný ovladač obsahoval mnoho chyb a byl založen na verzi FUSE 7.8, vydané před 11 lety. V rámci projektu na modernizaci ovladače byla implementována podpora protokolu FUSE 7.23, byl přidán kód pro kontrolu přístupových práv na straně jádra („-o default_permissions“), byly přidány volání VOP_MKNOD, VOP_BMAP a VOP_ADVLOCK, byla zajištěna možnost přerušení operací FUSE, byla přidána podpora nepojmenovaných kanálů a unixových soketů v fusefs, byla umožněna možnost používat kqueue pro /dev/fuse, bylo povoleno aktualizovat parametry montování pomocí „mount -u“, byla přidána podpora exportu fusefs přes NFS, byla implementována evidence RLIMIT_FSIZE, byly přidány příznaky FOPEN_KEEP_CACHE a FUSE_ASYNC_READ, došlo k významným optimalizacím výkonu a ke zlepšení organizace cachování. Nový ovladač byl zahrnut do větví head a stable/12 (součást FreeBSD 12.1);
    • Práce na implementaci NFSv4.2 (RFC-7862) pro FreeBSD je téměř u konce. V rámci zprávy bylo hlavní pozornost věnována testování. Dokončeny testy pro ověření kompatibility s implementací z Linuxu, ale pokračuje kontrola funkčnosti serveru pNFS s NFSv4.2. V celkovém pohledu je kód již považován za připravený k integraci do větví FreeBSD head/current. V nové verzi NFS byla přidána podpora funkcí posix_fadvise, posix_fallocate a režimů SEEKHOLE/SEEKDATA v lseek, operace místního kopírování částí souboru na serveru (bez přenosu klientovi);
  • Podpora hardwaru
    • Byl zahájen projekt na zlepšení fungování FreeBSD na notech. Prvním zařízením, pro které byl proveden audit podpory hardwaru ve FreeBSD, byl notebook Lenovo X1 Carbon sedmé generace;
    • CheriBSD, odvozenina od FreeBSD pro výzkumnou procesorovou architekturu CHERI (Capability Hardware Enhanced RISC Instructions), aktualizováno pro podporu nadcházejícího procesoru ARM Morello, který bude podporovat systém správy přístupu k paměti CHERI, založený na ochranném modelu projektu Capsicum. Čip Morello plánují má být vydán v roce 2021. Vývojáři CheriBSD také pokračují v sledování vývoje referenčního prototypu CHERI na základě architektury MIPS;
    • Byla rozšířena podpora čipů RockChip RK3399, používaných v deskách RockPro64 a NanoPC-T4. Nejvýznamnějším vylepšením byla podpora eMMC a vývoj nového ovladače pro použité v desce řadiče eMMC;
    • Pokračuje práce na podpoře ARM64 SoC Broadcom BCM5871X s procesory ARMv8 Cortex-A57, zaměřenými na použití v routerech, bránách a síťových úložištích. V průběhu zprávy
      byla rozšířena podpora iProc PCIe a přidána možnost využití hardwarových kryptografických operací pro zrychlení výkonu IPsec.
      Integrace kódu do větve HEAD se očekává ve čtvrtém čtvrtletí;
    • Byly zaznamenány výrazné úspěchy ve vývoji portu FreeBSD pro platformu powerpc64. Hlavní důraz je kladen na zajištění kvalitního fungování na systémech s procesory IBM POWER8 a POWER9, ale volitelně je podporována také práce na starších Apple Power Mac, x500 a Amiga A1222. Větev powerpc*/12 stále dodává gcc 4.2.1, a větev powerpc*/13 bude brzy převedena na llvm90. Z 33306 portů bylo úspěšně zkompilováno 30514;
    • Pokračuje portování FreeBSD pro 64bitový SoC NXP LS1046A založený na procesoru ARMv8 Cortex-A72 s integrovaným akcelerátorem zpracování síťových paketů, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 a USB 3.0. V hlášeném období byla implementována podpora USB 3.0, SD/MMC, I2C, síťového rozhraní DPAA a GPIO. Plánována je podpora QSPI a optimalizace výkonu síťového rozhraní. Dokončení práce a zařazení do větve HEAD se očekává ve 4. kvartálu 2019;
    • Byl aktualizován ovladač ena s podporou druhé generace síťových adaptérů ENAv2 (Elastic Network Adapter), používaných v infrastruktuře Elastic Compute Cloud (EC2) pro zajištění komunikace mezi uzly EC2 při rychlostech až 25 Gb/s. Do ovladače ena byla přidána a otestována podpora NETMAP a také byla provedena adaptace rozložení paměti pro zahrnutí režimu LLQ v prostředích Amazon EC2 A1;
  • Aplikace a systém portů
    • Byly aktualizovány komponenty grafického stacku a porty související s xorg. Porty, které používají USE_XORG a XORG_CAT, byly převedeny na framework USES místo volání bsd.xorg.mk pomocí bsd.port.mk. Tyto porty nyní zahrnují flag „USES=xorg“ v make souborech. Funkčnost XORG_CAT byla oddělena od bsd.xorg.mk a nyní je aktivována flagem „USES=xorg-cat“. Byly přidány nástroje pro přímé vytváření portů xorg z git repozitáře
      freedesktop.org, což například umožňuje vytvářet porty pro ještě nevydané verze. Do budoucna se plánuje připravit nástroje pro použití build systému meson místo autotools pro kompilaci portů xorg.

      Byla provedena práce na vyčištění starých portů xorg, které se vážou na již nepodporované komponenty, například byl odstraněn port x11/libXp, a porty x11/Xxf86misc, x11-fonts/libXfontcache a graphics/libGLw byly převedeny do kategorie zastaralých;

    • Byla provedena práce na zlepšení podpory Javy 11 a novějších verzí ve FreeBSD, stejně jako na portování některých změn do větve Java 8. Poté, co pro FreeBSD byla implementována podpora nových funkcí Javy 11, jako jsou Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, DTrace, Javac Server, Java Sound a SCTP, práce přešla na zajištění úspěšného projití všech testů kompatibility. Počet selhání při průchodu testy se snížil z 50 na 2;
    • Pracovní plocha KDE Plasma, KDE Frameworks, KDE Applications a Qt byly udržovány aktuální a aktualizovány na nejnovější verze;
    • Porty s pracovní plochou Xfce byly aktualizovány na vydaní 4.14;
    • Strom portů FreeBSD překonal hranici 38000 portů, počet neuzavřených PR mírně přesahuje 2000, z nichž 400 PR ještě nebylo zpracováno. V reportovaném období bylo provedeno 7340 změn od 169 vývojářů. Práva committera získali dva noví účastníci (Santhosh Raju a Dmitri Goutnik). Byl vydán nový release balíčkového manažera pkg 1.12 s podporou overlay v stromě portů a prováděním údržby bsd.sites.mk. Mezi významnými aktualizacemi verzí v portech jsou: Lazarus 2.0.4, LLVM 9.0, Perl 5.30, PostgreSQL 11, Ruby 2.6, Firefox 69.0.1, Firefox-esr 68.1.0, Chromium 76.0;
    • Pokračuje vývoj projektu ClonOS, rozvíjejícího , specializovaný distribuce pro nasazení infrastruktury virtuálních serverů. Co se týče řešených úloh, ClonOS připomíná takové systémy jako Proxmox, Triton (Joyent), OpenStack, OpenNebula a Amazon AWS, hlavním rozdílem je použití FreeBSD a možnost správy a nasazení Jail kontejnerů FreeBSD a virtuálních prostředí na základě hypervizorů Bhyve a Xen. Mezi nedávnými změnami je podpora
      cloud-init pro Linux/BSD VM a cloudbase-init pro Windows VM, zahájení přechodu na používání vlastních obrazů, zapojení Jenkins CI pro testování buildů a nový pkg-repozitář pro instalaci
      ClonOS z balíčků.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster