文章目录

  • 一、内核简介
    • # 核心
    • # 开源
  • 二、为什么要重新编译内核
  • 三、获取内核源码
    • 1. 网站下载
    • 2. 指令安装
  • 四、编译安装
  • 五、修改引导项

一、内核简介

# 核心

内核是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

# 开源

Linux 的一个重要的特点就是其源码公开性,全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中。

好处,拥有了内核的源程序,我们可以了解系统是如何工作的。其次,我们可以针对自己的情况,量体裁衣,定制适合自己的系统,这样就需要重新编译内核。再次,我们可以对内核进行修改,以符合自己的需要,这相当于我们自己开发了一个操作系统,尽管大部分的工作已经做好了。

二、为什么要重新编译内核

Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。

通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。
为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:

  • 自己定制编译的内核运行更快(具有更少的代码)
  • 系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
  • 不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
  • 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些

三、获取内核源码

1. 网站下载

Linux内核版本发布的官方网站是http://www.kernel.org。我们可以到这里下载内核源码和相应的补丁文件。

2. 指令安装

Redhat系

yum install -y kernel-devel

Debian系

apt install linux-source

使用指令下载的源码会放在/usr/src目录,不过使用指令下载的源码不一定和当前系统的内核版本吻合。若想下载指定版本的源码可以使用如下命令

liyongjun@liyongjun-VirtualBox:~$ sudo apt install linux-source-4.15.0

四、编译安装

编译

liyongjun@liyongjun-VirtualBox:~$ cd /usr/src/linux-source-4.15.0/linux-source-4.15.0
liyongjun@liyongjun-VirtualBox:~$ make

耐心等待几小时。。。

安装

liyongjun@liyongjun-VirtualBox:~$ sudo make install     // 安装内核
liyongjun@liyongjun-VirtualBox:~$ sudo make modules_install        // 安装内核模块

五、修改引导项

内核安装完成后,重启系统,uname -a 发现内核没有发生变化,

1.这时候就要修改grup

sudo vim /etc/default/grub

GRUB_TIMEOUT=0修改成GRUB_TIMEOUT=5想在启动时让它等待 5s 让我选择内核版本,

然并卵。。。

2.将GRUB_DEFAULT=0修改为GRUB_DEFAULT="1 >4"其中 1 是固定的,4 是哪来的呢?

cat /boot/grub/grub.cfg

看到需要更换的内核 Linux 4.15.18 在 submenu 的第 5 个 menuentry 。所以这里填 4 (序号从 0 开始),注意"1 >4"的 1 后面有个空格也是不可缺少的。

改完后执行下面命令进行更新:

sudo update-grub

重启,查看内核版本

liyongjun@liyongjun-VirtualBox:~$ uname -r
4.15.18

内核成功被更换。

Linux 编译并更换内核相关推荐

  1. linux 编译指cpu内核,linux内核编译与配置

    linux是如何组成的? 答:linux是由用户空间和内核空间组成的 为什么要划分用户空间和内核空间? 答:有关CPU体系结构,各处理器可以有多种模式,而LInux这样的划分是考虑到系统的 安全性,比 ...

  2. Linux编译x86架构内核出现_stack_chk_guard未定义错误

    背景 android模拟器运行于virtualbox中,而virtualbox运行于x86架构的pc端,所以android及其Linux内核都编译成x86架构.当virtualbox的vt未开启的情况 ...

  3. 嵌入式Linux开发,更换内核kernel开机画面LOGO—左上角小企鹅图标(分辨率为80*80)

    将企鹅的 Logo 换成自己喜欢的任意图片,或公司logo,方法如下. 一.在Ubuntu系统中,安装图形转换工具. sudo apt-get install netpbm 二.制作 logo 图片. ...

  4. Linux树莓派开发——配置树莓派内核源码,内核编译,更换树莓派Linux内核

    目录 一.树莓派Linux源码配置 1.配置的三种方法 2.内核源码的下载 二.树莓派内核编译 1.树莓派的编译 ​2.生成vmlinux 三.更换树莓派内核的详细步骤 一.树莓派Linux源码配置 ...

  5. linux内核编译与新内核启用

    1.  准备工作 (1)       整理出系统需要支持的硬件.文件系统类型以及网络协议等内容. (2)       建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核 ...

  6. Linux(ubuntu)更换内核方法

    简介:Linux搭建实时系统预备篇. 一.环境 硬件:x86 系统:Ubuntu14.04.5 初始内核:4.4.0-31 替换内核:3.14.44 注意:系统版本可通过cat /etc/issue查 ...

  7. 树莓派镜像备份/内核编译和更换/EC200U上网

    树莓派镜像备份/内核编译和更换/EC200U上网 操作涉及树莓派linux内核替换,由于我的树莓板子里跑了ROS,以免环境破坏,所以先进行镜像备份. 备份本机树莓派img 工具:win32diskim ...

  8. openwrt查看linux内核,OPENWRT 更换内核版本位置

    1:将openwrt14.07中的内核版本从3.10.49更换成3.10.102 a:更改文件include/kernel-version.mk b:修改文件target/linux/ 下的Makef ...

  9. 【Linux】Linux添加系统调用以及内核编译过程

    在想要替换原有系统内核或者需要在原来的系统中添加一些系统调用的时候就会涉及到Linux内核的编译.但是内核编译虽然步骤简单,但是需要注意的东西还是太多了.首先一点就是由于Linux的开源性导致的版本问 ...

  10. 微软更新Linux子系统,编译WSL 2内核只需3步

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 今年,微软在Build大会上向开发者放了两个"大招":Windows Terminal和WSL 2.两个工具都是为了向 ...

最新文章

  1. suse linux ssh connerc failed
  2. PLSQL DEVELOPER 使用的一些技巧【转】
  3. LDD3源码分析之访问控制
  4. java 入侵 mysql_Java访问数据库Mysql
  5. android微信分享之视频、URL地址、表情分享
  6. 【Python】模拟面试技术面试题答
  7. 最新天猫Java面试题(含总结):线程池+并发编程+分布式设计+中间件
  8. 一棵树的生物量怎么算_宾利的眼镜盒价值2万,算坑人吗?网友:良心产品,不坑穷人...
  9. 嵌入式电路设计(最小系统)
  10. 颜宁追问4位男科学家:如何平衡事业和家庭?
  11. 苹果Mac定制化App开发神器:​​​​FileMaker
  12. 【零基础 快速学Java】韩顺平 笔记整理(到p170 跑路了)
  13. 【WPF】命令 --《深入浅出WPF》
  14. 思科交换机的配置模式基本配置命令
  15. Google Earth Browser Plugin (谷歌 地球 浏览器 插件) 下载地址 5.0
  16. linux centos7 录屏,Centos7录屏工具
  17. 计算机二级错误503,503错误的服务器要怎么解决教程
  18. python requests soup_带你了解python爬虫requests模块BeautifulSoup使用方式!
  19. YYC松鼠视频短信对接教程
  20. HDU-1546-Idiomatic Phrases Game

热门文章

  1. 三极管饱和状态下增益
  2. UCOII信号量与消息邮箱
  3. Java适配器模式(转接口)
  4. AVR单片机教程——DAC
  5. C语言malloc函数的使用!malloc函数的作用:动态内存分配函数,用来向系统请求分配内存空间
  6. 使用ExtJS创建前端WebQQ界面
  7. 读书笔记-《麦肯锡方法》
  8. 计算机职业素养论文1500字,职业素养课后感想1500字
  9. eclipse SVN javaHL not available 问题解决
  10. rubyinstaller官网无法访问的解决办法