首页 > 系统相关 >Linux内核及补丁编译

Linux内核及补丁编译

时间:2024-08-09 14:06:02浏览次数:14  
标签:5.4 -- Linux 补丁 menuentry 内核 linux class

Linux内核及补丁编译

一、源码下载

1、查看当前linux内核版本

uname -r

2、获取对应版本的linux源码

方式1:源方式下载

sudo apt search linux-source  ##找到对应版本的linux-source
sudo apt install linux-source-5.4.0  ##以5.4.0举例
mkdir ~/Projects
cd ~/Projects
sudo cp /usr/src/linux-source-5.4.0.tar.bz2 ./

安装完成后,源码将保存在/usr/src/linux-source-5.4.0.tar.bz2

方式2:官方代码库下载 Linux Kernel

找到自己需要版本的代码压缩包,下载

mkdir ~/Projects
cd ~/Projects
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.gz

二、解压源码

解码源方式下,解压压缩包

cd ~/Projects
tar jxvf -f linux-source-5.4.0.tar.bz2

官方代码库方式下,解压压缩包

mkdir ~/Projects
tar -zxvf linux-5.4.tar.gz
mv linux-5.4 linux-5.4.0

三、编译准备

sudo apt install gcc make libncurses5-dev libssl-dev build-essential openssl bison flex libelf-dev libelf-devel elfutils-libelf-devel

注意:最后三个elf的开发包安装成功其中之一即可

四、补丁patch

1、下载补丁

以squashfs的一个patch为例 9996-fs_squashfs_improve_squashfs_error_resistance.patch

浏览器下载这个patch文件放到~/Projects/linux-5.4.0/目录下

2、补丁安装

cd ~/Projects/linux-5.4.0/
cat 9996-fs_squashfs_improve_squashfs_error_resistance.patch | patch -p1

至此,补丁安装完成

五、内核编译

1、代码清理

make mrproper  #删除所有的编译生成文件、内核配置文件

或者

make clean  #删除大多数的编译生成文件,但是会保留内核的配置文件.config

2、内核配置

make oldconfig #现有的内核设置文件基础上建立一个新的设置文件,只会向用户提供有关新内核特性的问题

如果没有特别配置的,直接一路enter

3、代码编译

make bzImage -j 8 #编译内核
make modules -j 8 #编译扩展模块

或者

make -j 8 #编译内核和扩展模块

等待编译完成

六、内核安装

make modules_install #安装扩展模块
make install #安装内核

查看是否安装完成

> grep menuentry /boot/grub/grub.cfg
if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
  menuentry_id_option=""
export menuentry_id_option
	menuentry 'Ubuntu, with Linux 5.4.275' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.275-advanced-ec3e91d6-c1a7-4843-b385-319a8ab2a229' {
	menuentry 'Ubuntu, with Linux 5.4.275 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.275-recovery-ec3e91d6-c1a7-4843-b385-319a8ab2a229' {
	menuentry 'Ubuntu, with Linux 5.4.0-26-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-26-generic-advanced-ec3e91d6-c1a7-4843-b385-319a8ab2a229' {
	menuentry 'Ubuntu, with Linux 5.4.0-26-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-26-generic-recovery-ec3e91d6-c1a7-4843-b385-319a8ab2a229' {

七、启用新内核

1、修改grub配置

/etc/default/grub的 GRUB_DEFAULT=那一行修改如下

GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.4.275"

2、更新grub

sudo update-grub

八、重启系统

sudo reboot
uname -r #查看内核版本

标签:5.4,--,Linux,补丁,menuentry,内核,linux,class
From: https://www.cnblogs.com/limstorm/p/18350640

相关文章

  • Linux三剑客之sed
    工作原理sed是StreamEditor(流编辑器)的缩写,简称(行)流编辑器;用来处理文件的。首先sed读取文件中的一行内容,把其保存在一个临时内存空间中(也称为模式空间);然后根据需求处理临时缓冲区中的行,完成后把该行发送到屏幕上;默认不编辑源文件,只对模式空间做处理。(由于sed把每一行都存在......
  • Linux下如何安装配置Jupyter Notebook
    JupyterNotebook是一种交互式的开源编程环境,可以方便地创建和共享文档,其中包含实时代码、方程、可视化和叙述性文本。在Linux系统上安装和配置JupyterNotebook需要以下步骤:安装Python和pipJupyterNotebook是基于Python开发的,因此首先需要确保Python已经安装在您的系统上......
  • Linux:Linux权限解析
    一、Linux下的用户分类 在Linux下,有两种用户,一种是超级用户,一种是普通用户超级用户:可以再linux系统下做任何事情,不受权限限制(制定规则,但不需要遵守规则)普通用户:在linux下做有限的事情。(必须遵守相应的规则)超级用户的命令提示符是“#”,普通用户的命令提示符是“$”1、......
  • Linux源码阅读笔记20-PCI设备驱动详解
    PCI基础PCI总线为高性能局部总线,主要解决外部设备之间以及外部设备与主机之间高速数据传输。在数字图形、图像等处理,以及告诉实时数据采集与处理等队数据传输速率要求高的应用中,采用PCI总线进行数据传输。PCI规范能够实现32位并行数据传输,工作频率为33MHz或66MHz,最大吞吐率......
  • Linux-USB驱动笔记-Gadget Function驱动
    1、前言在Linux-USB驱动笔记(四)–USB整体框架中有説到GadgetFunction驱动,下面我们来具体看一下。GadgetFunction就是指设备的功能,比如作为U盘,需要文件存储的功能,则需要FileStorage驱动,这个驱动也称为Function驱动。2、GadgetFunction驱动Function驱动只是利用通用的API,并......
  • Linux-USB驱动笔记--设备控制器(UDC)驱动
    1、前言在Linux-USB驱动笔记(四)–USB整体框架中有説到设备侧的设备控制器(UDC),下面我们来具体看一下。2、设备控制器(UDC)USB设备控制器(UDC)驱动指的是作为其他USB主机控制器的USB硬件设备上的底层控制器驱动。该硬件和驱动负责将一个USB设备依附于一个USB主机控制器上。UDC驱......
  • Linux 【关于 /proc目录详解】
    proc目录:ProcessInformationPseudo-filesystem:进程信息伪文件系统/proc目录并不包含实际的文件,而是提供了一个动态的视图,用于显示系统和进程相关的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。其目的:用于管理和监控系统状态和进程信息/proc文件本身的大小显示......
  • Linux 【关于内核参数详解和优化】
    Linux内核参数是操作系统中用于调整和优化系统性能和行为的关键设置。Linux内核参数可以通过以下几种方式进行查看和修改:/proc/sys目录:大多数内核参数都可以在/proc/sys目录下找到,使用sysctl命令查看和设置这些参数。sysctl.conf文件:此文件通常位于/etc目录中,可以在系统启动......
  • Linux进程管理
    Linux进程管理进程定义分配内存,已分配内存的地址空间安全属性,进程的运⾏身份和权限进程代码,运⾏⼀个或多个的线程进程状态,进程运⾏后的多种状态进程是已启动的可执行程序的运行实例。包含:分配内存、安全属性、进程代码、进程状态。静态程序:二进制文件(如/bin/ls,......
  • 【Linux】【系统纪元】Linux起源与环境安装
    快乐的流畅:个人主页个人专栏:《C游记》《进击的C++》《Linux迷航》远方有一堆篝火,在为久候之人燃烧!文章目录一、Linux的起源1.1计算机硬件1.2计算机软件二、Linux的环境安装2.1安装方式2.2安装版本2.3安装过程2.4远程登录三、Linux的应用场景......