A FreeBSD fejlődési jelentése a 2019 harmadik negyedévéről

Megjelent Jelentés a FreeBSD projekt fejlődéséről 2019 július és szeptember között. A változások közül kiemelhetjük:

  • Általános és rendszerbeli kérdések
    • A Core team általánosságban jóváhagyta, hogy a rendszerbe olyan kód kerüljön, amelyet BSD licenc alatt, további szabadalomhasználati megállapodással szolgálnak ki (BSD+Patent), de a rendszerbe történő beillesztéshez szükséges minden egyes komponens engedélyezése külön kell, hogy történjen;
    • Megkezdődött az első ülése a munkacsoportnak, amelyet a központosított forráskezelő rendszer, a Subversion forráskódjának migrálására alakítottak ki a decentralizált Git rendszerbe. A migráció szükségességével kapcsolatos vita még folyamatban van, és számos kérdésre még mindig meg kell találni a választ (például, hogy mi legyen a contrib/-val, szükséges-e újragenerálni a hash-okat a jelenlegi git-repozitóriumban, és hogyan lehet a legjobban megvalósítani a commitok tesztelését);
    • A NetBSD-ből áttették a KCSAN (Kernel Concurrency Sanitizer) eszközkészlet, amely lehetővé teszi a szálak közötti versenyállapotok észlelését, amelyeket különböző CPU-kon hajtanak végre;
    • Dolgozunk a Clang-be beépített assembler (IAS) használatán, a GNU binutils assembler helyett;
    • A Linux környezet emulációs infrastruktúrája (Linuxulator) ARM64 architektúrára lett adaptálva. Megvalósították a 'renameat2' rendszerhívást. A strace eszközt továbbfejlesztették a Linuxban futó végrehajtható fájlokkal kapcsolatos problémák diagnosztizálására, amelyek a Linuxulatorban futnak. Megoldották a problémát, amely végrehajtható fájlok újabb glibc-vel való összekapcsolásakor merült fel. A Linuxulatorhoz kapcsolódó Linux komponensek portjai a CentOS 7.7-re lettek frissítve;
    • A Google Summer of Code keretében a hallgatók sikeresen végeztek el hat projektet: elkészült az egységes (IPv4/IPv6) ping eszköz megvalósítása, a tűzfalak tesztelésére és a kernelhibák észlelésére szolgáló eszközök készültek, javasolták a mac_ipacl modult, kódot írtak a virtuális memória tömörítésére, és megvalósult a portok építési folyamatának elválasztása a helyi telepítéstől;
    • Folyamatosan fejlődik a FreeBSD kernel fuzzing tesztelési projektje a rendszer segítségével syzkaller. Az elszámolt időszak alatt a syzkaller segítségével több mint tíz hibát észleltek és javítottak. A syzkaller működtetésére dedikált szerver került kiosztásra bhyve alapú virtuális gépeken, és a segítségével
      A szabotálás során a FreeBSD különböző alrendszereinek ellenőrzése a Google infrastruktúrájában zajlik. Az összes összeomlásról az információ a backtrace.io szolgáltatásba kerül átadásra, megkönnyítve azok csoportosítását és elemzését.
    • Folyamatban van a zlib megvalósításának frissítése a kernel szintjén.
      A tömörítéssel kapcsolatos kód át lett alakítva az 20 éve kiadott zlib 1.0.4 verzióról a jelenlegi zlib 1.2.11 kódbázisra. A zlib-hez való egységes hozzáférés érdekében a kernelbe a compress, compress2 és uncompress funkciók lettek hozzáadva. A PPP protokoll működését biztosító kód a netgraph alrendszerből át lett alakítva a rendszer által biztosított zlib használatára, a könyvtár saját változata helyett. A új zlib-re kerültek át a kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor,
      if_mxge, bxe frissítve és ng_deflate;
    • Fejlesztés alatt áll egy új kernel interfész sysctlinfo, amely lehetővé teszi elemek keresését a sysctl paraméterek adatbázisában, amely MIB (Management Information Base) formában van feldolgozva, és információt közvetít a felhasználói térbe.
  • Biztonság
    • Kifejlesztésre került egy kernel modul mac_ipacl, amely a TrustedBSD MAC Keretrendszeren alapul és a hálózati verem beállításaihoz való hozzáférés kezelésének rendszerét valósítja meg jail környezetek számára. Például a mac_ipacl segítségével a hosztrendszer adminisztrátora megakadályozhatja a root felhasználót jail környezetben abban, hogy IP-címeket vagy alhálózati beállításokat módosítson vagy állítson be meghatározott hálózati interfészek számára. A javasolt mértékletes hozzáférés-irányító rendszer MMM-DD-YYYY lehetővé teszi IP-címek és alhálózatok listáinak megadását, amelyek megengedettek a jail számára, bizonyos IP-k és alhálózatok telepítésének megtiltását a jail-ban, vagy a paraméterek módosításának korlátozását csak bizonyos hálózati interfészekre;
    • Az Intel átadta a projektnek a szoftveres verem portját TPM 2.0 (Trusted Platform Module) a chip for secure computing, typically used for verified boot of firmware and operating system loaders. The stack components are represented in the form of ports security/tpm2-tss, security/tpm2-tools, and security/tpm2-abrmd. The tpm2-tss port includes libraries for using the TPM2 API, tpm2-tools provides command line utilities for performing operations with TPM, and tpm2-abrmd contains a background process with implementations of the TPM Access Broker and Resource Manager, multiplexing requests from different TPM users to a single device. In addition to verified boot, TPM can also be used in FreeBSD to enhance the security of Strongswan IPsec, SSH, and TLS by performing cryptographic operations on a separate chip;
    • Amd64 architecture kernel has been adapted for loading using W^X (write XOR execute) protection technique, meaning that memory pages cannot be accessible for both writing and execution at the same time (the kernel can now boot using executable memory pages that are write-protected). The new kernel protection method is included in the HEAD branch and will be part of FreeBSD releases 13.0 and 12.2;
    • For system calls mmap and mprotect megvalósították the macro PROT_MAX(), which allows defining the permissible set of access limitation flags (PROT_READ, PROT_WRITE, PROT_EXEC) for further modifications. Using PROT_MAX(), a developer can prohibit the transition of a memory area to the executable category or request memory that does not allow execution but can be transitioned to executable later. For example, a memory area may be opened for writing only during dynamic linking or JIT code generation, but after writing is completed, it is limited to reading and executing, and subsequently, in case of compromise, an attacker will not be able to allow writing for that memory block. In addition to PROT_MAX(), the sysctl vm.imply_prot_max is also implemented, which, when activated, defines the allowable flag set based on the initial parameters of the first mmap call;
    • A sebezés kihasználási védelme érdekében a címzési tér (ASLR) véletlenszerűsítési technikájának mellett javasolták az indító stack keretét, valamint a stacken elhelyezett környezeti információkat, programindítási paramétereket és az ELF formátumú végrehajtható képekhez kapcsolódó adatstruktúrákat címző mutatók eltolásának véletlenszerűsítésére szolgáló mechanizmust.
    • Elvégeztük az unsafe gets függvény eltávolítását a libc-ből (a C11 szabványtól kezdődően ez a függvény kizárt a specifikációból), valamint a még mindig használó portok korrekcióját. A módosítást a FreeBSD 13.0-ban ajánljuk fel.
    • Elindult egy kísérleti projekt a jail-környezetek orchestration eszközeinek létrehozására egy keretrendszer alapú rendszerben. pot képalkotás és exportálás céljából, amely a Docker-hez hasonlóan lett megvalósítva, és a nomad, amely egy interfészt biztosít a jail-környezetben lévő alkalmazások dinamikus indításához. A javasolt modell lehetővé teszi a jail-környezetek létrehozásának és alkalmazások telepítésének folyamatainak elválasztását. A projekt egyik célja olyan eszköz biztosítása, amely lehetővé teszi a jail-akkal való manipulációt, mint Docker-stílusú konténerekkel.
  • Tárolórendszerek és fájlrendszerek
    • A NetBSD-ból a "makefs" segédprogramba átkerült a FAT (msdosfs) fájlrendszer támogatása. Az elkészített módosítások lehetővé teszik FAT fájlrendszer képének létrehozását md meghajtó és root jogosultságok nélkül.
    • Befejeződött a FUSE (File system in USErspace) alrendszer illesztőprogramjának átdolgozása, amely lehetővé teszi a fájlrendszerek megvalósítását felhasználói térben. Az alapértelmezett illesztőprogram sok hibát tartalmazott, és a 11 éve kiadott FUSE 7.8 verzióra épült. Az illesztőprogram modernizálása keretében megvalósították a FUSE 7.23 protokoll támogatását, hozzáadták a jogosultság ellenőrzésének kódját a kernel oldalán („-o default_permissions”), VOP_MKNOD, VOP_BMAP és VOP_ADVLOCK hívásokat, lehetővé tették a FUSE műveletek megszakítását, hozzáadták a nevé nélküli csatornák és unix socketek támogatását a fusefs-hez, valamint lehetőséget biztosítottak a kqueue használatára a /dev/fuse-hez, engedélyezték a mount paraméterek frissítését a „mount -u” parancs segítségével, támogatást adtak a fusefs NFS-en való exportálásához, megvalósították az RLIMIT_FSIZE figyelembevételét, hozzáadták a FOPEN_KEEP_CACHE és FUSE_ASYNC_READ zászlókat, jelentős teljesítményoptimalizálásokat hajtottak végre és javították a cache szervezését. Az új illesztőprogram be lett építve a head és stable/12 ágakba (része a FreeBSD 12.1-nek).
    • A munka szinte véget ért az NFSv4.2 (RFC-7862) FreeBSD-re történő megvalósításán. A jelentési időszakban a tesztelésre összpontosítottunk. A Linux-beli megvalósítással való kompatibilitás vizsgálatára vonatkozó tesztek befejeződtek, de a pNFS szerver NFSv4.2-vel való működésének ellenőrzése még folyamatban van. Általános értelemben a kód már készen áll az integrációra a FreeBSD head/current ágaiba. Az új NFS verzióban hozzáadtuk a posix_fadvise, posix_fallocate, valamint a SEEKHOLE/SEEKDATA módokat az lseek-ben, és lehetőséget biztosítunk a fájl részeinek helyi másolására a szerveren (anélkül, hogy az ügyfélhez továbbítanánk);
  • Hardver támogatás
    • Megkezdődött a projekt a FreeBSD laptopokon való teljesítményének javítására. Az első eszköz, amelynek a FreeBSD-ben történő hardvertámogatását auditálták, a Lenovo X1 Carbon hetedik generációs laptopja volt;
    • CheriBSD, a FreeBSD ága, amely a kutatási processzor-architektúrára összpontosít CHERI (Capability Hardware Enhanced RISC Instructions), frissítve az ARM Morello folyamatormező támogatására, amely a CHERI memóriahozzáférés-kezelési rendszert támogatja, a Capsicum projekt védelmi modellje alapján. A Morello chip tervezik 2021-ben fog megjelenni. A CheriBSD fejlesztői folytatják a CHERI referencia prototípusának nyomon követését, amely a MIPS architektúrára épül;
    • Kibővítettük a RockChip RK3399 chipek támogatását, amelyeket a RockPro64 és NanoPC-T4 alaplapokban használnak. A legjelentősebb fejlesztés az eMMC támogatása és egy új eMMC vezérlőhöz készült driver kifejlesztése volt;
    • Folytatódik a Broadcom BCM5871X ARM64 SoC támogatásának megvalósítása az ARMv8 Cortex-A57 processzorokkal, amelyek az útválasztók, átjárók és hálózati tárolók használatára irányulnak. A jelentési időszak alatt
      tovább bővült az iProc PCIe támogatása, és hozzáadódott a hardveres kriptográfiai műveletek használatának lehetősége az IPsec teljesítményének gyorsítására.
      A kód integrálása a HEAD ágba a negyedik negyedévre várható;
    • Jelentős eredményeket könyvelhetünk el a FreeBSD portjának fejlesztésében a powerpc64 platformra. A hangsúly az IBM POWER8 és POWER9 processzorokkal rendelkező rendszerek zavartalan működésének biztosítására összpontosul, de opcionálisan a régi Apple Power Mac, x500 és Amiga A1222 rendszerek is támogatottak. A powerpc*/12 ág továbbra is gcc 4.2.1-tel kerül szállításra, míg a powerpc*/13 ág hamarosan átvált az llvm90-re. A 33306 portból 30514 sikeresen összeszerelhető;
    • Folytatódott a FreeBSD portálása a 64 bites NXP LS1046A SoC-hoz, amely ARMv8 Cortex-A72 processzorral rendelkezik, beépített hálózati csomagfeldolgozás gyorsító motorral, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 és USB 3.0 interfészekkel. A beszámoló időszakában megvalósult a USB 3.0, SD/MMC, I2C, DPAA hálózati interfész és GPIO támogatása. A tervek között szerepel a QSPI támogatás és a hálózati interfész teljesítményének optimalizálása. A munka befejezése és a HEAD ágba való bekapcsolás várhatóan 2019 negyedik negyedévében történik.
    • Frissítettük az ena drivert, amely támogatja a második generációs ENAv2 (Elastic Network Adapter) hálózati adaptereket, amelyeket az Elastic Compute Cloud (EC2) infrastruktúrában használnak az EC2 csomópontok közötti kapcsolatok létrehozására akár 25 Gb/s sebességgel. Az ena drivernél hozzáadtuk és teszteltük a NETMAP támogatást, valamint elvégeztük a memória elrendezésének adaptálását az LLQ üzemmód aktiválásához az Amazon EC2 A1 környezetekben.
  • Alkalmazások és port rendszer
    • Frissítettük a grafikai stack komponenseit és az xorg-gal kapcsolatos portokat. Az USE_XORG és XORG_CAT használó portokat a USES keretrendszerre állították át, a bsd.xorg.mk hívása helyett a bsd.port.mk keresztül. Az ilyen portok mostantól «USES=xorg» zászlót tartalmaznak a make fájlokban. Az XORG_CAT funkcionalitása kiemelésre került a bsd.xorg.mk-ból, és mostantól a «USES=xorg-cat» zászló aktiválja. Eszközkészlet került bevezetésre az xorg portok közvetlen létrehozására a git tárolóból.
      freedesktop.org, ami például lehetővé teszi portok létrehozását még ki nem adott verziók számára. A jövőben tervezzük, hogy elkészítjük az eszközkészletet a meson építési rendszer használatára az xorg portok összeállításához az autotools helyett.

      Elvégeztük a régi xorg portok tisztítását, amelyek már nem támogatott komponensekhez kapcsolódnak, például eltávolítottuk az x11/libXp portot, az x11/Xxf86misc, x11-fonts/libXfontcache és graphics/libGLw portokat pedig elavult státuszba helyeztük.

    • Folyamatban volt a Java 11 és újabb verziók támogatásának javítása a FreeBSD számára, valamint néhány változás portolása a Java 8 ágába. Miután a FreeBSD támogatást kapott a Java 11 új funkcióihoz, mint a Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, DTrace, Javac Server, Java Sound és SCTP, a munka az összes kompatibilitási teszt teljesítésére irányult. A tesztek során a hibák száma 50-ről 2-re csökkent.
    • A KDE Plasma, KDE Frameworks, KDE Applications és Qt asztalok naprakészen állnak és a legújabb verziókra frissítve lettek.
    • Az Xfce asztallal rendelkező portokat frissítettük az új verzióra. 4.14;
    • A FreeBSD port tree has surpassed 38,000 ports, with the number of unresolved PRs slightly exceeding 2,000, of which 400 PRs are still pending. During the reporting period, 7,340 changes were made by 169 developers. Two new participants (Santhosh Raju and Dmitri Goutnik) received committer rights. A new release of the package manager pkg 1.12 has been published, featuring overlay support in the port tree and cleaning up bsd.sites.mk. Notable updates in the ports include: Lazarus 2.0.4, LLVM 9.0, Perl5.30, PostgreSQL 11, Ruby 2.6, Firefox 69.0.1, Firefox-esr 68.1.0, Chromium 76.0;
    • The project is continuing to develop ClonOS, fejlesztés alatt álló is a specialized distribution for deploying virtual server infrastructure. In terms of resolved tasks, ClonOS resembles systems like Proxmox, Triton (Joyent), OpenStack, OpenNebula, and Amazon AWS, with its main distinction being the use of FreeBSD and the ability to manage, deploy, and control FreeBSD Jail containers and virtual environments based on Bhyve and Xen hypervisors. Recent changes include support for
      cloud-init for Linux/BSD VMs and cloudbase-init for Windows VMs, the beginning of the transition to using custom images, the implementation of Jenkins CI for testing builds, and a new pkg repository for installing
      ClonOS from packages.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster