FreeBSD даму есебі 2019 жылдың XNUMX-тоқсаны

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

  • Жалпы және жүйелі мәселелер
    • Core командасы қосымша патенттік келісіммен BSD лицензиясы бойынша таратылатын жүйеге кодты қосу мүмкіндігін жалпы мақұлдады (BSD + Патент), бірақ осы лицензия бойынша жүйеге әрбір құрамдас бөлікті қосу туралы шешімді бөлек бекіту керек;
    • Орталықтандырылған бастапқы басқару жүйесінен Subversion орталықтандырылмаған Git жүйесіне бастапқы кодтарды көшіруді жүзеге асыру үшін құрылған жұмыс тобының бірінші отырысы өтті. Көші-қонның орындылығы туралы талқылау әлі де жалғасуда және көптеген мәселелер бойынша шешімдер әлі де әзірленуде (мысалы, contrib-мен не істеу керек/, ағымдағы git репозиторийінде хэштерді қалпына келтіру қажет пе және тестілеуді қалай ең жақсы жүзеге асыру керек? міндеттейді);
    • NetBSD-ден тасымалданды KCSAN (Kernel Concurrency Sanitizer) құралдар жинағы, ол әртүрлі процессорларда жұмыс істейтін ядро ​​ағындары арасындағы жарыс жағдайларын анықтауға мүмкіндік береді;
    • GNU binutils ассемблерінің орнына Clang-тің кірістірілген ассемблерін (IAS) пайдалану бойынша жұмыс жүргізілуде;
    • Linux ортасының эмуляциялық инфрақұрылымы (Linuxulator) ARM64 архитектурасында жұмыс істеуге бейімделген. «renameat2» жүйелік шақыруын іске асырды. strace утилитасы Linuxulator жүйесінде іске қосылған Linux орындалатын файлдарындағы ақауларды диагностикалау үшін жетілдірілді. Жаңа glibc файлымен орындалатын файлдарды байланыстыру кезінде бұзылу мәселесі шешілді. Linuxulator үшін Linux құрамдастары бар порттар CentOS 7.7 нұсқасына жаңартылды;
    • Google Summer of Code бағдарламасы аясында студенттер алты жобаны сәтті аяқтады: бірыңғай (IPv4/IPv6) пинг утилитасын енгізу дайындалды, брандмауэрлерді сынауға және ядродағы қателерді анықтауға арналған құралдар әзірленді (ядроны тазартқыш), mac_ipacl модуль ұсынылды, виртуалды жадты қысу үшін код жазылды және портты құру процесін жергілікті орнатудан бөлу үшін жұмыс жасалды;
    • Жүйені пайдалана отырып, FreeBSD ядросын fuzzing тестілеу жобасы дамуын жалғастыруда сызкаллер. Есепті кезеңде syzkaller көмегімен оннан астам қателер анықталып, жойылды. Bhyve негізіндегі виртуалды машиналарда syzkaller іске қосу үшін бөлек сервер бөлінген және пайдаланылады
      syzbot Google инфрақұрылымында әртүрлі FreeBSD ішкі жүйелерін тестілеуді орнатты. Топтау мен талдауды жеңілдету үшін барлық бұзылулар туралы ақпаратты backtrace.io қызметіне жіберуді ұйымдастырды;

    • Ядро деңгейінде zlib енгізуді жаңарту бойынша жұмыс жүргізілуде.
      Қысуға қатысты код 1.0.4 жылдан астам бұрын шығарылған zlib 20 нұсқасынан ағымдағы zlib 1.2.11 кодтық базасына көшірілді. Zlib-ке кіруді біріктіру үшін ядроға қысу, қысу2 және қысуды ашу функциялары қосылды. Netgraph ішкі жүйесінен PPP хаттамасының жұмысын қамтамасыз ететін код осы кітапхананың өз басылымының орнына zlib жүйелік іске асыруды пайдалануға берілді. kern_ctf.c, opencryptodeflate, geom_uzip, subr_compressor, ішкі жүйелер де жаңа zlib-ге ауыстырылды.
      if_mxge, bxe жаңартылды және ng_deflate;

    • Жаңа ядро ​​интерфейсі әзірленуде sysctlinfo, ол MIB (Басқару ақпарат базасы) түрінде өңделген sysctl параметрінің дерекқорындағы элементтерді табуға және объектілер туралы ақпаратты пайдаланушы кеңістігіне тасымалдауға мүмкіндік береді.
  • Қауіпсіздік
    • Ядро модулі әзірленді mac_ipacl, TrustedBSD MAC Framework негізінде және түрме орталары үшін желілік стек параметрлеріне қол жеткізуді басқару жүйесін енгізу. Мысалы, mac_ipacl көмегімен хост жүйесінің әкімшісі түрмедегі түбірлік пайдаланушының белгілі бір желі интерфейстері үшін IP мекенжайларын немесе ішкі желі параметрлерін өзгертуіне немесе орнатуына жол бермейді. Ұсынылған қол жеткізуді басқарудың міндетті жүйесі ол мүмкіндік береді Jail үшін рұқсат етілген IP мекенжайлары мен ішкі желілер тізімдерін орнату, Jail-де белгілі бір IP және ішкі желілерді орнатуға тыйым салу немесе белгілі бір желі интерфейстері үшін ғана параметрлерді өзгертуді шектеу;
    • Intel жобаға бағдарламалық жасақтама стек портын сыйға тартты TPM 2.0 (Сенімді платформа модулі) әдетте микробағдарламаны және ОЖ жүктеушісін тексерілген жүктеу үшін пайдаланылатын қауіпсіз есептеу чипімен интерфейске арналған. Стек құрамдастары қауіпсіздік/tpm2-tss, security/tpm2-tools және security/tpm2-abrmd порттары түрінде ұсынылған. tpm2-tss порты TPM2 API пайдалануға арналған кітапханаларды қамтиды, tpm2-tools TPM әрекеттерін орындауға арналған пәрмен жолы утилиталарын қамтамасыз етеді және tpm2-abrmd әртүрлі TPM пайдаланушыларының сұрауларын мультиплекстейтін TPM Access Broker және Resource Manager құрамдастарының фондық процесін іске асыруды қамтиды. бір құрылғыға. FreeBSD жүйесінде тексерілген жүктеуге қоса, TPM жеке чипте криптографиялық операцияларды орындау арқылы Strongswan IPsec, SSH және TLS қауіпсіздігін арттыру үшін пайдаланылуы мүмкін;
    • Amd64 архитектурасына арналған ядро ​​W^X (XOR орындауды жазу) қорғау техникасын пайдаланып жүктеуге бейімделген, бұл жад беттеріне жазу және орындау үшін бір уақытта қол жеткізу мүмкін емес екенін білдіреді (ядроны енді жазу орындалатын орындалатын жад беттері арқылы жүктеуге болады) тыйым салынады). Жаңа ядроны қорғау әдісі HEAD тармағына енгізілген және FreeBSD 13.0 және 12.2 шығарылымдарына қосылады;
    • mmap және mprotect жүйелік қоңыраулары үшін жүзеге асырылды макросы PROT_MAX(), ол әрі қарай өзгертулер үшін рұқсат етілген қатынасты шектеу жалауларының жиынын анықтауға мүмкіндік береді (PROT_READ, PROT_WRITE, PROT_EXEC). PROT_MAX() көмегімен әзірлеуші ​​жад аймағын орындалатын санатқа немесе орындауға рұқсат бермейтін, бірақ кейін орындалатынға түрлендіруге болатын сұрау жадысына тасымалдауға тыйым сала алады. Мысалы, жад аймағы динамикалық байланыстыру немесе JIT кодын генерациялау ұзақтығы үшін ғана жазу үшін ашық болуы мүмкін, бірақ жазу аяқталғаннан кейін ол тек оқуға және орындауға ғана шектеледі, ал болашақта, егер бұзылған болса, шабуылдаушы сол жад блогы үшін жазуды қоса алмайды. PROT_MAX() қызметіне қосымша sysctl vm.imply_prot_max іске қосылады, ол іске қосылған кезде mmap-қа бірінші шақырудың бастапқы параметрлері негізінде жарамды жалаулар жиынын анықтайды;
    • Осалдықтарды пайдаланудан қорғауды күшейту үшін мекен-жай кеңістігін рандомизациялау әдісіне (ASLR) қосымша, қоршаған орта, бағдарламаны іске қосу параметрлері және деректері туралы ақпаратпен стекке орналастырылған құрылымдардың және бастапқы стектің жақтауына бағытталған көрсеткіштердің ығысуын рандомизациялау механизмі. ELF форматындағы орындалатын кескіндер үшін ұсынылады;
    • Libc жүйесінен қауіпті алу функциясын жою (C11 стандартынан бастап бұл функция спецификациядан алынып тасталды) және осы функцияны әлі де қолданатын порттарды түзету бойынша жұмыс жасалды. Өзгеріс FreeBSD 13.0 жүйесінде ұсынылады деп жоспарлануда;
    • Фреймворк негізінде түрме орталарын ұйымдастыруға арналған құралдарды жасау үшін эксперименталды жоба іске қосылды құмыра Docker және драйверге ұқсас кескіндерді жасауға және экспорттауға арналған көшпенді, ол түрме ортасында қолданбаларды динамикалық іске қосу үшін интерфейсті қамтамасыз етеді. Ұсынылған модель түрме орталарын құру және оларда қолданбаларды орналастыру процестерін бөлуге мүмкіндік береді. Жобаның мақсаттарының бірі түрмелерді Докер стиліндегі контейнерлер ретінде манипуляциялау құралдарын қамтамасыз ету;
  • Сақтау және файлдық жүйелер
    • NetBSD-ден "makefs" утилитасына дейін қозғалды FAT файлдық жүйесін қолдау (msdosfs). Дайындалған өзгертулер md драйверін қолданбай және түбірлік рұқсатсыз FAT көмегімен FS кескіндерін жасауға мүмкіндік береді;
    • FUSE (USERspace ішіндегі файлдық жүйе) ішкі жүйе драйверін қайта өңдеу аяқталды, бұл пайдаланушы кеңістігінде файлдық жүйені іске асыруды жасауға мүмкіндік береді. Бастапқыда жеткізілген драйверде көптеген қателер болды және 7.8 жыл бұрын шығарылған FUSE 11 негізінде жасалған. Драйверді жаңғырту жобасының бөлігі ретінде FUSE 7.23 хаттамасына қолдау көрсетілді, ядро ​​жағындағы кіру құқықтарын тексеру коды («-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 жалаушалары қосылды, өнімділікті айтарлықтай оңтайландырулар және кэштеуді ұйымдастыру жақсарды. Жаңа драйвер бас және тұрақты/12 тармақтарына кіреді (FreeBSD 12.1 құрамына кіреді);
    • FreeBSD үшін NFSv4.2 (RFC-7862) енгізу аяқталуға жақын. Есепті кезеңде басты назар тестілеуге аударылды. Linux енгізуімен үйлесімділікті тексеру үшін сынақтар аяқталды, бірақ pNFS серверін NFSv4.2 арқылы сынау әлі жалғасуда. Жалпы, код қазірдің өзінде FreeBSD бас/ағымдағы тармақтарына біріктіруге дайын деп саналады. NFS жаңа нұсқасы posix_fadvise, posix_fallocate функцияларын, lseek тіліндегі SEEKHOLE/SEEKDATA режимдерін, серверде файл бөліктерін жергілікті көшіру операциясын (клиентке тасымалдамай) қосады;
  • Аппараттық қолдау
    • Ноутбуктердегі FreeBSD өнімділігін жақсарту үшін жоба іске қосылды. FreeBSD жүйесінде аппараттық қолдау тексеруден өткен бірінші құрылғы жетінші буын Lenovo X1 Carbon ноутбугы болды;
    • CheriBSD, зерттеу процессорының архитектурасына арналған FreeBSD шанышқысы CHERI (Capability Hardware Enhanced RISC Instructions), Capsicum дизайнының қауіпсіздік үлгісіне негізделген CHERI жадқа кіруді басқару жүйесін қолдайтын алдағы ARM Morello процессорын қолдау үшін жаңартылды. Морелло чипі жоспарлап отыр 2021 жылы шығарылады. CheriBSD әзірлеушілері сонымен қатар MIPS архитектурасына негізделген CHERI анықтамалық прототипінің дамуын бақылауды жалғастыруда;
    • RockPro3399 және NanoPC-T64 тақталарында қолданылатын RockChip RK4 чиптеріне кеңейтілген қолдау. Ең маңызды жақсарту eMMC қолдауы және тақтада қолданылатын eMMC контроллері үшін жаңа драйверді әзірлеу болды;
    • Маршрутизаторларда, шлюздерде және желілік жадта пайдалануға бағытталған ARMv64 Cortex-A5871 процессорлары бар ARM8 SoC Broadcom BCM57X қолдауын енгізу бойынша жұмыс жалғасуда. Есепті кезеңде
      iProc PCIe қолдауы кеңейтілді және IPsec жылдамдату үшін аппараттық криптографиялық операцияларды пайдалану мүмкіндігі қосылды.
      HEAD филиалына код интеграциясы төртінші тоқсанда күтілуде;

    • Powerpc64 платформасы үшін FreeBSD портын әзірлеуде айтарлықтай жетістіктер болды. Негізгі назар IBM POWER8 және POWER9 процессорлары бар жүйелерде сапалы өнімділікті қамтамасыз етуге бағытталған, бірақ қосымша ескі Apple Power Mac, x500 және Amiga A1222 құрылғыларында жұмыс істеуге қолдау көрсетеді. powerpc*/12 тармағы gcc 4.2.1 нұсқасымен жеткізілуін жалғастыруда, ал powerpc*/13 тармағы жақында llvm90 нұсқасына тасымалданады. 33306 порттың 30514-і сәтті құрастырылды;
    • FreeBSD порты біріктірілген желілік пакеттерді өңдеуді жеделдету қозғалтқышы, 64 Гб Ethernet, PCIe 1046, SATA 8 және USB 72 бар ARMv10 Cortex-A3.0 процессорына негізделген 3.0 биттік SoC NXP LS3.0A үшін жалғасуда. Есепті кезеңде USB 3.0, SD/MMC, I2C, DPAA және GPIO желілік интерфейсін қолдау жүзеге асырылды. QSPI қолдау және желі интерфейсінің өнімділігін оңтайландыру жоспарлары бар. Жұмыстың аяқталуы және БАСҚА филиалына қосылуы 4 жылдың 2019 тоқсанында күтілуде;
    • ena драйвері EC2 түйіндері арасында 2 Гбит/с жылдамдықпен байланысты ұйымдастыру үшін Elastic Compute Cloud (EC2) инфрақұрылымында пайдаланылатын ENAv25 (Elastic Network Adapter) желілік адаптерлерінің екінші буынын қолдау үшін жаңартылды. NETMAP қолдауы ena драйверіне қосылды және тексерілді және жад орналасуы Amazon EC2 A1 орталарында LLQ режимін қосуға бейімделді;
  • Қолданбалар және порт жүйесі
    • Жаңартылған графикалық стек компоненттері және xorg қатысты порттары. USE_XORG және XORG_CAT пайдаланатын порттар bsd.port.mk арқылы bsd.xorg.mk шақырудың орнына USES құрылымына жылжытылды. Мұндай порттар енді өздерінің макфайлдарында «USES=xorg» жалауын қамтиды. XORG_CAT функциясы bsd.xorg.mk сайтынан бөлінген және қазір "USES=xorg-cat" жалаушасы арқылы қосылған. git репозиторийінен xorg порттарын тікелей жасауға арналған құралдар қосылды
      freedesktop.org, ол, мысалы, әлі шығарылмаған нұсқалар үшін порттар жасауға мүмкіндік береді. Болашақта xorg порттарын құру үшін автоқұралдардың орнына мезон құрастыру жүйесін пайдалану үшін құралдарды дайындауды жоспарлап отырмыз.

      Енді қолдау көрсетілмейтін құрамдастарға байланыстырылған ескі xorg порттарын тазалау бойынша жұмыс жасалды, мысалы, x11/libXp порты жойылды және x11/Xxf86misc, x11-fonts/libXfontcache және graphics/libGLw порттары ескірген. ;

    • Java 11 және FreeBSD жүйесіндегі жаңа шығарылымдарға қолдау көрсетуді жақсарту, сондай-ақ Java 8 тармағына кейбір өзгерістерді енгізу бойынша жұмыс жүргізілді. Java 11 жаңа мүмкіндіктеріне Java Flight Recorder, HotSpot Serviceability Agent, HotSpot Debugger сияқты қолдау көрсетілгеннен кейін іске асырылды. FreeBSD , DTrace, Javac Server, Java Sound және SCTP үшін жұмыс барлық үйлесімділік сынақтарынан өткенін қамтамасыз етуге ауысты. Сынақтарды тапсыру кезіндегі сәтсіздіктер саны 50-ден 2-ге дейін қысқарды;
    • KDE Plasma жұмыс үстелі, KDE Frameworks, KDE қолданбалары және Qt жаңартылған және соңғы шығарылымдарға жаңартылған;
    • Xfce жұмыс үстелі бар порттар шығару үшін жаңартылды 4.14;
    • FreeBSD порттары ағашы 38000 2000 порттан асты, жабылмаған PR саны 400-нан сәл асады, оның ішінде 7340 PR әлі шешілмеген. Есепті кезеңде 169 әзірлеушіден 1.12 өзгерту енгізілді. Екі жаңа қатысушы (Сантош Раджу және Дмитрий Гоутник) орындаушы құқығын алды. Pkg 2.0.4 пакет менеджерінің жаңа шығарылымы жарияланды, порттар ағашындағы қабаттасуға қолдау көрсету және bsd.sites.mk тазалау. Порттардағы маңызды нұсқа жаңартуларының арасында: Lazarus 9.0, LLVM 5.30, Perl11, PostgreSQL 2.6, Ruby 69.0.1, Firefox 68.1.0, Firefox-esr 76.0, Chromium XNUMX;
    • Жобаны әзірлеу жалғасуда ClonOS, дамуда виртуалды сервер инфрақұрылымын орналастыруға арналған мамандандырылған дистрибутив. Өзі шешетін тапсырмалары бойынша ClonOS Proxmox, Triton (Joyent), OpenStack, OpenNebula және Amazon AWS сияқты жүйелерге ұқсайды, олардың негізгі айырмашылығы FreeBSD пайдалану және FreeBSD Jail контейнерлерін басқару, орналастыру және басқару мүмкіндігі және Bhyve және Xen гипервизорларына негізделген виртуалды орталар. Соңғы өзгерістер қолдауды қамтиды
      Linux/BSD VM үшін cloud-init және Windows VM үшін cloudbase-init, құрастыруларды сынау үшін Jenkins CI және орнату үшін жаңа pkg репозиторийін пайдаланып, жергілікті кескіндерді пайдалануға көшуді бастайды.
      Пакеттерден ClonOS.

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

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