FreeBSD-ի զարգացման հաշվետվություն 2020 թվականի առաջին եռամսյակի համար

հրապարակված զեկույց FreeBSD նախագծի զարգացման մասին 2020 թվականի հունվարից մարտ ամիսներին: Փոփոխությունների թվում կարող ենք նշել.

  • Ընդհանուր և համակարգային խնդիրներ
    • Հեռացրել է GCC կոմպիլյատորների հավաքածուն FreeBSD-CURRENT աղբյուրի ծառից, ինչպես նաև չօգտագործված gperf, gcov և gtc (devicetree compiler) կոմունալ ծառայությունները: Բոլոր հարթակները, որոնք չեն աջակցում Clang-ին, անցել են արտաքին կառուցման գործիքների, որոնք տեղադրված են նավահանգիստներից: Բազային համակարգը առաքեց GCC 4.2.1-ի հնացած թողարկումը, և ավելի նոր տարբերակների ինտեգրումը հնարավոր չեղավ 4.2.2-ի GPLv3 լիցենզիայի անցնելու պատճառով, որը համարվում էր անհամապատասխան FreeBSD բազային բաղադրիչների համար: GCC-ի ընթացիկ թողարկումները, ներառյալ GCC 9-ը, դեռ կարող են տեղադրվել փաթեթներից և նավահանգիստներից:
    • Linux միջավայրի էմուլյացիայի ենթակառուցվածքը (Linuxulator) ավելացրել է աջակցություն sendfile համակարգի զանգին, TCP_CORK ռեժիմին (պահանջվում է nginx-ի համար) և MAP_32BIT դրոշակին (լուծում է Ubuntu Bionic-ից Mono-ով փաթեթներ գործարկելու խնդիրը): DNS-ի լուծման հետ կապված խնդիրները 2.30-ից ավելի նոր՝ glibc-ի օգտագործման ժամանակ (օրինակ՝ CentOS 8-ից) լուծվել են:
      Շարունակական ինտեգրման ենթակառուցվածքը հնարավորություն է տալիս գործարկել Linuxulator-ով աշխատող LTP (Linux Testing Project) աշխատատեղերը՝ Linux-ին աջակցելու համար կոդի բարելավումները փորձարկելու համար: Մոտ 400 թեստեր ձախողվում են և պահանջում են ուղղում (որոշ սխալներ առաջանում են կեղծ պոզիտիվների պատճառով, ոմանք պահանջում են չնչին ուղղումներ, բայց կան ուրիշներ, որոնք պահանջում են նոր համակարգային զանգերի աջակցություն ավելացնելու համար): Աշխատանքներ են տարվել Linuxulator կոդը մաքրելու և վրիպազերծումը պարզեցնելու ուղղությամբ: Ընդլայնված ատրիբուտների և fexecve համակարգի կանչի աջակցությամբ պատչերը պատրաստվել են, բայց դեռ չեն վերանայվել:

    • Շարունակվում են ելակետային կոդերի տեղափոխումը կենտրոնացված աղբյուրի կառավարման համակարգից Subversion դեպի ապակենտրոնացված Git համակարգ իրականացնելու համար ստեղծված աշխատանքային խմբի հանդիպումները։ Միգրացիայի վերաբերյալ առաջարկներով զեկույցը պատրաստման փուլում է։
    • В rtld (runtime linker) բարելավվել է ուղղակի կատարման ռեժիմը (“/libexec/ld-elf.so.1 {path} {arguments}”):
    • Syzkaller համակարգի միջոցով FreeBSD միջուկի fuzzing փորձարկման նախագիծը շարունակում է զարգանալ: Հաշվետու ժամանակաշրջանում վերացվել են syzkaller-ի միջոցով հայտնաբերված ֆայլերի նկարագրիչ աղյուսակների հետ աշխատելու ցանցային կույտի և կոդի խնդիրները: Սխալների ախտորոշումից հետո փոփոխություններ են ավելացվել SCTP փաթեթում՝ վրիպազերծումը հեշտացնելու համար: Կանոններ են ավելացվել սթրեսի2 հավաքածուին՝ հնարավոր հետընթացները բացահայտելու համար: Ավելացվել է նոր համակարգային զանգերի fuzz փորձարկման աջակցություն, ներառյալ copy_file_range(), __realpathat() և Capsicum ենթահամակարգի զանգերը: Աշխատանքները շարունակվում են՝ ծածկելու Linux-ի էմուլացիոն շերտը fuzz թեստավորման միջոցով: Մենք վերլուծել և վերացրել ենք Coverity Scan-ի վերջին զեկույցներում նշված սխալները:
    • Շարունակական ինտեգրման համակարգը անցել է գլխի ճյուղի բոլոր թեստերի կատարմանը միայն clang/lld-ի միջոցով: RISC-V-ի համար փորձարկումների ժամանակ ապահովվում է սկավառակի ամբողջական պատկերի ձևավորում՝ OpenSBI-ի միջոցով QEMU-ում թեստերն իրականացնելու համար: Ավելացվեցին նոր առաջադրանքներ պատկերների և powerpc64 վիրտուալ մեքենաների փորձարկման համար (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm):
    • Աշխատանքներ են տարվում Kyua թեստային փաթեթը նավահանգիստներից (devel/kyua) տեղափոխելու համար բազային համակարգ՝ լուծելու այն խնդիրները (փաթեթները տեղադրվում են շատ դանդաղ), որոնք առաջանում են նոր ճարտարապետություններում Kyua-ի օգտագործման ժամանակ, որոնց մշակումն իրականացվում է էմուլյատորի կամ օգտագործմամբ։ FPGA. Բազային համակարգին ինտեգրումը զգալիորեն կհեշտացնի ներկառուցված հարթակների փորձարկումը և ինտերֆեյսը շարունակական ինտեգրման համակարգերի հետ:
    • Մեկնարկել է ցանցի կամուրջի շարժիչի աշխատանքի օպտիմալացման նախագիծ if_bridge, որն օգտագործում է մեկ mutex՝ ներքին տվյալները կողպելու համար, ինչը թույլ չի տալիս հասնել ցանկալի կատարողականությանը մեծ թվով բանտային միջավայրերով կամ մեկ ցանցում միավորված վիրտուալ մեքենաներով համակարգերում։ Այս փուլում կոդի մեջ ավելացվել են թեստեր՝ կողպեքների հետ աշխատանքի արդիականացման ժամանակ հետընթացի առաջացումը կանխելու համար։ Դիտարկվում է ConcurrencyKit-ի օգտագործման հնարավորությունը տվյալների փոխանցման կարգավորիչների զուգահեռականացման համար (bridge_input(), bridge_output(), bridge_forward(), ...):
    • Ավելացվեց նոր sigfastblock համակարգի զանգ, որը թույլ կտա շղթային նշել հիշողության բլոկ արագ ազդանշանի մշակողի համար՝ բարելավելու բացառություններ մշակողների աշխատանքը:
    • Միջուկն ավելացնում է աջակցություն LSE (Large System Extension) ատոմային հրահանգներին, որոնք աջակցվում են ARMv8.1 համակարգերով: Այս հրահանգները պահանջվում են Cavium ThunderX2 և AWS Graviton 2 տախտակների վրա աշխատելիս կատարողականությունը բարելավելու համար: Ավելացված փոփոխությունները հայտնաբերում են LSE-ի աջակցությունը և դինամիկ կերպով հնարավորություն են տալիս դրանց հիման վրա ատոմային իրականացումը: Փորձարկման ժամանակ LSE-ի օգտագործումը հնարավորություն տվեց կրճատել միջուկը հավաքելիս ծախսվող պրոցեսորի ժամանակը 15%-ով։
    • Կատարվել է կատարողականի օպտիմալացում, և գործիքակազմի ֆունկցիոնալությունը ընդլայնվել է ELF ձևաչափով գործարկվող ֆայլերի համար:
      Ավելացվել է DWARF կարգաբերման տեղեկատվության քեշավորման աջակցություն, elfcopy/objcopy կոմունալ ծառայություններում լուծված խնդիրներ, ավելացվել է DW_AT_ranges մշակում,
      readelf-ն իրականացնում է PROTMAX_DISABLE, STKGAP_DISABLE և WXNEEDED դրոշները, ինչպես նաև Xen և GNU Build-ID-ը վերծանելու հնարավորությունը:

  • Безопасность
    • FreeBSD-ի աշխատանքը Azure ամպային միջավայրում բարելավելու համար աշխատանքներ են տարվում HyperV Socket մեխանիզմին աջակցություն տրամադրելու համար, որը թույլ է տալիս օգտագործել վարդակից ինտերֆեյս՝ հյուրի համակարգի և հյուրընկալող միջավայրի միջև փոխազդեցության համար՝ առանց ցանց ստեղծելու:
    • Աշխատանքներ են տարվում FreeBSD-ի կրկնվող կառուցումներ ապահովելու ուղղությամբ՝ հնարավոր դարձնելով ապահովել, որ համակարգի բաղադրիչների գործարկվող ֆայլերը կազմված են հենց հայտարարված սկզբնական կոդերից և չեն պարունակում կողմնակի փոփոխություններ:
    • Լրացուցիչ պաշտպանական մեխանիզմների (ASLR, PROT_MAX, stack gap, W+X քարտեզագրում) ներառումը վերահսկելու հնարավորությունը առանձին գործընթացների մակարդակում ավելացվել է elfctl կոմունալ ծրագրին:
  • Պահպանման և ֆայլային համակարգեր
    • Աշխատանքներ են տարվում NFS-ի՝ TLS 1.3-ի վրա հիմնված գաղտնագրված կապի ալիքով աշխատելու հնարավորության իրականացման ուղղությամբ՝ Kerberos-ի (sec=krb5p ռեժիմ) օգտագործման փոխարեն, որը սահմանափակվում է միայն RPC հաղորդագրությունների կոդավորումով և իրականացվում է միայն ծրագրային ապահովման մեջ: Նոր ներդրումն օգտագործում է միջուկի կողմից տրամադրված TLS ստեկը՝ ապարատային արագացումը միացնելու համար: NFS-ը TLS կոդի վրա գրեթե պատրաստ է փորձարկման, բայց դեռևս աշխատանք է պահանջում հաճախորդների ստորագրված վկայագրերն աջակցելու և միջուկի TLS փաթեթը հարմարեցնելու համար՝ NFS-ի տվյալներ ուղարկելու համար (ստանալու պատչերն արդեն պատրաստ են):
  • Սարքավորումների աջակցություն
    • Աշխատանքներ են տարվում AMD տեխնոլոգիաների վրա հիմնված չինական x86 պրոցեսորի Hygon-ի համար աջակցություն ավելացնելու ուղղությամբ;
    • Որպես CheriBSD-ի մաս՝ FreeBSD-ի մի պատառաքաղ՝ հետազոտական ​​պրոցեսորների ճարտարապետության համար ՇԵՐԻ (Capability Hardware Enhanced RISC Instructions), շարունակում է իրականացվել ARM Morello պրոցեսորի աջակցությունը, որը կաջակցի Capsicum նախագծի անվտանգության մոդելի վրա հիմնված CHERI հիշողության հասանելիության կառավարման համակարգին: Morello չիպ պլանավորում են թողարկում 2021 թվականին։ Ներկայումս աշխատանքը կենտրոնացած է Arm Neoverse N1 հարթակի համար աջակցություն ավելացնելու վրա, որը հզորացնում է Morello-ին: Ներկայացվել է CheriBSD-ի նախնական նավահանգիստը RISC-V ճարտարապետության համար: CheriBSD-ի մշակումը շարունակվում է CHERI հղման նախատիպի համար, որը հիմնված է MIPS64 ճարտարապետության վրա:
    • FreeBSD-ի տեղափոխումը շարունակվում է 64-բիթանոց SoC NXP LS1046A-ի համար, որը հիմնված է ARMv8 Cortex-A72 պրոցեսորի վրա՝ ինտեգրված ցանցային փաթեթների մշակման արագացման շարժիչով, 10 Գբ Ethernet, PCIe 3.0, SATA 3.0 և USB 3.0: Ներկայումս QorIQ և LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI վարորդները պատրաստվում են հիմնական FreeBSD կոմպոզիցիա տեղափոխելու համար:
    • ena դրայվերը թարմացվել է 2.1.1 տարբերակին՝ աջակցությամբ երկրորդ սերնդի ENAv2 (Elastic Network Adapter) ցանցային ադապտերներին, որոնք օգտագործվում են Elastic Compute Cloud (EC2) ենթակառուցվածքում՝ EC2 հանգույցների միջև հաղորդակցությունը մինչև 25 Գբ/ արագությամբ կազմակերպելու համար: ս. Պատրաստվում է ՀԷՑ 2.2.0-ի թարմացում:
    • Powerpc64 հարթակի համար FreeBSD պորտի բարելավումները շարունակվում են: Ուշադրության կենտրոնում է IBM POWER8 և POWER9 պրոցեսորներով համակարգերի որակյալ կատարում ապահովելը: Հաշվետու ժամանակահատվածում FreeBSD-CURRENT-ը փոխանցվել է GCC-ի փոխարեն օգտագործելու LLVM/Clang 10.0 կոմպիլյատորը և lld կապիչը: Լռելյայնորեն, powerpc64 համակարգերն օգտագործում են ELFv2 ABI-ն և ELFv1 ABI-ի աջակցությունը դադարեցվել է: FreeBSD-STABLE-ը դեռևս ունի gcc 4.2.1: լուծվել են virtio, aacraid և ixl վարորդների հետ կապված խնդիրները։ Powerpc64 համակարգերում հնարավոր է գործարկել QEMU առանց Huge Pages աջակցության:
    • Աշխատանքները շարունակվում են RISC-V ճարտարապետությանն աջակցելու համար: Իր ներկայիս տեսքով, FreeBSD-ն արդեն հաջողությամբ բեռնվում է SiFive Hifive Unleashed տախտակի վրա, որի համար պատրաստվել են դրայվերներ:
      UART, SPI և PRCI, աջակցում է OpenSBI և SBI 0.2 որոնվածը: Հաշվետու ժամանակահատվածում աշխատանքը կենտրոնացած է եղել GCC-ից դեպի clang և lld միգրացիայի վրա:

  • Ծրագրեր և նավահանգիստների համակարգ
    • FreeBSD նավահանգիստների հավաքածուն հատել է 39 հազար պորտերի շեմը, չփակված PR-ների թիվը փոքր-ինչ գերազանցում է 2400-ը, որից 640-ը դեռ տեսակավորված չեն։ Հաշվետու ժամանակահատվածում 8146 մշակողներից կատարվել է 173 փոփոխություն։ Չորս նոր մասնակիցներ ստացան պարտավորությունների իրավունք (Լոիկ Բարտոլետի, Միքայել Ուրանկար, Քայլ Էվանս, Լորենցո Սալվադոր): Ավելացվեց USES=qca դրոշը և հեռացվեց USES=zope դրոշը (Python 3-ի հետ անհամատեղելիության պատճառով): Աշխատանքներ են տարվում Python 2.7-ը պորտերի ծառից հեռացնելու ուղղությամբ. Python 2-ի վրա հիմնված բոլոր նավահանգիստները պետք է տեղափոխվեն Python 3 կամ կհեռացվեն: pkg փաթեթի կառավարիչը թարմացվել է՝ թողարկելու 1.13.2.
    • Թարմացված գրաֆիկական փաթեթի բաղադրիչները և xorg-ի հետ կապված նավահանգիստները:
      X.org սերվերը թարմացվել է 1.20.8 տարբերակով (նախկինում առաքվել է 1.18 մասնաճյուղով), որը թույլ է տվել FreeBSD-ին լռելյայն օգտագործել udev/evdev backend-ը՝ մուտքային սարքերի հետ աշխատելու համար: Mesa փաթեթը լռելյայնորեն փոխվել է DRI3-ի փոխարեն օգտագործելու DRI2 ընդլայնումը: Աշխատանքներ են տարվում գրաֆիկական դրայվերները, մուտքային սարքերի կույտը և drm-kmod բաղադրիչները պահելու ուղղությամբ (մի պորտ, որը հնարավորություն է տալիս amdgpu, i915 և radeon DRM մոդուլների գործարկումը՝ օգտագործելով linuxkpi շրջանակը՝ Linux միջուկի Direct Rendering Manager-ի հետ համատեղելիության համար): մինչ օրս.

    • KDE Plasma աշխատասեղանը, KDE Frameworks-ը, KDE Applications-ը և Qt-ը թարմացվում են և թարմացվում են մինչև վերջին թողարկումները: Նավահանգիստներին ավելացվել է նոր հավելված kstars (աստղային ատլաս):
    • Աշխատանքներ են տարվել xfwm4 պատուհանների մենեջերի ռեգրեսիվ փոփոխությունները վերացնելու ուղղությամբ, որոնք հայտնվել են Xfce-ն 4.14 տարբերակին թարմացնելուց հետո (օրինակ՝ արտեֆակտներ են հայտնվել պատուհանները զարդարելիս):
    • Wine նավահանգիստը թարմացվել է՝ թողարկելու Wine 5.0 (նախկինում առաջարկվում էր 4.0.3):
    • Սկսած 1.14 տարբերակից՝ Go լեզվի կոմպիլյատորն ավելացրել է պաշտոնական աջակցություն ARM64 ճարտարապետության համար FreeBSD 12.0-ի համար:
    • Բազային համակարգում OpenSSH-ը թարմացվել է՝ թողարկելու 7.9p1:
    • Sysctlmibinfo2 գրադարանը ներդրվել և տեղադրվել է նավահանգիստներում (devel/libsysctlmibinfo2)՝ ապահովելով API՝ sysctl MIB մուտք գործելու և sysctl անունները օբյեկտների նույնացուցիչների (OIDs) թարգմանելու համար:
    • Բաշխման թարմացում է ստեղծվել NomadBSD 1.3.1, որը FreeBSD-ի տարբերակն է, որը հարմարեցված է USB կրիչից որպես շարժական աշխատասեղան օգտագործելու համար: Գրաֆիկական միջավայրը հիմնված է պատուհանների կառավարչի վրա Openbox. Օգտագործվում է կրիչներ տեղադրելու համար DSBMD (Աջակցվում է CD9660, FAT, HFS+, NTFS, Ext2/3/4 տեղադրումը), անլար ցանցը կարգավորելու համար. wifimgrև ձայնը վերահսկելու համար - DSBMixer.
    • Սկսել աշխատել բանտային միջավայրի կառավարչի համար ամբողջական փաստաթղթեր գրելու վերաբերյալ ամանի մեջ դնել. Pot 0.11.0-ը պատրաստվում է թողարկման, որը կներառի ցանցային ստեկը կառավարելու գործիքներ:

Source: opennet.ru

Добавить комментарий