FreeBSD Q2019 XNUMX Առաջընթացի հաշվետվություն

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

  • Ընդհանուր և համակարգային խնդիրներ
    • Core թիմը որոշեց ստեղծել աշխատանքային խումբ՝ ուսումնասիրելու աղբյուրի կոդը կենտրոնացված Subversion աղբյուրի կառավարման համակարգից ապակենտրոնացված Git համակարգ տեղափոխելու հնարավորությունը:
    • Համակարգի միջոցով FreeBSD միջուկի fuzz փորձարկում է անցկացրել syzkaller և հայտնաբերված մի շարք սխալներ ուղղվել են: 32-բիթանոց միջուկով համակարգերում 64-բիթանոց միջավայրի հետ համատեղելիության համար գրադարանների անորոշ փորձարկման շերտ է ավելացվել: Իրականացրել է syzkaller-ը գործարկելու հնարավորությունը bhyve-ի վրա հիմնված վիրտուալ մեքենաներում: Հաջորդ փուլում նախատեսվում է ընդլայնել համակարգային զանգերի թեստավորման ծածկույթը, օգտագործել LLVM ախտահանիչ միջուկը ստուգելու համար, օգտագործել netdump՝ խափանումների ժամանակ միջուկը խափանումների ժամանակ fuzzing թեստավորման ժամանակ և այլն:
    • Աշխատանքներ են սկսվել միջուկի մակարդակում zlib-ի ներդրման թարմացման ուղղությամբ: Միջուկը zlib կոդը մուտք գործելու համար contrib/zlib գրացուցակը վերանվանվեց sys/contrib/zlib, իսկ crc.h վերնագրի ֆայլը նույնպես վերանվանվեց zlib/crc.h-ի հետ կոնֆլիկտից խուսափելու համար: Մաքրվել է ժառանգական ծածկագիրը, որը կախված է zlib-ից և inflate-ից: Այնուհետև նախատեսվում է տրամադրել միջուկը հին և նոր zlib-ի հետ միաժամանակ կառուցելու հնարավորություն՝ սեղմում օգտագործող գործառույթների նոր տարբերակին աստիճանաբար փոխանցելու համար.
    • Linux միջավայրի էմուլացիոն ենթակառուցվածքը (Linuxulator) թարմացվել է: Ավելացել է Linux-ի վրիպազերծման գործիքների աջակցությունը, ինչպիսին է strace կոմունալը: Նավահանգիստներին ավելացվել է linux-c7-strace փաթեթը, որը կարող է օգտագործվել Linux-ի գործարկվող ֆայլերը հետագծելու համար՝ ստանդարտ truss և ktrace կոմունալ ծրագրերի փոխարեն, որոնք դեռևս չեն կարող վերծանել Linux-ին հատուկ դրոշներ և կառուցվածքներ: Բացի այդ, Linux-ի թեստային նախագծի գործադիրներով Linux-ltp փաթեթն ավելացվել է, և լուծվել են glibc-ի նոր տարբերակների հետ կապված գործադիրների հետ համատեղելիության խնդիրները.
    • pmap մեխանիզմում հետաձգված անվավերացման գործողությունների իրականացումը փոխանցվել է հերթերի մշակման ալգորիթմի օգտագործմանը, որն աշխատում է առանց կողպեքների, ինչը հնարավորություն է տվել լուծել լայնածավալության խնդիրները մեծ թվով զուգահեռ unmap գործողություններ կատարելիս.
    • Փոխվել է execve() ընտանիքի համակարգային զանգերի կատարման ժամանակ vnode-ի արգելափակման մեխանիզմը, ինչը հնարավորություն է տվել հասնել արդյունավետության բարձրացման՝ նույն ֆայլի համար execve() միաժամանակ գործադրելիս (օրինակ՝ մոնտաժման գործողություններ կատարելիս զուգահեռաբար։ կոմպիլյատորի գործարկում);
  • Безопасность
    • Bhyve հիպերվիզորը շարունակում է բարելավել հյուրի միջավայրերի կենդանի միգրացիայի աջակցությունը մի հոսթից մյուսը և Save/Restore ֆունկցիոնալությունը, որը թույլ է տալիս սառեցնել հյուրի համակարգը՝ պահպանելով վիճակը ֆայլի մեջ և այնուհետև վերսկսել աշխատանքը:
    • libvdsk գրադարանի օգտագործման միջոցով bhyve-ն ավելացրել է QCOW2 ձևաչափով սկավառակի պատկերների աջակցություն: Աշխատանքի համար պահանջվում է տեղադրում
      հատուկ ձևափոխված bhyve-ի տարբերակը, որը փոխակերպվել է libvdsk-ի վրա հիմնված ֆայլերի շահագործման կարգավորիչներ օգտագործելու համար: Հաշվետու ժամանակահատվածում libvdsk-ը նաև աշխատանքներ է իրականացրել նոր ձևաչափերի աջակցության ինտեգրումը պարզեցնելու, կարդալու և գրելու կատարողականի բարելավման և Copy-on-write-ի աջակցության ավելացման ուղղությամբ: Մնացած խնդիրներից նշվում է libvdsk-ի ինտեգրումը bhyve-ի հիմնական կառուցվածքին.

    • Նավահանգիստներում ավելացվել է երթևեկության տեղեկատվության հավաքագրման համակարգ
      Maltrail, որը թույլ է տալիս ստեղծել թակարդներ չարամիտ ցանցային հարցումների համար (Սև ցուցակներից IP-ները և տիրույթները ստուգվում են) և հայտնաբերված գործունեության մասին տեղեկատվություն ուղարկել կենտրոնացված սերվեր՝ հետագա արգելափակման կամ հարձակման փորձերի վերլուծության համար.

    • Պորտերին ավելացվել են հարթակներ՝ հարձակումները հայտնաբերելու, տեղեկամատյանները վերլուծելու և ֆայլերի ամբողջականությունը վերահսկելու համար Վազուհ (Ossec-ի պատառաքաղը՝ ինտեգրման աջակցությամբ ELK-Stack);
  • Ցանցային ենթահամակարգ
    • ena դրայվերը թարմացվել է՝ աջակցելու երկրորդ սերնդի ENAv2 (Elastic Network Adapter) ցանցային ադապտերներին, որոնք օգտագործվում են Elastic Compute Cloud (EC2) ենթակառուցվածքում՝ EC2 հանգույցների միջև հաղորդակցությունը կազմակերպելու համար մինչև 25 Գբ/վ արագությամբ: NETMAP-ի աջակցությունն ավելացվել է ena դրայվերին:
    • FreeBSD HEAD-ն ընդունում է նոր MMC/SD փաթեթ՝ հիմնված CAM շրջանակի վրա և թույլ է տալիս սարքերը միացնել SDIO (Secure Digital I/O) ինտերֆեյսով: Օրինակ, SDIO-ն օգտագործվում է WiFi և Bluetooth մոդուլներում բազմաթիվ տախտակների համար, ինչպիսիք են Raspberry Pi 3-ը: Նոր փաթեթը նաև թույլ է տալիս CAM ինտերֆեյսը օգտագործել SD հրամաններ օգտատերերի տարածքում գտնվող հավելվածներից ուղարկելու համար, ինչը հնարավորություն է տալիս սարք ստեղծել: վարորդներ, որոնք գործում են օգտագործողի մակարդակով: Աշխատանքները սկսվել են FullMAC ռեժիմով աշխատող Broadcom անլար չիպերի համար դրայվերների ստեղծման ուղղությամբ (չիպի կողմից այն աշխատում է իր սեփական օպերացիոն համակարգի նմանությամբ՝ իր 802.11 անլար փաթեթի ներդրումներով);
    • Աշխատանքներ են տարվում FreeBSD-ի համար NFSv4.2 (RFC-7862) ներդրման ուղղությամբ: NFS-ի նոր տարբերակն ավելացնում է աջակցություն posix_fadvise, posix_fallocate գործառույթներին, SEEKHOLE/SEEKDATA ռեժիմներին lseek-ում և ֆայլի մասերի տեղական պատճենման օպերացիան սերվերում (առանց հաճախորդին փոխանցելու):

      FreeBSD-ն ներկայումս ապահովում է հիմնական աջակցություն LayoutError, IOAdvise, Allocate և Copy գործառնությունների համար: Մնում է միայն իրականացնել «Seek» գործողությունը, որն անհրաժեշտ է NFS-ի հետ lseek (SEEKHOLE/SEEKDATA) օգտագործելու համար: NFSv4.2 աջակցությունը նախատեսվում է FreeBSD 13-ի համար;

  • Պահպանման և ֆայլային համակարգեր
    • FUSE (File system in USERspace) ենթահամակարգի համար դրայվերը վերամշակելու նախագիծը, որը թույլ է տալիս ստեղծել ֆայլային համակարգեր օգտագործողի տարածքում, մոտենում է ավարտին։ Ի սկզբանե մատակարարված վարորդը հնացած է և պարունակում է բազմաթիվ սխալներ: Վարորդների արդիականացման նախագծի շրջանակներում իրականացվել է FUSE 7.23 արձանագրության աջակցություն (նախկինում աջակցվում էր 7.8 տարբերակը, թողարկվել էր 11 տարի առաջ), կոդ ավելացվեց միջուկի կողմից մուտքի իրավունքները ստուգելու համար («-o default_permissions»), զանգեր դեպի Ավելացվել են VOP_MKNOD, VOP_BMAP և VOP_ADVLOCK, FUSE-ի գործողություններն ընդհատելու հնարավորություն, ապահովիչներում անանուն խողովակների և unix վարդակների աջակցություն, /dev/fuse-ի համար kqueue օգտագործելու հնարավորություն, «mount -u»-ի միջոցով ամրացման պարամետրերի թարմացման թույլտվություն: NFS-ի միջոցով ապահովիչներ արտահանելու համար, իրականացվել է RLIMIT_FSIZE հաշվառում, ավելացվել է FOPEN_KEEP_CACHE դրոշակները և FUSE_ASYNC_READ, կատարվել են աշխատանքի զգալի օպտիմալացումներ և բարելավվել է քեշավորման կազմակերպումը.
    • BIO_DELETE օպերացիայի աջակցությունն ավելացվել է swap pager կոդի մեջ, որը թույլ է տալիս օգտագործել TRIM հրամանը SSD կրիչներից բլոկները հեռացնելիս՝ դրանց ծառայության ժամկետը մեծացնելու համար:
  • Սարքավորումների աջակցություն
    • Աշխատանքները շարունակվում են ARM64 SoC Broadcom BCM5871X-ի համար ARMv8 Cortex-A57 պրոցեսորների աջակցության իրականացման ուղղությամբ, որոնք ուղղված են երթուղիչներում, դարպասներում և ցանցային պահեստում օգտագործելուն: Հաշվետու ժամանակահատվածում բարելավվել է ներքին և արտաքին iProc PCIe ավտոբուսների աջակցությունը, ավելացվել է BNXT Ethernet-ի աջակցությունը, և աշխատանքներ են տարվում ներկառուցված կրիպտո շարժիչը IPsec-ի արագացման համար օգտագործելու ուղղությամբ: Կոդի ինտեգրումը HEAD մասնաճյուղին սպասվում է տարվա երկրորդ կիսամյակում;
    • Աշխատանքները սկսվել են 64-բիթանոց SoC NXP LS1046A-ի վրա հիմնված ARMv8 Cortex-A72 պրոցեսորի վրա՝ ինտեգրված ցանցային փաթեթների մշակման արագացման շարժիչով, 10 Գբ Ethernet, PCIe 3.0, SATA 3.0 և USB 3.0: Բազային պլատֆորմի (բազմօգտագործողի SMP) և SATA 3.0-ի աջակցությունն արդեն իրականացվել է: USB 3.0, SD/MMC և I2C-ի աջակցությունը մշակման փուլում է: Ծրագրերը ներառում են աջակցություն Ethernet-ի, GPIO-ի և QSPI-ի համար: Աշխատանքների ավարտը և HEAD մասնաճյուղում ընդգրկումը սպասվում է 4 թվականի 2019-րդ եռամսյակում։
    • Թարմացված mlx5en և mlx5ib դրայվերները Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] և ConnectX-6 [Dx] Ethernet և InfiniBand ադապտերների համար: Ավելացվել է Mellanox Socket Direct (ConnectX-6) ադապտերների աջակցությունը, որը թույլ է տալիս PCIe Gen 200 ավտոբուսում մինչև 3.0 Գբ/վ թողունակություն: Բազմամիջուկ BlueField չիպերի համար ավելացվել է RShim դրայվերի աջակցություն: Նավահանգիստներին ավելացվել է mstflint փաթեթը՝ Mellanox ադապտերների համար ախտորոշիչ կոմունալ ծառայություններով.
  • Ծրագրեր և նավահանգիստների համակարգ
    • Գրաֆիկական փաթեթի բաղադրիչները թարմացվել են: drm.ko-ի (Direct Rendering Manager) դրայվերը տեղափոխվել է Linux 5.0 միջուկից: Այս դրայվերը համարվում է փորձնական և ավելացվել է ports ծառին որպես գրաֆիկա/drm-devel-kmod: Քանի որ վարորդը օգտագործում է թարմացված Linux KPI շրջանակը՝ Linux միջուկի DRM API-ի հետ համատեղելի լինելու համար, գործարկելու համար պահանջվում է FreeBSD CURRENT: VirtualBox վիրտուալ GPU-ի vboxvideo.ko drm դրայվերը նույնպես տեղափոխվել է Linux-ից: Mesa փաթեթը թարմացվել է՝ թողարկելու 18.3.2-ը և փոխվել է devel/llvm80 պորտից օգտագործելու LLVM-ը devel/llvm60-ի փոխարեն:
    • FreeBSD նավահանգիստների ծառը գերազանցել է 37000 նավահանգիստները, չփակված PR-ների թիվը մնում է 2146: Հաշվետու ժամանակահատվածում 7837 ծրագրավորողներից կատարվել է 172 փոփոխություն: Երեք նոր մասնակիցներ ստացան հանձնակատարի իրավունքներ: Նավահանգիստներում տարբերակի նշանակալի թարմացումներից են՝ MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100: Բոլոր Go նավահանգիստները փոխարկվել են օգտագործելու «USES=go» դրոշը: Հասկել կոդի համար օգտագործվող Cabal փաթեթի կառավարիչին ավելացվել է «USES=cabal» դրոշը: Խիստ կույտերի պաշտպանության ռեժիմը միացված է: Python-ի լռելյայն տարբերակը 3.6-ն է՝ 2.7-ի փոխարեն:
    • Կոմունալ հաղորդագրությունը պատրաստվել է nsysctl 1.0, որն առաջարկում է /sbin/sysctl-ի անալոգը, որն օգտագործում է libxo արդյունքի և ընտրանքների ընդլայնված փաթեթ տրամադրելու համար: Nsysctl-ը կարող է օգտագործվել sysctl արժեքների վիճակը տեսողականորեն վերահսկելու և օբյեկտների վերաբերյալ տեղեկատվությունը կառուցվածքային ձևով ներկայացնելու համար: Հնարավոր է ելք XML, JSON և HTML ձևաչափերով;

Source: opennet.ru

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