![](/style/images/good.png)
![](/style/images/bad.png)
54、内核模块管理及编译安装
source link: https://blog.51cto.com/gavenlee/5951876
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
54、内核模块管理及编译安装
推荐 原创/proc目录:内核把自己内部状态信息及统计信息,以及可配置参数通过proc为文件系统加以输出
![54、内核模块管理及编译安装_内核编译](https://s2.51cto.com/images/202212/3614833497ce7f666b3608fee88fee2a4aa4dd.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
/proc/sys设置
sysctl -w path.to.parameter=value 查看或设定此目录中诸多参数,如sysctl -w kernel.hostname=mail.magedu.com临时生效
默认配置文件:/etc/sysctl.conf 及以下文件
/etc/sysctl.d/*.conf
/usr/local/lib/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/lib/sysctl.d/*.conf
/etc/sysctl.conf
![54、内核模块管理及编译安装_内核编译_03](https://s2.51cto.com/images/202212/a8fe74f32176e4755c279629ac85e5ec94b654.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
echo命令通过重定向方式也可以修改大多数参数的值
echo “websrv” > /proc/sys/kernel/hostname
sysctl命令:
(2) 通过读取配置文件设置参数 sysctl -p [/path/to/conf_file],配置文件是永久生效
(3) 查看所有生效参数 sysctl -a
常用的内核参数:
net.ipv4.ip_forward
net.ipv4.icmp_echo_ignore_all
net.ipv4.ip_nonlocal_bind #允许应用程序可以监听本地不存在的IPvm.drop_caches
fs.file-max = 1020000
![54、内核模块管理及编译安装_内核编译_04](https://s2.51cto.com/images/202212/f1686e24412d05224b6611160120560963099e.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
![54、内核模块管理及编译安装_内核编译_05](https://s2.51cto.com/images/202212/188c4fd8489f5e0077b31239ad7c6ef2d4874a.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
/sys目录:使用sysfs文件系统,为用户使用的伪文件系统,输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的设定信息,有些参数是可以修改的,用于调整硬件的工作特性
内核模块管理及编译
kernel:内核核心,一遍为bzimage通常在/boot目录下 名称为vmlinuz-version-release
kernel object:内核对象,一般放置于 /lib/modules/version-release/
辅助文件:ramdisk
initd centos5之前版本 initdramfs centos6之后版本
uname命令 -n显示节点名称 -r显示版本信息 -a显示所有信息
内核模块命令
lsmod
显示由核心已经装载的内核模块
显示的内容来自于:/proc/modules文件
显示:名称、大小,使用次数,被哪些模块依赖
![54、内核模块管理及编译安装_内核编译_06](https://s2.51cto.com/images/202212/57b62e7500c0fbce08d898d3ba61c3cdc38a2b.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
modinfo命令:管理内核模块
配置文件:/etc/modprobe.conf /etc/modprobe.d/*.conf
显示模块的详细描述信息
-p:显示模块参数
-a:作者
-d:描述
![54、内核模块管理及编译安装_内核编译_07](https://s2.51cto.com/images/202212/43f12b64506e1baf3b00956e4f1092763d2045.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
modprobe 装载卸载内核模块 -r卸载
modprobe [ -r ] modulename…
![54、内核模块管理及编译安装_内核编译_09](https://s2.51cto.com/images/202212/b2412da082e10d241b31320b80c18804d0430f.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
depmod命令:内核模块依赖关系文件及系统信息映射文件的生成工具
insmod命令:可以安装模块,需要指定模块文件路径,并且不自动解决依赖模块
insmod [ filename ] [ module options... ]
下载源码-准备/boot/config-uname -r
配置文件--make menuconfig配置内核选项,相当于./configure--make [-j #](make -j # bzImage make -j # modules)--make modeules_install安装模块-安装内核相关文件:make install(vmlinuz-version-release、生成initramfs文件、编辑grub配置文件
![54、内核模块管理及编译安装_内核编译_10](https://s2.51cto.com/images/202212/d98f9d37048b31e96534391a58f9ffb716df63.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
![54、内核模块管理及编译安装_内核编译_11](https://s2.51cto.com/images/202212/d173c1756eeeab986876931bb7c6a005133ca3.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
执行make menuconfig报错,解决相依的依赖包关系即可且#修改下面两行,CentOS7无需修改# CONFIG_MODULE_SIG is not set CONFIG_SYSTEM_TRUSTED_KEYS=""
![54、内核模块管理及编译安装_内核编译_12](https://s2.51cto.com/images/202212/c3163c10544cf11507e47896627bfc85b9dcc0.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
![54、内核模块管理及编译安装_内核编译_13](https://s2.51cto.com/images/202212/347cb11296793a422b9172cdfa105f86474fe1.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
执行make -j 2 实现生成bzimgae和安装modules (make允许2个编译命令同时只需,从而充分利用CPU的能力,提高编译速度,特别是在多核CPU上。当然,具体多少个任务同时执行为佳,还需要根据具体的机器配置,任务数太多,反而效果不好。)
![54、内核模块管理及编译安装_内核编译_14](https://s2.51cto.com/images/202212/052c4694686ea52dd02005328fbc12d2708ce0.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
安装模块:make modules_install
![54、内核模块管理及编译安装_内核编译_15](https://s2.51cto.com/images/202212/41689f5012ea87729cf8121c9df0b63759a94e.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
安装内核相关文件:make install
生成initramfs文件
编辑grub的配置文件
![54、内核模块管理及编译安装_内核编译_17](https://s2.51cto.com/images/202212/45179a144663e04ad4f175ff91096d044ccc82.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
![54、内核模块管理及编译安装_内核编译_18](https://s2.51cto.com/images/202212/a43e2de7628ba8b157775974941858dda5acd9.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
内核编译说明
(a) make config:基于命令行以遍历的方式配置内核中可配置的每个选项
(b) make menuconfig:基于curses的文本窗口界面
(c) make gconfig:基于GTK (GNOME)环境窗口界面
(d) make xconfig:基于QT(KDE)环境的窗口界面
(a) make defconfig:基于内核为目标平台提供的“默认”配置进行配置
(b) make allyesconfig: 所有选项均回答为“yes“
(c) make allnoconfig: 所有选项均回答为“no“
make -j 全编译
cd /usr/src/linux; make dir/ 只编译dir/目录中的代码
cd /usr/src/linux; make dir/file.k 只编译目录dir/file.ko文件,如make drivers/net/ethernet/intel/e1000/e1000.ko
make ARCH=arch_name 编译其他架构平台
重新编译需要事先清理操作
make clean:清理大多数编译生成的文件,但会保留.config文件等
make mrproper: 清理所有编译生成的文件、config及某些备份文件
make distclean:包含 make mrproper,并清理patches以及编辑器备份文件
卸载内核
删除/usr/src/linux/目录下不需要的内核源码
删除/lib/modules/目录下不需要的内核库文件
删除/boot目录下启动的内核和内核映像文件
更改grub的配置文件,删除不需要的内核启动列表 grub2-mkconfig -o /boot/grub2/grub.cfg
CentOS 8 还需要删除 /boot/loader/entries/5b85fc7444b240a992c42ce2a9f65db5-新内核版本.conf
![54、内核模块管理及编译安装_内核编译_20](https://s2.51cto.com/images/202212/d3900b90336e6dc8aa9932a183e2765a627389.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184/format,webp)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK