2020 жылдың бірінші тоқсанындағы FreeBSD даму есебі

жарияланды 2020 жылдың қаңтарынан наурызына дейін FreeBSD жобасының дамуы туралы есеп. Өзгерістердің ішінде мыналарды атап өтуге болады:

  • Жалпы және жүйелі мәселелер
    • FreeBSD-CURRENT бастапқы тармағынан GCC компилятор жинағы, сондай-ақ пайдаланылмаған gperf, gcov және gtc (devicetree компиляторы) утилиталары жойылды. Clang қолданбасын қолдамайтын барлық платформалар порттардан орнатылған сыртқы құрастыру құралдарын пайдалануға ауыстырылды. Негізгі жүйе GCC 4.2.1 ескірген шығарылымын жіберді және 4.2.2 нұсқасының GPLv3 лицензиясына ауысуына байланысты жаңа нұсқаларды біріктіру мүмкін болмады, бұл FreeBSD базалық құрамдастары үшін жарамсыз деп саналды. GCC 9-ды қоса алғанда, GCC ағымдағы шығарылымдарын әлі де пакеттер мен порттардан орнатуға болады.
    • Linux ортасының эмуляциялық инфрақұрылымы (Linuxulator) sendfile жүйелік шақыруын, TCP_CORK режимін (nginx үшін қажет) және MAP_32BIT жалауын (Ubuntu Bionic жүйесінен Mono көмегімен пакеттерді іске қосу мәселесін шешеді) қолдауды қосты. 2.30-дан жоғары (мысалы, CentOS 8 нұсқасынан) glibc нұсқасын пайдалану кезінде DNS ажыратымдылығына қатысты мәселелер шешілді.
      Үздіксіз интеграциялық инфрақұрылым Linux жүйесін қолдау үшін кодқа жасалған жақсартуларды тексеру үшін Linuxulator іске қосылған LTP (Linux Testing Project) тапсырмаларын орындау мүмкіндігін береді. 400-ге жуық сынақ сәтсіз аяқталады және түзетуді қажет етеді (кейбір қателер жалған позитивтерден туындайды, кейбіреулері тривиальды түзетулерді қажет етеді, бірақ түзету үшін жаңа жүйелік қоңырауларға қолдау көрсетуді қажет ететін басқалары бар). Linuxulator кодын тазалау және жөндеуді жеңілдету бойынша жұмыс жасалды. Кеңейтілген атрибуттарды және fexecve жүйелік шақыруын қолдауы бар патчтар дайындалды, бірақ әлі қаралмаған.

    • Орталықтандырылған бастапқы басқару жүйесінен Subversion орталықтандырылмаған Git жүйесіне бастапқы кодтарды көшіруді жүзеге асыру үшін құрылған жұмыс тобының отырыстары жалғасуда. Көші-қон бойынша ұсыныстары бар есеп дайындалуда.
    • В rtld (орындау уақытының сілтемесі) жақсартылған тікелей орындау режимі («/libexec/ld-elf.so.1 {path} {аргументтер}»).
    • Syzkaller жүйесі арқылы FreeBSD ядросын fuzzing тестілеу жобасы дамуын жалғастыруда. Есепті кезеңде желілік стектегі және syzkaller көмегімен анықталған файл дескрипторы кестелерімен жұмыс істеу кодындағы ақаулар жойылды. Қате диагностикасынан кейін түзетуді жеңілдету үшін SCTP стекіне өзгертулер қосылды. Ықтимал регрессияларды анықтау үшін стресс2 жинағына ережелер қосылды. copy_file_range(), __realpathat() және Capsicum ішкі жүйелік шақыруларын қоса, жаңа жүйелік қоңыраулардың fuzz тестілеуіне қолдау қосылды. Linux эмуляциялық қабатын fuzz тестімен қамту бойынша жұмыс жалғасуда. Біз соңғы Coverity Scan есептерінде көрсетілген қателерді талдадық және жойдық.
    • Үздіксіз интеграция жүйесі тек clang/lld көмегімен барлық бас тармақ сынақтарын орындауға көшті. RISC-V тестілеу кезінде OpenSBI көмегімен QEMU жүйесінде сынақтарды орындау үшін толық диск кескінін қалыптастыру қамтамасыз етіледі. Суреттер мен powerpc64 виртуалды машиналарын сынауға арналған жаңа тапсырмалар қосылды (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Kyua-ны жаңа архитектурада пайдалану кезінде туындайтын мәселелерді (пакеттер өте баяу орнатылады) шешу үшін Kyua сынақ кешенін порттардан (devel/kyua) базалық жүйеге көшіру жұмыстары жүргізілуде, оны әзірлеу эмулятор немесе FPGA. Базалық жүйеге интеграция енгізілген платформаларды тестілеуді және үздіксіз интеграциялық жүйелермен интерфейсті айтарлықтай жеңілдетеді.
    • Желілік көпір драйверінің өнімділігін оңтайландыру жобасы іске қосылды егер_көпір, ол ішкі деректерді құлыптау үшін бір мутексті пайдаланады, бұл көптеген түрме орталары немесе бір желіге біріктірілген виртуалды машиналары бар жүйелерде қажетті өнімділікке қол жеткізуге мүмкіндік бермейді. Бұл кезеңде құлыптармен жұмыс істеуді жаңғырту кезінде регрессиялардың алдын алу үшін кодқа сынақтар қосылды. Деректерді тасымалдау өңдегіштерін (bridge_input(), bridge_output(), bridge_forward(), ...) параллельдеу үшін ConcurrencyKit пайдалану мүмкіндігі қарастырылуда.
    • Ерекшелік өңдегіштерінің жұмысын жақсарту үшін ағынға жылдам сигнал өңдегіші үшін жад блогын көрсетуге мүмкіндік беру үшін жаңа sigfastblock жүйелік шақыруы қосылды.
    • Ядро ARMv8.1 жүйелері қолдайтын LSE (Large System Extension) атомдық нұсқауларына қолдауды қосады. Бұл нұсқаулар 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 кодтарын декодтау мүмкіндігін жүзеге асырады.

  • Қауіпсіздік
    • Azure бұлттық орталарында FreeBSD өнімділігін жақсарту үшін желіні орнатпай қонақтық жүйе мен хост ортасы арасындағы өзара әрекеттесу үшін розетка интерфейсін пайдалануға мүмкіндік беретін HyperV Socket механизміне қолдау көрсету бойынша жұмыс жүргізілуде.
    • Жүйе құрамдастарының орындалатын файлдары жарияланған бастапқы кодтардан дәл құрастырылғанын және бөгде өзгерістердің болмауын қамтамасыз етуге мүмкіндік беретін FreeBSD қайталанатын құрастыруларын қамтамасыз ету бойынша жұмыс жүргізілуде.
    • Elfctl утилитасына жеке процестер деңгейінде қосымша қорғаныс механизмдерін (ASLR, PROT_MAX, стек аралығы, W+X салыстыру) қосуды бақылау мүмкіндігі қосылды.
  • Сақтау және файлдық жүйелер
    • NFS тек RPC хабарламаларын шифрлаумен шектелетін және тек бағдарламалық жасақтамада жүзеге асырылатын Kerberos (sec=krb1.3p режимі) пайдаланудың орнына TLS 5 негізіндегі шифрланған байланыс арнасы арқылы жұмыс істеу мүмкіндігін енгізу бойынша жұмыс жүргізілуде. Жаңа іске асыру аппараттық құралдарды жеделдетуді қосу үшін ядромен қамтамасыз етілген TLS стекін пайдаланады. TLS арқылы NFS коды тестілеуге дерлік дайын, бірақ қол қойылған клиент сертификаттарын қолдау және NFS деректерін жіберу үшін ядро ​​TLS стекін бейімдеу үшін жұмыс қажет (алуға арналған патчтар қазірдің өзінде дайын).
  • Аппараттық қолдау
    • AMD технологияларына негізделген қытайлық x86 CPU Hygon қолдауын қосу бойынша жұмыс жүргізілуде;
    • CheriBSD бөлігі ретінде, зерттеу процессорының архитектурасына арналған FreeBSD шанышқысы CHERI (Capability Hardware Enhanced RISC Instructions), Capsicum жобасының қауіпсіздік үлгісіне негізделген CHERI жадқа қол жеткізуді басқару жүйесін қолдайтын ARM Morello процессорын қолдауды іске асыру жалғасуда. Морелло чипі жоспарлап отыр 2021 жылы шығарылады. Қазіргі уақытта жұмыс Мореллоға қуат беретін Arm Neoverse N1 платформасына қолдау қосуға бағытталған. RISC-V архитектурасына арналған CheriBSD бастапқы порты ұсынылды. MIPS64 архитектурасына негізделген CHERI анықтамалық прототипі үшін CheriBSD әзірлеу жалғасуда.
    • FreeBSD порты желілік пакеттерді өңдеудің біріктірілген қозғалтқышы, 64 Гб Ethernet, PCIe 1046, SATA 8 және USB 72 бар ARMv10 Cortex-A3.0 процессорына негізделген 3.0 биттік SoC NXP LS3.0A үшін жалғасуда. Қазіргі уақытта QorIQ және LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI драйверлері FreeBSD негізгі құрамына көшіруге дайындалуда.
    • ena драйвері EC2.1.1 түйіндері арасында 2 Гб/ дейінгі жылдамдықта байланысты ұйымдастыру үшін Elastic Compute Cloud (EC2) инфрақұрылымында пайдаланылатын ENAv2 (Elastic Network Adapter) желілік адаптерлерінің екінші буынын қолдауымен 25 нұсқасына жаңартылды. с. ENA 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-тен кланг және lld көші-қонына бағытталған.

  • Қолданбалар және порт жүйесі
    • FreeBSD порттарының жинағы 39 мың порт шегінен өтті, жабылмаған PR саны 2400-ден сәл асады, оның ішінде 640 PR әлі сұрыпталған жоқ. Есепті кезеңде 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 серверін пайдалану үшін әдепкі бойынша мүмкіндік берді. Mesa бумасы әдепкі бойынша DRI3 орнына DRI2 кеңейтімін пайдалануға ауыстырылды. Графикалық драйверлерді, енгізу құрылғысы стегін және drm-kmod құрамдастарын (Linux ядросының Direct Rendering Manager үйлесімділігі үшін linuxkpi негізін пайдалана отырып, amdgpu, i915 және radeon DRM модульдерінің жұмысын қамтамасыз ететін порт) сақтау бойынша жұмыс жүргізілуде. бүгінгі күнге дейін.

    • KDE Plasma жұмыс үстелі, KDE Frameworks, KDE қолданбалары және Qt жаңартылған және соңғы шығарылымдарға жаңартылған. Порттарға жаңа kstars қолданбасы (жұлдызды атлас) қосылды.
    • Xfce 4 нұсқасына жаңартқаннан кейін пайда болған xfwm4.14 терезе менеджеріндегі регрессивті өзгерістерді жою бойынша жұмыс жасалды (мысалы, артефактілер терезелерді безендіру кезінде пайда болды).
    • Шарап порты Wine 5.0 нұсқасын шығару үшін жаңартылды (бұрын 4.0.3 ұсынылған).
    • 1.14 нұсқасынан бастап Go тілінің компиляторы FreeBSD 64 үшін ARM12.0 архитектурасына ресми қолдау қосты.
    • Негізгі жүйедегі OpenSSH 7.9p1 шығару үшін жаңартылды.
    • sysctlmibinfo2 кітапханасы sysctl MIB қатынасу және sysctl атауларын нысан идентификаторларына (OID) аудару үшін API қамтамасыз ететін порттарға (devel/libsysctlmibinfo2) енгізілді және орналастырылды.
    • Тарату жаңартуы жасалды NomadBSD 1.3.1, бұл USB дискісінен жүктелетін портативті жұмыс үстелі ретінде пайдалануға бейімделген FreeBSD нұсқасы. Графикалық орта терезе менеджеріне негізделген Openbox. Дискілерді монтаждау үшін қолданылады DSBMD (CD9660, FAT, HFS+, NTFS, Ext2/3/4 орнатуға қолдау көрсетіледі), сымсыз желіні конфигурациялау үшін - wifimgr, және дыбыс деңгейін басқару үшін - DSBMixer.
    • Басталды жұмыс түрме ортасының менеджеріне толық құжаттарды жазу туралы құмыра. Пот 0.11.0 шығаруға дайындалуда, ол желілік стекті басқаруға арналған құралдарды қамтиды.

Ақпарат көзі: opennet.ru

пікір қалдыру