2016-12-03 11 views
8

Câu hỏi này là về bảo trì và kiểm tra cấu hình.Làm thế nào để hạt nhân Linux duy trì số lượng lớn các tùy chọn cấu hình?

Khi sử dụng sai, #ifdef, #ifndef, #elseif, #elif, #else, #endif hướng dẫn tiền xử lý không chỉ làm giảm khả năng đọc và bảo trì mã C, mà còn làm tăng nguy cơ lỗi hồi quy (ví dụ: khi cấu hình xây dựng cụ thể chưa được thử nghiệm trong một khoảng thời gian nhất định).

Tôi tự hỏi làm thế nào hạt nhân Linux có thể duy trì số lượng lớn các tùy chọn cấu hình mà không cần chạy vào một địa chỉ bảo trì hoàn chỉnh?

Tôi hiểu rằng điều này là cần thiết để linh hoạt cho tất cả các loại phần cứng khác nhau, nhưng số lượng tuyệt đối tùy chọn cấu hình trông thực sự đáng sợ với tôi với tư cách là nhà phát triển ứng dụng.

Bạn sẽ coi trọng câu nào sau đây?

  • Hầu hết các nhà cung cấp chỉ sử dụng một tập hợp các cấu hình tiêu chuẩn cho nền tảng mục tiêu của họ, do đó hầu hết các kết hợp cấu hình có thể không phải là những thử nghiệm và cũng không sử dụng
  • Một hướng dẫn mã hóa rất nghiêm ngặt tồn tại cho phép sự ra đời của mới #ifdef's chỉ cho các phần mã có thể phân tách rõ ràng, nơi có ý nghĩa vô hiệu hóa tính năng (và đúng người chịu trách nhiệm đưa ra các quyết định này)
  • Có rất nhiều người thử nghiệm cho mỗi bản phát hành hạt nhân mới mà lỗi liên quan đến cấu hình được khắc phục kịp thời, vì hầu hết trong số họ có khả năng chỉ xây dựng các hồi quy

EDIT: Tôi nhận ra rằng có các máy thử nghiệm chọn cấu hình ngẫu nhiên và kiểm tra xem chúng có tạo và khởi động hay không. Tuy nhiên, các thử nghiệm xây dựng/khởi động đơn giản này không thể phát hiện bất kỳ hồi quy nghiêm trọng nào khác ngoài các lỗi phá vỡ mọi thứ

+2

Tùy chọn bị thiếu: (*) chỉ cho phép những người hợp lý quyết định điều gì sẽ xảy ra và làm thế nào nó vào. – wildplasser

+2

Tôi không phải chuyên gia để trả lời, nhưng tôi có thể dự đoán rằng cấu hình chủ yếu chọn tệp nào đi ra khỏi xây dựng. Nếu bạn xây dựng thành kiến ​​trúc X thì mọi kiến ​​trúc khác sẽ được giữ trong quá trình xây dựng. –

+1

Tôi không nghĩ rằng đây chỉ là về kiến ​​trúc và toàn bộ trình điều khiển, vì có tồn tại các tùy chọn cấu hình cho vô số các tính năng cấp thấp – Mike76

Trả lời

2

Tôi đang làm việc trực tiếp với hạt nhân Linux và "Das u-boot". Cho đến nay, tôi không có đủ kinh nghiệm nhưng tôi sẽ cho nó một shot. Theo như tôi có thể nói, tệp cấu hình mà bạn đang nói đến thực sự được tạo bởi nhiều tệp, từ những thứ chung nhất như kiến ​​trúc CPU và giống nhau, đến những thứ rất chi tiết như tần suất RAM và loại thứ đó.

Có, nó rất và ý tôi là rất đáng sợ, nhưng như bạn đã nói, với tài liệu rất tốt (ít nhất là phong nha), dự án phải tiếp tục. Ngoài ra, bạn phải nhận ra số lượng lớn người làm việc trên tất cả những thứ có trong đó. Rất tiếc, không có ai có thể tự coi mình là một người sành thực sự của mọi thứ.

Không chắc chắn 100%, nhưng tôi nghĩ bạn đúng về hầu hết các nhà cung cấp sử dụng ít nhất một số cấu hình tiêu chuẩn. Ví dụ, hãy tưởng tượng rằng hầu hết các điện thoại thông minh có cùng một cấu trúc HW chung (CPU, GPU, RAM, vv) vì vậy không cần phải tùy chỉnh hoàn toàn mọi thứ.

Cũng có, mã chính là đầy đủ của

#ifdef, #ifndef, #elseif, #elif, #else, #endif 

và điều này rõ ràng là có nó ưu điểm và nhược điểm. Nhưng đó là một trong những điều tuyệt vời về C (và C++ cũng), nó cho phép điều khiển mọi thứ. Đôi khi bỏ quyền lực, đôi khi là một cơn ác mộng thực sự.

Không có gì để thêm về thử nghiệm :)

1

dự án Linux và Kernal Maintenence họ sử dụng cùng một khuôn khổ mà mở khác Nguồn sofware xử lý các khía cạnh khác nhau của quản lý cấu hình.

Có ba yếu tố để duy trì hạt nhân theo cách này: tạo kho lưu trữ, cập nhật và duy trì nó và tích hợp nó vào cơ sở hạ tầng xây dựng.

Nhưng sự khác biệt về kiến ​​trúc của Linux và thường được xử lý trong các mô-đun và nhật ký nhận xét thường được đọc dưới dạng dấu vết lịch sử, mô tả cách tệp đã phát triển.

Mã của mỗi phiên bản nằm trong một thư mục riêng và áp dụng các đóng góp và bản vá vào thư mục "mới nhất". Đóng góp chỉ có thể được áp dụng cho kho lưu trữ bởi người kiểm duyệt. Khi một bản phát hành mới được tạo, bản mới nhất sẽ được sao chép vào một thư mục phát hành mới để bảo tồn nó ngay cả khi việc phát triển tiếp tục.

Đây là lý do tại sao thường là lý do tại sao bạn chỉ thấy hai nhánh trong sự phát triển hạt nhân Linux - một nhánh phát hành ổn định và một nhánh phát triển.

+0

Có ít nhánh chính luôn là một lợi thế, nhưng nó không giải thích cách kiểm tra tất cả các cấu hình này chống lại các hồi quy – Mike76

Các vấn đề liên quan