Raporti mbi zhvillimin e projektit FreeBSD nga korriku deri në shtator 2019. Ndryshimet përfshijnë:
- ĂĂ«shtje tĂ« pĂ«rgjithshme dhe sistemore
- Ekipa thelbësore miratoi në përgjithësi 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ë çdo komponenti nën këtë licencë duhet të miratohet veçmas;
- U mbajt takimi i parë i grupit të punës, i krijuar për të kryer migronin e teksteve burimore nga sistemi qendror i menaxhimit të teksteve Subversion në një sistem të decentralizuar Git. Diskutimi mbi arsyeshmërinë e migrimit vazhdon dhe për shumë pyetje akoma duhet të zhvillohen zgjidhje (për shembull, çfarë të bëhet me contrib/, nëse është e nevojshme të rikrijohen hash-et në depot aktuale git dhe si të realizohet sa më mirë testimi i komiteteve);
- Nga NetBSD arsenali KCSAN (Kernel Concurrency Sanitizer), i cili lejon zbardhjen 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ë ndërtuar në Clang (IAS) në vend të assembler-it nga GNU binutils;
- Infrastruktura e simulimit tĂ« mjedisit Linux (Linuxulator) Ă«shtĂ« adapatuar pĂ«r tĂ« punuar nĂ« arkitekturĂ«n ARM64. ĂshtĂ« realizuar thirrja sistemore 'renameat2'. Utiliteti strace Ă«shtĂ« pĂ«rmirĂ«suar pĂ«r diagnostikimin e problemeve nĂ« skedarĂ«t ekzekutivĂ« Linux, tĂ« cilĂ«t ekzekutohen nĂ« Linuxulator. ĂshtĂ« zgjidhur problemi me shfaqjen e fundit tĂ« shkeljeve gjatĂ« lidhjes sĂ« skedarĂ«ve ekzekutivĂ« me glibc tĂ« ri. Portet me komponentĂ« Linux pĂ«r Linuxulator janĂ« pĂ«rditĂ«suar nĂ« CentOS 7.7;
- Në kuadër të programit Google Summer of Code, studentët kanë kryer me sukses gjashtë projekte: është përgatitur një implementim i unifikuar (IPv4/IPv6) i utilitetit ping, janë zhvilluar mjete për testimin e firewalleve 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 në bërthamën FreeBSD vazhdon të zhvillohet me sistemin . Gjatë periudhës së raportit, me ndihmën e syzkaller janë identifikuar dhe eliminuar më shumë se dhjetë gabime. Për të nisur syzkaller në makinat virtuale të bazuara në bhyve është ndarë një server i veçantë, ndërsa me ndihmën e
Syzbot ka realizuar kontrollin e subsistemeve tĂ« ndryshme FreeBSD nĂ« infrastrukturĂ«n e Google. ĂshtĂ« organizuar transmetimi i informacionit pĂ«r tĂ« gjitha dĂ«shtimet nĂ« shĂ«rbimin backtrace.io pĂ«r ta bĂ«rĂ« mĂ« tĂ« thjeshtĂ« grupimin dhe analizĂ«n e tyre; - Po punohet pĂ«r pĂ«rditĂ«simin e implementimit tĂ« zlib nĂ« nivelin e bĂ«rthamĂ«s.
Kodi i lidhur me kompresimin është përkthyer nga zlib 1.0.4, lëshuar më shumë se 20 vjet më parë, në bazën aktuale të kodit zlib 1.2.11. Për unifikimin e qasjes në zlib, në bërthamë janë shtuar funksionet compress, compress2 dhe uncompress. Kodi që siguron funksionimin e protokollit PPP nga subsistemi netgraph është përkthyer për të përdorur implementimin sistemor të zlib, në vend të versionit të tij përkatës. Edhe subsistemet kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor,
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, e cila përpunohen në formën MIB (Baza e Informacionit të Menaxhimit), dhe dërgimin e informacionit për objektet në hapësirën e përdoruesit.
- Siguria
- ĂshtĂ« zhvilluar njĂ« modul bĂ«rthame , i bazuar nĂ« TrustedBSD MAC Framework dhe qĂ« implementon njĂ« sistem tĂ« menaxhimit tĂ« aksesit nĂ« cilĂ«simet e stack-ut rrjet pĂ«r ambientet jail. PĂ«r shembull, me ndihmĂ«n e mac_ipacl, administratori i sistemit tĂ« host-it mund t'i ndalojĂ« pĂ«rdoruesit root nĂ« ambientin jail tĂ« ndryshojĂ« ose vendosĂ« adresa IP ose parametra subnet pĂ«r interface tĂ« caktuara rrjeti. Sistemi i propozuar i menaxhimit tĂ« aksesit tĂ« mandatuar lejon tĂ« caktosh lista IP-sh dhe subnetesh qĂ« janĂ« tĂ« lejueshme pĂ«r Jail, ndalon vendosjen e IP-ve dhe subnetĂ«ve tĂ« caktuar nĂ« Jail ose kufizon ndryshimin e parametrave vetĂ«m pĂ«r disa interface tĂ« caktuara rrjeti;
- Kompania Intel i kaloi projektit portin e grupeve të stack-ut (Moduli i Platformës së Besueshme) për ndërveprimin me çipin për llogaritje të sigurt, i cili zakonisht përdoret për ngarkimin e verifikuar të firmware dhe ngarkuesit të OS. Komponentët e grumbullit paraqiten në formën e porteve security/tpm2-tss, security/tpm2-tools dhe security/tpm2-abrmd. Porta tpm2-tss përfshin biblioteka për përdorimin e API TPM2, tpm2-tools ofron mjete në linjë për kryerjen e operacioneve me TPM, dhe tpm2-abrmd përmban një proces në sfond me zbatimin e komponentëve të TPM Access Broker dhe Resource Manager, që shumëfishojnë kërkesat nga përdorues të ndryshëm të TPM në një pajisje. Përveç ngarkimit të verifikuar në FreeBSD, TPM mund të përdoret për të forcuar sigurinë e Strongswan IPsec, SSH dhe TLS duke kryer operacione kriptografike në një çip të veçantë;
- Bërthama për arkitekturën amd64 është përshtatur për ngarkim duke përdorur teknikën e mbrojtjes W^X (shkruaj XOR ekzekuto), e cila nënkupton se faqet e memories nuk mund të jenë të aksesueshme njëkohësisht për shkrim dhe ekzekutim (mënyra e ngarkimit të bërthamës tani lejon faqe të ekzekutueshme të memories për të cilat është e ndaluar shkrimi). Metoda e re e mbrojtjes së bërthamës është përfshirë në depon HEAD dhe do të përfshihet në versionet e FreeBSD 13.0 dhe 12.2;
- Për thirrjet sistemike mmap dhe mprotect makroja PROT_MAX(), e cila lejon përcaktimin e setit të pranueshëm të flagjeve të kufizimit të aksesit (PROT_READ, PROT_WRITE, PROT_EXEC) gjatë modifikimeve të mëvonshme. Me ndihmën e PROT_MAX(), zhvilluesi mund të ndalojë kalimin e një zone memorje në kategorinë e ekzekutueshme ose të kërkojë memorie që nuk lejon ekzekutimin, por që më vonë mund të kalohet në ekzekutueshme. Për shembull, një zonë memorjeje mund të jetë e hapur për shkrim vetëm për kohën e lidhjes dinamike ose gjenerimit të kodit JIT, por pas përfundimit të shkrimit është e kufizuar vetëm për lexim dhe ekzekutim, dhe më vonë, në rastin e kompromentimit, një sulmues nuk do të jetë në gjendje të lejojë shkrimin për këtë bllok memorjeje. Në përveçim të PROT_MAX() është implementuar gjithashtu sysctl vm.imply_prot_max, i cili, kur aktivizohet, përcakton setin e lejuar të flagjeve në bazë të parametrave fillestar të thirrjes së parë mmap;
- Për të forcuar mbrojtjen nga shfrytëzimi i dobësive, përveç teknikës së randomizimit të hapësirës adresuese (ASLR), është propozuar një mekanizëm randomizimi për offsetet e treguesve që adresojnë kadrin fillestar të stack-ut dhe struktura që vendosen në stack me informacion mbi mjedisin, parametrat e nisjes së programit dhe të dhënat për imazhet ekzekutuese në formatin ELF;
- ĂshtĂ« kryer punĂ« pĂ«r tĂ« hequr funksionin e pasigurt gets nga libc (qĂ« nga standardi C11 ky funksion Ă«shtĂ« pĂ«rjashtuar nga specifikimi) dhe pĂ«r korrigjimin e porteve qĂ« ende 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Ă« ambientit jail mbi bazĂ«n e framework-ut pĂ«r krijimin dhe eksportimin e imazheve, i implementuar nĂ« mĂ«nyrĂ« tĂ« ngjashme me Docker, dhe njĂ« drejtuese , qĂ« ofron njĂ« ndĂ«rfaqe pĂ«r nisjen dinamike tĂ« aplikacioneve nĂ« ambientin jail. Modeli i propozuar lejon ndarjen e proceseve tĂ« krijimit tĂ« ambienteve jail dhe shpĂ«rndarjes sĂ« aplikacioneve nĂ« ato. NjĂ« nga qĂ«llimet e projektit Ă«shtĂ« tĂ« ofrojĂ« njĂ« mjet pĂ«r tĂ« manipuluar jail-et si kontejnerĂ« nĂ« stilin Docker;
- Sistemet e ruajtjes dhe skedarët e sistemeve
- Nga NetBSD në utilitarin "makefs" mbështetje për sistemin e skedarëve FAT (msdosfs). Ndryshimet e përgatitura lejojnë krijimin e imazheve të FSH-së me FAT pa përdorimin e drejtuestit md dhe pa fuqi root;
- ĂshtĂ« pĂ«rfunduar rishikimi i drejtuestit tĂ« nĂ«n-sistemit FUSE (File system in USErspace), qĂ« lejon krijimin e implementimeve tĂ« sistemeve tĂ« skedarĂ«ve nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit. Drejtuesti fillestar pĂ«rmbante shumĂ« gabime dhe ishte i bazuar nĂ« versionin FUSE 7.8, tĂ« lĂ«shuar 11 vjet mĂ« parĂ«. NĂ« kuadĂ«r tĂ« projektit pĂ«r modernizimin e drejtuestit, Ă«shtĂ« implementuar mbĂ«shtetje pĂ«r protokollin FUSE 7.23, Ă«shtĂ« shtuar kodi pĂ«r tĂ« kontrolluar tĂ« drejtat e aksesit nga ana e bĂ«rthamĂ«s ("-o default_permissions"), janĂ« shtuar thirrjet VOP_MKNOD, VOP_BMAP dhe VOP_ADVLOCK, Ă«shtĂ« siguruar mundĂ«sia e ndĂ«rprerjes sĂ« operacioneve FUSE, Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r kanalet e paemĂ«ruar dhe socketet unix nĂ« fusefs, Ă«shtĂ« bĂ«rĂ« e mundur pĂ«rdorimi i kqueue pĂ«r /dev/fuse, Ă«shtĂ« lejuar pĂ«rditĂ«simi i parametrave tĂ« montimit pĂ«rmes "mount -u", Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r eksportimin e fusefs pĂ«rmes NFS, Ă«shtĂ« implementuar llogaritja e RLIMIT_FSIZE, janĂ« shtuar flamujt FOPEN_KEEP_CACHE dhe FUSE_ASYNC_READ, janĂ« realizuar optimizime tĂ« konsiderueshme tĂ« performancĂ«s dhe Ă«shtĂ« pĂ«rmirĂ«suar organizimi i memorizimit. Drejtuesti i ri Ă«shtĂ« pĂ«rfshirĂ« nĂ« degĂ«t head dhe stable/12 (ka hyrĂ« nĂ« pĂ«rbĂ«rjen e FreeBSD 12.1);
- Punë e avancuar në implementimin e NFSv4.2 (RFC-7862) për FreeBSD është në përfundim. Gjatë periudhës së raportit, u përqëndrua në testimin. Testet për kontrollin e përputhshmërisë me implementimin nga Linux përfunduan, por akoma vazhdojnë verifikimet për funksionimin e serverit pNFS me NFSv4.2. Në përmbledhje, kodi tashmë shqyrtohet 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 të pjesëve të skedarit në server (pa kaluar te klienti);
- Mbështetje për pajisjet
- Projektet për përmirësimin e funksionimit të FreeBSD në laptopë kanë nisur. Pajisja e parë për të cilën u zhvillua auditi i mbështetjes së hardware-it në FreeBSD është laptopi Lenovo X1 Carbon i gjeneratës së shtatë;
- CheriBSD, njĂ« degĂ« nga FreeBSD pĂ«r arkitekturĂ«n e procesorĂ«ve kĂ«rkimore (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, i bazuar nĂ« modelin e mbrojtjes tĂ« projektit Capsicum. Ăipi Morello pritet tĂ« lansohen nĂ« vitin 2021. Zhvilluesit e CheriBSD gjithashtu vazhdojnĂ« tĂ« ndjekin zhvillimin e prototipit referencĂ« CHERI tĂ« bazuar nĂ« arkitekturĂ«n MIPS;
- Mbështetje për çipat RockChip RK3399, të përdorur në platformat RockPro64 dhe NanoPC-T4, është zgjeruar. Përmirësimi më i rëndësishëm është mbështetje për eMMC dhe zhvillimi i një drejtuesi të ri për kontrollorin e përdorur në pllakë;
- Vazhdimi i punës për implementimin e mbështetjes për ARM64 SoC Broadcom BCM5871X me procesorë ARMv8 Cortex-A57, të destinuar për përdorim në routera, gateway dhe ruajtje rrjetesh. Gjatë periudhës së raportit
është zgjeruar mbështetja për iProc PCIe dhe është shtuar mundësia e përdorimit të operacioneve kriptografike harduerike për të aceleruar funksionimin e IPsec.
Integrimi i kodit në degën HEAD pritet në tremujorin e katërt; - Arrihen suksese të mëdha në zhvillimin e portit FreeBSD për platformën powerpc64. Vëmendja kryesore është për të siguruar funksionim të cilësisë së lartë në sistemet me procesorë IBM POWER8 dhe POWER9, por gjithashtu është mbështetur funksionimi në Apple Power Mac më të vjetër, x500 dhe Amiga A1222. Dega powerpc*/12 vazhdon të ofrohet me gcc 4.2.1, ndërsa dega powerpc*/13 do të kalojë së shpejti në llvm90. Nga 33306 porta, 30514 mblidhen me sukses;
- Ka vazhduar portimi i FreeBSD për SoC NXP LS1046A me 64 bit, i bazuar në procesorin ARMv8 Cortex-A72 me një motor të Integruar për përshpejtimin e përpunimit të paketimeve të rrjetit, Ethernet 10 Gb, PCIe 3.0, SATA 3.0 dhe USB 3.0. Gjatë këtij periudhe u realizua mbështetje për USB 3.0, SD/MMC, I2C, ndërfaqen rrjet DPAA dhe GPIO. Në planet është mbështetje për QSPI dhe kryerja e optimizimit të performancës së ndërfaqes rrjetore. Përfundimi i punës dhe përfshirja në degën HEAD pritet në tremujorin e katërt të vitit 2019;
- U përditësua drejtuesi ena me mbështetje për gjeneratën e dytë të adaptatorëve rrjet ENAv2 (Elastic Network Adapter), të përdorur në infrastrukturën Elastic Compute Cloud (EC2) për organizimin e komunikimit mes nyjeve EC2 me shpejtësi deri në 25 Gb/s. Në drejtuesin ena u shtua dhe u testua mbështetje për NETMAP, si dhe u krye adaptimi i arranzhimit të memories për ta përfshirë modin LLQ në ambientet Amazon EC2 A1;
- Aplikacione dhe sistemi i porteve
- U përditësuan komponentët e grilës grafike dhe portet e lidhura me xorg. Portet që përdorin USE_XORG dhe XORG_CAT u kaluan në strukturën USES në vend që të thërrisnin bsd.xorg.mk përmes bsd.port.mk. Portet e tilla tani përfshijnë ngritjen "USES=xorg" në skedarët make. Funksionaliteti XORG_CAT u izolua nga bsd.xorg.mk dhe tani aktivizohet nga ngritja "USES=xorg-cat". U shtua instrumenti për formimin e drejtpërdrejtë të porteve xorg nga depo git.
freedesktop.org, që lejon për shembull krijimin e porteve për versione që nuk janë lëshuar ende. Në të ardhmen, planifikohet përgatitja e instrumenteve për përdorimin e sistemit të ndërtimit meson në vend të autotools për ndërtimin e porteve xorg.U krye puna për pastrimin e porteve të vjetra xorg, të lidhura me komponente që nuk mbështeten më, për shembull, u hoq porta x11/libXp, ndërsa portet x11/Xxf86misc, x11-fonts/libXfontcache dhe graphics/libGLw u kaluan në statusin e vjetruar;
- U krye puna për përmirësimin e mbështetjes për Java 11 dhe versionet më të reja në FreeBSD, si dhe për portimin e disa ndryshimeve në degën Java 8. Pas realizimit të mbështetjes për këto mundësi të reja të Java 11 në FreeBSD, si Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, DTrace, Javac Server, Java Sound dhe SCTP, puna u përqendrua në sigurimin e kalimit të të gjitha testeve të kompatibilitetit. Numri i dështimeve gjatë kalimit të testeve u ul nga 50 në 2;
- Desktop-i KDE Plasma, KDE Frameworks, KDE Applications dhe Qt janë ruajtur në gjendje të azhurnuar dhe janë përditësuar në versionet më të fundit;
- Portet me desktopin Xfce janë përditësuar në versionin ;
- Pema e porteve tĂ« FreeBSD ka kaluar kufirin prej 38000 porte, numri i PR-ve tĂ« hapura paksa e tejkalon 2000, prej tĂ« cilave 400 PR ende nuk janĂ« shqyrtuar. NĂ« periudhĂ«n raportuese janĂ« bĂ«rĂ« 7340 ndryshime nga 169 zhvillues. Dy anĂ«tarĂ« tĂ« rinj (Santhosh Raju dhe Dmitri Goutnik) kanĂ« marrĂ« tĂ« drejtat e komitimit. ĂshtĂ« publikuar njĂ« version i ri i menaxherit tĂ« paketave 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;
- Projektin vazhdon të zhvillohet , distribucion i specializuar për vendosjen e infrastrukturës së serverëve virtualë. Në lidhje me detyrat që zgjidh ClonOS, ajo i ngjan sistemeve si Proxmox, Triton (Joyent), OpenStack, OpenNebula dhe Amazon AWS, dallimi kryesor është përdorimi i FreeBSD dhe mundësia për të menaxhuar, vendosur dhe menaxhuar kontenierët Jail të FreeBSD dhe mjediset virtuale mbi hipervizorët Bhyve dhe Xen. Ndër ndryshimet e fundit është mbështetje për
cloud-init për VM Linux/BSD dhe cloudbase-init për VM Windows, fillimi i kalimit në përdorimin e imazheve të veta, angazhimi i Jenkins CI për testimin e ndërtimeve dhe një depo e re pkg për instalimin
të ClonOS nga paketat.
- U përditësuan komponentët e grilës grafike dhe portet e lidhura me xorg. Portet që përdorin USE_XORG dhe XORG_CAT u kaluan në strukturën USES në vend që të thërrisnin bsd.xorg.mk përmes bsd.port.mk. Portet e tilla tani përfshijnë ngritjen "USES=xorg" në skedarët make. Funksionaliteti XORG_CAT u izolua nga bsd.xorg.mk dhe tani aktivizohet nga ngritja "USES=xorg-cat". U shtua instrumenti për formimin e drejtpërdrejtë të porteve xorg nga depo git.
Burimi: opennet.ru
