Có được cấu hình kernel từ hệ thống Linux hiện đang chạy?


107

Tôi đã vô tình xóa .config cho cấu hình kernel của mình trên Linux và dường như nhớ rằng có một cách để truy xuất cấu hình kernel thông qua hệ thống tập tin Proc bằng cách nào đó.

Điều này vẫn có thể, và nếu vậy tôi sẽ làm như thế nào?


@Sonny Ordell: Hiện tại có hai câu trả lời hợp lệ. Bạn có thể chấp nhận một trong số họ?
Hennes

3
@Hennes Người dùng đã không trực tuyến kể từ đó Jun 27 '11 at 16:19. Đừng nghĩ rằng anh ấy sẽ chấp nhận bất cứ điều gì.
DanteTheEgregore

Câu trả lời:


110

Tùy thuộc vào hệ thống của bạn, bạn sẽ tìm thấy nó trong bất kỳ một trong số này:

  1. /proc/config.gz
  2. /boot/config
  3. /boot/config-$(uname -r)

và có thể nhiều nơi hơn.


4
Trên một số distro (Fedora / Redhat), đó là /boot/config-2.6.18-194.el5 hoặc tương tự, với chuỗi phát hành kernel được nối thêm.
Phil

1
@Phil Tôi chạy một bản phân phối (Zenwalk) trong đó các tên tệp được liên kết bởi gói kernel mới nhất /boot/config. Tôi sẽ tiếp tục và thêm chúng vào danh sách - cảm ơn vì đã nhắc nhở tôi.
new123456

in / boot / config - $ (uname -r) cho amazon linux và có khả năng là RHEL
aeb0

1
Không tồn tại các tệp như vậy trên Ubuntu Mate hoặc Kali Linux cho Rasp BlackBerry Pi.
Sopalajo de Arrierez

1
Bạn nên đề cập rằng mục đầu tiên (/ Proc) của bạn chỉ khả dụng nếu mô-đun "cấu hình" được tải
Andy

55

Đối với một kernel đang chạy thực tế, một cách để có được tệp cấu hình này là

cat /proc/config.gz | gunzip > running.config

hoặc là,

zcat /proc/config.gz > running.config

Sau đó running.configsẽ chứa cấu hình của kernel linux đang chạy.

Tuy nhiên điều này chỉ có thể nếu kernel linux đang chạy của bạn được cấu hình để có /proc/config.gz. Cấu hình này được tìm thấy trong

  • General setup
    • [*] Kernel .config support
      • [*] Enable access to .config through /proc/config.gz

Hầu hết các bản phân phối không có bộ cấu hình này. Họ cung cấp các tệp cấu hình kernel trong các gói kernel và thường được tìm thấy trong /boot/thư mục.


5
Chúng được gọi là CONFIG_IKCONFIGCONFIG_IKCONFIG_PROC, nếu bạn đang grepping cho chúng.
bấm giờ

2
zcat /proc/config.gzhoạt động tốt
Quanlong

37

Một chút muộn màng nhưng có lẽ nó giúp được ai đó. Tôi đã không có /proc/config.gzcũng /boot/confignhư /boot/config-$(uname -r)trên máy tính của tôi. Tôi đã phải chạy modprobe configsnhư root. Sau đó, /proc/config.gzđã có mặt


Có thể xác nhận trên Intel MIC nhúng Linux (BusyBox), điều này là cần thiết và hoạt động.
Mark Lakata

4
Tương tự cho Raspbian trên Raspberry Pi 2
Drew McGowen

2
FATAL: Module configs not found.trên OMV 2.2 (Debian Wheezy) rất vui vì họ đã cung cấp nó trong / boot / config - $ (uname -r)
tuk0z

Thưa ngài, đã cứu ngày của tôi. Có +1
Christian

'modprobe configs' rất hữu ích Tôi đã có các bài kiểm tra tự động thăm dò kconfig bị lỗi trên Raspberry Pi 3, nhưng giờ đã hoạt động. Cảm ơn vì tiền hỗ trợ!!
Tim Bird

9

Nếu bạn không thể tìm thấy cấu hình kernel trong / boot / nor in /proc/config.gz, bạn có thể thử trích xuất thông tin này từ chính kernel.

Bên trong bất kỳ mã nguồn hạt nhân nào cũng có một đoạn mã để trích xuất cấu hình nằm trong scripts/extract-ikconfig, chuyển kernel bạn muốn cấu hình của nó làm tham số cho tập lệnh này.

Giải pháp này sẽ chỉ hoạt động nếu Kernel .config supportđược kích hoạt trong kernel đã biên dịch.


2
Điều này cực kỳ hữu ích và giúp tôi có được nhiều cấu hình mà tôi không mong đợi từng thấy. Cảm ơn!
selurvedu


1

Đối với các bản phân phối dựa trên RedHat, có thể tìm thấy tệp .config của kernel ngoài luồng với lệnh cat /lib/modules/$(uname -r)/build/.configcó sẵn sau khi gói kernel-devel được cài đặt bằng lệnh:

yum -y install kernel-devel

Lưu ý rằng với bản phân phối Red Hat Enterprise Linux thực sự , bạn sẽ cần kích hoạt kho lưu trữ nguồn để có được gói này. Trên RHEL8, sử dụng lệnh sau để thực hiện điều đó:

subscription-manager repos --enable=rhel-8-for-x86_64-baseos-source-rpms
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.