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.