Terdapat banyak kod sumber kernel Linux, dengan beribu-ribu pilihan konfigurasi, dan konfigurasinya agak rumit.
Untuk memilih konfigurasi fungsi yang anda inginkan dengan lebih baik, kod sumber kernel Linux mengatur sistem konfigurasi
Sistem konfigurasi merangkumi tiga bahagian:
Makefile
: Bertanggungjawab untuk keseluruhan konfigurasi dan kompilasiMakefile
:负责整体的配置编译Kconfig
:配置选项的来源这个配置系统就是执行make menuconfig
显示的图形化界面:
内核配置选项的源文件是 Kconfig
文件;
主选项的配置源文件是:arch/$(ARCH)/Kconfig
Kconfig
: Sumber pilihan konfigurasi
buat menuconfig
Antara muka grafik yang dipaparkan: 🎜🎜🎜🎜🎜Kernel Kconfig file🎜🎜 🎜🎜Kconfig
file; 🎜🎜Fail sumber konfigurasi pilihan utama ialah: arch/$(ARCH)/Kconfig
fail 🎜; 🎜主Kconfig
文件调用其他目录的Kconfig文件,其他目录的Kconfig
文件又调用各级子目录的Kconfig
文件,形成树状的配置选项;Kconfig
文件调用其他目录的Kconfig
文件,其他目录的Kconfig
文件又调用各级子目录的Kconfig
文件,形成树状的配置选项;
例如: drivers/net/usb/Kconfig中,DM9601菜单:
config USB_NET_DM9601
是菜单项;菜单项下面的是菜单的属性;
菜单都是以config
config USB_NET_DM9601
是菜单项;菜单项下面的是菜单的属性> 🎜菜单都是以config
开头,中间有空格,后面大写的就是菜单项。🎜tristate
: menunjukkan maklumat segera, Rentetan dipaparkan dalam Menu konfigurasitristate
:表示提示信息,在配置菜单中显示的字符串depends
:表示依赖于的选项(依赖的选项选上,才能选这个选项)select
:表示本菜单选上后,自动选上的菜单Help
:帮助文字;Kconfig的语法详细参考:Documentation/kbuild/kconfig-languages.txt
内核配置完毕之后,会在内核源码的顶层目录下生成.config
文件;
打开.config
文件,我们可以看到内容如下:
这里在配置中选上了”Davicom DM96xx based USB 10/100 ethernet device”
选项,在.config
文件中会生成“CONFIG_USB_NET_DM9601=y
bergantung
: Menunjukkan pilihan yang bergantung kepada (pilihan ini hanya boleh dipilih apabila pilihan bergantung dipilih) 🎜🎜select
: Menunjukkan pemilihan ini menu Selepas memuatkan, menu yang dipilih secara automatik🎜🎜Bantuan
: Teks bantuan; Rujukan terperinci sintaks Kconfig: Documentation/kbuild/kconfig-languages.txt🎜
Selepas konfigurasi kernel selesai, ia akan Dihasilkan dalam direktori peringkat atas kod sumber kernel .configFail
; 🎜
Buka Di sini, dan "Peranti ethernet USB 10/100 berasaskan Davicom DM96xx"
pilihan, dalam .config
fail akan menjana "CONFIG_USB_NET_DM9601=y
" maklumat konfigurasi; jika tidak dipilih, ia akan diulas dengan "#";🎜
Kernel Makefile
Like Kconfig
, terdapat Makefile
fail. Fungsinya adalah seperti berikut: Kconfig
一样,顶层以及各子目录下都有一个Makefile
文件。其作用如下:
Makefile
负责配置编译整个linux内核;Makefile
读取.config
文件,根据.config
文件的配置选项编译内核;makfile
递归地遍历内核源码中的所有子目录,编译所有的目标文件;Mekefile
文件,这些Makefile
文件会使用.config
文件中的信息,编译相应的文件;Makefile
Makefile
bertanggungjawab untuk mengkonfigurasi dan menyusun keseluruhan kernel Linux;Makefile
baca.config
fail, mengikut .config
pilihan konfigurasi fail untuk menyusun kernel;makfile
secara rekursif merentasi semua subdirektori dalam kod sumber kernel dan menyusun semua fail sasaran;Mekefile
fail, ini Makefile
akan menggunakan .config
Maklumat dalam fail menyusun fail yang sepadan;
Contoh dalam Makefile
: 🎜obj-$(CONFIG_USB_NET_DM9601) += dm9601 .o
obj-$(CONFIG_USB_NET_DM9601) += dm9601.o
相当于:
obj-y += dm9601.o
obj-y
的意思是把dm9601.o
目标文件编译进内核,dm9601.o
目标文件应该从dm9601.c
或dm9601.S
文件中编译过来;obj-m
的意思是把目标文件编译成模块通常每个厂商都有自己的defconfig
文件,加载配置时只需执行make xxx_defconfig
,然后就会生成一个.config
obj-y += dm9601.o
🎜obj-y
的意思是把dm9601.o
目标文件编译进内核,dm9601.o
目标文件应该从dm9601.c
或dm9601.S
文件中编译过来;obj-m
的意思是把目标文件编译成模块.config
文件,即代表加载完配置。🎜Dalam proses pembangunan harian, buat pengubahsuaian .config
,通常也将.config
拷贝覆盖原来的xxx_defconfig
dan kemudian muat naik kod.
Atas ialah kandungan terperinci Pengetahuan konfigurasi kernel yang mesti diketahui oleh jurutera pemacu Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!