Biên dịch kernel với cấu hình mặc định


8

Giả định:

  • Nền tảng:
    anisha@linux-dopx:~/> uname -a
    Linux linux-dopx 2.6.34-12-desktop #1 SMP PREEMPT 2010-06-29 02:39:08 +0200 x86_64 x86_64 x86_64 GNU/Linux

  • Kernel được tải xuống là kernel ổn định mới nhất từ ​​kernel.org.

  • Chúng tôi để mặc định vẫn còn (không thay đổi) trong các tùy chọn của make menuconfig.
  • Đơn giản chỉ cần gõ make, make install, grub-update, và khởi động lại.

Bây giờ, theo các giả định này, chúng tôi vẫn được yêu cầu thực hiện một số thay đổi bổ sung cho các tệp hoặc biên dịch một số trình điều khiển bổ sung để đảm bảo khởi động lại không có lỗi?

Nếu có, thì những thay đổi đó phụ thuộc vào điều gì?

CHỈNH SỬA 1:

anisha@linux-dopx:/> sudo /sbin/lspci -n
00:00.0 0600: 8086:29c0 (rev 10)
00:02.0 0300: 8086:29c2 (rev 10)
00:1b.0 0403: 8086:27d8 (rev 01)
00:1c.0 0604: 8086:27d0 (rev 01)
00:1c.1 0604: 8086:27d2 (rev 01)
00:1d.0 0c03: 8086:27c8 (rev 01)
00:1d.1 0c03: 8086:27c9 (rev 01)
00:1d.2 0c03: 8086:27ca (rev 01)
00:1d.3 0c03: 8086:27cb (rev 01)
00:1d.7 0c03: 8086:27cc (rev 01)
00:1e.0 0604: 8086:244e (rev e1)
00:1f.0 0601: 8086:27b8 (rev 01)
00:1f.1 0101: 8086:27df (rev 01)
00:1f.2 0101: 8086:27c0 (rev 01)
00:1f.3 0c05: 8086:27da (rev 01)
01:00.0 0200: 10ec:8136 (rev 01)

Câu trả lời:


7

Nó không được khuyến khích chỉ là một trần make menuconfig. Cấu hình yêu cầu phụ thuộc vào ba điều:

 the hardware being used
 the features used by the OS/distribution
 the features by you (file-systems, raid, ..etc)

Vì vậy, cấu hình "mặc định" được đề xuất theo quan điểm của tôi là:

cd your_kernel_src
cp /boot/your-distribution-config .config
make localmodconfig
make menuconfig

Xem thêm cấu hình Kernel để phân phối . Đoạn đầu tiên:

Cấu hình kernel đã từng là một quá trình khá đơn giản, chỉ đòi hỏi kiến ​​thức về những gì phần cứng cần được hỗ trợ. Theo thời gian, mọi thứ trở nên phức tạp hơn nói chung, nhưng các bản phân phối đã thêm các bộ phụ thuộc của riêng chúng vào các tính năng hạt nhân cụ thể mà các phụ thuộc thông thường có thể gây khó khăn cho người dùng thông thường. Điều đó đã khiến Linus Torvalds đưa ra một đề xuất RFC để thêm các tùy chọn cấu hình kernel dành riêng cho phân phối.


1
Nói một cách ngắn gọn hơn: Không có cấu hình kernel "mặc định" hay "đúng như những gì Linus dự định". Nếu bạn chỉ tải xuống và biên dịch mà không cấu hình bất cứ điều gì, dự kiến ​​bạn sẽ kết thúc với một hạt nhân bị hỏng và / hoặc hầu như không có chức năng.
bahamat

Cấu hình mặc định chỉ có vậy. Nó từng là bất cứ thứ gì Linus đang chạy vào thời điểm đó. Lấy cấu hình cho bản phân phối của bạn và sử dụng cấu hình đó làm điểm bắt đầu.
vonbrand

cảm ơn vì câu trả lời, tôi đang cố gắng theo dõi một cuốn sách writing linux driversvới kernel 2.6. Cấu hình I My Fedora 24 của tôi có nhiều giá trị không hợp lệ cho kernel 2.6. Bất kỳ đề xuất về cấu hình để sử dụng để cài đặt kernel 2.6?
gideon

3

Phần cứng / phân phối thực có thể sẽ không hoạt động đúng với defconfig

Như đã đề cập trong câu trả lời này , bất cứ điều gì không được cung cấp bởi nhà phân phối hoặc nhà cung cấp phần cứng sẽ rất có thể thất bại theo những cách tinh tế hoặc kém tinh tế, ví dụ:

  • bạn có thể không xây dựng hỗ trợ trình điều khiển cho một số phần cứng thiết yếu
  • các gói phân phối có thể dựa vào một tính năng của kernel mà bạn không xây dựng và thất bại

Hơn nữa, bên cạnh các cấu hình cụ thể, thông thường các nhà cung cấp sẽ áp dụng các bản vá lớn trên hạt nhân vanilla, ngay cả Ubuntu cũng làm điều này chẳng hạn.

Cụ thể đối với Ubuntu / Debian, tôi đã mô tả cách biên dịch kernel được hỗ trợ từ nguồn tại: https://askubfox.com/questions/281763/is-there-any-prebuilt-qemu-ub Ubuntu-image32bit-online / 1081171 # 1081171 Sửa đổi cơ sở hạt nhân ổn định là điều an toàn nhất bạn có thể làm trong trường hợp đó.

QEMU hoạt động với defconfig

defconfigMặc dù vậy, một điều duy nhất là nó khởi động trên QEMU, được thử nghiệm trên kernel v4.20, QEMU 2.12.

Dưới đây là một ví dụ hoàn toàn tự động với Buildroot .

Như đã lưu ý trên liên kết đó, bạn cần các tùy chọn sau để khởi động từ đĩa:

CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BLK=y

mặc dù chúng không cần thiết cho initrd.

Để biên dịch chéo sang một vòm khác, ví dụ aarch64, bạn cần:

make ARCH=arm64 defconfig

Nhưng như đã giải thích ở đây , mặc dù arm64 không khởi động trên QEMU, nhưng nó tạo ra một hạt nhân siêu cồng kềnh và bạn có thể muốn tung ra thứ gì đó tối thiểu hơn, ví dụ như được mô tả ở đây .

Có gì make defconfigkhông chính xác?

Chúng ta có thể dễ dàng xem tập tin cấu hình nào đã được sử dụng với bản dựng dài dòng:

make V=1 defconfig

kết quả đầu ra trên v4.19:

make -f ./scripts/Makefile.build obj=scripts/basic
rm -f .tmp_quiet_recordmcount
make -f ./scripts/Makefile.build obj=scripts/kconfig defconfig
scripts/kconfig/conf  --defconfig=arch/x86/configs/x86_64_defconfig Kconfig

từ đó chúng tôi kết luận rằng tệp được sử dụng phải là arch / x86 / configs / x86_64_defconfig .

Xem thêm: /programming/41885015/what-exactly-does-linux-kernels-make-defconfig-do

make helpcũng hiển thị các mục tiêu liên quan mặc định thú vị khác như alldefconfigsavedefconfigcó thể hữu ích.

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.