编译Linux内核并修改版本号后缀为学号-Ubuntu22.04中编译安装Linux内核6.7.8

前言:实验课要求下载最新版本Linux内核并修改版本号,本人在Vmware中Ubuntu22.04中实现,花三天时间查阅大量网站资料。记录一下误打误撞成功的过程,希望对你们有帮助。

目录

一、常规安装步骤&猜想Ubuntu与gcc版本过低

二、安装Ubuntu22.04最终编译成功


 

一、常规安装步骤&猜想Ubuntu与gcc版本过低

        一开始用的是ubuntu15的版本,gcc版本号为4.X。

  1. 从kernel.org下载linux6.7.8
  2. 用vmwaretool把linux6.7.8压缩包复制到Download目录
  3. 解压缩压缩包至/usr/src目录
  4. cd到linux-6.7.8,或者直接图形化界面中按路径/usr/src/linux-6.7.8打开文件夹并右键在终端中打开
  5. 安装依赖库,网上的很多跟着安就是了
  6. make menuconfig,打开后什么也别动方向键右把光标移动到load→enter→ok→exit
  7. make -j4,我的vmware配置的是双核四线程,配置高的同学可以-j8
  8. 报错:

arch/x86/kvm/svm/pmu.c: In function ‘get_gp_pmc_amd’:
arch/x86/kvm/svm/pmu.c:56:20: error: logical not is only applied to the left hand side of comparison [-Werror=logical-not-parentheses]
   if (!(msr & 0x1) != (type == PMU_TYPE_EVNTSEL))
                    ^
arch/x86/kvm/svm/pmu.c: At top level:
cc1: error: unrecognized command line option ‘-Wno-shift-negative-value’ [-Werror]
cc1: all warnings being treated as errors
scripts/Makefile.build:243: recipe for target 'arch/x86/kvm/svm/pmu.o' failed
make[4]: *** [arch/x86/kvm/svm/pmu.o] Error 1
scripts/Makefile.build:480: recipe for target 'arch/x86/kvm' failed
make[3]: *** [arch/x86/kvm] Error 2
scripts/Makefile.build:480: recipe for target 'arch/x86' failed
make[2]: *** [arch/x86] Error 2 

搞了半天,放弃,重新新建虚拟机。

二、安装Ubuntu22.04最终编译成功

 新建了一个虚拟机,系统用最新的Ubuntu22.04,常规配置基本环境(设置root密码、换源、安装vmwaretools等),接着如上面下载linux6.7.8压缩包、复制、解压缩、安装依赖库;

  1. sudo vim MakeFile#在/usr/src/linux-6.7.8文件夹中启动终端执行,
    #按i进入插入模式修改版本号后缀,esc在输入:wq回车保存
    
  2. make mrproper#净化
    sudo make menuconfig#save→ok→exit退出
  3. sudo make -j4
  4. 报错
    make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'.  Stop.

    还有报错
    CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"

    查了一下,用
    scripts/config --disable SYSTEM_TRUSTED_KEYS

    scripts/config --disable SYSTEM_REVOCATION_KEYS

    解决了
  5. sudo make modules_install 报错!
    make[2]: *** 没有规则可制作目标“/lib/modules/6.7.821/kernel/arch/x86/events/amd/amd-uncore.ko.zst”,由“depmod” 需求。 停止。
  6. 发现是没有编译好的模块,于是
    sudo make modules
    sudo make INSTALL_MOD_STRIP=1 modules_install -j4
    #应该两个运行一个就行(?)
  7. 好了以后,运行sudo make install,又报错
    sh ./arch/x86/boot/install.sh 4.14.28-2018840814 arch/x86/boot/bzImage \
    System.map "boot/"*** Missing file: arch/x86/boot/bzImage
    *** you need to run "make before "make install".

    上面是从网上找的和我一样的错误问题,不要在意细节,大意是要我先make。。唉,于是
    sudo make -j4

    完成了,果断sudo make install

  8. 成功了!!!

        

 最后reboot重启,uname -a查看版本号,确实正确,完结撒花~❀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/736624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

202003 青少年软件编程(Scratch)等级考试试卷(一级)

202003 青少年软件编程(Scratch)等级考试试卷(一级) 第1题:【 单选题】 在Scratch中,以下哪个区域可以展示编程效果? A:代码区 B:舞台区 C:角色区 D:积木区 【正确答案】: B 【试题解析】…

基于PySide2实现调用本地摄像头抓拍并保存照片(Python版本)

因为横向课题需要,这是其中的一个小小的功能,单独拎出来作为一个小demo,方便后续学习使用 项目实现功能: 点击open按钮,摄像头开启,实时捕获周围图像并显示 点击capture按钮,保存摄像头照片&am…

日期工具的逻辑与数据请求函数的完善

