รายงานการพัฒนา FreeBSD ไตรมาสที่ 2020 ปี XNUMX

ที่ตีพิมพ์ รายงานการพัฒนาโครงการ FreeBSD ตั้งแต่เดือนมกราคมถึงมีนาคม 2020 การเปลี่ยนแปลงได้แก่:

  • คำถามทั่วไปและระบบ
    • ลบชุดคอมไพเลอร์ GCC ออกจากแผนผังต้นทาง FreeBSD-CURRENT รวมถึงยูทิลิตี้ที่ไม่ได้ใช้ gperf, gcov และ gtc (คอมไพเลอร์ Devicetree) แพลตฟอร์มทั้งหมดที่ไม่รองรับ Clang ถูกเปลี่ยนไปใช้เครื่องมือสร้างภายนอกที่ติดตั้งจากพอร์ต ระบบฐานจัดส่ง GCC เวอร์ชัน 4.2.1 ที่ล้าสมัย และไม่สามารถรวมเวอร์ชันที่ใหม่กว่าได้เนื่องจากการสลับไปใช้ใบอนุญาต GPLv4.2.2 ของ 3 ซึ่งถือว่าไม่สามารถยอมรับได้สำหรับส่วนประกอบหลักของ FreeBSD GCC รุ่นปัจจุบัน รวมถึง GCC 9 ยังคงสามารถติดตั้งได้จากแพ็คเกจและพอร์ต
    • เพิ่มการสนับสนุนสำหรับการเรียกระบบ sendfile, โหมด TCP_CORK (จำเป็นสำหรับ nginx), การตั้งค่าสถานะ MAP_32BIT (แก้ปัญหาการรันแพ็คเกจด้วย Mono จาก Ubuntu Bionic) ลงในโครงสร้างพื้นฐานการจำลองสภาพแวดล้อม Linux (Linuxulator) แก้ไขปัญหาเกี่ยวกับการแก้ไข DNS เมื่อใช้ glibc ใหม่กว่า 2.30 (เช่นจาก CentOS 8)
      กรอบงานการรวมอย่างต่อเนื่องจัดเตรียมงานที่กำลังรันเพื่อรัน LTP (โครงการทดสอบ Linux) ภายใต้ Linuxulator เพื่อทดสอบการปรับปรุงโค้ดเพื่อรองรับ Linux การทดสอบประมาณ 400 ครั้งล้มเหลวและจำเป็นต้องได้รับการแก้ไข (ข้อบกพร่องบางอย่างเกิดจากการบวกลวง บางส่วนต้องการการแก้ไขเล็กน้อย แต่มีข้อบกพร่องอื่นๆ ที่ต้องแก้ไขการสนับสนุนการโทรของระบบใหม่) มีการทำงานเพื่อล้างโค้ด Linuxulator และทำให้การดีบักง่ายขึ้น แพตช์ที่เตรียมไว้แต่ยังไม่ได้ตรวจสอบ พร้อมรองรับแอตทริบิวต์เพิ่มเติมและการเรียกระบบ fexecve

    • การประชุมของคณะทำงานที่สร้างขึ้นเพื่อดำเนินการโยกย้ายซอร์สโค้ดจากระบบการจัดการซอร์สโค้ดแบบรวมศูนย์ การโค่นล้มไปยังระบบ Git แบบกระจายอำนาจยังคงดำเนินต่อไป รายงานพร้อมข้อเสนอการย้ายถิ่นอยู่ระหว่างการเตรียมการ
    • В rtld (รันไทม์ลิงเกอร์) ปรับปรุงโหมดการดำเนินการโดยตรง ("/libexec/ld-elf.so.1 {path} {arguments}")
    • โปรเจ็กต์ทดสอบ fuzz เคอร์เนล FreeBSD โดยใช้ระบบ syzkaller ยังคงพัฒนาต่อไป ในช่วงระยะเวลาการรายงาน ปัญหาได้รับการแก้ไขในสแต็กเครือข่ายและโค้ดสำหรับการทำงานกับตารางตัวอธิบายไฟล์ ซึ่งระบุโดยใช้ syzkaller หลังจากการวินิจฉัยข้อผิดพลาด ได้มีการเพิ่มการเปลี่ยนแปลงลงในสแต็ก SCTP เพื่อให้การแก้ไขจุดบกพร่องง่ายขึ้น เพิ่มกฎให้กับชุดความเครียด 2 เพื่อตรวจจับการถดถอยที่เป็นไปได้ เพิ่มการรองรับสำหรับการทดสอบการเรียกระบบใหม่แบบคลุมเครือ รวมถึง copy_file_range(), __realpathat() และการเรียกไปยังระบบย่อย Capsicum งานยังคงครอบคลุมเลเยอร์การจำลอง Linux ด้วยการทดสอบแบบคลุมเครือ วิเคราะห์และกำจัดข้อผิดพลาดที่ระบุไว้ในรายงาน Coverity Scan ล่าสุด
    • ในระบบบูรณาการอย่างต่อเนื่อง มีการเปลี่ยนแปลงเพื่อดำเนินการทดสอบทั้งหมดของสาขาหลักโดยใช้ clang/lld เท่านั้น เมื่อทำการทดสอบ RISC-V จะมีการสร้างดิสก์อิมเมจที่สมบูรณ์สำหรับการรันการทดสอบใน QEMU โดยใช้ OpenSBI เพิ่มงานใหม่สำหรับการทดสอบอิมเมจ powerpc64 และเครื่องเสมือน (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm)
    • งานอยู่ระหว่างดำเนินการเพื่อย้ายชุดทดสอบ Kyua จากพอร์ต (devel/kyua) ไปยังระบบฐานเพื่อแก้ไขปัญหา (แพ็คเกจช้ามาก) ที่เกิดขึ้นเมื่อใช้ Kyua บนสถาปัตยกรรมใหม่ที่กำลังได้รับการพัฒนาโดยใช้โปรแกรมจำลองหรือ FPGA การบูรณาการเข้ากับระบบฐานจะช่วยลดความยุ่งยากในการทดสอบแพลตฟอร์มแบบฝังและการเชื่อมต่อกับระบบบูรณาการอย่างต่อเนื่อง
    • เริ่มโครงการเพื่อเพิ่มประสิทธิภาพการทำงานของไดรเวอร์บริดจ์เครือข่าย ถ้า_บริดจ์ซึ่งใช้ mutex หนึ่งตัวเพื่อบล็อกข้อมูลภายใน ซึ่งไม่อนุญาตให้บรรลุประสิทธิภาพที่ต้องการบนระบบที่มีสภาพแวดล้อมที่ถูกเจลหรือเครื่องเสมือนจำนวนมากที่เชื่อมต่อกับเครือข่ายเดียวกัน ในขั้นตอนนี้ มีการเพิ่มการทดสอบลงในโค้ดเพื่อป้องกันการถดถอยในกระบวนการปรับปรุงการทำงานด้วยการล็อคให้ทันสมัย ความเป็นไปได้ของการใช้ ConcurrencyKit เพื่อทำให้ตัวจัดการการถ่ายโอนข้อมูลแบบขนาน (bridge_input(), bridge_output(), bridge_forward(), ...) อยู่ระหว่างการพิจารณา
    • มีการเพิ่มการเรียกระบบ sigfastblock ใหม่เพื่ออนุญาตให้เธรดระบุบล็อกของหน่วยความจำสำหรับตัวจัดการสัญญาณที่รวดเร็วเพื่อปรับปรุงประสิทธิภาพของตัวจัดการข้อยกเว้น
    • เคอร์เนลเพิ่มการรองรับคำสั่งอะตอมมิก LSE (Large System Extension) ที่รองรับโดยระบบ ARMv8.1 คำแนะนำเหล่านี้จำเป็นในการปรับปรุงประสิทธิภาพเมื่อทำงานบนบอร์ด Cavium ThunderX2 และ AWS Graviton 2 การเปลี่ยนแปลงที่เพิ่มเข้ามาจะตรวจจับการรองรับ LSE และเปิดใช้งานการใช้งานอะตอมมิกแบบไดนามิกตามการเปลี่ยนแปลงเหล่านั้น ในระหว่างการทดสอบ การใช้ LSE ทำให้สามารถลดเวลา CPU ที่ใช้ในการประกอบเคอร์เนลได้ 15%
    • ประสิทธิภาพได้รับการปรับให้เหมาะสมและฟังก์ชันการทำงานของชุดเครื่องมือสำหรับไฟล์ปฏิบัติการในรูปแบบ ELF ได้รับการขยาย
      เพิ่มการสนับสนุนสำหรับการแคชข้อมูลการแก้ปัญหา DWARF แก้ไขปัญหาในยูทิลิตี้ elfcopy/objcopy เพิ่มการประมวลผล DW_AT_ranges
      readelf ใช้ความสามารถในการถอดรหัสแฟล็ก PROTMAX_DISABLE, STKGAP_DISABLE และ WXNEEDED รวมถึง Xen และ GNU Build-ID

  • ความปลอดภัย
    • เพื่อปรับปรุงประสิทธิภาพของ FreeBSD ในสภาพแวดล้อมคลาวด์ Azure งานกำลังดำเนินการเพื่อให้การสนับสนุนกลไกซ็อกเก็ต HyperV ซึ่งอนุญาตให้ใช้อินเทอร์เฟซซ็อกเก็ตเพื่อโต้ตอบกับระบบเกสต์กับสภาพแวดล้อมโฮสต์โดยไม่ต้องตั้งค่าเครือข่าย
    • งานกำลังดำเนินการเพื่อจัดเตรียม FreeBSD ที่สร้างซ้ำได้เพื่อให้แน่ใจว่าไฟล์ปฏิบัติการของส่วนประกอบระบบนั้นถูกสร้างขึ้นจากแหล่งที่ประกาศไว้ทุกประการ และไม่มีการเปลี่ยนแปลงที่ไม่จำเป็น
    • เพิ่มความสามารถในการควบคุมการรวมกลไกการป้องกันเพิ่มเติม (ASLR, PROT_MAX, ช่องว่างสแต็ก, การทำแผนที่ W + X) ในระดับของแต่ละกระบวนการได้ถูกเพิ่มลงในยูทิลิตี้ elfctl
  • ระบบจัดเก็บข้อมูลและไฟล์
    • งานกำลังดำเนินการเพื่อใช้ความสามารถในการทำงาน NFS ผ่านช่องทางการสื่อสารที่เข้ารหัสตาม TLS 1.3 แทนที่จะใช้ Kerberos (โหมด sec=krb5p) ซึ่งจำกัดอยู่เพียงการเข้ารหัสเฉพาะข้อความ RPC และใช้งานในซอฟต์แวร์เท่านั้น การใช้งานใหม่นี้ใช้สแต็ก TLS ที่เคอร์เนลจัดเตรียมไว้เพื่อเปิดใช้งานการเร่งด้วยฮาร์ดแวร์ รหัส NFS บน TLS ใกล้จะพร้อมสำหรับการทดสอบแล้ว แต่ยังต้องมีการทำงานเพื่อรองรับใบรับรองไคลเอ็นต์ที่ลงนามและปรับสแต็ก TLS ของเคอร์เนลเพื่อส่งข้อมูล NFS (แพตช์สำหรับการรับพร้อมแล้ว)
  • การสนับสนุนฮาร์ดแวร์
    • งานอยู่ระหว่างดำเนินการเพื่อเพิ่มการรองรับ CPU Hygon ของจีน x86 ที่ใช้เทคโนโลยี AMD
    • ภายใน CheriBSD ทางแยกของ FreeBSD สำหรับสถาปัตยกรรมโปรเซสเซอร์การวิจัย เชอรี่ (คำสั่ง RISC ที่ปรับปรุงประสิทธิภาพฮาร์ดแวร์) การดำเนินการสนับสนุนโปรเซสเซอร์ ARM Morello ยังคงดำเนินต่อไป ซึ่งจะสนับสนุนระบบควบคุมการเข้าถึงหน่วยความจำ CHERI ตามรูปแบบความปลอดภัยของ Capsicum ชิปโมเรลโล กำลังวางแผน เปิดตัวในปี 2021 ขณะนี้งานมุ่งเน้นไปที่การเพิ่มการรองรับแพลตฟอร์ม Arm Neoverse N1 ซึ่งเป็นรากฐานของ Morello พอร์ตเริ่มต้นของ CheriBSD สำหรับสถาปัตยกรรม RISC-V ได้รับการแนะนำแล้ว การพัฒนา CheriBSD สำหรับต้นแบบอ้างอิง CHERI โดยใช้สถาปัตยกรรม MIPS64 ยังคงดำเนินต่อไป
    • การย้าย FreeBSD ไปยัง NXP LS64A 1046-บิต SoC ที่ใช้โปรเซสเซอร์ ARMv8 Cortex-A72 พร้อมกลไกเร่งความเร็วการประมวลผลแพ็กเก็ตเครือข่ายในตัว, อีเธอร์เน็ต 10 Gb, 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 Gb/s การอัพเกรดเป็น ENA 2.2.0 อยู่ระหว่างการเตรียมการ
    • พอร์ต FreeBSD สำหรับแพลตฟอร์ม powerpc64 ยังคงได้รับการปรับปรุงอย่างต่อเนื่อง จุดมุ่งเน้นอยู่ที่การรับประกันประสิทธิภาพที่มีคุณภาพบนระบบที่มีตัวประมวลผล IBM POWER8 และ POWER9 ในช่วงระยะเวลาการรายงาน FreeBSD-CURRENT ถูกเปลี่ยนไปใช้คอมไพเลอร์ LLVM/Clang 10.0 และตัวเชื่อมโยง lld แทน GCC ELFv64 ABI ถูกเปิดใช้งานโดยดีฟอลต์สำหรับระบบ powerpc2 และ 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 ไปยัง clang และ lld

  • แอพพลิเคชั่นและระบบพอร์ต
    • FreeBSD Ports Collection ผ่านหลักชัยของพอร์ต 39 พอร์ตแล้ว จำนวน PR ที่เปิดอยู่มีมากกว่า 2400 พอร์ตเล็กน้อย ซึ่ง 640 PR ยังคงโดดเด่นอยู่ ในช่วงระยะเวลาการรายงาน มีการเปลี่ยนแปลง 8146 รายการโดยนักพัฒนา 173 ราย สมาชิกใหม่สี่คน (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore) ได้รับสิทธิ์ในการเป็นกรรมการ เพิ่ม USES=qca flag และลบ USES=zope flag (เนื่องจากเข้ากันไม่ได้กับ 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 ทันสมัยอยู่เสมอ (พอร์ตที่มีโมดูล amdgpu, i915 และ radeon DRM โดยใช้เฟรมเวิร์ก linuxkpi เพื่อความเข้ากันได้กับ Direct Rendering Manager ของเคอร์เนล Linux ).

    • เดสก์ท็อป KDE Plasma, กรอบงาน KDE, แอปพลิเคชัน KDE และ Qt ได้รับการอัปเดตและอัปเดตเป็นรุ่นล่าสุด มีการเพิ่มแอปพลิเคชันใหม่ kstars (star atlas) ลงในพอร์ตแล้ว
    • ได้มีการดำเนินการเพื่อกำจัดการเปลี่ยนแปลงแบบถดถอยในตัวจัดการหน้าต่าง xfwm4 ที่เกิดขึ้นหลังจากอัปเดต Xfce เป็นเวอร์ชัน 4.14 (เช่น อาร์ติแฟกต์ปรากฏขึ้นเมื่อตกแต่งหน้าต่าง)
    • พอร์ตที่มี Wine ได้รับการอัพเดตเป็น Wine 5.0 (ก่อนหน้านี้มีการนำเสนอ 4.0.3)
    • ตั้งแต่เวอร์ชัน 1.14 เป็นต้นไป คอมไพเลอร์ Go ได้เพิ่มการสนับสนุนอย่างเป็นทางการสำหรับสถาปัตยกรรม ARM64 สำหรับ FreeBSD 12.0
    • OpenSSH บนระบบพื้นฐานได้รับการอัพเดตเป็นรุ่น 7.9p1
    • นำไปใช้และวางในพอร์ต (devel/libsysctlmibinfo2) คือไลบรารี sysctlmibinfo2 ซึ่งจัดเตรียม API สำหรับการเข้าถึง sysctl MIB และการแปลชื่อ sysctl เป็นตัวระบุอ็อบเจ็กต์ (OID)
    • อัปเดตการจัดจำหน่ายแล้ว โนแมดBSD 1.3.1ซึ่งเป็นรุ่น FreeBSD ที่ดัดแปลงเพื่อใช้เป็นเดสก์ท็อปแบบพกพาที่สามารถบูตได้จากไดรฟ์ USB สภาพแวดล้อมแบบกราฟิกจะขึ้นอยู่กับตัวจัดการหน้าต่าง เปิดกล่อง. ใช้สำหรับติดตั้งไดรฟ์ DSBMD (รองรับการติดตั้ง CD9660, FAT, HFS+, NTFS, Ext2/3/4) เพื่อตั้งค่าเครือข่ายไร้สาย — wifimgrและเพื่อควบคุมระดับเสียง - DSBMixer.
    • เริ่ม ทำงาน ในการเขียนเอกสารครบถ้วนสำหรับผู้จัดการสภาพแวดล้อมเรือนจำ สามารถ. กำลังเตรียม Pot 0.11.0 สำหรับการเปิดตัว ซึ่งจะแนะนำเครื่องมือการจัดการสแต็กเครือข่าย

ที่มา: opennet.ru

เพิ่มความคิดเห็น