2020-жылдын биринчи кварталы үчүн FreeBSD өнүктүрүү отчету

жарыяланган 2020-жылдын январынан мартына чейин FreeBSD долбоорунун өнүгүшү жөнүндө отчет. Өзгөртүүлөрдүн арасында биз белгилей алабыз:

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

    • Баштапкы коддорду борборлоштурулган булак башкаруу тутумунан Subversion борбордон ажыратылган Git тутумуна көчүрүү үчүн түзүлгөн жумушчу топтун жолугушуулары уланууда. Миграция боюнча сунуштар камтылган отчет даярдалууда.
    • В rtld (иштөө убактысынын шилтемеси) жакшыртылган түз аткаруу режими (“/libexec/ld-elf.so.1 {path} {arguments}”).
    • Syzkaller системасын колдонуу менен FreeBSD өзөгүн бүдөмүк тестирлөө долбоору өнүгүүнү улантууда. Отчеттук мезгилде syzkaller аркылуу аныкталган файлдын дескриптор таблицалары менен иштөө үчүн тармактык стек жана коддогу көйгөйлөр жоюлган. Ката диагнозунан кийин, мүчүлүштүктөрдү оңдоону жеңилдетүү үчүн SCTP стекине өзгөртүүлөр кошулду. Мүмкүн болгон регрессияларды аныктоо үчүн стресс2 топтомуна эрежелер кошулду. Жаңы тутум чалууларын, анын ичинде 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ны жаңы архитектураларда колдонууда пайда болгон көйгөйлөрдү (пакеттер өтө жай орнотулат) чечүү үчүн Kyua тесттик пакетин порттордон (devel/kyua) базалык системага өткөрүү боюнча иштер жүрүп жатат, аларды иштеп чыгуу эмулятор же колдонуу менен жүзөгө ашырылат. FPGA. Базалык системага интеграция киргизилген платформаларды жана үзгүлтүксүз интеграциялык системалар менен интерфейсти тестирлөөнү кыйла жөнөкөйлөтөт.
    • Тармактык көпүрө драйверинин иштешин оптималдаштыруу боюнча долбоор ишке киргизилди if_bridge, ички маалыматтарды кулпулоо үчүн бир мутексти колдонот, бул көп сандагы түрмө чөйрөлөрү же бир тармакка бириктирилген виртуалдык машиналары бар системаларда керектүү көрсөткүчтөргө жетишүүгө мүмкүндүк бербейт. Бул этапта кулпулар менен иштөөнү модернизациялоодо регрессиялардын алдын алуу үчүн кодго тесттер кошулган. ConcurrencyKitти маалыматтарды берүү иштеткичтерин (bridge_input(), bridge_output(), bridge_forward(), ...) параллелдөө үчүн колдонуу мүмкүнчүлүгү каралууда.
    • Жаңы 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 картасы) киргизүүнү көзөмөлдөө мүмкүнчүлүгү кошулду.
  • Сактоо жана файл системалары
    • RPC билдирүүлөрүн гана шифрлөө менен чектелген жана программалык камсыздоодо гана ишке ашырылган Kerberos (sec=krb1.3p режими) колдонуунун ордуна NFSдин TLS 5 негизинде шифрленген байланыш каналы аркылуу иштөө мүмкүнчүлүгүн ишке ашыруу боюнча иштер жүрүп жатат. Жаңы ишке ашыруу аппараттык тездетүүнү иштетүү үчүн ядро ​​менен камсыздалган TLS стекин колдонот. TLS аркылуу NFS коду тестирлөөгө дээрлик даяр, бирок дагы эле кол коюлган кардар сертификаттарын колдоо жана NFS берилиштерин жөнөтүү үчүн ядронун TLS стектерин ыңгайлаштыруу үчүн иштөө талап кылынат (кабыл алуу үчүн тактар ​​мурунтан эле даяр).
  • Аппараттык колдоо
    • AMD технологияларынын негизинде кытай x86 CPU Hygon үчүн колдоо кошуу боюнча иштер жүрүп жатат;
    • CheriBSD бир бөлүгү катары, изилдөө процессорунун архитектурасы үчүн FreeBSD айрысы ЧЕРИ (Capability Hardware Enhanced RISC Instructions), Capsicum долбоорунун коопсуздук моделинин негизинде CHERI эстутумга кирүүнү башкаруу тутумун колдой турган ARM Morello процессорун колдоо ишке ашырылып жатат. Морелло чип пландап жатышат 2021-жылы чыгаруу. Учурда иш Мореллону колдогон Arm Neoverse N1 платформасына колдоо кошууга багытталган. RISC-V архитектурасы үчүн CheriBSD баштапкы порту сунушталды. MIPS64 архитектурасына негизделген CHERI шилтеме прототиби үчүн CheriBSD иштеп чыгуу улантылууда.
    • 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 Гб/ге чейинки ылдамдыкта байланышты уюштуруу үчүн колдонулат. с. 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 микропрограммасын колдойт. Отчеттук мезгилде иш ГККдан кланг жана ллдга миграцияга багытталган.

  • Тиркемелер жана порт системасы
    • 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 компоненттерин (Linuxkpi алкагын колдонуп, Linux ядросунун түз көрсөтүү менеджери менен шайкеш келүү үчүн amdgpu, i915 жана radeon DRM модулдарынын иштешин камсыз кылган порт) сактоо боюнча иштер жүрүп жатат. заманбап.

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

Source: opennet.ru

Комментарий кошуу