src\libs\utils.js 获取当前日期格式 /*** 获取当前日期格式* param {*} field * returns */ function getNowDate(field) {const date new Date()let year date.getFullYear(),month date.getMonth() 1,day date.getDate()switch (field) {case day:return ${year}-${mo…

02- 使用Docker安装RabbitMQ

使用Docker安装RabbitMQ 下载安装镜像 方式一: 启动docker服务,然后在线拉取 # 在线拉取镜像 docker pull rabbitmq:3-management# 使用docker images查看是否已经成功拉取方式二: 从本地加载 ,将RabbitMQ上传到虚拟机中后使用命令加载镜像即可 docker load -i mq.tar启动M…

LLM实施的五个阶段

原文地址:Five Stages Of LLM Implementation 大型语言模型显着提高了对话式人工智能系统的能力,实现了更自然和上下文感知的交互。这导致各个行业越来越多地采用人工智能驱动的聊天机器人和虚拟助手。 2024 年 2 月 20 日 介绍 从LLMs的市场采用情况可以…

LabelImg:一个简单易用的图像标注工具

目录 LabelImg是什么? 如何使用LabelImg进行图像标注? LabelImg的优势和应用场景 在哪里下载它 随着人工智能技术的不断发展,机器学习和深度学习在图像识别、目标检测等领域中得到了广泛的应用。而要训练一个有效的模型,通常需…

Vue3+ts(day02:CompositionAPI、setup)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学,可以点心心支持一下哈(笔记是根据b站上学习的尚硅谷的前端视频【张天禹老师】,记录一下学习笔记,用于自己复盘,有需要学…

备忘录怎么导出数据 备忘录数据导出方法

在忙碌的生活中,我时常依赖于备忘录来记录重要的信息,从工作截止日期到生活琐事,无一不靠它来帮我分担记忆的压力。但随着时间的推移,我发现有时候我不仅仅需要在软件内查看这些信息,还需要将它们导出,或许…

【数据库】软件测试之MySQL数据库练习题目

有表如下: Student 学生表 SC 成绩表 Course 课程表 Teacher 老师表 每个学生可以学习多门课程,每一个课程都有得分,每一门课程都有老师来教,一个老师可以教多个学生 1、查询姓‘朱’的学生名单 select * from Student whe…

【深度学习笔记】优化算法——Adam算法

Adam算法 🏷sec_adam 本章我们已经学习了许多有效优化的技术。 在本节讨论之前,我们先详细回顾一下这些技术: 在 :numref:sec_sgd中,我们学习了:随机梯度下降在解决优化问题时比梯度下降更有效。在 :numref:sec_min…

力扣--动态规划5.最长回文子串

class Solution { public:string longestPalindrome(string s) {// 获取输入字符串的长度int n s.size();// 如果字符串长度为1,直接返回原字符串,因为任何单个字符都是回文串if (n 1)return s;// 创建一个二维数组dp,用于记录子串是否为回…

React-路由小知识

1.默认路由 说明:当访问的是一级路由时,默认的二级路由组件可以得到渲染,只需要在二级路由的位置去掉path,设置index.属性为true。 2.404路由 说明:当浏览器输入ul的路径在整个路由配置中都找不到对应的pth,为了用户体验&#x…

《农商网》商业计划书(附模板下载)

在当今互联网高速发展的时代,农业与电子商务的结合成为了新的经济增长点。《农商网》商业计划书详细阐述了一个以大学生创业为核心的创新项目,旨在通过打造一个全新的农产品在线交易平台,实现农产品的高效流通和价值最大化。该计划书首先对市…

amv是什么文件格式?如何播放amv视频?

AMV文件格式源自于中国公司Actions Semiconductor,最初作为其MP4播放器中使用的专有视频格式。产生于数码媒体发展的需求下,AMV格式为小屏幕便携设备提供了一种高度压缩的视频存储方案。 AMV文件格式的主要特性与使用场景 AMV格式以其独特的特性在小尺寸…

【活动】探索人工智能的“迷惑瞬间”:真实体验与技术挑战

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 标题:探索人工智能的“迷惑瞬间”:真实体验与技术挑战引言…

Elasticsearch:dense vector 数据类型及标量量化

密集向量(dense_vector)字段类型存储数值的密集向量。 密集向量场主要用于 k 最近邻 (kNN) 搜索。 dense_vector 类型不支持聚合或排序。 默认情况下,你可以基于 element_type 添加一个 dend_vector 字段作为 float 数值数组: …

学习Java的第七天

目录 一、什么是数组 二、作用 三、如何使用数组 1、声明数组变量 2、创建数组 示例: 3、数组的使用 示例: 4、数组的遍历 for循环示例(不知道for循环的可以查看我之前发的文章) for-each循环(也就是增强for…

Unity基础学习

目录 基础知识点3D数学——基础Mathf三角函数坐标系 3D数学——向量向量模长和单位向量向量的加减乘除向量点乘向量叉乘向量插值运算 3D数学——四元数为何使用四元数四元数是什么四元数常用方法四元数计算 MonoBehavior中的重要内容延迟函数协同程序协同程序原理 Resources资源…

STM32CubeIDE基础学习-STM32CubeIDE软件工程文件拷贝粘贴

STM32CubeIDE基础学习-STM32CubeIDE软件工程文件拷贝粘贴 前言 在后面开发程序时,往往不需要再重新新建工程的了,可以直接在原有的工程基础上直接复制粘贴新增功能就可以了。 具体的操作方法步骤如下介绍: 第一步:找到一个原有的…

力扣中档题的简单写法:在链表中插入最大公约数

其实暴力遍历开数组也可以,但不如以下新建链表块的方法简单 int FindCommDivisor(int num1, int num2) {int n;int i;n fmin(num1, num2);for (i n; i > 1; i--) {if (num1 % i 0 && num2 % i 0) {return i;}}return 0; }struct ListNode *insertGr…