Dapatkan konfigurasi kernel dari sistem Linux yang sedang berjalan?

107

Saya tidak sengaja menghapus .config saya untuk konfigurasi kernel di Linux, dan sepertinya ingat ada cara untuk mengambil konfigurasi kernel melalui sistem file proc.

Apakah ini masih mungkin, dan jika demikian, bagaimana saya akan melakukannya?

Sonny Ordell
sumber
@Sonny Ordell: Sekarang ada dua jawaban yang valid. Bisakah Anda menerima salah satunya?
Hennes
3
@Hennes Pengguna belum online sejak Jun 27 '11 at 16:19. Jangan berpikir dia akan menerima apa pun.
DanteTheEgregore

Jawaban:

110

Bergantung pada sistem Anda, Anda akan menemukannya di salah satu dari ini:

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

dan mungkin lebih banyak tempat.

baru123456
sumber
4
Pada beberapa distro (Fedora / Redhat) /boot/config-2.6.18-194.el5 atau serupa, dengan string rilis kernel ditambahkan.
Phil
1
@Phil Saya menjalankan distro (Zenwalk) tempat nama file tersebut disinkronkan dengan paket kernel terbaru /boot/config. Saya akan melanjutkan dan menambahkan ini ke daftar - terima kasih telah mengingatkan saya.
new123456
di / boot / config - $ (uname -r) untuk amazon linux dan kemungkinan RHEL
aeb0
1
Tidak ada file seperti itu di Ubuntu Mate atau Kali Linux untuk RaspBerry Pi.
Sopalajo de Arrierez
1
Anda harus menyebutkan bahwa item pertama Anda (/ proc) hanya tersedia jika modul "konfigurasi" dimuat
Andy
55

Untuk kernel yang sedang berjalan, salah satu cara untuk mendapatkan file konfigurasi ini adalah dengan

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

atau,

zcat /proc/config.gz > running.config

Kemudian running.configakan berisi konfigurasi kernel linux yang sedang berjalan.

Namun ini hanya mungkin jika kernel Linux yang Anda jalankan dikonfigurasi untuk memilikinya /proc/config.gz. Konfigurasi untuk ini ditemukan di

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

Sebagian besar distribusi tidak memiliki set konfigurasi ini. Mereka menyediakan file konfigurasi kernel dalam paket kernel mereka dan biasanya ditemukan di /boot/direktori.

Jarl
sumber
5
Ini dikenal sebagai CONFIG_IKCONFIGdan CONFIG_IKCONFIG_PROC, jika Anda menangkapnya.
chronospoon
2
zcat /proc/config.gzbekerja dengan baik.
Quanlong
37

Sedikit terlambat tapi mungkin itu membantu seseorang. Saya tidak memiliki /proc/config.gzatau /boot/configtidak /boot/config-$(uname -r)di Komputer saya. Saya harus menjalankan modprobe configssebagai root. Lalu, /proc/config.gzhadir

Thomas Sparber
sumber
Dapat mengkonfirmasi pada Intel MIC embedded Linux (BusyBox), ini perlu dan berfungsi.
Mark Lakata
4
Sama untuk Raspbian di Raspberry Pi 2
Drew McGowen
2
FATAL: Module configs not found.pada OMV 2.2 (Debian Wheezy) sangat senang mereka memberikannya di / boot / config - $ (uname -r)
tuk0z
Anda Pak, menyelamatkan hari saya. Punya +1
Kristen
'konfigurasi modprobe' sangat membantu. Saya memiliki tes yang secara otomatis menyelidiki kconfig yang gagal pada Raspberry Pi 3, tetapi sekarang berfungsi. Terima kasih atas tipnya !!
Tim Bird
9

Jika Anda tidak dapat menemukan konfigurasi kernel di / boot / atau di /proc/config.gz, Anda dapat mencoba mengekstrak informasi ini dari kernel itu sendiri.

Di dalam kode sumber kernel apa pun terdapat skrip untuk mengekstraksi konfigurasi yang terletak di dalam scripts/extract-ikconfig, berikan kernel yang Anda inginkan konfigurasinya sebagai parameter ke skrip ini.

Solusi ini hanya akan berfungsi jika Kernel .config supportdiaktifkan di kernel yang dikompilasi.

Ramast
sumber
2
Ini sangat membantu dan membantu saya mendapatkan banyak konfigurasi yang tidak pernah saya lihat. Terima kasih!
selurvedu
1

Untuk distribusi berbasis RedHat, file .config dari kernel dapat ditemukan dengan perintah cat /lib/modules/$(uname -r)/build/.configyang tersedia setelah paket kernel-devel diinstal menggunakan perintah:

yum -y install kernel-devel

Perhatikan bahwa dengan nyata distribusi Red Hat Enterprise Linux, Anda harus mengaktifkan sumber-repositori untuk mendapatkan paket ini. Pada RHEL8, gunakan perintah berikut untuk melakukan itu:

subscription-manager repos --enable=rhel-8-for-x86_64-baseos-source-rpms
Gertjan Bijl
sumber