1 điểm bởi GN⁺ 2025-04-12 | 7 bình luận | Chia sẻ qua WhatsApp
  • Fedora đang thúc đẩy một thay đổi trong Fedora 43 nhằm giúp 99% toàn bộ gói có thể được build tái lập
  • Nhờ cải thiện hạ tầng hiện có, họ đã đạt được 90%, và với phần còn lại, kế hoạch là khuyến khích các maintainer coi đây là bug và xử lý
  • Mục tiêu là tăng cường bảo mật và nâng cao chất lượng gói, đồng thời dự kiến sẽ đưa vào công cụ xác minh độc lập rebuilderd

Tổng quan về Reproducible Builds trong build mã nguồn mở

  • Để tăng cường bảo mật và xác minh tính toàn vẹn của phần mềm mã nguồn mở, 'reproducible builds' ngày càng trở nên quan trọng
  • Reproducible build là kiểu build mà bất kỳ ai cũng có thể tạo ra cùng một kết quả từ cùng source code, môi trường build và lệnh build
  • Debian đã đi trước trong lĩnh vực này hơn 10 năm, và hiện nay ngay cả live CD chính thức cũng có thể được tạo theo cách tái lập
  • Fedora mới bắt đầu công việc về reproducible builds gần đây, nhưng đang xem xét một đề xuất nhằm giúp 99% toàn bộ gói có thể build tái lập trong chu kỳ phát triển Fedora 43

Khác biệt giữa Fedora và Debian

  • Debian cho phép tải lên các gói được build cục bộ nên độ tin cậy có thể thấp hơn
  • Fedora build mọi gói trên hạ tầng tập trung được kiểm soát chặt chẽ
  • Fedora dùng kho Git có tên dist-git, bao gồm source và thông tin hash, giúp dễ theo dõi gói hơn

Định nghĩa reproducible build riêng của Fedora

  • Fedora sử dụng định nghĩa khác với Debian
    • Loại trừ chữ ký (signature) và một số metadata, tập trung vào payload thực tế của file RPM
  • Lý do là do đặc tính của định dạng RPM và cách ký, cũng như việc nó chứa các thông tin như thời gian build (BUILDTIME) và máy chủ build (BUILDHOST)
  • openSUSE giải quyết vấn đề này bằng cách đặt BUILDHOST thành reproducible

Tiến triển kỹ thuật của Fedora hướng tới reproducible builds

  • Từ Fedora 38, Fedora đã áp dụng thay đổi dùng SOURCE_DATE_EPOCH để cố định thời gian sửa đổi của file
  • Trong Fedora 41, họ đưa vào công cụ viết bằng Rust tên add-determinism để chuẩn hóa metadata của các file đã được build
  • Debian dùng thư viện Perl strip-nondeterminism, nhưng Fedora chọn công cụ riêng để tránh phụ thuộc vào Perl
  • Tính đến hiện tại, Fedora đã đạt khoảng 90% khả năng tái lập đối với các gói

Kế hoạch sắp tới

  • 9% còn lại sẽ được thúc đẩy để các maintainer coi các vấn đề không thể tái lập là bug và sửa chúng
  • Cung cấp tiện ích fedora-repro-build để có thể kiểm tra cục bộ liệu một bản build Koji có thể tái lập hay không
  • Dự kiến vận hành công khai hệ thống xác minh độc lập mang tên rebuilderd, hệ thống này phân tích metadata gói và xác minh khả năng tái lập thông qua việc rebuild
  • rebuilderd có thể tạo báo cáo khác biệt thông qua diffoscope

Hướng dẫn đóng gói và nâng cao chất lượng

  • Hướng dẫn đóng gói của Fedora sẽ được cập nhật thành “nên được build theo cách tái lập nếu có thể”
  • Reproducible builds không chỉ cải thiện bảo mật mà còn góp phần nâng cao chất lượng gói
    • Ví dụ: nếu phát hiện phụ thuộc phần cứng trong gói độc lập với kiến trúc, đó có thể là bug

Các trường hợp ngoại lệ không thể tái lập

  • Haskell không thể tái lập khi build đa luồng, và hiện đang có công việc sửa lỗi
  • Go không thể tái lập do file debug .gdb_index không ổn định, hiện chưa có giải pháp
  • Việc ký module kernel Linux dùng khóa tạm thời, và một bản vá liên quan đã được đề xuất

