首页 > 系统相关 >linux 编译内核,换内核流程和方法

linux 编译内核,换内核流程和方法

时间:2023-07-30 13:45:04浏览次数:46  
标签:配置文件 make dev 编译 内核 linux CONFIG

 

 

1:

先找一个合适版本的内核,下载,解压到系统中的任意一个目录

The Linux Kernel Archives

这个内核版本,如果要绝对稳定或者安全,那么最好是和当前系统的内核大、中版本相同,

如,

我的系统版本如果为 5.15.38

那么我最好是换成相近的系列,如 5.15.123

尽量别上 6

否则可能出问题

假设解压到的目录就为 ~/5.15.123/

 

2:

第一步内核下载完,之后,安装一系列的环境和支持库

具体来说是:

sudo apt-get update
sudo apt-get install make
sudo apt-get install gcc g++ libncurses5-dev build-essential kernel-package libssl-dev libc6-dev bin86 flex bison qttools5-dev libelf-dev

对,这就差不多了。

安装这些,可能要点时间,因为包太多,也很大,但是不怕,应该不会有错误。

 

3:

安装完环境和支持库

开始处理配置文件,

先进入内核代码目录,然后从当前系统拷贝一个配置文件到当前目录,目的是为了给编译过程一个和当前系统相近的配置

命令

cp -v /boot/config-$(uname -r) .config

拷贝过来之后,当前目录下就有了个配置文件,叫做 .config 是隐藏的。

确认方式 1 显示隐藏文件,2 用命令 ls -a .config 可以看到文件存在

之后输入

make menuconfig

用途是配置加载生成配置文件。

 界面挺好看的,但是其实我们都不用管,直接 exit 就行了

然后用 gedit 打开  .config 文件,手动修改配置,先修改如下

CONFIG_SYSTEM_TRUSTED_KEYS=''
CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=2048
CONFIG_SYSTEM_REVOCATION_KEYS=""

这三条配置是系统证书相关的配置,其实我们用不着

然后关闭一条配置如下

CONFIG_DEBUG_INFO_BTF=n

如有则关,没有不加

最后注释调一条配置

#CONFIG_X86_X32=y

这里不用担心 x86 的注释了,是不是就只生成arm 了,其实 上面 x64 部分还开着呢

 

 

4:

配置文件生成了之后,这里剩下的就是开始编译了

命令如下

make -j$(nproc)

这是一条统一编译命令,编译所有内容,双核情况下,预计需要编译2小时,四核时间砍半,单核时间翻倍

如果不想一步到位,那么可以选择单独编译

make -j$(nproc) bzImage

make -j$(nproc) modules

我没单独编译过,所以,不知道效果

编译完成之后,能看到编译命令正确结束,我这编完了,看不到了

 

 

5:

最后,就是替换系统模块,

方法就两条命令

make modules_install

make install

两条命令都不能少,并且都需要 sudu 权限,就是 root 权限,否则行为未授权。

第一条安装驱动,第二条安装内核,

很多教程里面我看就只让执行第二条命令,结果引导时系统起不来,原因就是和内核匹配的驱动不在,

所以,先安装驱动,后安装内核

 

 

6:

前面五步都处理完,

直接 reboot 就好了,不会有问题,内核重编完成。

后续文件不要清理,自己改内核的时候直接改,然后直接重编,重装,没有问题。

中间文件太多,也没办法,

如果清理了的话,下次重编还要2 小时。

 

标签:配置文件,make,dev,编译,内核,linux,CONFIG
From: https://www.cnblogs.com/suanguade/p/17591320.html

相关文章

  • centos等linux系统重启网卡和配置网卡命令
    centos网卡配置1、网卡主要分为静态网卡配置和动态网卡配置,静态网卡配置就是通过配置文件将IP地址等设置为一个固定的值。但是动态是每次开始时候动态分配的一个地址。2、网卡的静态配置路径为centos基本都是/etc/sysconfig/network-scripts通过ip-a查看本机的网卡配置文件是......
  • linux查看网卡uuid
    查看网卡UUID:nmcliconshow   或   nmcliconlistnmcliconnectionshow查看网卡mac地址:nmclidevshow   或   nmclidevlist注:show用于7版本;list用于6版本;如不记得怎么使用nmcli,可以使用nmcli--help来查看这个命令如何使用,对于其他命令不会怎么使用也是这......
  • 编译期计算
    模板元函数基本概念支持在编译期调用并完成计算的函数即称为模板元函数,由于是在编译期完成,进而改善运行时的性能。元函数实际上即为C++中的一个模板类。元函数的通常形式为:template<typenameT,typenameTs>//元函数列表structMetaFunction{......
  • 配置Linux系统
    1、关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld2、设置主机名并重启hostnamectlset-hostnameNAME//此处的NAME自定义即可3、修改hosts,避免每次登录都敲ip,方便登录--能够记住的话,就直接跳过这一步骤4、配置SSHssh-keygen-b1024-trsa//一......
  • 【Zookeeper】基于3台linux虚拟机搭建zookeeper集群
    环境和版本说明环境说明:操作系统:Win11202322H2CPU:13代i6内存:64G虚拟机:VMTool17CenterOs版本:7.9镜像:CentOS-7-x86_64-Minimal-2009_2.isoZookeeper版本:3.5.101.进入官方下载CenterOs7.9官网地址:www.centos.org/download/这里还是建议有条件的用用魔法啥的。根据个人环境选择......
  • Linux操作系统基本操作
                               greperr* -r>error.txt    将搜索的结果保存至error.txt中greperror < vcs.log      搜索vcs.log文件中的error          ......
  • HotSpot编译执行硬编码生成
    目录背景源码指令解析硬编码总结背景在一个技术群里,有一个哥们对着hotspot的源码问了个问题:源码看一下对应的源码://来源:hotspot/src/cpu/x86/vm/assembler_x86.cppvoidAssembler::notl(Registerdst){intencode=prefix_and_encode(dst->encoding());emit_int8(......
  • Linux开发
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • Linux 7 网络 webserver服务器开发项目1
    小项目跟QT翻金币差不多1.webserver服务器原理2.html语言基础介绍ps:前端我迟早也要拿下html语言超文本标签语言<><>此处详情查看linux服务器开发中html语言介绍<!DOCTYPEhtml><html><head> <metacharset="utf-8"> <metaname="viewport"content="......