54、内核模块管理及编译安装

时间:2022-12-19 17:01:15

/proc目录:内核把自己内部状态信息及统计信息,以及可配置参数通过proc为文件系统加以输出

54、内核模块管理及编译安装

/proc/sys设置

sysctl -w path.to.parameter=value 查看或设定此目录中诸多参数,如sysctl -w ​​kernel.hostname=mail.magedu.com​​临时生效

54、内核模块管理及编译安装

默认配置文件:/etc/sysctl.conf 及以下文件

/run/sysctl.d/*.conf
/etc/sysctl.d/*.conf
/usr/local/lib/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/lib/sysctl.d/*.conf
/etc/sysctl.conf

54、内核模块管理及编译安装

echo命令通过重定向方式也可以修改大多数参数的值

echo "VALUE" > /proc/sys/path/to/parameter
echo “websrv” > /proc/sys/kernel/hostname

sysctl命令:

(1) 临时设置某参数 sysctl -w path.to.parameter=VALUE
(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、内核模块管理及编译安装

54、内核模块管理及编译安装

/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、内核模块管理及编译安装

modinfo命令:管理内核模块

配置文件:/etc/modprobe.conf  /etc/modprobe.d/*.conf

显示模块的详细描述信息   

-n:只显示模块文件路径
-p:显示模块参数
-a:作者
-d:描述

54、内核模块管理及编译安装

modprobe 装载卸载内核模块  -r卸载

modprobe [ -C config-file ] [ modulename ] [ module parame-ters... ]
modprobe [ -r ] modulename…

54、内核模块管理及编译安装

54、内核模块管理及编译安装

depmod命令:内核模块依赖关系文件及系统信息映射文件的生成工具

insmod命令:可以安装模块,需要指定模块文件路径,并且不自动解决依赖模块

insmod [ filename ] [ module options... ]

insmod [ filename ] [ module options... ]

rmmod [ modulename ]
编译内核

下载源码-准备/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、内核模块管理及编译安装

54、内核模块管理及编译安装

执行make menuconfig报错,解决相依的依赖包关系即可且#修改下面两行,CentOS7无需修改# CONFIG_MODULE_SIG is not set CONFIG_SYSTEM_TRUSTED_KEYS=""

54、内核模块管理及编译安装

54、内核模块管理及编译安装

执行make -j 2 实现生成bzimgae和安装modules  (make允许2个编译命令同时只需,从而充分利用CPU的能力,提高编译速度,特别是在多核CPU上。当然,具体多少个任务同时执行为佳,还需要根据具体的机器配置,任务数太多,反而效果不好。)

54、内核模块管理及编译安装

安装模块:make modules_install

54、内核模块管理及编译安装

安装内核相关文件:make install

安装bzImage为 /boot/vmlinuz-VERSION-RELEASE
生成initramfs文件
编辑grub的配置文件

54、内核模块管理及编译安装

54、内核模块管理及编译安装

54、内核模块管理及编译安装

54、内核模块管理及编译安装

内核编译说明

支持“更新”模式进行配置:make help
(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、内核模块管理及编译安装