հրապարակված 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 ձևաչափերով;