Linux编译安装内核

2023-05-16

0 前言 

  Linux系统中可同时安装多个内核镜像,启动时选其一运行即可,《Ubuntu14.04安装Linux内核》介绍了通过apt-get工具安装内核的方法,本文将介绍如果由源码安装新内核。

验证版本:Ubuntu14.04、Ubuntu18.04、Uos-professional-20

1 源码

1.1 标准内核

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.6.4.tar.gz
tar axvf linux-4.6.4.tar.gz

1.2 发行版内核

(1)方法1

    Ubuntu/UOS/银河麒麟都可通过下面方式下载含发行版patch的内核:

# 确认当前所用内核版本
uname -r
# 查看可用内核源码
apt-cache search linux-source
# 安装内核源码
apt-get install -y linux-source-5.3.0 # 得到/usr/src/linux-source-5.3.0/linux-source-5.3.0.tar.bz2

(2)方法2

    方法1下载的内核通常不是最新的,此时可通过各发行版官网下载内核,例如:

# Ubuntu20.04
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-focal.git # [21]
# or
git clone git://kernel.ubuntu.com/ubuntu-stable/ubuntu-stable-focal.git # [21]

2 配置

make mrproper

# 配置一
make menuconfig
# 无需修改,保存退出即可

# 配置二
make defconfig

# 配置三
make x86_64_defconfig

# 配置四(推荐)
cp /boot/config-$(uname -r) .config # [4]

:如果前面下载的是Ubuntu修改源码,需要将CONFIG_SYSTEM_TRUSTED_KEYS设为空,否则会编译错误。[14][15]

3 编译

(1)依赖

sudo apt-get install -y bc openssl libssl-dev bison flex gcc make

(2)编译

make -j`nproc`
make modules -j`nproc`

4 安装

# 安装内核
sudo make install

# 安装模块
sudo make modules_install
# or
sudo make INSTALL_MOD_STRIP=1 modules_install # [17]

# 安装头文件(可选)
sudo make headers_install

  • Ubuntu18.04编译安装linux-5.3.18,启动卡在”Loading initial ramdisk“位置,根据参考资料[7]的说明,安装模块时需要加”INSTALL_MOD_STRIP=1“参数顺利规避了该问题。
  • Uos profressional 20编译安装linux-4.19.67,使用”INSTALL_MOD_STRIP=1“反而会导致无法进入桌面,而是进入了initramfs。

5 启动

    安装好内核之后,需要重启电脑,在grub选择菜单中选择刚才所安装的内核即可(grub默认选择最新版本的内核)。关于grub菜单,见《Ubuntu14.04开机进入grub》。

6 卸载

    如果发现安装的内核有问题(如不能正常启动等),可以重启电脑,然后选择旧内核启动电脑,之后再将无法正常运行的内核卸载即可,详见《Linux内核卸载》。

    Ubuntu上还有一种更好的方法用于编译和安装内核,通过该方法编译安装的内核,也可以非常方便的卸载,详见《Ubuntu制作内核安装包》。

参考资料

[1]Linux 内核的安装

[2]编译安装linux内核步骤

[3]编译linux内核并安装

[4]Ubuntu更换内核方法

[5]ubuntu更新内核切换内核启动

[6]Ubuntu14.10更换内核(3.16.0-23换成3.17.6 )

[7]如何卸载自己编译的内核?【已解决,方法见6L】

[8] Ubuntu下进行内核编译与卸载 

[9]Ubuntu 14.04.1 LTS上编译安装新的kernel

[10]安全删除linux旧内核的方法

[11]如何删除 Ubuntu 上不再使用的旧内核

[12]如何在Ubuntu上安装完整内核源码

[13]如何在Ubuntu上下载,编译,安装,卸载完整内核源码

[14]内核错误: No rule to make target ‘debian/canonical-certs.pem‘, needed by ‘certs/x509_certificate_list‘

[15]【kernel学习】内核下载与编译

[16]ubuntu 18.04.6 使用内核源码安装内核

[17]自行编译内核,启动内核卡在“loading initial ramdisk”

[18]Uos内核编译,升级,驱动模块安装

[19]uos如何编译安装5.6.12内核-uos桌面版v20操作手册

[20]ubuntu > BuildYourOwnKernel

[21]Ubuntu Kernel Team

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux编译安装内核 的相关文章

