Làm cách nào để xây dựng kernel tùy chỉnh với localmodconfig hỗ trợ phần cứng của nhiều máy?


9

Khi định cấu hình máy chủ để chạy một tác vụ, như một thiết bị, có thể cần phải xây dựng một hạt nhân tùy chỉnh. Ví dụ để tiết kiệm dung lượng đĩa.

Hệ thống tập tin gốc Ubuntu Core 13.10 amd64 là một bản tải xuống 38 MB , trong đó gói meta "linux-image-generic" bao gồm các phụ thuộc bắt buộc sẽ tải xuống 79 MB lưu trữ và kích thước của gói chung kernel-image-xyz vẫn là 14 MB .

Để xây dựng một kernel bị tước khỏi các mô-đun mà phần cứng của bạn sẽ không sử dụng, make localmodconfiglệnh là công cụ phù hợp cho công việc. Tuy nhiên, máy ảo chạy môi trường xây dựng và kiểm tra của bạn tải các mô-đun khác với phần cứng triển khai mục tiêu của bạn. Và / hoặc sau một thời gian, phần cứng triển khai của bạn có thể trở thành eol và phần cứng khác được sử dụng. Và ở tần số mà các bản cập nhật kernel được phát hành, nó có thể trở nên quá cồng kềnh để xây dựng một kernel tùy chỉnh cho mọi cấu hình phần cứng khác nhau.

Làm cách nào để nhanh chóng xây dựng một nhân Linux tùy chỉnh chạy trên một vài hộp phần cứng khác nhau?

Câu trả lời:


11

Các make localmodconfiglệnh vẫn là công cụ thích hợp cho công việc. Trong thực tế make localmodconfigchạyscripts/kconfig/streamline_config.pl .

Nhập tệp

Khi đọc streamline_config.plmã nguồn (perl), có một tính năng không có giấy tờ my $lsmod_file = $ENV{'LSMOD'};cho phép nhập tệp để phát hiện mô-đun được tải thay vì đầu ra từ lsmodlệnh.

CD trực tiếp

Bởi vì localmodconfig sử dụng đầu ra lsmodđể phát hiện các mô-đun được tải. Chúng tôi chạy CD Ubuntu Live trên mỗi thiết lập phần cứng khác nhau, mở một thiết bị đầu cuối ( Ctrl+ Alt+ T), chạy lsmodvà lưu đầu ra của nó.

Kết quả đầu ra

Bằng cách nối các lsmodtệp đầu ra trong khi tước các dòng tiêu đề liên tiếp, bạn có thể nhanh chóng tạo một tệp đầu vào bao gồm tất cả các mô-đun hạt nhân cần thiết của bạn. Chúng tôi muốn xem lại danh sách mô-đun bằng tay và sử dụng công thức thủ công hơn:

  1. $ cd linux-3.11.0/
    hoặc vào thư mục nơi bạn sẽ chạy lệnh make

  2. $ lsmod > lsmod.txt
    tạo một tệp văn bản với các mô-đun được tải của bạn

  3. $ nano lsmod.txt
    sẽ mở trình soạn thảo văn bản nano, tất nhiên bạn có thể sử dụng ứng dụng soạn thảo yêu thích của mình

  4. Nối các mô-đun mong muốn của bạn chưa có ở dưới cùng của tệp này (xem ví dụ ở dưới cùng của anwer này) và lưu nó khi bạn đã sẵn sàng.
    Lưu ý: sử dụng khoảng trắng không phải tab để khớp với các vị trí lập bảng cột.

  5. $ make LSMOD="lsmod.txt" localmodconfig
    điều này sẽ báo cho localmodconfig sử dụng tệp lsmod.txt của bạn làm đầu vào để phát hiện các mô-đun được tải

Liên quan đến Steven Rostedt - tác giả của steamline_config.pl - vì đã đề xuất một ký hiệu ngắn hơn trong bước 5.


Ví dụ cho những gì cần nối và không nối vào lsmod.txt (bước 4):

Bởi vì bo mạch chính Intel D33217CK có các cảm biến nhiệt Intel mà chúng tôi muốn đọc, chúng tôi nối thêm các dòng này:

x86_pkg_temp_thermal   13810  0
intel_powerclamp       14239  0

Nhưng chúng tôi không muốn chạy các máy ảo trên phần cứng này, đó là lý do tại sao chúng tôi bỏ qua các dòng này:

kvm_intel             128218  0
kvm                   364766  1 kvm_intel

Nó có bộ điều hợp ethernet Gibabit của Apple (Broadcom) được kết nối với cổng Thunderbolt, vì vậy chúng tôi nối thêm:

tg3                   152066  0
ptp                    18156  1 tg3
pps_core               18546  1 ptp

Chúng tôi nghĩ rằng chúng tôi không cần phản chiếu âm lượng và do đó không thêm:

dm_mirror              21715  0
dm_region_hash         15984  1 dm_mirror
dm_log                 18072  2 dm_region_hash,dm_mirror

Và chúng tôi cũng không cần đầu ra đồ họa (văn bản sẽ thực hiện trên máy chủ không đầu), vì vậy chúng tôi không bao gồm:

i915                  589697  3
i2c_algo_bit           13197  1 i915
drm_kms_helper         46867  1 i915
drm                   242354  4 i915,drm_kms_helper

Đối với một máy khác, chúng tôi cần trình điều khiển ethernet Realtek này một cách quảng cáo:

r8169                  61434  0
mii                    13654  1 r8169
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.