Phản hồi từ cộng đồng

  • Nhóm hạ tầng Fedora đã nêu câu hỏi về vị trí và việc bảo trì của rebuilderd
  • Việc liệu rebuilderd có thể được tích hợp vào Koji hay không cũng đang được thảo luận
  • Cũng có ý kiến cho rằng nên dùng hệ thống ngoài Koji để bảo đảm khả năng xác minh độc lập
  • Một số người cũng đề xuất tận dụng Copr thay cho rebuilderd
  • Nhìn chung, hướng được ưa chuộng là tăng mức độ tích hợp với các công cụ Fedora hiện có

Quy trình sắp tới

  • Dự kiến sẽ gửi ticket đề xuất lên FESCo (Fedora Engineering Steering Committee)
  • Nếu được phê duyệt, họ sẽ đẩy mạnh triển khai để kịp mục tiêu phát hành Fedora 43 vào tháng 10
  • Người dùng cuối có thể sẽ không cảm nhận rõ khác biệt, nhưng đây là thay đổi rất có giá trị về mặt bảo mật chuỗi cung ứng

7 bình luận

 
bbulbum 2025-04-14

Đội ngũ Fedora luôn khiến tôi ấn tượng, và hầu hết các quyết định của họ đều cho cảm giác đang phát triển theo đúng hướng. Tôi luôn sử dụng với lòng biết ơn đối với tất cả những người đã đóng góp mỗi lần như vậy.

 
kandk 2025-04-14

Hình như trước đây thứ này từng được dùng khá nhiều, nhưng dạo này sao lại bị lãng quên nhỉ?

 
bbulbum 2025-04-14

Trong cộng đồng Linux, nó vẫn rất được ưa chuộng để dùng làm desktop Linux.
Vì không phải là một bản phân phối dành cho máy chủ, nên ở nước ta, nơi desktop Linux không mấy sôi động, có vẻ nó không được biết đến nhiều lắm.

 
kandk 2025-04-14

À ha, có vẻ dạo này nếu không phải là người dùng hạng nặng thì người ta sẽ chọn Ubuntu, vì có thể dùng được cho cả máy chủ lẫn máy tính để bàn!

 
bbulbum 2025-04-14

Vì lâu lắm mới thấy chuyện về Linux nên mình cũng muốn góp vài lời.. haha
Ubuntu từ sau khi đưa snap vào thì trong giới desktop cũng bị mất thiện cảm khá nhiều.. rồi môi trường desktop Unity cũng gây chia rẽ mạnh.. chu kỳ phát hành lại quá dài nên hỗ trợ driver mới cũng không tốt lắm..
Nếu bạn đang cân nhắc desktop Linux thì mình thật sự khuyên dùng Fedora.
Fedora dùng Gnome khá gần với bản gốc, mà Gnome thời gian gần đây cũng được cập nhật rất mạnh nên mình thật sự rất hài lòng!

 
kandk 2025-04-14

Cảm ơn ạ haha
Nhắc đến Fedora lại làm tôi nhớ về những kỷ niệm ngày xưa

 
GN⁺ 2025-04-12
Ý kiến Hacker News
  • Người bạn gặp trên đường mới là kho báu đích thực
  • Tôi muốn thấy nhiều binary liên kết tĩnh hơn. Ví dụ, Python là một cơn ác mộng để cài đặt và làm việc cùng
  • Thật vui khi thấy họ cũng đang tham gia vào dự án này
  • Các gói Haskell hiện chưa thể tái lập khi biên dịch bằng nhiều luồng. Nhưng tôi không nghĩ đây là vấn đề lớn. Trình biên dịch gcc không hỗ trợ biên dịch đa luồng. Trong C, xử lý song song đến từ việc biên dịch nhiều đơn vị dịch song song
  • Thật ấn tượng khi thấy tiến triển này. Xin gửi lời khen ngợi đến tất cả những người đã nỗ lực
  • Tin liên quan là vào tháng 3, các image live của Debian bookworm đã trở nên hoàn toàn có thể tái lập
  • Với tư cách là người dùng Fedora, tôi tự hỏi điều này thực sự mang lại gì cho mình. Tôi hiểu đối với các bản build khép kín, nhưng vẫn thắc mắc vì sao nó cần thiết
  • Khả năng tái lập xung đột với tối ưu hóa theo hồ sơ. Đặc biệt là khi có liên quan đến mạng và các IO không nhất quán khác
  • Đúng vậy! Tôi muốn nhiều công cụ mang tính quyết định hơn. Ở đầu danh sách mong muốn của tôi là cấu hình Proxmox