Raporti mbi zhvillimin e FreeBSD për tremujorin e tretë të vitit 2019

Publikuar 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 (BSD+Patent), 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 u portua 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 syzkaller. 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 sysctlinfo, 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 mac_ipacl, 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 mundëson 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 TPM 2.0 (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 është implementuar 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 pot për krijimin dhe eksportimin e imazheve, i implementuar në mënyrë të ngjashme me Docker, dhe një drejtuese nomad, 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" është transferuar 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 CHERI (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 planifikon 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 4.14;
    • 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 ClonOS, në zhvillim 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.

Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster