- 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
Độ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.
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ỉ?
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.
À 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!
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!
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
Ý kiến Hacker News