Ubuntu编译Linux内核并设置开机选择内核版本

Linux内核版本:选择合适的版本 Linux内核是操作系统的核心,不断演进和改进,以满足不同需求和硬件平台的要求。在选择合适的Linux内核版本之前,我们需要了解如何查看当前系统上的内核版本,并根据需求选择适当的版本。在这篇博客中,我们将介绍如何执行这些操作。 阅读详情

写在前面:

tar.xz解压命令:tar vxJf linux-x.x.tar.xz

本文主要讲解内核的编译流程以及grub选项的设置,有什么问题欢迎评论讨论交流。

下面为编译内核流程,由于最近项目需要Ubuntu1204,因此以Ubuntu1204为例,其他版本使用同样的操作,题主在1604上也使用的同样的操作:

一、下载需要的内核

https://mirrors.edge.kernel.org/pub/linux/kernel/

二、将下载的内核代码cp到/usr/src目录下并解压

三、安装基本的工具和相关软件

sudo apt-get install libncurses5-dev libssl-dev 

sudo apt-get install build-essential openssl 

sudo apt-get install zlibc minizip 

sudo apt-get install libidn11-dev libidn11

上述工具无绝对,在安装的过程中要注意变通,不要遇到一点问题就卡死,如果有部分工具装不了,可继续往下执行。

四、执行编译前配置工作

依次输入下列命令:

sudo make mrproper 

sudo make clean 

sudo make menuconfig

其中mrproper为清除编译过程中产生的所有中间文件,clean为清除上一次产生的编译中间文件,在menuconfig出现选择的图形化设置界面。

下载的源码第一次编译时可以直接使用

sudo make menuconfig

来进行配置。

menuconfig界面如下所示,如果没有特殊的配置,就直接sava->ok->exit->exit

五、编译

执行命令,-jx,这里的x是计算机核数x2,如4核CPU就为-j8,20核cpu可以写为-j40,以多线程的方式进行编译,加快编译速度。

sudo make –j8 或者sudo make

同时要注意,如果你更改了内核源码中的内容,而且不能保证你编写的内容不会出现编译错误,推荐使用sudo make来进行编译,遇到编译错误能够及时停止,并能看到错误信息。-jx的编译方式,如果一个编译线程遇到错误,其他的编译线程还在进行,错误信息会被覆盖,而且不好排查(个人理解)。

原始下载的源码直接用 sudo make -j8编译即可。

以下为编译时截图:

编译完成后如下图所示:

六、安装

如果编译过程正确无误,下一步就是安装,使用如下命令进行安装:

sudo make modules_install        //安装内核模块
sudo make install      //安装内核

安装模块界面如下图所示:

安装内核界面如下图所示:

至此内核编译和安装就完成了。

编译和安装完成之后,是不是我们直接重启就会是我们最新编译的内核了呢,如果不是Ubuntu又是怎么选择的内核来进行启动呢。

首先我们先进行一个测试,安装完后直接重启,看一下内核有没有被我们新编译的内核替换:

重启后使用uname -r或者uname -a进行查看,其输出的信息如下图片所示。

uname -a
uname -r

通过上述图片发现,Ubuntu1204的内核版本并没有被我们新编译的内核所替换,重启后还是原来的内核,那么我们要怎样启用我们编译好的内核呢。

这就是最开始所讲得设置grub的问题了,简单来讲如果我们编译的内核比现在Ubuntu中自带的内核版本高,那么reboot之后,我们编译的高版本内核就会直接被Ubuntu系统启用。如果我们编译的内核版本比自带的低,那么就要修改一下grub的配置选项,将开机选择内核版本的菜单栏显示出来(默认是不显示,通过修改配置文件显示)

七、启用编译好的内核

通过修改grub配置文件,在开机中显示选择内核版本的菜单栏,使用gedit打开配置文件,目录为/etc/default/grub。

gedit /etc/default/grub

打开配置文件之后,我们看到最上面的代码有一些参数的配置,我们需要更改的参数就只有一个即GRUB_HIDDEN_TIMEOUT。