随机推荐

  • 基于视频采集卡驱动的错误修改CX26828

    基于视频采集卡驱动的错误修改CX26828 1 设置root密码 command xff1a sudo passwd root 2 查看系统状态 输入命令 xff1a lsmod root 64 ubuntu home yu lsmod i
  • Sqlite远程连接数据

    Sqlite远程连接数据 1 连接本地数据库 QSqlDatabase db 61 QSqlDatabase addDatabase 34 QSQLITE 34 db setDatabaseName 34 personnel db 34 d
  • 基于Tiny210开发板视频显示

    基于Tiny210开发板视频显示 1 写基于V4L2编程 61 61 61 61 61 61 61 61 videodevice h文件 61 61 61 61 61 61 61 61 61 ifndef VIDEODEVICE H def
  • 纯C++去雾算法

    去雾算法 前言 xff1a 经过不断的改进研究 xff0c 该算法终于稳定 xff0c 高效的问世了 xff01 经过研究使该算法适应大雾环境 xff0c 对该算法的内存优化 xff0c 能够实时的高效的运行 一 实时视频 xff1a 二
  • 致院长的一封信

    致院长的一封信 行了一路 xff0c 梦了一路 xff0c 念了一路 xff0c 伤了一路 xff0c 青春的此岸 xff0c 我眉心微蹙 xff0c 聆听清风诉说着经年的过往 xff1b 走了一路 xff0c 赏了一路 xff0c 听了一
  • LINUX字符设备驱动程序实例

    我是通过UBUNTU10 10测试该驱动程序的 xff0c 系统内核为linux 2 6 35 22 可使用uname r 命令来查看当前内核的版本号 下载安装LINUX内核 xff0c 需要下载和本机一样版本的内核源码 1 xff0c 安
  • c++多态总结

    今天来总结一些c 43 43 中 xff0c 有关多态的知识 多态 xff1a 多态可以简单地概括为 一个接口 xff0c 多种方法 xff0c 程序在运行时才决定调用的函数 xff0c 它是面向对象编程领域的核心概念 接下来 xff0c
  • 600词汇过四级

    600 词汇过四级 A 1 abandon vt 抛弃 xff0c 放弃 abandon oneself to despair 陷于绝望 xff1b abandon oneself to failures 自暴自弃 2 abrupt adj
  • 华清远见c语言学习笔记四

    test c Created on Jun 29 2012 Author 孙旭 华清远见实验室 1 include lt stdio h gt include lt stdlib h gt include lt string h gt in
  • 华清远见c语言学习笔记六

    test c Created on Jun 29 2012 Author 孙旭 华清远见实验室 1 include lt stdio h gt 找出一个字符串中的数字 include lt string h gt int main char
  • c++示例代码-友元

    一 友元函数 include lt iostream h gt include lt math h gt class Point Point类声明 public 外部接口 Point int xx 61 0 int yy 61 0 X 61
  • C/C++空指针总结

    在C中 在C中 xff0c 使用NULL表示空指针 xff0c 实际上 xff0c NULL被定义为 xff1a define NULL void 0 其中 void 0 表示对 0 进行强制转换 xff0c 转换为一个void类型的指针
  • Windows11镜像下载及安装

    现在微软已正式推出Windows 11预览版系统 xff0c 目前最新系统版本是22000 71 xff0c 正式版可能会在10月份推出 xff0c 届时拥有正版Windows 10系统的就可以通过Windows Update工具免费在线升
  • ROS2安装及基础知识介绍

    ros介绍 ROS xff08 Robot Operating System xff09 是一个开源的机器人操作系统 xff0c ROS系统是由大量节点组成 xff0c 其中任何一个节点都可以通过发布 订阅的方式与其他节点进行通信 举个栗子
  • Ubuntu Gnome GTK程序开机启动

    启动图标准备 GTK程序 开机启动需要首先制作desktop文件 例如 myapp autostart desktop 如下 xff1a Desktop Entry Encoding 61 UTF 8 Name 61 App Comment
  • 学习记录

    最近打算用visio画个流程图 xff0c 看看会不会遇到什么坑 1 最近打算用visio画几个流程图 xff0c 遇到什么问题在记录一番 2 分析学习一下系统权限的分配 xff0c 做到可以配置权限 xff0c 灵活一些 用户 gt 角色
  • 计算机专业学生,大三了找技术岗,怎么写一份好简历?内附269份简历模板

    计算机专业学生 xff0c 大三了找技术岗 xff0c 怎么写一份好简历 xff1f 内附269份简历模板 大家好 xff0c 我是好好学习 xff0c 天天编程的博主 xff0c 一个每天在互联网上种菜和砍柴的程序员 因为疫情的影响 xf
  • Digest Authentication 摘要认证(转载)

    原文 Digest Authentication 摘要认证 weixin 34007906的博客 CSDN博客 摘要 式认证 xff08 Digest authentication xff09 是一个简单的认证机制 xff0c 最初是为HT
  • 面试问到 Promise,这样回答最完美了

    promise是什么 xff1f Promise是异步编程的一种解决方案 xff0c 比传统的回调函数和事件更合理和强大 所谓Promise xff0c 简单来说就是一个容器 xff0c 里面保存着某个未来才会结束的事情 xff08 通常是
  • Linux编译安装内核

    0 前言 Linux系统中可同时安装多个内核镜像 xff0c 启动时选其一运行即可 xff0c Ubuntu14 04安装Linux内核 介绍了通过apt get工具安装内核的方法 xff0c 本文将介绍如果由源码安装新内核 验证版本 xf