FreeBSD attÄ«stÄ«bas ziņojums 2019. gada XNUMX. ceturksnÄ«

publicēts ziņojums par FreeBSD projekta attīstību no 2019. gada jūlija līdz septembrim. Izmaiņas ietver:

  • VispārÄ«gi un sistēmas jautājumi
    • Galvenā komanda kopumā ir apstiprinājusi BSD licencēta koda iekļauÅ”anu papildu patenta lÄ«gumā (BSD + patents), taču lēmums par katras Ŕīs licences komponentes iekļauÅ”anu sistēmā jāapstiprina atseviŔķi;
    • Notika pirmā avota kodu migrācijas veikÅ”anai izveidotās darba grupas sanāksme no centralizētās pirmkoda pārvaldÄ«bas sistēmas Subversion uz decentralizēto sistēmu Git. Diskusija par migrācijas piemērotÄ«bu joprojām turpinās, un vēl ir jāizlemj par daudziem jautājumiem (piemēram, kā rÄ«koties ar contrib/, vai reÄ£enerēt jaucējfailus paÅ”reizējā git repozitorijā un kā vislabāk Ä«stenot commit testÄ“Å”anu);
    • No NetBSD pārnests KCSAN (Kernel Concurrency Sanitizer) rÄ«kkopa, kas ļauj noteikt sacensÄ«bu apstākļu raÅ”anos starp kodola pavedieniem, kas darbojas dažādos CPU;
    • Notiek darbs, lai izmantotu Clang iebÅ«vēto montētāju (IAS), nevis montētāju no GNU binutils;
    • Linux vides emulācijas infrastruktÅ«ra (Linuxulator) ir pielāgota darbam ar ARM64 arhitektÅ«ru. Sistēmas izsaukums "renameat2" ir ieviests. UtilÄ«ta strace ir uzlabota, lai diagnosticētu problēmas Linux izpildāmajos failos, kas darbojas programmā Linuxulator. Novērsta avārija, saistot izpildāmos failus ar jaunu glibc. Porti ar Linux komponentiem Linuxulatoram atjaunināti uz CentOS 7.7;
    • Programmas Google Summer of Code ietvaros studenti veiksmÄ«gi pabeidza seÅ”us projektus: tika sagatavota vienotas (IPv4 / IPv6) ping utilÄ«ta ievieÅ”ana, izstrādāti rÄ«ki ugunsmÅ«ru testÄ“Å”anai un kodola kļūdu noteikÅ”anai (Kernel sanitizer), mac_ipacl. tika piedāvāts modulis, un tika uzrakstÄ«ts kods, lai saspiestu virtuālo atmiņu, un ir veikts darbs, lai nodalÄ«tu portu veidoÅ”anas procesu no vietējās instalācijas;
    • Projekts FreeBSD kodola izplÅ«des pārbaudei, izmantojot sistēmu syzkaller. Pārskata periodā ar syzkaller palÄ«dzÄ«bu tika konstatētas un novērstas vairāk nekā desmit kļūdas. Lai palaistu syzkaller virtuālajās maŔīnās, kuru pamatā ir bhyve, tiek pieŔķirts atseviŔķs serveris un tiek izmantots
      syzbot pārbauda dažādas FreeBSD apakÅ”sistēmas Google infrastruktÅ«rā. Informācijas par visām avārijām pārsÅ«tÄ«Å”ana uz backtrace.io pakalpojumu ir organizēta, lai vienkārÅ”otu to grupÄ“Å”anu un analÄ«zi;

    • Notiek darbs pie zlib ievieÅ”anas atjaunināŔanas kodola lÄ«menÄ«.
      Ar saspieÅ”anu saistÄ«tais kods ir pārvietots no zlib 1.0.4, kas tika izlaists pirms vairāk nekā 20 gadiem, uz paÅ”reizējo zlib 1.2.11 kodu bāzi. Kompresijas, saspieÅ”anas2 un atspieÅ”anas funkcijas ir pievienotas kodolam, lai vienotu piekļuvi zlib. Kods, kas nodroÅ”ina PPP protokolu no netgraph apakÅ”sistēmas, ir pārslēgts, lai izmantotu zlib sistēmas ievieÅ”anu, nevis Ŕīs bibliotēkas vietējo izdevumu. ApakÅ”sistēmas kern_ctf.c, opencryptodflate, geom_uzip, subr_compressor,
      if_mxge, bxe atjaunināts un ng_deflate;

    • Tiek izstrādāta jauna kodola saskarne sysctlinfo, kas ļauj atrast elementus sysctl parametru bāzē, kas apstrādāts MIB (Management Information Base) formā, un pārsÅ«tÄ«t informāciju par objektiem uz lietotāja telpu.
  • DroŔība
    • Izstrādāts kodola modulis mac_ipacl, pamatojoties uz TrustedBSD MAC Framework un ievieÅ”ot piekļuves kontroles sistēmu tÄ«kla steka iestatÄ«jumiem cietuma vidēm. Piemēram, izmantojot mac_ipacl, resursdatora sistēmas administrators var neļaut root lietotājam cietuma vidē mainÄ«t vai iestatÄ«t IP adreses vai apakÅ”tÄ«kla iestatÄ«jumus noteiktām tÄ«kla saskarnēm. Ierosinātā obligātās piekļuves kontroles sistēma pieļauj iestatÄ«t cietumā atļauto IP adreÅ”u un apakÅ”tÄ«klu sarakstus, aizliegt noteiktu IP un apakÅ”tÄ«klu instalÄ“Å”anu cietumā vai ierobežot parametru izmaiņas tikai noteiktām tÄ«kla saskarnēm;
    • Intel projektam pieŔķīra programmatÅ«ras steka portu TPM 2.0 (Uzticamas platformas modulis) mijiedarbÄ«bai ar droÅ”o skaitļoÅ”anas mikroshēmu, ko parasti izmanto pārbaudÄ«tai programmaparatÅ«ras un OS sāknÄ“Å”anas ielādētāja palaiÅ”anai. Stack komponenti tiek nodroÅ”ināti kā securtity/tpm2-tss, security/tpm2-tools un security/tpm2-abrmd porti. Portā tpm2-tss ir iekļautas bibliotēkas TPM2 API izmantoÅ”anai, tpm2-tools nodroÅ”ina komandrindas utilÄ«tas TPM darbÄ«bu veikÅ”anai, un tpm2-abrmd satur fona procesu, kas ievieÅ” TPM Access Broker un Resource Manager komponentus, kas multipleksē pieprasÄ«jumus no dažādiem TPM. lietotājiem vienā ierÄ«cē. Papildus verificētajai sāknÄ“Å”anai uz FreeBSD, TPM var izmantot, lai uzlabotu Strongswan IPsec, SSH un TLS droŔību, veicot kriptogrāfijas darbÄ«bas atseviŔķā mikroshēmā;
    • Kodols amd64 arhitektÅ«rai ir pielāgots ielādei, izmantojot W^X (write XOR execute) aizsardzÄ«bas paņēmienu, kas nozÄ«mē, ka atmiņas lapas nevar vienlaikus bÅ«t pieejamas rakstÄ«Å”anai un izpildei (kodolu tagad var ielādēt, izmantojot izpildāmās atmiņas lapas, kurām rakstÄ«Å”ana ir atspējota). Jaunā kodola aizsardzÄ«bas metode ir iekļauta HEAD filiālē un bÅ«s daļa no FreeBSD 13.0 un 12.2 laidieniem;
    • MMAp un mprotect sistēmas zvaniem Ä«stenota PROT_MAX() makro, kas ļauj noteikt piekļuves ierobežojumu karogu kopu (PROT_READ, PROT_WRITE, PROT_EXEC), kas ir derÄ«ga turpmākām izmaiņām. Izmantojot PROT_MAX(), izstrādātājs var aizliegt atmiņas apgabala pārsÅ«tÄ«Å”anu uz izpildāmo kategoriju vai pieprasÄ«t atmiņu, kas neļauj izpildÄ«t, bet vēlāk var tikt pārsÅ«tÄ«ta uz izpildāmo failu. Piemēram, atmiņas apgabals var bÅ«t atvērts rakstÄ«Å”anai tikai uz dinamiskās saistÄ«Å”anas vai JIT koda Ä£enerÄ“Å”anas laiku, bet pēc rakstÄ«Å”anas pabeigÅ”anas tas ir ierobežots tikai ar lasÄ«Å”anu un izpildi, kā arÄ« turpmāk kompromisa gadÄ«jumā. , uzbrucējs nevarēs atļaut rakstÄ«t Å”im atmiņas blokam. Papildus PROT_MAX() ir ieviests arÄ« sysctl vm.imply_prot_max, kas, aktivizējot, nosaka derÄ«go karogu kopu, pamatojoties uz pirmā mmap izsaukuma sākotnējiem parametriem;
    • Lai stiprinātu aizsardzÄ«bu pret ievainojamÄ«bu izmantoÅ”anu, papildus adreÅ”u telpas nejauÅ”ināŔanas (ASLR) tehnikai tiek piedāvāts mehānisms, lai nejauÅ”i izvēlētos norādes, kas adresē sākotnējo steka rāmi un struktÅ«ras, kas atrodas uz steka ar informāciju par vidi, programmas palaiÅ”anas parametriem, un dati izpildāmiem attēliem ELF formātā;
    • Ir veikts darbs, lai no libc noņemtu nedroÅ”o izņemÅ”anas funkciju (sākot ar C11 standartu, Ŕī funkcija ir izslēgta no specifikācijas) un izlabotu portus, kas joprojām izmanto Å”o funkciju. Izmaiņas plānots piedāvāt FreeBSD 13.0 versijā;
    • Tika uzsākts izmēģinājuma projekts, lai izveidotu rÄ«kus cietuma vides organizÄ“Å”anai, pamatojoties uz sistēmu var attēlu izveidei un eksportÄ“Å”anai, kas ieviests lÄ«dzÄ«gi kā Docker, un draiveri nomadu, kas nodroÅ”ina saskarni dinamiskai lietojumprogrammu palaiÅ”anai cietuma vidē. Piedāvātais modelis ļauj nodalÄ«t cietuma vides veidoÅ”anas un lietojumprogrammu izvietoÅ”anas procesus tajās. Viens no projekta mērÄ·iem ir nodroÅ”ināt lÄ«dzekļus, lai manipulētu ar cietumiem, piemēram, Docker stila konteineriem;
  • UzglabāŔanas un failu sistēmas
    • No NetBSD lÄ«dz utilÄ«tai "makefs". pārplānots atbalsts FAT failu sistēmai (msdosfs). Sagatavotās izmaiņas ļauj izveidot FS attēlus ar FAT, neizmantojot md draiveri un bez root tiesÄ«bām;
    • Pārstrādāts FUSE (File system in USERspace) apakÅ”sistēmas draiveris, kas ļauj izveidot failu sistēmu implementācijas lietotāja telpā. Sākotnēji piegādātajā draiverÄ« bija daudz kļūdu, un tas bija balstÄ«ts uz FUSE 7.8, kas tika izlaists pirms 11 gadiem. Draivera modernizācijas projekta ietvaros tika ieviests FUSE 7.23 protokola atbalsts, pievienots kods atļauju pārbaudei kodola pusē ("-o default_permissions"), pievienoti VOP_MKNOD, VOP_BMAP un VOP_ADVLOCK izsaukumi, iespēja pārtraukt FUSE darbÄ«bas. pievienots, pievienots atbalsts beznosaukumiem caurulēm un unix ligzdām droÅ”inātājiem, kļuva iespējams izmantot kqueue priekÅ” /dev/fuse, tika atļauta mount parametru atjaunināŔana caur "mount -u", tika pievienots atbalsts droÅ”inātāju eksportÄ“Å”anai caur NFS, tika veikta RLIMIT_FSIZE uzskaite ieviests, tika pievienoti karodziņi FOPEN_KEEP_CACHE un FUSE_ASYNC_READ, veiktas bÅ«tiskas veiktspējas optimizācijas un uzlabota keÅ”atmiņas organizācija. Jaunais draiveris ir iekļauts galvenajā un stabilajā/12 filiālēs (iekļauts FreeBSD 12.1);
    • NFSv4.2 ievieÅ”ana (RFC-7862) FreeBSD ir gandrÄ«z pabeigta. Pārskata periodā galvenā uzmanÄ«ba tika pievērsta testÄ“Å”anai. SaderÄ«bas testi ar Linux ievieÅ”anu ir pabeigti, bet pNFS servera testÄ“Å”ana ar NFSv4.2 joprojām turpinās. VispārÄ«gi runājot, kods jau tiek uzskatÄ«ts par gatavu integrācijai FreeBSD galvenajās/paÅ”reizējās filiālēs. Jaunā NFS versija pievieno atbalstu posix_fadvise, posix_fallocate, SEEKHOLE/SEEKDATA režīmiem lseek, faila daļu lokālai kopÄ“Å”anai serverÄ« (bez pārsÅ«tÄ«Å”anas uz klientu);
  • AparatÅ«ras atbalsts
    • Uzsācis projektu, lai uzlabotu FreeBSD klēpjdatoros. Pirmā ierÄ«ce, kas tika pārbaudÄ«ta attiecÄ«bā uz aparatÅ«ras atbalstu FreeBSD, bija septÄ«tās paaudzes Lenovo X1 Carbon klēpjdators;
    • CheriBSD, FreeBSD dakÅ”a pētniecÄ«bas procesoru arhitektÅ«rai ČERI (Capability Hardware Enhanced RISC Instructions), atjaunināts, lai atbalstÄ«tu gaidāmo ARM Morello procesoru, kas atbalstÄ«s CHERI atmiņas piekļuves kontroles sistēmu, kuras pamatā ir Capsicum droŔības modelis. Morello čips plāno izlaidums 2021. gadā. CheriBSD izstrādātāji arÄ« turpina uzraudzÄ«t CHERI atsauces prototipa izstrādi, pamatojoties uz MIPS arhitektÅ«ru;
    • PaplaÅ”ināts atbalsts RockChip RK3399 mikroshēmām, ko izmanto RockPro64 un NanoPC-T4 plates. BÅ«tiskākais uzlabojums bija eMMC atbalsts un jauna draivera izstrāde dēlÄ« izmantotajam eMMC kontrollerim;
    • Turpinājās darbs pie atbalsta ievieÅ”anas ARM64 SoC Broadcom BCM5871X ar ARMv8 Cortex-A57 procesoriem, kas paredzēti lietoÅ”anai marÅ”rutētājos, vārtejās un NAS. Pārskata periodā
      paplaÅ”ināts iProc PCIe atbalsts un pievienota iespēja izmantot aparatÅ«ras kriptogrāfijas darbÄ«bas, lai paātrinātu IPsec.
      Ceturtajā ceturksnī gaidāma koda integrācija HEAD filiālē;

    • Ievērojams progress ir panākts FreeBSD porta izstrādē powerpc64 platformai. Galvenā uzmanÄ«ba tiek pievērsta kvalitatÄ«vas veiktspējas nodroÅ”ināŔanai sistēmās ar IBM POWER8 un POWER9 procesoriem, taču to pēc izvēles atbalsta arÄ« vecāki Apple Power Mac, x500 un Amiga A1222. Powerpc*/12 filiāle turpina piegādāt ar gcc 4.2.1, un powerpc*/13 filiāle drÄ«z tiks migrēta uz llvm90. No 33306 portiem 30514 ir veiksmÄ«gi samontēti;
    • FreeBSD pārneÅ”ana uz NXP LS64A 1046 bitu SoC, kuras pamatā ir ARMv8 Cortex-A72 procesors ar integrētu tÄ«kla pakeÅ”u apstrādes paātrinājuma dzinēju, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 un USB 3.0. Pārskata periodā tika ieviests USB 3.0, SD / MMC, I2C, DPAA tÄ«kla interfeisa un GPIO atbalsts. Mēs plānojam atbalstÄ«t QSPI un optimizēt tÄ«kla interfeisa veiktspēju. PabeigÅ”ana un iekļauÅ”ana HEAD filiālē ir paredzēta 4. gada 2019. ceturksnÄ«;
    • Ena draiveris ir atjaunināts, lai atbalstÄ«tu otrās paaudzes ENAv2 (ElastÄ«gais tÄ«kla adapteris) tÄ«kla adapterus, ko izmanto Elastic Compute Cloud (EC2) infrastruktÅ«rā, lai organizētu komunikāciju starp EC2 mezgliem ar ātrumu lÄ«dz 25 Gb/s. Pievienots un pārbaudÄ«ts NETMAP atbalsts ena draiverim un pielāgots atmiņas izkārtojums, lai iespējotu LLQ režīmu Amazon EC2 A1 vidēs;
  • Lietojumprogrammas un portu sistēma
    • Atjaunināti grafikas steka komponenti un porti, kas saistÄ«ti ar xorg. Porti, kas izmanto USE_XORG un XORG_CAT, ir migrēti uz USES sistēmu, nevis izsauc bsd.xorg.mk, izmantojot bsd.port.mk. Šādi porti tagad savos makefailos ietver karogu "USES=xorg". XORG_CAT funkcionalitāte ir izvilkta no vietnes bsd.xorg.mk un tagad ir iespējota ar karogu "USES=xorg-cat". Pievienoti rÄ«ki tieÅ”ai xorg portu Ä£enerÄ“Å”anai no git repozitorija
      freedesktop.org, kas, piemēram, ļauj Ä£enerēt portus versijām, kas vēl nav izlaistas. Nākotnē ir plānots sagatavot rÄ«ku komplektu, lai xorg portu veidoÅ”anai izmantotu meson build sistēmu, nevis autotools.

      Ir veikts darbs, lai notīrītu vecos xorg portus, kas saistīti ar komponentiem, kuri vairs netiek atbalstīti, piemēram, noņemts x11/libXp ports un novecojis x11/Xxf86misc, x11-fonts/libXfontcache un grafikas/libGLw porti;

    • Ir veikts darbs, lai uzlabotu Java 11 un jaunāku versiju atbalstu FreeBSD un pārnestu dažas izmaiņas Java 8 filiālē. KopÅ” FreeBSD ir ieviesis atbalstu jaunām Java 11 funkcijām, piemēram, Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, DTrace, Javac Server, Java Sound un SCTP, darbs ir pārcelts uz visu saderÄ«bas testu izturÄ“Å”anu. Kļūmju skaits, nokārtojot testus, ir samazināts no 50 uz 2;
    • KDE Plasma darbvirsma, KDE Frameworks, KDE lietojumprogrammas un Qt tiek atjauninātas un atjauninātas lÄ«dz jaunākajām versijām;
    • Porti ar Xfce desktop ir atjaunināti, lai atbrÄ«votu 4.14;
    • FreeBSD portu koks ir izturējis 38000 2000 portu pagrieziena punktu, atvērto PR skaits ir nedaudz virs 400, no kuriem 7340 PR joprojām ir neapstiprināti. Pārskata periodā 169 izmaiņas veikuÅ”i 1.12 izstrādātāji. Divi jauni dalÄ«bnieki (Santhosh Raju un Dmitri Goutnik) ieguva apņemÅ”anās tiesÄ«bas. Ir publicēts jauns pkg 2.0.4 pakotņu pārvaldnieka laidiens ar atbalstu pārklājumiem portu kokā un bsd.sites.mk tÄ«rÄ«Å”anu. NozÄ«mÄ«gie portu versiju atjauninājumi ietver: Lazarus 9.0, LLVM 5.30, Perl11, PostgreSQL 2.6, Ruby 69.0.1, Firefox 68.1.0, Firefox-esr 76.0, Chromium XNUMX;
    • Projekta attÄ«stÄ«ba turpinās ClonOS, attÄ«stot specializēts izplatÄ«Å”anas komplekts virtuālā servera infrastruktÅ«ras izvietoÅ”anai. Atrisināmo uzdevumu ziņā ClonOS atgādina tādas sistēmas kā Proxmox, Triton (Joyent), OpenStack, OpenNebula un Amazon AWS, no kurām galvenā atŔķirÄ«ba ir FreeBSD izmantoÅ”ana un iespēja pārvaldÄ«t, izvietot un pārvaldÄ«t FreeBSD Jail konteinerus un virtuālās vides, kuru pamatā ir Bhyve un Xen hipervizori. No nesenajām izmaiņām ir atbalsts
      cloud-init operētājsistēmai Linux/BSD VM un cloudbase-init operētājsistēmai Windows VM, pārejas sākums uz vietējiem attēliem, Jenkins CI izmantoÅ”ana bÅ«vÄ“Å”anas testÄ“Å”anai un jauna pkg repozitorija instalÄ“Å”anai
      ClonOS no pakotnēm.

Avots: opennet.ru

Pievieno komentāru