【linux内核】内核编译与模块加载

o-O-oO / 2024-10-15 / 原文

原创 星火可以燎燃 星火技术

在前面的课程中,我们学习了如何在Linux系统中使用加密技术来保护数据的安全。
今天,我们将探讨如何在Linux系统中编译内核以及加载内核模块,这对于优化系统性能和适应特定硬件需求非常重要。

一、内核的重要性

Linux内核是操作系统的核心部分,负责管理系统的硬件资源,并提供底层的服务供各种程序使用。
有时,为了支持新的硬件或优化性能,可能需要重新编译内核。

二、编译内核与加载模块

2.1 编译Linux内核

  1. 获取内核源码

首先,你需要获取Linux内核的源代码。可以从kernel.org下载最新的稳定版本:

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.0.tar.xz
tar -xvf linux-5.15.0.tar.xz
cd linux-5.15.0
  1. 配置内核

使用make menuconfig命令来配置内核:

make menuconfig

这将启动一个基于文本的配置界面,你可以在这里选择或取消选择不同的配置选项。例如,如果你需要支持特定的硬件设备,可以在这里选择相应的驱动。

  1. 编译内核

配置完成后,开始编译内核:

make

编译过程可能需要较长时间,具体取决于你的硬件性能。

  1. 安装内核

编译完成后,安装新内核:

sudo make modules_install
sudo make install

这将安装内核模块和内核本身。

  1. 更新引导加载器

如果你使用的是GRUB作为引导加载器,需要更新GRUB配置来识别新的内核:

sudo update-grub
  1. 重启系统

最后,重启系统以加载新的内核:

sudo reboot

2.2 加载内核模块

  1. 查找模块

你可以使用lsmod命令来查看当前已加载的内核模块:

lsmod

使用modinfo命令来获取特定模块的信息:

modinfo module_name
  1. 加载模块

使用modprobe命令来加载一个内核模块:

sudo modprobe module_name
  1. 卸载模块

使用rmmod命令来卸载一个内核模块:

sudo rmmod module_name
  1. 设置模块自动加载

如果你想让某个模块在系统启动时自动加载,可以将相应的模块添加到/etc/modules-load.d/目录下的一个文件中:

echo "module_name" | sudo tee /etc/modules-load.d/module.conf

三、实例演示

编译一个新的内核

获取内核源码:

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.0.tar.xz
tar -xvf linux-5.15.0.tar.xz
cd linux-5.15.0

配置内核:

make menuconfig

编译内核:

make

安装内核:

sudo make modules_install
sudo make install

更新GRUB配置:

sudo update-grub

重启系统:

sudo reboot

载一个内核模块

查找模块:

lsmod

加载模块:

sudo modprobe module_name

卸载模块:

sudo rmmod module_name

设置模块自动加载:

echo "module_name" | sudo tee /etc/modules-load.d/module.conf

通过今天的课程,你学习了如何在Linux系统中编译内核以及加载内核模块。掌握了这些基本技能后,你可以根据自己的需求定制内核,优化系统性能,并支持新的硬件设备。

参考🔗

https://mp.weixin.qq.com/s?__biz=Mzk0MDI2NTYxNw==&mid=2247485625&idx=1&sn=51aecb5dec37152341f8980a95b0e7cb&chksm=c2e51147f59298519f0f76016cb66146bc436067584c567d453327ef4a168049f4ddf5479c10&cur_album_id=3615602210199060484&scene=189#wechat_redirect