2

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

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

推荐 原创

GavenLee 2022-12-19 12:29:07 博主文章分类:Linux系统 ©著作权

文章标签 内核编译 文章分类 Linux 系统/运维 yyds干货盘点 阅读数206

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

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

/proc/sys设置

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

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

默认配置文件:/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、内核模块管理及编译安装_内核编译_03

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

/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

modinfo命令:管理内核模块

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

显示模块的详细描述信息   

-n:只显示模块文件路径
-p:显示模块参数
-a:作者
-d:描述
54、内核模块管理及编译安装_内核编译_07

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

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

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

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

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

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

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

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

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

安装模块:make modules_install

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

安装内核相关文件:make install

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

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

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

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

内核编译说明

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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK