Báo cáo phát triển FreeBSD trong quý đầu tiên năm 2020

được phát hành báo cáo về quá trình phát triển dự án FreeBSD từ tháng 2020 đến tháng XNUMX năm XNUMX. Trong số những thay đổi chúng ta có thể lưu ý:

  • Các vấn đề chung và mang tính hệ thống
    • Đã xóa bộ biên dịch GCC khỏi cây nguồn FreeBSD-CURRENT, cũng như các tiện ích gperf, gcov và gtc (trình biên dịch devicetree) không được sử dụng. Tất cả các nền tảng không hỗ trợ Clang đã được chuyển sang sử dụng các công cụ xây dựng bên ngoài được cài đặt từ các cổng. Hệ thống cơ sở đã cung cấp bản phát hành GCC 4.2.1 lỗi thời và không thể tích hợp các phiên bản mới hơn do quá trình chuyển đổi 4.2.2 sang giấy phép GPLv3, được coi là không phù hợp với các thành phần cơ sở FreeBSD. Các bản phát hành hiện tại của GCC, bao gồm GCC 9, vẫn có thể được cài đặt từ các gói và cổng.
    • Cơ sở hạ tầng mô phỏng môi trường Linux (Linuxulator) đã bổ sung hỗ trợ cho lệnh gọi hệ thống sendfile, chế độ TCP_CORK (bắt buộc đối với nginx) và cờ MAP_32BIT (giải quyết vấn đề khi khởi chạy các gói với Mono từ Ubuntu Bionic). Các vấn đề về độ phân giải DNS khi sử dụng glibc mới hơn 2.30 (ví dụ từ CentOS 8) đã được giải quyết.
      Cơ sở hạ tầng tích hợp liên tục cung cấp khả năng chạy các công việc LTP (Dự án thử nghiệm Linux) chạy Linuxulator để kiểm tra các cải tiến được thực hiện đối với mã nhằm hỗ trợ Linux. Khoảng 400 thử nghiệm không thành công và cần phải sửa (một số lỗi do kết quả dương tính giả gây ra, một số yêu cầu sửa lỗi nhỏ, nhưng có những lỗi khác yêu cầu thêm hỗ trợ cho lệnh gọi hệ thống mới để sửa). Công việc đã được thực hiện để làm sạch mã Linuxulator và đơn giản hóa việc gỡ lỗi. Các bản vá có hỗ trợ cho các thuộc tính mở rộng và lệnh gọi hệ thống feexecve đã được chuẩn bị nhưng chưa được xem xét.

    • Các cuộc họp của nhóm làm việc được thành lập để thực hiện việc di chuyển mã nguồn từ hệ thống kiểm soát nguồn tập trung Subversion sang hệ thống phi tập trung Git vẫn tiếp tục. Một báo cáo với các đề xuất di cư đang trong quá trình chuẩn bị.
    • В rtld (trình liên kết thời gian chạy) đã cải thiện chế độ thực thi trực tiếp (“/libexec/ld-elf.so.1 {path} {arguments}”).
    • Dự án thử nghiệm làm mờ hạt nhân FreeBSD bằng hệ thống syzkaller tiếp tục phát triển. Trong thời gian báo cáo, các vấn đề trong ngăn xếp mạng và mã để làm việc với các bảng mô tả tệp được xác định bằng syzkaller đã được loại bỏ. Sau khi chẩn đoán lỗi, các thay đổi đã được thêm vào ngăn xếp SCTP để giúp việc gỡ lỗi dễ dàng hơn. Các quy tắc đã được thêm vào bộ stress2 để xác định các hồi quy có thể xảy ra. Đã thêm hỗ trợ để kiểm tra fuzz các lệnh gọi hệ thống mới, bao gồm lệnh gọi hệ thống con copy_file_range(), __realpathat() và Capsicum. Công việc tiếp tục bao gồm lớp mô phỏng Linux bằng thử nghiệm lông tơ. Chúng tôi đã phân tích và loại bỏ các lỗi được ghi nhận trong báo cáo Coverity Scan mới nhất.
    • Hệ thống tích hợp liên tục đã chuyển sang thực hiện tất cả các bài kiểm tra nhánh đầu chỉ bằng cách sử dụng clang/lld. Khi kiểm tra RISC-V, việc hình thành hình ảnh đĩa hoàn chỉnh được đảm bảo để chạy thử nghiệm trong QEMU bằng OpenSBI. Đã thêm các tác vụ mới để kiểm tra hình ảnh và máy ảo powerpc64 (FreeBSD-head-powerpc64-image, FreeBSD-head-powerpc64-testvm).
    • Công việc đang được tiến hành để chuyển bộ thử nghiệm Kyua từ các cổng (devel/kyua) sang hệ thống cơ sở nhằm giải quyết các vấn đề (các gói được cài đặt rất chậm) phát sinh khi sử dụng Kyua trên các kiến ​​trúc mới, việc phát triển được thực hiện bằng trình mô phỏng hoặc FPGA. Việc tích hợp vào hệ thống cơ sở sẽ đơn giản hóa đáng kể việc thử nghiệm các nền tảng và giao diện nhúng với các hệ thống tích hợp liên tục.
    • Một dự án đã được đưa ra để tối ưu hóa hiệu suất của trình điều khiển cầu nối mạng if_bridge, sử dụng một mutex duy nhất để khóa dữ liệu nội bộ, điều này không cho phép đạt được hiệu suất mong muốn trên các hệ thống có số lượng lớn môi trường tù hoặc máy ảo được hợp nhất trong một mạng. Ở giai đoạn này, các thử nghiệm đã được thêm vào mã để ngăn chặn sự hồi quy xảy ra trong quá trình hiện đại hóa cách làm việc với ổ khóa. Khả năng sử dụng ConcurrencyKit để song song hóa các trình xử lý truyền dữ liệu (bridge_input(), bridge_output(), bridge_forward(), ...) đang được xem xét.
    • Đã thêm lệnh gọi hệ thống sigfastblock mới để cho phép một luồng chỉ định một khối bộ nhớ cho trình xử lý tín hiệu nhanh nhằm cải thiện hiệu suất của các trình xử lý ngoại lệ.
    • Hạt nhân bổ sung hỗ trợ cho các hướng dẫn nguyên tử LSE (Mở rộng hệ thống lớn) được hệ thống ARMv8.1 hỗ trợ. Cần có những hướng dẫn này để cải thiện hiệu suất khi chạy trên bo mạch Cavium ThunderX2 và AWS Graviton 2. Các thay đổi bổ sung sẽ phát hiện hỗ trợ LSE và cho phép linh hoạt triển khai nguyên tử dựa trên chúng. Trong quá trình thử nghiệm, việc sử dụng LSE giúp giảm 15% thời gian xử lý của bộ xử lý khi lắp ráp hạt nhân.
    • Tối ưu hóa hiệu suất đã được thực hiện và chức năng của bộ công cụ đã được mở rộng cho các tệp thực thi ở định dạng ELF.
      Đã thêm hỗ trợ cho thông tin gỡ lỗi DWARF lưu vào bộ đệm, giải quyết các vấn đề trong tiện ích elfcopy/objcopy, thêm xử lý DW_AT_ranges,
      readelf triển khai khả năng giải mã các cờ PROTMAX_DISABLE, STKGAP_DISABLE và WXNEEDED, cũng như Xen và GNU Build-ID.

  • Безопасность
    • Để cải thiện hiệu suất của FreeBSD trong môi trường đám mây Azure, công việc đang được tiến hành để cung cấp hỗ trợ cho cơ chế HyperV Socket, cho phép sử dụng giao diện ổ cắm để tương tác giữa hệ thống khách và môi trường máy chủ mà không cần thiết lập mạng.
    • Công việc đang được tiến hành để cung cấp các bản dựng FreeBSD có thể lặp lại, giúp đảm bảo rằng các tệp thực thi của các thành phần hệ thống được biên dịch chính xác từ mã nguồn đã khai báo và không chứa các thay đổi không liên quan.
    • Khả năng kiểm soát việc đưa vào các cơ chế bảo vệ bổ sung (ASLR, PROT_MAX, khoảng cách ngăn xếp, ánh xạ W+X) ở cấp độ các quy trình riêng lẻ đã được thêm vào tiện ích elfctl
  • Hệ thống lưu trữ và tập tin
    • Công việc đang được tiến hành để triển khai khả năng cho NFS hoạt động trên kênh liên lạc được mã hóa dựa trên TLS 1.3, thay vì sử dụng Kerberos (chế độ sec=krb5p), chế độ này bị giới hạn ở việc chỉ mã hóa các tin nhắn RPC và chỉ được triển khai trong phần mềm. Việc triển khai mới sử dụng ngăn xếp TLS do kernel cung cấp để cho phép tăng tốc phần cứng. Mã NFS qua TLS gần như đã sẵn sàng để thử nghiệm nhưng vẫn cần nỗ lực để hỗ trợ các chứng chỉ ứng dụng khách đã ký và điều chỉnh ngăn xếp TLS hạt nhân để gửi dữ liệu NFS (các bản vá để nhận đã sẵn sàng).
  • Hỗ trợ phần cứng
    • Công việc đang được tiến hành để bổ sung hỗ trợ cho CPU Hygon x86 của Trung Quốc dựa trên công nghệ AMD;
    • Là một phần của CheriBSD, một nhánh của FreeBSD dành cho kiến ​​trúc bộ xử lý nghiên cứu CHERI (Hướng dẫn RISC nâng cao khả năng phần cứng), việc hỗ trợ cho bộ xử lý ARM Morello tiếp tục được triển khai, điều này sẽ hỗ trợ hệ thống kiểm soát truy cập bộ nhớ CHERI dựa trên mô hình bảo mật dự án Capsicum. Chip Morello đang lên kế hoạch phát hành vào năm 2021. Công việc hiện đang tập trung vào việc bổ sung hỗ trợ cho nền tảng Arm Neoverse N1 hỗ trợ Morello. Cổng đầu tiên của CheriBSD cho kiến ​​trúc RISC-V đã được trình bày. Sự phát triển CheriBSD tiếp tục dành cho nguyên mẫu tham chiếu CHERI dựa trên kiến ​​trúc MIPS64.
    • Quá trình chuyển FreeBSD tiếp tục dành cho SoC NXP LS64A 1046-bit dựa trên bộ xử lý ARMv8 Cortex-A72 với công cụ tăng tốc xử lý gói mạng tích hợp, Ethernet 10 Gb, PCIe 3.0, SATA 3.0 và USB 3.0. Hiện tại, các trình điều khiển QorIQ và LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI đang được chuẩn bị để chuyển sang thành phần FreeBSD chính.
    • Trình điều khiển ena đã được cập nhật lên phiên bản 2.1.1 với sự hỗ trợ cho bộ điều hợp mạng ENAv2 (Bộ điều hợp mạng đàn hồi) thế hệ thứ hai được sử dụng trong cơ sở hạ tầng Đám mây điện toán đàn hồi (EC2) để tổ chức liên lạc giữa các nút EC2 với tốc độ lên tới 25 Gb/ S. Bản cập nhật cho ENA 2.2.0 đang được chuẩn bị.
    • Những cải tiến đối với cổng FreeBSD cho nền tảng powerpc64 vẫn tiếp tục. Trọng tâm là cung cấp hiệu suất chất lượng trên các hệ thống có bộ xử lý IBM POWER8 và POWER9. Trong thời gian báo cáo, FreeBSD-CURRENT đã được chuyển sang sử dụng trình biên dịch LLVM/Clang 10.0 và trình liên kết lld thay vì GCC. Theo mặc định, các hệ thống powerpc64 sử dụng ELFv2 ABI và việc hỗ trợ cho ELFv1 ABI đã bị ngừng. FreeBSD-STABLE vẫn có gcc 4.2.1. Các vấn đề với trình điều khiển virtio, aacaid và ixl đã được giải quyết. Trên hệ thống powerpc64, có thể chạy QEMU mà không cần hỗ trợ Trang lớn.
    • Công việc tiếp tục triển khai hỗ trợ cho kiến ​​trúc RISC-V. Ở dạng hiện tại, FreeBSD đã khởi động thành công trên bo mạch SiFive Hi5 Unleashed mà trình điều khiển đã được chuẩn bị sẵn
      UART, SPI và PRCI, hỗ trợ phần mềm OpenSBI và SBI 0.2. Trong kỳ báo cáo, công việc tập trung vào việc di chuyển từ GCC sang clang và lld.

  • Ứng dụng và hệ thống cổng
    • Bộ sưu tập cổng FreeBSD đã vượt ngưỡng 39 nghìn cổng, số lượng PR chưa được tiết lộ vượt quá 2400 một chút, trong đó 640 PR vẫn chưa được sắp xếp. Trong kỳ báo cáo, 8146 thay đổi đã được thực hiện từ 173 nhà phát triển. Bốn người tham gia mới đã nhận được quyền cam kết (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Đã thêm cờ USES=qca và xóa cờ USES=zope (do không tương thích với Python 3). Công việc đang được tiến hành để xóa Python 2.7 khỏi cây cổng - tất cả các cổng dựa trên Python 2 phải được chuyển sang Python 3 nếu không sẽ bị xóa. Trình quản lý gói pkg đã được cập nhật để phát hành 1.13.2.
    • Đã cập nhật các thành phần ngăn xếp đồ họa và các cổng liên quan đến xorg.
      Máy chủ X.org đã được cập nhật lên phiên bản 1.20.8 (trước đây được cung cấp trên nhánh 1.18), cho phép FreeBSD mặc định sử dụng chương trình phụ trợ udev/evdev để xử lý các thiết bị đầu vào. Gói Mesa đã được chuyển sang sử dụng tiện ích mở rộng DRI3 thay vì DRI2 theo mặc định. Công việc đang được tiến hành để giữ lại các trình điều khiển đồ họa, ngăn xếp thiết bị đầu vào và các thành phần drm-kmod (một cổng cho phép vận hành các mô-đun DRM amdgpu, i915 và radeon, sử dụng khung linuxkpi để tương thích với Trình quản lý kết xuất trực tiếp của nhân Linux) cập nhật.

    • Máy tính để bàn KDE Plasma, KDE Frameworks, Ứng dụng KDE và Qt luôn được cập nhật và cập nhật lên các bản phát hành mới nhất. Một ứng dụng mới kstars (bản đồ sao) đã được thêm vào các cổng.
    • Công việc đã được thực hiện để loại bỏ các thay đổi lũy tiến trong trình quản lý cửa sổ xfwm4 xuất hiện sau khi cập nhật Xfce lên phiên bản 4.14 (ví dụ: các tạo phẩm xuất hiện khi trang trí cửa sổ).
    • Cổng Wine đã được cập nhật để phát hành Wine 5.0 (trước đó 4.0.3 đã được cung cấp).
    • Bắt đầu với phiên bản 1.14, trình biên dịch ngôn ngữ Go đã bổ sung hỗ trợ chính thức cho kiến ​​trúc ARM64 cho FreeBSD 12.0.
    • OpenSSH trên hệ thống cơ sở đã được cập nhật để phát hành 7.9p1.
    • Thư viện sysctlmibinfo2 đã được triển khai và đặt trong các cổng (devel/libsysctlmibinfo2), cung cấp API để truy cập sysctl MIB và dịch tên sysctl thành mã định danh đối tượng (OID).
    • Một bản cập nhật phân phối đã được tạo NomadBSD 1.3.1, đây là phiên bản FreeBSD được điều chỉnh để sử dụng làm máy tính để bàn di động có khả năng khởi động từ ổ USB. Môi trường đồ họa dựa trên trình quản lý cửa sổ Mở hộp. Dùng để gắn ổ đĩa DSBMD (hỗ trợ gắn CD9660, FAT, HFS+, NTFS, Ext2/3/4), để định cấu hình mạng không dây - wifimgrvà để điều khiển âm lượng - DSBmixer.
    • Bắt đầu công việc về việc viết tài liệu đầy đủ cho người quản lý môi trường nhà tù nồi. Pot 0.11.0 đang được chuẩn bị phát hành, phiên bản này sẽ bao gồm các công cụ để quản lý ngăn xếp mạng.

Nguồn: opennet.ru

Thêm một lời nhận xét