编译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查看版本号,确实正确,完结撒花~❀

  • 46
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值