首页 > 其他分享 >54、内核模块管理及编译安装

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

时间:2022-12-19 13:03:54浏览次数:44  
标签:文件 sysctl 54 make 编译 内核 conf 内核模块

/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

标签:文件,sysctl,54,make,编译,内核,conf,内核模块
From: https://blog.51cto.com/gavenlee/5951876

相关文章

  • IDEA中编译报错【java: 程序包lombok不存在】
    一、lombok问题没有正确引入lombok检查是否在pom中引入lombok依赖<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>......
  • centos7 编译安装mysql
    mysql5.7版本和8版本的编译略有不同,所以这里分开讲。源码编译、安装MySQL5.7Mysql5.7版本更新后有很多变化,最主要的变化是安装MySQL必须要有BOOST库,不过MySQL的官网源码......
  • 自学HarmonyOS应用开发(54)- 校正定位偏差
    上一篇文章已经介绍了如果获取当前所在位置的方法,这种方法存在一个问题:和实际位置之前存在500米左右的偏差。原因调查经过一番调查,结论是gps信号使用的是WGS-84坐标系,而高德......
  • 编译安装LNMP
    ......
  • 编译固件如何加入自定义配置
    编译固件如何加入自定义配置来源 https://forum.gl-inet.cn/forum.php?mod=viewthread&tid=143参考https://github.com/JiaY-shi/build-gl.inet参考  https://githu......
  • 如何反编译Java文件?
    ​反编译Java文件就是将编译好的.class文件反编译为.java文件,我们可以利用IDEA来轻松实现反编译。一.找到我们的.class文件1.打开项目结构2.在模块下选择想要的输......
  • unbutu系统wireshark源码编译与安装
    官网:https://www.wireshark.org/官方文档:Wireshark·Documentation介绍wireshark[1]是一款抓包工具。wireshark的GUI(用户界面)框架从开发版本1.11.0(2013.11.15)开......
  • 【Python】爬虫笔记-ConnectionResetError(10054)
    0x01在对网站图片进行批量爬取的过程中遇到了一个典型问题:requests.exceptions.ConnectionError:('Connectionaborted.',ConnectionResetError(10054,'Anexisting......
  • VC如何创建C编译器能使用的动态库
    方法使用extern"C"修饰设置统一的调用约定举例例1——使用__cdecl,一般C编译器使用此约定,如LabWidnows/CVI。cpp代码extern"C"__declspec(dllexport)uint32_......
  • 预编译#error的使用
    1、引言说到预编译,大家立刻就能想到#define、#if、#ifdef和#ifndef等熟悉的预编译命令。其实#include,我们通常放在源文件用来包含头文件,它也是预编译命令。当然这不是这篇......