raporti mbi zhvillimin e projektit FreeBSD nga korriku deri në shtator 2019. Nga ndryshimet, mund të theksohen:
- ĂĂ«shtje tĂ« pĂ«rgjithshme dhe sistemore
- Ekipi kryesor në përgjithësi miratoi mundësinë e përfshirjes në sistem të kodit të ofruar nën licencën BSD me një marrëveshje shtesë për përdorimin e patentave (), por vendimi për përfshirjen në sistem të secilit komponent nën këtë licencë duhet të miratohet veçmas;
- U zhvillua mbledhja e parë e grupit të punës të krijuar për migrimin e teksteve burimore nga sistemi i centralizuar i menaxhimit të teksteve Subversion në sistemin e decentralizuar Git. Diskutimi mbi arsyeshmërinë e migrimit vazhdon, dhe për shumë çështje ende duhet të formulohet një zgjidhje (p.sh., çfarë të bëhet me contrib/, nëse duhet të rigjenerohen hash-et në të aktualin depo git dhe si të realizohet sa më mirë testimi i komiteve);
- Nga NetBSD instrumenti KCSAN (Kernel Concurrency Sanitizer), që lejon identifikimin e gjendjeve të garës mes proceseve të bërthamës që ekzekutohen në CPU të ndryshme;
- Po punohet për përdorimin e assembler-it të integruar në Clang (IAS) në vend të assembler-it nga GNU binutils;
- Infrastruktura e emulimit tĂ« mjedisit Linux (Linuxulator) Ă«shtĂ« pĂ«rshtatur pĂ«r punĂ« nĂ« arkitekturĂ«n ARM64. ĂshtĂ« realizuar thirrja sistemore "renameat2". Utilita strace Ă«shtĂ« pĂ«rmirĂ«suar pĂ«r diagnostikimin e problemeve nĂ« skedarĂ«t ekzekutivĂ« Linux qĂ« ekzekutohen nĂ« Linuxulator. ĂshtĂ« zgjidhur problemi me rastet e ndĂ«rprerjeve gjatĂ« lidhjes sĂ« skedarĂ«ve ekzekutivĂ« me glibc tĂ« freskĂ«t. Portet me komponentĂ«t Linux pĂ«r Linuxulator janĂ« pĂ«rditĂ«suar nĂ« CentOS 7.7;
- Në kuadër të programit Google Summer of Code, studentët kanë realizuar me sukses gjashtë projekte: është përgatitur realizimi i utilitës së unifikuar (IPv4/IPv6) ping, janë zhvilluar mjete për testimin e ndërmarrjeve dhe identifikimin e gabimeve në bërthamë (Kernel sanitizer), është propozuar moduli mac_ipacl, është shkruar kodi për kompresimin e memories virtuale dhe është realizuar puna për ndarjen e procesit të ndërtimit të porteve nga instalimi lokal;
- Projekti për testimin e fuzzing të bërthamës FreeBSD vazhdon të zhvillohet me sistemin . Gjatë periudhës së raportit, përmes syzkaller janë identifikuar dhe korrigjuar më shumë se dhjetë gabime. Për të drejtuar syzkaller në makina virtuale të bazuara në bhyve është ndarë një server i posaçëm, dhe përmes
syzbot Ă«shtĂ« realizuar kontrolli i sistemeve tĂ« ndryshme FreeBSD nĂ« infrastrukturĂ«n e Google. ĂshtĂ« organizuar shkĂ«mbimi i informacionit pĂ«r tĂ« gjitha dĂ«shtimet nĂ« shĂ«rbimin backtrace.io pĂ«r thjeshtimin e grupimit dhe analizĂ«s sĂ« tyre; - Po punohet pĂ«r pĂ«rmirĂ«simin e realizimit tĂ« zlib nĂ« nivelin e bĂ«rthamĂ«s.
Kodi i lidhur me kompresimin është kaluar nga zlib 1.0.4, lëshuar më shumë se 20 vite më parë, në bazën e kodit aktual zlib 1.2.11. Për të unifikuar aksesin në zlib, janë shtuar funksionet compress, compress2 dhe uncompress në bërthamë. Kodi që siguronte funksionimin e protokollit PPP nga nën-sistemi netgraph është kaluar në përdorimin e realizimit sistemor të zlib, në vend të versionit të tij. Nën-sistemet kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor janë gjithashtu kaluar në zlib të ri;
if_mxge, bxe updated dhe ng_deflate; - Po zhvillohet një ndërfaqe e re e bërthamës , e cila lejon gjetjen e elementeve në bazën e parametrave sysctl, që përpunohen në formën MIB (Management Information Base), dhe dërgimin e informacionit mbi objektet në hapësirën e përdoruesit.
- Siguria
- ĂshtĂ« zhvilluar moduli i bĂ«rthamĂ«s , i bazuar nĂ« TrustedBSD MAC Framework dhe qĂ« zbaton njĂ« sistem menaxhimi tĂ« aksesit nĂ« cilĂ«simet e grupeve rrjet pĂ«r ambientet jail. PĂ«r shembull, pĂ«rmes mac_ipacl, administratori i sistemit host mund t'i ndalojĂ« pĂ«rdoruesit root nĂ« ambientin jail tĂ« ndryshojĂ« ose vendosĂ« adresa IP ose parametrat e nĂ«nrrjeteve pĂ«r disa ndĂ«rfaqe rrjeti tĂ« caktuara. Sistemi i propozuar i menaxhimit tĂ« aksesit tĂ« detyrueshĂ«m mund tĂ« pĂ«rcaktojĂ« lista tĂ« adresave IP dhe nĂ«nrrjeteve tĂ« lejuara pĂ«r Jail, tĂ« ndalojĂ« vendosjen e adresave IP dhe nĂ«nrrjeteve tĂ« caktuara nĂ« Jail, ose tĂ« kufizojĂ« ndryshimin e parametrave vetĂ«m pĂ«r disa ndĂ«rfaqe rrjeti;
- Kompania Intel i transferoi projektit portin e stack-ut (Trusted Platform Module) për ndërveprimin me çipin për llogaritje të sigurta, i cili zakonisht përdoret për ngarkimin e vërtetuar të firmware-s dhe bootloader-it të sistemit operativ. Komponentët e stack-ut janë paraqitur në formën e porteve security/tpm2-tss, security/tpm2-tools dhe security/tpm2-abrmd. Porti tpm2-tss përfshin biblioteka për përdorimin e API TPM2, tpm2-tools ofron mjete të linjës së komandës për kryerjen e operacioneve me TPM, ndërsa tpm2-abrmd përmban një proces në prapavijë me realizimin e komponentëve TPM Access Broker dhe Resource Manager, që shumëfishon kërkesat nga përdorues të ndryshëm TPM në një pajisje. Përveç ngarkimit të vërtetuar, në FreeBSD TPM mund të përdoret për forcimin e sigurisë së Strongswan IPsec, SSH dhe TLS përmes kryerjes së operacioneve kriptografike në një çip të veçantë;
- Bërthama për arkitekturën amd64 është përshtatur për ngarkim duke përdorur teknikat e mbrojtjes W^X (write XOR execute), që do të thotë se faqet e memories nuk mund të jenë të aksesueshme për të shkruar dhe ekzekutuar njëherësh (berthama tani mund të ngarkohet duke përdorur faqe të ekzekutueshme të memories për të cilat është ndaluar shkrimi). Metoda e re e mbrojtjes së berthamës është përfshirë në degën HEAD dhe do të bëhet pjesë e lirimeve FreeBSD 13.0 dhe 12.2;
- Për thirrjet sistemike mmap dhe mprotect makro PROT_MAX(), që lejon përcaktimin e grupeve të lejuara të flamujve të kufizimit të aksesit (PROT_READ, PROT_WRITE, PROT_EXEC). Me ndihmën e PROT_MAX(), zhvilluesi mund të ndalojë kalimin e një zone të memories në kategori ekzekutues ose të kërkojë memorie që nuk lejon ekzekutimin, por mund të kalojë në ekzekutues. Për shembull, një zonë e memories mund të jetë e hapur për shkrim vetëm gjatë lidhjes dinamike ose gjenerimit të kodit JIT, por pas përfundimit të shkrimit e kufizuar vetëm në lexim dhe ekzekutim, dhe më tej, në rast komprometimi, sulmuesi nuk do të jetë në gjendje të lejojë shkrimin për këtë bllok memorie. Përveç PROT_MAX() është gjithashtu realizuar sysctl vm.imply_prot_max, aktivizimi i së cilës përcakton grupin e flamujve të lejuar në bazë të parametrave fillestarë të thirrjes së parë mmap;
- Për të forcuar mbrojtjen kundër shfrytëzimit të dobësive, përveç teknikave të rastësisë së hapësirës adresuese (ASLR), është propozuar një mekanizëm i rastësisë së deformimeve të treguesve, që adresa kornizën fillestare të stack-ut dhe struktura të vendosura në stack me informacion mbi mjedisin, parametrat e aktivizimit të programit dhe të dhëna për imazhet ekzekutues në formatin ELF;
- ĂshtĂ« pĂ«rfunduar puna pĂ«r heqjen e funksionit tĂ« rrezikshĂ«m gets nga libc (qĂ« nga standardi C11, ky funksion Ă«shtĂ« pĂ«rjashtuar nga specifikimi) dhe rregullimi i porteve qĂ« ende e pĂ«rdorin kĂ«tĂ« funksion. Ndryshimi planifikohet tĂ« propozohet nĂ« FreeBSD 13.0;
- ĂshtĂ« nisur njĂ« projekt eksperimental pĂ«r krijimin e mjeteve tĂ« orkestrimit tĂ« mjediseve jail mbi bazĂ«n e framework-ut pĂ«r krijimin dhe eksportimin e imazheve, i realizuar sipas sĂ« njĂ«jtĂ«s parim si Docker, dhe tĂ« drejtorisĂ« , qĂ« ofron njĂ« ndĂ«rfaqe pĂ«r ekzekutimin dinamik tĂ« aplikacioneve nĂ« ambientin jail. Modeli i propozuar lejon ndarjen e proceseve tĂ« krijimit tĂ« ambientĂ«ve jail dhe implementimit tĂ« aplikacioneve nĂ« to. NjĂ« nga qĂ«llimet e projektit Ă«shtĂ« ofrimi i njĂ« instrumenti pĂ«r manipulimin e jail-Ă«ve si kontejnerĂ« nĂ« stilin Docker;
- Sistem storage dhe sisteme skedarësh
- Nga NetBSD në utilitarin "makefs" mbështetje për sistemin e skedarëve FAT (msdosfs). Ndryshimet e përgatitura lejojnë krijimin e imazheve të FS me FAT pa përdorur drejtuesin md dhe pa autoritetet e root;
- Puna e riparimit të drejtuesit të nën-sistemit FUSE (File system in USErspace) është përfunduar, që lejon krijimin e realizimeve të sistemeve të skedarëve në hapësirën e përdoruesit. Drejtuesi fillestar kishte shumë gabime dhe ishte i bazuar në versionin FUSE 7.8, i lëshuar 11 vjet më parë. Në kuadër të projektit për modernizimin e drejtuesit është realizuar mbështetje për protokollin FUSE 7.23, është shtuar kodi për kontrollin e të drejtave të aksesit në anën e berthamës ("-o default_permissions"), janë shtuar thirrjet VOP_MKNOD, VOP_BMAP dhe VOP_ADVLOCK, është siguruar mundësia për ndërprerjen e operacioneve FUSE, është shtuar mbështetje për kanalet e paemëruara dhe unix-sockets në fusefs, është siguruar përdorimi i kqueue për /dev/fuse, është lejuar azhornimi i parametrave të montimit përmes "mount -u", është shtuar mbështetje për eksportin e fusefs përmes NFS, është realizuar llogaritja e RLIMIT_FSIZE, janë shtuar flamujt FOPEN_KEEP_CACHE dhe FUSE_ASYNC_READ, janë bërë optimizime të konsiderueshme të performancës dhe është përmirësuar organizimi i keshit. Drejtuesi i ri është përfshirë në degët head dhe stable/12 (u bë pjesë e FreeBSD 12.1);
- Puna për implementimin e NFSv4.2 (RFC-7862) për FreeBSD është pothuajse përfunduar. Vëmendja kryesore në periudhën raportuese ishte testimi. Testet për kontrollin e përputhshmërisë me realizimin nga Linux janë përfunduar, por ende vazhdon verifikimi i funksionimit të serverit pNFS me NFSv4.2. Në formatin e përgjithshëm kodi tashmë po konsiderohet si i gatshëm për integrim në degët FreeBSD head/current. Në versionin e ri të NFS është shtuar mbështetje për funksionet posix_fadvise, posix_fallocate, modet SEEKHOLE/SEEKDATA në lseek, operacionet e kopjimit lokal të pjesëve të skedarit në server (pa kaluar te klienti);
- Mbështetje për pajisjet
- Ka filluar një projekt për përmirësimin e funksionit të FreeBSD në laptopë. Pajisja e parë për të cilën është bërë auditi i mbështetjes së pajisjeve në FreeBSD është laptopi Lenovo X1 Carbon i gjeneratës së shtatë;
- CheriBSD, njĂ« degĂ« nga FreeBSD pĂ«r arkitekturĂ«n kĂ«rkimore tĂ« procesorĂ«ve (Capability Hardware Enhanced RISC Instructions), Ă«shtĂ« pĂ«rditĂ«suar pĂ«r tĂ« mbĂ«shtetur procesorin e ardhshĂ«m ARM Morello, i cili do tĂ« mbĂ«shtesĂ« sistemin e menaxhimit tĂ« aksesit nĂ« memorie CHERI, qĂ« bazohet nĂ« modelin e mbrojtjes sĂ« projektit Capsicum. Ăipi Morello tĂ« lĂ«shoheni nĂ« vitin 2021. Zhvilluesit e CheriBSD gjithashtu vazhdojnĂ« tĂ« ndjekin zhvillimin e prototipit referencĂ« CHERI tĂ« bazuar nĂ« arkitekturĂ«n MIPS;
- Shtimi i mbështetjes për çipat RockChip RK3399, të përdorur në plakat RockPro64 dhe NanoPC-T4. Përmirësimi më i rëndësishëm ishte mbështetja e eMMC dhe zhvillimi i një drejtori të ri për kontrollorin e përdorur në plakat;
- Vazhdimi i punës për implementimin e mbështetjes për ARM64 SoC Broadcom BCM5871X me procesorët ARMv8 Cortex-A57, të destinuar për përdorim në routera, gateway dhe sisteme ruajtjeje të rrjetit. Gjatë periudhës së raportit
është zgjeruar mbështetja për iProc PCIe dhe është shtuar mundësia e përdorimit të operacioneve të kriptografisë harduerike për të shkurtuar kohën e punës IPsec.
Integrimi i kodit në degën HEAD pritet në tremujorin e katërt; - Arrihen përparime të rëndësishme në zhvillimin e portit FreeBSD për platformën powerpc64. Vëmendja kryesore është dhënë për të siguruar funksionim të mirë në sisteme me procesorë IBM POWER8 dhe POWER9, por mbështetja është gjithashtu opsionale për funksionimin në Apple Power Mac më të vjetra, x500 dhe Amiga A1222. Dega powerpc*/12 vazhdon të ofrohet me gcc 4.2.1, dhe dega powerpc*/13 do të kalojë së shpejti në llvm90. Nga 33306 porta, 30514 janë ndërtuar me sukses;
- Vazhdon portimi i FreeBSD për SoC 64-bit NXP LS1046A të bazuar në procesorin ARMv8 Cortex-A72 me një motor të integruar për përshpejtimin e procesimit të paketave të rrjetit, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 dhe USB 3.0. Gjatë periudhës së raportit u implementua mbështetje për USB 3.0, SD/MMC, I2C, ndërfaqen rrjet DPAA dhe GPIO. Plani përfshin mbështetje për QSPI dhe optimizimin e performancës së ndërfaqes rrjet. Përfundimi i punës dhe përfshirja në degën HEAD pritet në tremujorin e katërt të vitit 2019;
- Drejtori ena u azhornua me mbështetje për adapatorët e rrjetit ENAv2 (Elastic Network Adapter), të përdorur në infrastrukturën Elastic Compute Cloud (EC2) për të organizuar lidhjen midis nyjave EC2 me shpejtësi deri në 25 Gb/s. Në drejtori ena është shtuar dhe testuar mbështetja për NETMAP, si dhe u realizua përshtatja e organizatës së memories për të përfshirë mënyrën LLQ në mjediset Amazon EC2 A1;
- Aplikacionet dhe sistemi i porteve
- Komponentët e stack-ut grafik dhe portat e lidhura me xorg janë azhornuar dhe mbajtur në gjendje të freskët. Portat që përdorin USE_XORG dhe XORG_CAT janë kaluar në framework-un USES në vend që të thërrasin bsd.xorg.mk përmes bsd.port.mk. Portat e tilla tani përfshijnë flagun "USES=xorg" në skedarët make. Funksionaliteti i XORG_CAT është ndarë nga bsd.xorg.mk dhe tani aktivizohet me flagun "USES=xorg-cat". U shtua një mjet për formimin e portave xorg direkt nga git-repozitori
freedesktop.org, i cili, për shembull, lejon formimin e portave për versionet që ende nuk janë lëshuar. Në të ardhmen planifikohet përgatitja e mjeteve për përdorimin e sistemit ndërtues meson në vend të autotools për ndërtimin e portave xorg.U realizua puna për pastrimin e portave të vjetra xorg, të lidhura me komponentë që nuk mbështetën më, për shembull, porti x11/libXp u hoq, ndërsa portat x11/Xxf86misc, x11-fonts/libXfontcache dhe graphics/libGLw u renditën si të vjetra;
- U realizua puna për përmirësimin e mbështetjes për Java 11 dhe lëshimet më të reja në FreeBSD, si dhe për portimin e disa ndryshimeve në degën Java 8. Pasi për FreeBSD u realizua mbështetje për funksionalitetet e reja të Java 11, si Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, DTrace, Javac Server, Java Sound dhe SCTP, puna u fokusua në sigurinë që të kalohen të gjitha testet e pajtueshmërisë. Numri i dështimeve në kalimin e testeve u ul nga 50 në 2;
- Desktop-i KDE Plasma, KDE Frameworks, KDE Applications dhe Qt mbahen të azhornuar dhe janë përditësuar në lëshimet më të fundit;
- Portat me desktop-in Xfce janë azhornuar në lëshimin ;
- Pema e porteve FreeBSD ka kaluar kufirin prej 38000 portash, numri i PR-ve tĂ« hapura paksa e kalon 2000, nga tĂ« cilat 400 PR ende nuk janĂ« shqyrtuar. GjatĂ« periudhĂ«s sĂ« raportit janĂ« bĂ«rĂ« 7340 ndryshime nga 169 zhvillues. Dy anĂ«tarĂ« tĂ« rinj (Santhosh Raju dhe Dmitri Goutnik) kanĂ« marrĂ« tĂ« drejtat e komitorit. ĂshtĂ« lĂ«shuar njĂ« version i ri i menaxherit tĂ« pakove pkg 1.12 me mbĂ«shtetje pĂ«r overlay nĂ« pemĂ«n e porteve dhe pastrimin e bsd.sites.mk. NdĂ«r pĂ«rditĂ«simet e rĂ«ndĂ«sishme tĂ« versioneve nĂ« porte pĂ«rfshihen: 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;
- Vazhdon zhvillimi i projektit , një shpërndarje e specializuar për zbatimin e infrastrukturës së serverëve virtualë. Në problemet që zgjidh ClonOS, ngjan me sisteme si Proxmox, Triton (Joyent), OpenStack, OpenNebula dhe Amazon AWS, duke qenë dallimi kryesor përdorimi i FreeBSD dhe mundësia për të menaxhuar, zbatuar dhe administruar Jail-container-t e FreeBSD dhe mjediset virtuale mbi hipervizorët Bhyve dhe Xen. Ndryshimet e fundit përfshijnë mbështetje për
cloud-init për Linux/BSD VM dhe cloudbase-init për Windows VM, fillimin e kalimit në përdorimin e imazheve të veta, angazhimin e Jenkins CI për testimin e ndërtimeve dhe një ri-pozitë të re pkg për instalimin e
ClonOS nga paketat.
- Komponentët e stack-ut grafik dhe portat e lidhura me xorg janë azhornuar dhe mbajtur në gjendje të freskët. Portat që përdorin USE_XORG dhe XORG_CAT janë kaluar në framework-un USES në vend që të thërrasin bsd.xorg.mk përmes bsd.port.mk. Portat e tilla tani përfshijnë flagun "USES=xorg" në skedarët make. Funksionaliteti i XORG_CAT është ndarë nga bsd.xorg.mk dhe tani aktivizohet me flagun "USES=xorg-cat". U shtua një mjet për formimin e portave xorg direkt nga git-repozitori
Burimi: opennet.ru