此配置将影响grub菜单显示。若设置此选项为一个常数,则将在此时间内隐藏菜单而显示引导画面。菜单将会被隐藏,如果注释掉该行,即:(#GRUB_HIDDEN_TIMEOUT=0)。则grub菜单能够显示,等待用户的选择,以决定进入哪个系统或内核。

因此我们要做的就是把这一行注释掉,然后输入以下命令,使修改生效:

sudo update-grub

设置成功后重启:

重启后出现如下菜单:

进入到Previous Linux versions选项中

选择我们编译好的Linux-3.10版本即可,进入后,现在查看内核版本信息如下:

Ubuntu已经启用了我们编译的内核,然后就可以开始在上面进行需要的开发了~

 

 

操作系统作业(一):编译Linux内核 操作系统作业(一):编译Linux内核 背景&要求: 除了BIOS以外,内核是操作系统中最早加载到内存的。编译内核的目的在于让Linux更加符合使用者的要求,比如说新功能的需求、原来的内核太过于臃肿、或者是嵌入式操作系统的需求。 环境:VMware虚拟机+Ubuntu 16.04(硬盘大小最好大于30G,不然可能会崩) 第一步:在官网上下载内核 网址:https://www.kernel.... 阅读详情

相关推荐

Linux内核编译以及新增系统调用函数

实验内容 (作者:Baron_w,禁止转载) ⚫ 编译 Linux 内核 ⚫ Linux 启动过程 ⚫ Linux 系统调用实现分析 ⚫ 增加一个系统调用** 相关知识 dmesg 的用法 ⚫ 列出加载到内核中的所有驱动 我们可以使用如‘more’。 ‘tail’ , ‘less ’或者‘grep’文字处理工具来处理‘dmesg’ 命令的输出。由于 dmesg 日志的输出不适合在一页中完全显示,...

Baron_wu的博客 2071

【Linux】切换默认启动内核

这是我原先的电脑,存在多个启动内核版本,每次需要手动设置调低版本才能正常开机,非常麻烦。 后来尝试以下方法,成功自动开机 sudo vim /etc/default/grub 然后修改成如下内容 GRUB_DEFAULT=“Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-30-generic” uname-r 查看先用内核版本 sudo apt remove 删除高版本内核 sudo reboot 然后便成功设置了30为开机默认启动版.

weixin_44211644的博客 1902

安卓集成华为HMS Scankit实现自定义扫码功能

实现扫码功能 使用的是集成华为扫描的SDK,UI界面借鉴的是谷歌官方的Zxing项目中的自定义view,两者结合实现。 先上效果图: 先在项目根级别(build.gradle)当中配置HMS Core SDK的Maven仓地址。 // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'} // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huaw

qq_47625961的博客 5510

【Linux】配置系统默认启动内核版本方式

这是一个在Linux系统中使用的命令行,用户通过该命令行查看并编辑GRUB2引导加载程序环境变量。

逆风水手的博客 3755

DESeq2差异分析结果不会看?用这个R脚本5分钟生成发表级火山图和热图

本文详细介绍了如何使用R语言快速可视化DESeq2差异分析结果,5分钟内生成可直接用于论文发表的火山图和热图。通过解析DESeq2数据结构、展示ggplot2和EnhancedVolcano包的绘图技巧,以及pheatmap包的热图定制方法,帮助研究者高效呈现差异表达基因分析结果。

weixin_30326515的博客 340

如何用 ABAP 以程序方式把指定表项写入 Transport Request

本文探讨了在SAP系统中运输自定义配置表数据时如何确保主表和相关文本表数据同步运输的问题。文章分析了两种实现方案:一是直接操作CTS表结构(E071和E071K)手动添加运输条目,二是使用SOBJ对象类型自动推导依赖关系。重点阐述了第一种方法的实现细节,包括如何正确拼接表键值到TABKEY字段,并提供了示例代码说明如何将ZXA_HEADER主表和ZXA_HEADERT文本表数据同时加入运输请求。文章特别指出在全球化交付场景中,文本表缺失会导致界面显示异常,强调理解底层运输机制对解决此类问题的重要性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 221

linux系统如何选择内核启动,Linux系统的快速启动机制(内核切换)

快速启动机制:允许通过已经运行的Linux内核的上下文启动另一个Linux内核,不需要经过BIOS。BIOS可能会消耗很多时间,特别是带有众多数量的外设的大型服务器。这种办法可以为经常启动机器的开发者节省很多时间。1.使用该机制要满足两个基本条件1)内核版本必需为2.6.13以上,因为自该版本起,linux内核中加入了kexec system call模块。2)系统需要安装 kexec-tools...

weixin_29914581的博客 2683

从Overleaf上导出Latex论文发布到arxiv详细教程(常见问题与解决)

如果是做cv的论文请选择“Computer Vision and Pattern Recognition”,选择“Artificial Intelligence”可能会被on hold,貌似这个指的是传统的人工智能?我用公司邮箱注册发布一篇论文,一个多月还是“on hold”状态,换成edu邮箱第二天就被发布了。3、有可能是subject class选错了,编辑会帮你手动选择,然后发一封邮件告知你解除……报错缺失bbl等文件,这是因为从Menu中下载的话,是没有bbl文件的。论文被on hold。

沉迷单车的追风少年 3584

Ubuntu22.04启动内核设置

ubuntu22 启动内核设置

weixin_39761731的博客 4668

ADS电路仿真方法综述:原理与应用

在射频与微波电路设计中,精确的仿真技术是验证性能的关键。ADS(Advanced Design System)作为行业标准工具,集成了多种仿真方法,适用于不同场景。本文将系统解析瞬态分析、谐波平衡(HB)、交流分析(AC)、直流分析(DC)、S参数、大信号SP(LSSP)及包络分析的原理、实现机制与应用场景。

u014344410的博客 480

[Bug已解决] CUDA error 尽管 CUDA 可用且 GPU 受支持-通用排查 RuntimeError 解决方案

[Bug已解决] CUDA error 尽管 CUDA 可用且 GPU 受支持-通用排查 RuntimeError 解决方案

一键难忘的博客 2415

Linux内核安装后reboot选择,Ubuntu编译Linux内核并设置开机选择内核版本-Go语言中文社区...

写在前面:tar.xz解压命令:tar vxJf linux-x.x.tar.xz本文主要讲解内核的编译流程以及grub选项的设置,有什么问题欢迎评论讨论交流。下面为编译内核流程,由于最近项目需要Ubuntu1204,因此以Ubuntu1204为例,其他版本使用同样的操作,题主在1604上也使用的同样的操作:一、下载需要的内核二、将下载的内核代码cp到/usr/src目录下并解压三、安装基本的工具...

weixin_39619478的博客 697

2026 拉勾网:JA4+指纹绕过 + sign逆向 + 动态城市参数,月采集10万+数据实战

2026年拉勾网反爬技术全面升级,采用JA4+ TLS指纹识别、动态sign签名等多维度防护体系。本文提供工业级爬虫解决方案,通过curl_cffi模拟浏览器指纹、逆向sign加密算法、动态生成城市参数三大核心技术,实现高效稳定的数据采集。系统采用分层架构设计,包含任务调度、签名生成、多线程引擎等模块,单月可获取10万+条招聘数据。重点解析了JA4+指纹识别原理、传统方法的局限性,以及通过HMAC-SHA256算法逆向sign参数的完整过程。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2393

go移植linux内核书名叫啥,Ubuntu编译Linux内核并设置开机选择内核版本-Go语言中文社区...

写在前面:tar.xz解压命令:tar vxJf linux-x.x.tar.xz本文主要讲解内核的编译流程以及grub选项的设置,有什么问题欢迎评论讨论交流。下面为编译内核流程,由于最近项目需要Ubuntu1204,因此以Ubuntu1204为例,其他版本使用同样的操作,题主在1604上也使用的同样的操作:一、下载需要的内核二、将下载的内核代码cp到/usr/src目录下并解压三、安装基本的工具...

weixin_29988441的博客 165

使用R包PreMSIm预测微卫星不稳定的标题:基于基因表达量的微卫星不稳定性预测

在本文中,我们将介绍如何使用R语言中的PreMSIm包来根据基因表达量进行微卫星不稳定性的预测。需要注意的是,本文仅介绍了使用PreMSIm包进行微卫星不稳定性预测的基本流程和代码示例。在实际应用中,还需要考虑数据的质量控制、模型优化以及结果的解释和验证等因素,以确保预测结果的准确性和可靠性。预测结果将返回一个包含微卫星不稳定性指数的向量,其中每个元素对应一个样本的预测结果。在有了输入数据后,我们可以使用PreMSIm包中的函数进行微卫星不稳定性的预测。函数生成一个包含所有样本的微卫星不稳定性信息的表格。

2301_79330511的博客 382

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Linux内核编译

下面简单介绍一下Linux内核编译过程。(附注:本博客所讲的内容是在Ubuntu上进行操作的,Cent OS并未验证) 1、下载内核源码,可以到kernel.org上进行下载。 2、解压内核源文件(注意:要先使用cd命令进入压缩包所在目录),可以使用如下命令: tar -xvf 压缩包名称 3、进入解压后的文件夹: 如下图: 4、配置内核: 使用 make menuconf......

ibless的博客 4万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Ubuntu中linux配置内核流程

文章目录一、实验环境二、下载内核三、安装环境需要的依赖包四、编译前的配置工作五、编译内核六、安装内核七、启用新内核 一、实验环境 VMware Workstation Player Ubuntu      //我用的是 Ubuntu 21.10 内核文件       //在下面流程中有具体网址 本人试过10几个版本的内核,遇到了很多问题。比如刚开始我用的最新版5.14.14,内核版本比较高,会出现缺少头文件等错误,还是比较麻烦的,所以推荐大家下载跟现用内核版本接近的版本 我现用的版本为5.13.0-2

haohoa_不秃头的博客 5930

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Linux编译并更新内核(替换Linux内核)

Linux编译并更新内核(替换Linux内核) 实验环境: OS: Ubuntu20.10LTS Old Kernel: linux 5.8.0 New Kernel: linux 5.13.0 1、获取Linux Kernel源码 可以通过官网下载原始版本的内核代码,也可以使用其它厂商或自己修改过的内核代码。官网下载链接:https://kernel.org,各种版本内核的官网下载链接:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin

Imagine Miracle的博客 1万+

[ linux ]内核编译过程及教程

【linux】内核编译过程及教程

已转行谢谢 2794

Linux内核源码编译并更新ubuntu内核

首先查看当前内核版本,以便最后对照,我的当前系统为ubuntu18.04,内核版本为4.18.0 cat /proc/version 1、源码下载 官网:https://www.kernel.org/pub/ Git:https://git.kernel.org/ ftp:http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linu...

hammlee 2188

Ubuntu24.04下载并且编译Linux内核源码

Ubuntu24.04下载并编译Linux源码

m0_74404450的博客 2963

Ubuntu 18.04上编译Linux内核(图文版)

**在Ubuntu 18.04上编译Linux内核 编译按命令来就可(贴两个链接) 1、 在Ubuntu上编译Linux内核 https://blog.youkuaiyun.com/PatrickYangyz/article/details/88594094?biz_id=102&utm_term=linux%20%E5%86%85%E6%A0%B8%E5%AE%9E%E9%AA%8C&utm_medium=distribute.pc_search_result.none-task-blog-2alls

weixin_43860330的博客 3220

Ubuntu18.04编译使用实时内核补丁(RT-PREEMPT kernel)并测试成功(相关bug记录)

使用的VMware15 pro虚拟机,上面安装的Ubuntu18.04 64位系统。下载Linux内核和实时补丁文件,patch-3.18.140.patch.gz与linux-3.18.140.tar.gz

qq_42738296的博客 2025

【Linux / Ubuntu20.04 | 安装实时内核补丁PREEMPT_RT】

本文在ubuntu20.04内核为linux-5.15.0-64-generic基础上,安装了linux5.10.225内核以及对应的5.10.225-rt117实时系统补丁,已通过测试

分享一些自己需要记录的内容,时间长不用就忘记了 9029

解决ubuntu网卡失效-更换内核版本

解决ubuntu网卡和显卡失效的问题-更换ubuntu内核版本

benchuspx的博客 3424
上一篇: 使用Source Insight查看内核源码
下一篇: mmap内核源码分析,基于内核版本3.10(一)
SweeNeil
博客等级 码龄9年 251粉丝 86原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值