Отчёт о развитии FreeBSD за третий квартал 2019 года

Հրապարակվել FreeBSD նախագծի զարգացման հաշվետվություն 2019 թվականի հուլիսից սեպտեմբեր: Դրանք ընդգրկում են փոփոխություններ.

  • Ընդհանուր և համակարգային հարցեր
    • Core թիմը ընդհանուր առմամբ հավանություն տվեց BSD լիցենզիայի տակ տրամադրված կոդի համակարգում ներառման հնարավորությանը, որը օգտագործում է արտոնագրման հավելված (BSD+Patent), սակայն որոշումն յուրաքանչյուր բաղադրիչի համակարգում ներառման վերաբերյալ պետք է դրվի առանձին հաստատման:
    • Հանդիպել է աշխատանքային խմբի առաջին նստաշրջանը, որը ստեղծվել է Subversion կենտրոնացված աղբյուրի կառավարման համակարգից միգրացիայի իրականացման համար դեպի Git դեցենտրալիզացված համակարգ: Միգրացիայի նպատակահարմարության վերաբերյալ քննարկումները շարունակվում են, և բազմաթիվ հարցերի շուրջ դեռ պետք է մշակվեն լուծումներ (օրինակ, ինչպես վարվել contrib-ի հետ, անհրաժեշտ է արդյոք վերագնել ներկայիս git-հավաքածուների հեշերը և ինչպես լավագույնս իրականացնել կոմիտների փորձարկումը):
    • NetBSD-ից փոխանակվել է KCSAN (Kernel Concurrency Sanitizer) գործիքակազմ, որ թույլ է տալիս հայտնաբերել մթն状态ի առաջացումը տարբեր CPU-ներին աշխատող kernel թեքերի միջև:
    • Կատարում է աշխատանք Clang-ում ներկառուցված ասամբլերի (IAS) օգտագործման ուղղությամբ՝ փոխարինելու համար GNU binutils-ի ասամբլերին:
    • Linux միջավայրի էմուլացիայի ենթակառուցվածը (Linuxulator) հարմարեցված է ARM64 ճարտարապետության համար: Ներդրվել է 'renameat2' համակարգային կանչը: Strace օգտահաշիվը բարելավված է Linux-ում գործարկվող հաղորդագրությունների խնդիրների диагностиիկայի համար, որոնք աշխատում են Linuxulator-ում: Բարեփոխված են նորընթաց glibc-ի հետ կապված հաշմանդամությունների հետ կապված խնդիրները: Linux-պահեստները Linuxulator-ի համար թարմացվել են CentOS 7.7-ի համար:
    • Google Summer of Code ծրագրի շրջանակներում ուսանողները հաջողությամբ կատարեցին վեց նախագիծ. մշակվել է միատարր (IPv4/IPv6) ping գործիք, ստեղծվել են թեստավորման գործիքներ firewall-ների և kernel (Kernel sanitizer) մեջ սխալների հայտնաբերման համար, առաջարկվել է mac_ipacl մոդուլ, লেখা է կոդ վիրտուալ հիշողություն սեղմելու համար, և աշխատանք է կատարվել ժամանակավոր շինարարական գործընթացը բաժանելու հարցում տեղական տեղում:
    • FreeBSD kernel-ի ֆուզզինգ-թեստավորման նախագիծը շարունակվում է օգտագործելով syzkaller. Դրանք հաշվետու ժամանակահատվածում syzkaller-ի միջոցով հայտնաբերվել և აღმացված են ավելի քան տասը սխալներ: Syzkaller-ը աշխատելու համար bhyve-ի վրա կառուցված վիրտուալ մեքենաներում առանձնացվել է հատուկ սերվեր, իսկ
      syzbot-ի միջոցով հաստատվել է FreeBSD-ի տարբեր ենթահամակարգերի ստուգումը Google-ի ենթակառուցվածքում: Կազմակերպվել է բոլոր փլուզումների մասին տեղեկատվության փոխանցումը backtrace.io ծառայություն, որպեսզի պարզեցնել դրանց խմբավորումը և վերլուծությունը:
    • Կատարում է աշխատանք zlib-ի իրականացումը կորիզի մակարդակով թարմացնելու ուղղությամբ.
      Կոդը, որը կապված է սեղման, ներառված է zlib 1.0.4-ից, որը հրապարակվել է ավելի քան 20 տարի առաջ, արդիական կոդային բազա zlib 1.2.11-ի վրա: zlib-ին մուտք ունենալու համար արմատում ավելացվել են compress, compress2 և uncompress ֆունկցիաները: PPP պրոտոկոլի աշխատանքը ապահովող կոդը netgraph ենթահամակարգից փոխադրվել է համակարգի zlib իրականացման օգտագործման համար, փոխարենը այս գրադարանի սեփական խմբագրմանն: Նոր zlib-ի վրա են փոխադրվել kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor ենթահամակարգերը,
      if_mxge, bxe updated և ng_deflate;
    • Նոր ядրի ինտերֆեյս է զարգանում sysctlinfo, որը թույլ է տալիս գտնել sysctl պարամետրերի շտեմարանում գտնվող տարրեր, որոնք վերամշակվում են MIB (Management Information Base) ձևով, և փոխանցել տվյալներ այլ օբյեկտների մասին օգտվողի տարածք։
  • Ապահովություն
    • Ավտոմատ կերպով մշակվել է ядրի մոդուլ, mac_ipacl, որը հիմնված է TrustedBSD MAC Framework-ի վրա և իրականացնում է հասանելիության կառավարման համակարգի կարգադիր сетевого стек-ի համար jail-պաշտպանական միջավայրերի: Օրինակ, mac_ipacl-ի միջոցով հյուրընկալող համակարգի ադմինիստրատորը կարող է արգելել root օգտագործողին jail-պաշտպանական միջավայրում IP հասցեներն փոփոխել կամ սահմանել որոշակի ցանցային ինտերֆեյսների համար ենթաբաժնի պարամետրերը: Առաջարկված մանդատային հասանելիության կառավարման համակարգը թույլ է տալիս հնարավոր է սահմանել IP հասցեների և ցանցերի ցանկեր, որոնք թույլատրվում են Jail-ում, արգելել որոշ IP և ցանցերի տեղադրումը Jail-ում կամ սահմանափակել պարամետրերի փոփոխությունը միայն որոշակի ցանցային ինտերֆեյսների համար;
    • Intel ընկերությունը նախագծին փոխանցել է ծրագրային տեսականի պորտը, TPM 2.0 (Trusted Platform Module) համար անվտանգ հաշվարկների իրականացմանը, որը սովորաբար օգտագործվում է միկրոպահելու միկրոնների և գործառնական համակարգերի համար հաստատված բեռնման համար: Ստեկի բաղադրիչները ներկայացված են securtity/tpm2-tss, security/tpm2-tools և security/tpm2-abrmd պորտերի ձևով: tpm2-tss պորտը ներառում է TPM2 API-ի օգտագործելու գրադարաններ, tpm2-tools-ը տրամադրում է հրամանակների գործիքներ TPM գործողություններ իրականացնելու, իսկ tpm2-abrmd-ը պարունակում է ֆոնային գործընթացը, որը իրականացնում է TPM Access Broker և Resource Manager բաղադրիչները, որոնք մուլտիպլեքսում են օգտվողների TPM դիմումները մեկ սարքի: Բացի հաստատված բեռնման, FreeBSD-ում TPM-ն կարող է օգտագործվել Strongswan IPsec, SSH և TLS անվտանգության ուժեղացմամբ՝ զուգահեռ ֆոնային միկրոդիտումների միջոցով, որոնք կատարվում են առանձին միկրոշովին;
    • amd64 ճարտարապետության համար նոր Kern-ն ադապտացվել է W^X (write XOR execute) տեխնիկայի օգտագործմամբ, որը ենթադրում է, որ հիշողության էջերը չեն կարող միաժամանակ հասանելի լինել գրելու և կատարելու համար (կորն այժմ կարող է բեռնվել իրականացվող հիշողության էջերով, որոնց համար մերժված է գրությունը): Նոր պաշտպանության մեթոդը ներառված է HEAD ճյուղում և կմտնի FreeBSD 13.0 և 12.2 տարբերակների կազմ բաղադրամասում;
    • Համակարգային կանչերի համար mmap և mprotect իրագործված է PROT_MAX() մակրոն, որը թույլ է տալիս սահմանել թույլատրելի սահմանափակման դրոշները (PROT_READ, PROT_WRITE, PROT_EXEC) հետագա փոփոխման դեպքում: PROT_MAX() օգտագործելով, մայներն կարող են արգելել հիշողության տարածքի փոխանցումը իրականացման կատեգորիա կամ հարցնել այդ հիշողությունը, որը չի թույլանում իրականացման, բայց հետագայում կարող է փոխանցվել իրականացման: Օրինակ, հիշողության տարածքը կարող է բացվել գրել միայն ժամանակավոր դինամիկ կապման կամ JIT ծածկագրի ստեղծման ժամանակ, բայց գրել ավարտվելուց հետո սահմանափակվում միայն ընթերցման և իրականացման հանուն, և հետագայում, եթե հետագայում կոմպրոմետի դեպքում, հարձակվողը չի կարող թույլատրել գրելը տվյալ հիշողության բլոկի համար: PROT_MAX()-ին ավելին, ևս իրականացվել է sysctl vm.imply_prot_max, որը ակտիվացման դեպքում թույլատրելի դրոշների հավաքի սահմանվում է mmap-ի առաջին զանգվածի սկզբնական պարամետրերով:
    • Ուժեղացման անվտանգության պաշտպանություններից exploitation-ի բարդություններից, հասցնելով հասցեային տարածքի (ASLR) տեխնիկայի բացի, առաջարկվել է ուղղակի նկարագրությունների անհավասարեցման մեխանիզմ, որը հասցնում է սկսնակ դատարկակետերի և ցուցաթերթային կառուցվածքների, որոնք պատկանում են միջավայրի տեղեկությունների, ծրագրի մեկնարկային պարամետրերի և ELF ձևաչափով իրականացվող նկարների տվյալների:
    • Շրջապատված աշխատանք է կատարվել ազգային unsafe ֆունկցիայի `gets` հեռացնելուց libc-ից (C11 ստանդարտից սկսած, այդ ֆունկցիան դուրս է գրվել բնորոշից) և կարգավորում տոկոսների, որոնք դեռ օգտագործվում են այդ ֆունկցիան: Հարկավոր է փոփոխությունը առաջարկել FreeBSD 13.0-ում:
    • Հայտարարվել է փորձնական նախագիծ jail-վենդորների ստեղծման միջոցների ստեղծման համար, հիմնված շրջանակի վրա pot էլ Թոքներու, որը կայանում է Docker-ի նմանությամբ, և ղեկավար nomad, որը մատակարարում է դինամիկ հավելվածների գործարկման միջերես jail-վերացիր պատվիրանակում: Առաջարկված մոդելը թույլ է տալիս բաժանել jailed-Վենդորների ստեղծման գործընթացները և դրանց մեջ հավելվածների տեղադրումը: Նախագծի նպատակներից մեկն է ծրագրավորել միջոցներ, որպեսզի jail-երը վարումների նման նմանվեն Docker-ի տարատեսակներին:
  • Շրջանային պահեստային համակարգեր և ֆայլային համակարգեր
    • NetBSD-ից «makefs» տիրույթին նվիրաբերվել է FAT (msdosfs) ֆայլային համակարգի աջակցությունը: Պատրաստված փոփոխությունները թույլ են տալիս ստեղծել FAT FS-imaje առանց md տիրողի և արքաների պատվավորությունների օգտագործման:
    • FUSE (File system in USErspace) ենթակարգի վարորդի վերամշակումը ավարտվել է, որը թույլ է տալիս ստեղծել ֆայլային համակարգերի իրականացումներ օգտվողի տարածքում: Ծրագրի սկզբնական վարորդն ուներ բազմաթիվ սխալներ և հիմնված էր 11 տարի առաջ թողարկված FUSE 7.8 տարբերակի վրա: Վարորդի արդիականացման նախագծի շրջանակներում իրականացվել է FUSE 7.23 պրոտոկոլի աջակցություն, ավելացվել է մուտքի իրավունքների ստուգման կոդը միջուկի կողմում («-o default_permissions»), ավելացվել են VOP_MKNOD, VOP_BMAP և VOP_ADVLOCK կանչեր, ապահովվել է FUSE գործողությունների ընդհատման հնարավորություն, ավելացվել է անանուն խողովակների և unix-sockets-ի աջակցություն fusefs-ում, հնարավորություն է դարձել օգտագործել kqueue `/dev/fuse`-ի համար, թույլատրվել է մոնտաժման պարամետրերի թարմացումը «mount -u» բանի միջոցով, ավելացվել է fusefs-ի արտահանման աջակցություն NFS-ի միջոցով, իրականացվել է RLIMIT_FSIZE-ի հաշվի առնում, ավելացվել են FOPEN_KEEP_CACHE և FUSE_ASYNC_READ դրոշներ, կատարվել են նշանակալի կատարողական օպտիմիզացիաներ և բարելավվել է缓存ավորման կազմակերպումը: Նոր վարորդը ներառված է head և stable/12 ճյուղերում (անցել է FreeBSD 12.1);
    • nearly completed the implementation of NFSv4.2 (RFC-7862) for FreeBSD. During this reporting period, significant attention was given to testing. Compatibility tests with the implementation from Linux have been completed, but server pNFS with NFSv4.2 is still undergoing testing. The code is generally considered ready for integration into FreeBSD head/current branches. The new version of NFS has added support for posix_fadvise, posix_fallocate functions, SEEKHOLE/SEEKDATA modes in lseek, and operations for locally copying parts of a file on the server (without transferring to the client);
  • Հասանելիություն սարքավորումների
    • Սկսվել է FreeBSD-ի բարելավման նախագիծ նոութբուքներում: Առաջին սարքը, որի համար կատարվել է սարքերի աջակցման աուդիտ FreeBSD-ում, դարձել է Lenovo X1 Carbon յոթերորդ սերնդի նոութբուքը;
    • CheriBSD, FreeBSD-ի ճյուղ է հետազոտական պրոցեսորային վարկանիշի համար, CHERI (Capability Hardware Enhanced RISC Instructions), թարմացվել է ARM Morello ապագա պրոցեսորի աջակցության համար, որը կաջակցի հիշողության հասանելիության կառավարման CHERI համակարգին, հիմնված Capsicum նախագծի պաշտպանության մոդելի վրա: Morello պրոցեսորը պլանավորում է է թողարկվելու 2021 թվականին: CheriBSD-ի ծրագրավորողները շարունակաբար հետևում են CHERI ստանդարտ պրոտոտիպի զարգացմանը, MIPS ճարտարապետության հիման վրա;
    • RockChip RK3399 չիպերի աջակցությունը երկարաձգվել է, որոնք օգտագործվում են RockPro64 և NanoPC-T4 բլոկների մեջ: Ամենակարևոր բարելավումը eMMC-ի աջակցությունն էր և գրատախտակի մեջ օգտագործվող eMMC վերահսկիչի նոր վարորդի զարգացումը;
    • Շարունակվել է Broadcom BCM5871X ARM64 SoC-ի աջակցություն, ARMv8 Cortex-A57 պրոցեսորներով, որոնք նախատեսված են ռոուտերներում, գեյթներում և ցանցային պահեստներում օգտագործման համար: Ապահովվել է
      iProc PCIe-ի աջակցությունը և IPsec աշխատանքի արագացման համար կոդի ինտեգրում ավելացված ամպային կրիպտոգրաֆիկ գործողությունների բացակայությունը:
      HEAD ճյուղում կոդի ինտեգրումը սպասվում է չորրորդ եռամսյակում;
    • Զգալի առաջընթաց է նկատվել FreeBSD-ի powerpc64 հարթակի համար մշակման գործում: Կենտրոնական ուշադրությունը կենտրոնացած է IBM POWER8 և POWER9 պրոցեսորների վրա որակյալ աշխատանքը ապահովելու ուղղությամբ, սակայն օպցիոնալ աջակցություն են ստանում նաև հին Apple Power Mac, x500 և Amiga A1222 համակարգերը: powerpc*/12 ճյուղը շարունակում է տրամադրվել gcc 4.2.1-ով, եւ powerpc*/13 ճյուղը շուտով կփոխադրված լինի llvm90-ին: 33306 պորտերից հաջողությամբ հավաքվում է 30514;
    • FreeBSD-ի 64-բիթանոց NXP LS1046A SoC-ի ARMv8 Cortex-A72 պրոցեսորի վրա իրականացվող պորտաներն շարունակվում են, որը ներառում է ցանցային փաթեթների մշակման արագացման շարժիչ, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 և USB 3.0: Ընդհանուր հաշվետու ժամանակահատվածում իրականացվել է USB 3.0, SD/MMC, I2C, DPAA ցանցային ինտերֆեյսի և GPIO-ի աջակցություն: Նպատակ է ունենալ QSPI աջակցության հավանությունը և ցանցային ինտերֆեյսի կատարողականի օպտիմիզացում: Աշխատանքը ավարտելու և HEAD ճյուղում ներառելու ակնկալվում է 2019-ի 4-րդ եռամսյակում;
    • Ապահովվել է ena սարքի վարորդի արդիականացումը, որը վճարովի ENAv2 (Elastic Network Adapter) ցանցային ադապտերների երկրորդ սերնդի աջակցությամբ, որոնք օգտագործվում են Elastic Compute Cloud (EC2) ենթակառուցվածքում EC2 հանգույցների միջև կապի կազմակերպման համար՝ մինչև 25 Gb/s արագությամբ: ena շարք մտցվել է NETMAP-ի աջակցություն, ինչպես նաեւ հիշողության մակետը հարմարեցվում է LLQ ռեժիմի ընդգրկման համար Amazon EC2 A1 միջավայրերում;
  • FreeBSD պորտերի հավաքածուն անցել է 39 հազար պորտերի սահմանը, փակված PR-ների թիվը մի փոքր գերազանցում է 2400-ը, որոնցից 640 PR-ներ դեռ չեն վերլուծվել։ Նշված ժամանակահատվածում 8146 փոփոխություններ են կատարվել 173 մշակողի կողմից։ Չորս նոր մասնակից (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore) ստացել են կոմիտեի իրավունքներ։ Ավելացվել է USES=qca դրոշը և հեռացվել USES=zope դրոշը (Python 3-ի հետ անհամատեղելու պատճառով)։ Աշխատանքներ են կատարվում Python 2.7-ը պորտերի ծառից դուրս բերելու ուղղությամբ՝ Python 2-ին կապված բոլոր պորտերը պետք է տեղափոխվեն Python 3 կամ հեռացվեն։ pkg փաթեթային կառավարիչը թարմացվել է 1.13.2 թողարկմանը։
    • Թարմացվել են գրաֆիկական կույտի բաղադրիչները և xorg-ի հետ կապված պորտերը: USE_XORG և XORG_CAT օգտագործող պորտերը փոխվել են USES կառուցվածքի վրա, փոխարենը bsd.xorg.mk-ի միջոցով bsd.port.mk-ի զանգի: Սակայն նման պորտերը այժմ իրենց make-ֆայլերում ներառում են «USES=xorg» դրոշը: XORG_CAT-ի ֆունկցիան առանձնացված է bsd.xorg.mk-ից և այժմ ակտիվացվում է «USES=xorg-cat» դրոշի միջոցով: Ավելացվել է xorg պորտերի անմիջական ձևավորման համար գործիքակազմ, որը գիթ-ռեպոզիտորից;
      freedesktop.org, ինչը, օրինակ, թույլ է տալիս ձևավորել պորտեր դեռ հրատարակված տարբերակների համար: Ապագայում նախատեսվում է պատրաստել գործիքակազմ, որպեսզի օգտագործի meson հավաքման համակարգը ՝ autotools-ի փոխարեն՝ xorg պորտերի հավաքման համար:

      Խնամքով կատարվել է xorg-ի հին պորտերի մաքրում, որոնք կապված են աջակցությունը կորցրած բաղադրիչների հետ, օրինակ՝ հանվել է x11/libXp պորտը, իսկ x11/Xxf86misc, x11-fonts/libXfontcache և graphics/libGLw պորտերը տեղափոխվել են մաշվածների կատեգորիա;

    • Աշխատանք է կատարվել Java 11-ի և նոր տարբերակների մեծացրել աջակցման ուղղությամբ FreeBSD-ում, ինչպես նաև Java 8 ճյուղի որոշ փոփոխություններ պորտավորելու առումով: Երբ FreeBSD-ում իրականացվեց Java 11-ի նոր հնարավորությունների՝ Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger, DTrace, Javac Server, Java Sound և SCTP՝ աջակցությունը, աշխատանքը գնահատվել է համաձայնության բոլոր փորձարկումները անցնելու վրա: Փորձերի անցման սխալների թիվը նվազեցվել է 50-ից 2;
    • KDE Plasma, KDE Frameworks, KDE Applications և Qt աշխատասեղանի աջակցությունը պահվում է արդի վիճակում և թարմացվել է վերջին տարբերակներին;
    • Xfce աշխատասեղանի պորտերը թարմացվել են նոր տարբերակին 4.14;
    • FreeBSD-ի պորտերի ծառը գերազանցել է 38000 պորտերը, բաց PR-ների թիվը մի փոքր ավելի քիչ է 2000-ից, որոնցից 400 PR-ները դեռ անլուծված են։ Դիտարկվող ժամանակահատվածում կատարվել է 7340 փոփոխություն 169 զարգացողների կողմից։ Կոմիտերին իրավունքը ստացել է երկու նոր մասնակից (Santhosh Raju և Dmitri Goutnik)։ Ստեղծվել է pkg 1.12 փաթեթի կառավարման նոր թողարկում, որը աջակցում է օվերլեյներին պորտերի ծառում և bsd.sites.mk-ի մաքրումներ իրականացնելու։ Խոշոր տարբերակումներ են նշվում պորտերում՝ 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;
    • Թողարկվում է նախագծի զարգացումը ClonOS, ներսի զարգացող մասնագիտացված դիստրիբյուտիվ, որը նախատեսված է վիրտուալ սերվերների ենթակառուցվածքի ներդրման համար։ ClonOS-ը իր լուծվող խնդիրներով նմանակում է Proxmox, Triton (Joyent), OpenStack, OpenNebula և Amazon AWS համակարգերին, որի հիմնական տարբերությունը FreeBSD օգտագործելու և FreeBSD Jail-կոնտեյների կառավարման, ներդրման և վերահսկման հնարավորությունն է, ինչպես նաև Bhyve և Xen հիպերվիզորների հիման վրա վիրտուալ միջավայրերի կառավարման հնարավորությունը։ Երբևէ փոփոխություններից առանձնանում է՝
      cloud-init ի աջակցությունը Linux/BSD VM-ների և cloudbase-init-ի Windows VM-ների համար, սեփական պատկերների կիրարկման սկսել, Jenkins CI-ի օգտագործումը հավաքումներն ստուգելու համար, և նոր pkg-հայտարարագիր ClonOS-ի համար հիանալի հատկանիշներով։
      պիտակներից ստանալու համար ClonOS-ից։

Ընտանիք: opennet.ru

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster