如何编译升级ubuntu内核

Ubuntu linux下重新编译内核 背景:Ubuntu 18.04 内核版本: 5.4.0 替换内核版本:5.11.11 雷区: 给Ubuntu分配内存要至少大于40GB,不然编译过程中会因内存不足,提前终止报错(- -血的教训) 1.官网下载内核源码 官网内核源码地址:https://www.kernel.org/ (尽量选择稳定的内核版本) 查看自己内核版本号: uname -a 2.安装编译内核需要的程序 建议安... 阅读详情

每一个发行版本都带有一些特殊的工具,用来从源代码中创建一个自定义的内核,这篇文章就是关于如何在ubuntu系统中编译内核的。内容包括,如何利用最新的,未被修改过的,从www.kernel.org网站上下载下来的源代码来构建自订制系统,这样,你就能独立于发行版所提供的内核。文章同样涉及了如果你需要一些现有内核不包含的特性,如何对内核源代码进行修补等问题。

每一个发行版本都带有一些特殊的工具,用来从源代码中创建一个自定义的内核,这篇文章就是关于如何在ubuntu系统中编译内核的。内容包括,如何利用最新的,未被修改过的,从www.kernel.org网站上下载下来的源代码来构建自订制系统,这样,你就能独立于发行版所提供的内核。文章同样涉及了如果你需要一些现有内核不包含的特性,如何对内核源代码进行修补等问题。

我在Ubuntu 6.10 Server (”Edgy Eft”)和Ubuntu 6.06 Desktop (”Dapper Drake”)上都对文中所述步骤进行了测试。但还需要事先申明的是,这并不是唯一能够构建系统的办法,事实上,有很多办法能够达到相同的目的,正所谓条条大路通罗马,只不过我走的是这一条道路而已。所以,我不保证这种办法能完全适用于你。

顺便再提醒一句,我喜欢直接以root的身份来执行下面所有的步骤,因此,如果你还没有创建一个能够登陆的root帐号,请立即创建一个。

sudo passwd root

之后,以root身份登陆:

su

如果有朋友就是喜欢用普通用户身份进行操作的话,也没有关系,你只需要注意,把这篇文章所有命令的全面都自行加上sudo即可。举个例子,如果我运行的是

apt-get update

那么你就应该运行

sudo apt-get update

如此重复即可。

好,接下来进入操作的具体步骤。

基本安装步骤

修改ubuntu 6.10上的/bin/sh

在ubuntu6.10上,/bin/sh默认是链接到/bin/dash的,当你从源代码编译软件的时候,dash可能会导致一些错误,至少我遇到过类似问题,因此,我把/bin/sh的连接改为了/bin/bash。(估计中国绝大部分使用者都是用的bash吧)

如果你使用的就是6.10,那么应该这样做:

rm -f /bin/sh

ln -s /bin/bash /bin/sh

安装内核编译所需的包

首先,让我们来更新一下自己机器上的安装包数据库

apt-get update

之后,用这条命令来安装所有需要的包:

apt-get install kernel-package libncurses5-dev fakeroot wget bzip2

下载内核源代码

接下来,我们将需要的内核下载到/usr/src中。2.6版本的所有内核都可以从http://www.kernel.org/pub/linux/kernel/v2.6/得到。我是这样下载的:

cd /usr/src

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2

你也可以根据自己的需要,用不同的下载方式下载不用的内核版本。

完毕之后,将源代码解包,并创建一个指向源代码软件目录的连接linux:

tar xjf linux-2.6.18.1.tar.bz2

ln -s linux-2.6.18.1 linux

cd /usr/src/linux

给内核源代码打补丁

有时候,你需要一些硬件驱动,但是新的内核默认却没有提供,或者,你可能要用到虚拟技术或其他一些前沿科技,而新的内核中却没有加入它们。在这些情况下,你不得不对你的内核打补丁(当然,前提是存在相应的补丁)。

现在,我假设你已经下载到了相对应的补丁,在这里我们以patch.bz2代替。将其放到/usr/src目录下,然后用下来的命令来使其生效:

bzip2 -dc /usr/src/patch.bz2 | patch -p1 –dry-run

bzip2 -dc /usr/src/patch.bz2 | patch -p1

注意!此时,你应该一直处于/usr/src/linux目录下。

第一个命令仅仅是试验性质的,它并不会对你的源代码产生什么变动。如果没有产生什么错误信息,你才能用第二个命令来对源代码产生真正的修补动作,如果第一条指令就出错了,请别继续执行下去,看看错误出在哪里。

同样,你也可以向你的内核提供预补丁,例如,一旦你发现有一个自己需要的特性在2.6.19 rc4中提供,但这个版本的内核并没有发行所有的完整源代码,只有patch-2.6.19-rc4.bz2是可选的。于是,你就可以提供这个patch 到2.6.18的内核中,但不是2.6.8.1,或者2.6.8.2。

http://kernel.org/patchtypes/pre.html对此作出了解释:

预补丁其实就等同于一个linux的alpha版本,它存在于仓库中的测试目录中。它们只能由针对上一个版本源代码的patch工具提交,这个上一个完全发行的版本必须是三部分版本号所组成的,例如,2.6.12-rc4 prepatch能够提供给2.6.11内核源代码,但,2.6.11.10没有任何用处。

所以,如果你希望编译2.6.19rc4内核,你应该下载2.6.18的内核源代码(http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2)。下面就是如何进行的步骤:

cd /usr/src

wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc4.bz2

cd /usr/src/linux

bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1 –dry-run

bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1

配置安装

配置内核

使用现有内核的配置文件作为新内核配置文件的基础,无疑是一个好主意。因此,我们先复制已经存在的配置文件到/usr/src/linux目录中

cp /boot/config-`uname -r` ./.config

然后运行

make menuconfig

这将显示出内核配置菜单。选择 “Load an Alternate Configuration File”,再选择你刚才拷贝过来的.config文件作为配置文件。然后确定。当结束后,你选择退出时,会提示问你 “Do you wish to save your new kernel configuration?”选择yes即可。

创建内核

如果要创建内核,请执行下面两个命令:

make-kpkg clean

fakeroot make-kpkg –initrd –append-to-version=-custom kernel_image kernel_headers

在 ” –append-to-version= “之后,你可以写任何有助于标志内核的字符串,但前提是必须以-符号作为开头,中间不能有空白字符。

好了,现在,请耐心点,内核的编译可能会花上你几个小时的时间,这取决于你的内核配置情况以及机器的性能。

安装新的内核

在内核构建成功之后,你能在/usr/src目录下看见两个.deb文件。在我的测试系统中,它们被称为linux-image-2.6.18.1- custom_2.6.18.1-custom-10.00.Custom_i386.deb (包含真实内核) and linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb (包含那些编译附加内核模块所需要的文件).

我用这种办法安装:

dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb

dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb

你甚至可以将这两个deb包转移到其他的ubuntu系统中,并用相同的办法安装它们。这意味着,你不再需要再一次编译它们了。

好了,现在,你可以检查一下你的menu.lst文件,多了两个与新内核有关的部分:

title Ubuntu, kernel 2.6.18.1-custom

root (hd0,0)

kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro quiet splash

initrd /boot/initrd.img-2.6.18.1-custom

savedefault

boot

title Ubuntu, kernel 2.6.18.1-custom (recovery mode)

root (hd0,0)

kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro single

initrd /boot/initrd.img-2.6.18.1-custom

boot

现在,重新启动计算机,shutdown -r。如果一切顺利的话,重新启动之后,你使用的就是新的内核了。你可以通过 ” uname -r”命令来看看目前的内核版本。它应该表示为: ” 2.6.18.1-custom”

一些问题

如果restart的时候出了问题,当你看见屏幕上出现 “Press ESC to enter the menu…1″这行字的时候,按下ESC,此时会进入grub的启动菜单,好,选择你的旧版内核,启动系统。现在,你不得不重新编译一次内核,使其能够正常使用。编译之前别忘了,从menu.lst中去除之前的两个不能正常工作的内核区域。

ubuntu上编译Linux内核步骤 在这个页面中,找到刚才记住的那一行(如果没记住的话, 就是"文件系统"这一列为"ext4"的这一行). 点击这一行,右键,选择"调整大小/移动"关闭虚拟机,在""虚拟机设置"中,点击"硬盘",点击"扩展磁盘容量",设置为合适的大小.但是这个操作并不能扩展文件系统的大小,需要进一步设置.如果提示文件系统空间不足而编译失败, 则会有一行的"已用%"为100%(或者百分比最大且容量最大的那一行),记住这一行的名字."-j4"是指定4个线程进行编程, 加快速度, 可以改成"-j8"等, 也可以不加。 阅读详情

相关推荐

ubuntu -- 常规操作 编译、删除

buntu – 常规操作 一、gcc的编译 命令: sudo su 转换成超级用户 (暂时没用过) vi hello 打开文件、编译 按ESC键输入 :wq (w:write q:quite)即可保存退出 二、gcc编译程序的过程 gcc编译程序主要经过四个过程: 预处理(Pre-Processing) 编译 (Compiling) 汇编 (Assembling) 链接 (...

ZUO_HE1的博客 2733

ubuntu编译安装kernel教程。

编译和安装Ubuntu内核需要一定的技术知识和经验。以下是一个大致的步骤,但请注意,编译和安装内核可能会有一些风险,并且在执行之前请确保备份重要数据和系统。请注意,编译和安装内核可能会对系统产生不可预见的影响,并且在这个过程中可能会遇到错误。建议在一个测试环境中进行实验,并确保你有备份的系统和数据。这将使用所有可用的CPU核心并行编译内核。在该界面上,你可以根据需要进行内核选项的配置和调整。安装构建内核所需的依赖项。这将安装内核模块和内核镜像文件到适当的目录。

高性价比服务器就选:蓝易云 3024

ubuntu18.04内核升级(使用编译的方法达到内核6.1.62)

自己的电脑是22年买的thinkbook16+,乘着今年双11给它加了一个外接显卡,在windows上能成功识别并使用,但是在ubuntu18.04上因为无法识别出雷电接口,所以无法使用。后来换成20.04的版本竟然又可以,比较两者的区别后,初步推测是内核版本稍低,遂尝试升级内核,已验证自己的猜测。

m0_72522488的博客 6492

Ubuntu系统更换Linux内核的详细方法汇总

最近在复现Linux内核漏洞的时候,经常需要更换Ubuntu系统的Linux内核版本,但是网上的资料参差不齐,为了方便大家更换Ubuntu系统的Linux内核版本,故写了这篇博客分享给大家,本篇博客提供两种在Ubuntu系统中更换Linux内核版本的详细方法,第一种方法是下载Linux内核源码进行手动编译以及安装,此种方法较为复杂,但是灵活性比较高,可以自行配置Linux内核的各种设置,第二种方法是自动下载安装Linux官网配置好的Linux内核,此种方法较为简单,但是灵活性较低,因为不能自行配置Linux

IronmanJay 1万+

ubuntu 10.04 编译升级版本到linux-3.16.60内核

一、安装好ubuntu 10.4版本,该版本linux内核为2.6.32,我们需将它升级至3.16.60              查看版本命令为: cat /proc/version       下载3.16.60的linux内核。将其解压到/usr/src目录下               教训:觉得主机直接下载比在虚拟机内下载快,于是我是先下载完顺便解压后再通过共享文件夹传送至虚拟机内...

sinat_35457855的博客 617

桌面PC/服务器 ubuntu18.04 Linux内核编译升级与机制分析

1.下载内核并且解压安装依赖2.执行make menuconfig,并不修改,使用默认然后退出,默认使用的配置是x86_64_defconfig还可以拷贝/boot/目录下的既有的config文件来作为编译内核的配置文件来编译。但是需要两个内核版本号差别不大,可以互通使用。将CONFIG_SYSTEM_TRUSTED_KEYS字符串置空。3.执行make -j4因为之前编译过,再次编译输出很少4.执行sudo make modules_install。

tugouxp的专栏 7300

Ubuntu内核编译升级方法

  弄了很久,不停的google,终于把我的ubuntu内核更新2.6.31.6版本了,下面我来分享一下我的经验。顺便赞一下google的强大~~    主机环境:ubuntu desktop 9.04 如果是9.10的话方法是类似的。    最新内核:linux-2.6.31.6  可以的www.kernel.org下载 如果你用的是其他内核,方法应该是类似的现在开始了:1.将下

行天下 1367

前端埋点的实践

1、前言 开始正文前先介绍一下埋点的概念~,(熟悉的朋友可以略过) 前端埋点: 是一种手段,它的目的是上报相关行为数据,相关人员以数据为依据来分析产品在用户端的使用情况,根据分析出来的结果辅助产品优化、迭代。 BI:商业智能,公司内部做数据分析相关的部门。 2、背景 在流量红利逐渐消失的现在,数据的采集、分析和精细化的运营显得更加重要,所以埋点的需求在互联网产品中是很常见的,目的上面也提到了。我们的追求就是又快又好的做好埋点工作,但是现实却不那么美好;目前我们团队在前端埋点方面存在一些痛点: 在构造埋点字段

Arui_0的博客 1773

Ubuntu:编译升级Linux内核

基于Ubuntu20.04系统更新内核

翔底的博客 3419

PlutoSDR驱动安装避坑指南:从设备管理器异常到MATLAB 2023b完美识别

本文是一份详细的PlutoSDR驱动安装与MATLAB 2023b集成排错指南。针对Windows系统下常见的设备管理器异常、驱动兼容性问题,提供了从旧驱动清理、手动指定驱动文件到USB连接稳定性排查的完整解决方案。重点阐述了如何通过离线安装硬件支持包,并利用MATLAB命令进行连接测试与射频信号验证,最终实现设备的完美识别与稳定调用。

weixin_29159441的博客 429

如何利用URDF文件表示并联结构(仅适用于支持SDF格式的仿真环境)

介绍了一种使用URDF文件在Gazebo中表示并联结构的方法,该方法使用了URDF的SDF拓展。在一个具有并联结构的双足机器人上应用并演示了此方法的有效性。

RobotFreak的博客 3854

Ubuntu下通过源码编译方式升级内核

1. 解压源码并打入补丁 (1) 解压并解包源码包(xxx.tar.gz文件)。 # tar zxvf linux_4.15.0.orig.tar.gz 解压之后得到一个xxx的目录。 # ls linux-4.15 linux_4.15.0-45.48.diff.gz linux_4.15.0-45.48.dsc linux_4.15.0.orig.tar.gz (2)进入解压后的源码目录。 # cd linux-4.15/ (3)将补丁文件打入源码包。 # zcat ..

phmatthaus的专栏 3329

编程助手:CLAUDE.md 与 AGENTS.md 完全指南

AI编程助手配置文件指南 为解决AI编程助手在陌生项目中面临的运行、规范、架构等问题,本文提出两种配置文件: CLAUDE.md(根目录): 面向通用AI(如ClaudeCode) 包含项目命令、代码风格、架构说明等结构化信息 示例:启动命令:npm run dev,代码规范:TypeScript禁用any AGENTS.md(任意目录): 面向智能编码工具(如Cursor) 支持模块级配置(如微前端子应用) 示例:前端测试命令:npm test:web,API请求规范 与传统README.md的区别: 人

分享AI、区块链技术及应用,未来已来 1258

kernel编译练习1:给ubuntu22升级5.19内核

更换ubuntu的内核到最新的linux 5.19版本,linux内核升级,ubuntu内核升级

4626

从零开始跑通3DGS教程:(三)坐标系与尺度编辑(CloudCompare)

本文所属《从零开始跑通3DGS教程》系列文章; sfm重建的点云已经丢掉了尺度信息,并且坐标系跟图像数据有关(SFM初始化选择的图像),所以如果想恢复物理真实尺度,以及在想要的视角下渲染,那么需要对尺度和坐标系进行编辑修正,下文介绍如何使用CloudCompare修改坐标系和尺度

诺有缸的高飞鸟的博客 2872

手把手教你学Simulink——基于Simulink的前馈解耦SVPWM整流器仿真

本文详细介绍了基于Simulink的前馈解耦SVPWM整流器仿真方法。针对三相PWM整流器存在的dq轴交叉耦合问题,提出前馈解耦控制方案,通过在电流环中引入耦合电压补偿项,显著提升系统性能。文章包含完整的系统架构、核心算法、Simulink建模步骤及参数设置,仿真结果显示:电流跟踪误差<2%、动态响应时间<0.05s、THD<3%、功率因数>0.999。同时提供了可直接复用的MATLAB代码和工程优化建议,为电力电子工程师实现高精度AC/DC转换提供了实用解决方案。

MHD0815的博客 108

Ubuntu下通过源码编译方式升级内核2(基于4.15版本)

1. 下载内核源码包及补丁包 (1)查看当前Ubuntu系统的内核版本。 root@ubuntu:/home/ptadmin# uname -r 4.15.0-45-generic (2)选择与当前内核版本接近的内核源码进行下载。 root@ubuntu:/usr/src# wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/linux/4.15.0-45.48/linux_4.15.0.orig.tar.gz (3)

phmatthaus的专栏 952

【原创教程】汇川H5U入门教案第二课

定时器指令IN输入能流从OFF变为ON时,定时器启动计时,输出Q为ON,IN输入能流从ON变为OFF时,在IN保持为OFF期间,定时器的运行时间是PT参数指定的时间,定时器定时时间达到PT参数指定的时间后,Q变为OFF。IN输入能流为ON时,ET输出值为0,IN从ON变为OFF时,在定时器计时运行期间,ET输出当前的计时时间,定时器计时时间到达PT参数指定的时间后,ET值保持。IN输入能流为ON时,在定时器计时运行期间,ET输出当前的计时时间,定时器计时时间到达PT参数指定的时间后,ET值保持;

Qinmingyue13的博客 2487

vm ubuntu编译内核_Ubuntu18.04怎么升级到5.0内核

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言本文主要讲解如何把Ubuntu 18.04升级到5.0内核版本,目前,已经有用户需要把**Ubuntu 18.04 **LTS的内核版本升级到Linux Kernel 5.0版本,以便于尽快展开相关开发工作。定期有新的设备和技术出现,如果我们想充分利用它,保持Linux系统内核的...

weixin_39553653的博客 99

【云原生】阿里云SLS日志自定义字段标签实现日志告警

样例:一个典型的java log初始化日志格式把日志中的INFO提取出来做为一个标签,在开源日志框架中,配置采集器实现- regex:在阿里云SLS日志服务同样可以实现,首先我们进入到一个日志库,查看数据接入,我这里使用的是Logtail工具在【处理配置】中,选择【处理插件组合】,新增提取字段插件原始字段:填写要被提取的日志,对应原始字段的内容做正则结果字段:正则表达式对应的捕获组对应结果:捕获组 匹配内容 说明1 ywgy-app-service 服务名称。

CN_Eden 743

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

kernel编译练习2:给ubuntu22升级5.19内核

ubuntu升级内核到5.19,linux内核升级,ubuntu内核升级

2908

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

ubuntu 编译升级内核

当前内核4.15,是由4.14莫名其妙通过软件升级程序自动升级上来的。 打算自行编译配置升级到4.16 先到镜像地址:http://mirror.bjtu.edu.cn/kernel/linux/kernel/ 下载4.16.9版本源码 编译前使用make mrproper命令清理掉编译痕迹,该指令与make clean有区别,可以理解为更彻底。 图形化配置xconfig的依赖需要 fl...

luchang的专栏 1410

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

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ubuntu 内核的升级与编译

1, 因为我们之后要进行make menuconfig,所以需要在ubuntu中安装一个ncurses,执行命令: sudo apt-get install libncurses* 2, 将内核文件放到主目录(/home/yourname)下,其实放在哪儿没关系,只不过习惯放在home目录下,然后解压: sudo tar -jxvf linux-2.6.38.2.tar.bz2 (注意也有

xiao229404041的专栏 3491

kernel编译练习2:给ubuntu22升级5.19.3内核

升级linux内核到5.19.3

1236
上一篇: hiddenQuser + 源码
下一篇: 艰难渗透源码销售站点
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值