Linux内核替换的一种简单方法
前言
使用现有centos的镜像,在海光机器上出现了无法运行的情况,grub引导后就只剩下光标一直在闪,无任何字符输出。这种情况大概率是因为Linux的内核无法运行在海光的CPU上所导致的。
已得知Linux内核在4.20版本后支持海光CPU,而在之前的版本中,则需要为内核打专门的patch,并编译内核。考虑到目前centos的软件源中并没有提供4.20版本以上的内核,而在其余开发环境中已有现成的5.15.11版本内核,故决定手动替换。
具体步骤
想要替换内核至5.15.11版本,至少需要从其他环境中复制如下文件:
- /boot/vmlinuz-5.15.11-1.el7.x86_64
- /boot/initramfs-5.15.11-1.el7.x86_64.img
- /lib/modules/5.15.11-1.el7.x86_64/目录
随后更新grub配置,确认grub中包含新内核的引导:
grub2-mkconfig -o /boot/grub2/grub.cfg
如果initrd存在定制,那么还需要为新内核生成一个initrd:
dracut -v -f -N --kver 5.15.11-1.el7.x86_64
最后重启验证新内核是否能够正常运行。
附录
Linux对海光的支持
https://cdn.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.20
commit fec98069fb72fb656304a3e52265e0c2fc9adf87
Merge: 04ce7fae3d4e 995d5f64b62f
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date: Tue Oct 23 16:16:40 2018 +0100
Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 cpu updates from Ingo Molnar:
"The main changes in this cycle were:
- Add support for the "Dhyana" x86 CPUs by Hygon: these are licensed
based on the AMD Zen architecture, and are built and sold in China,
for domestic datacenter use. The code is pretty close to AMD
support, mostly with a few quirks and enumeration differences. (Pu
Wen)
- Enable CPUID support on Cyrix 6x86/6x86L processors"
* 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
tools/cpupower: Add Hygon Dhyana support
cpufreq: Add Hygon Dhyana support
ACPI: Add Hygon Dhyana support
x86/xen: Add Hygon Dhyana support to Xen
x86/kvm: Add Hygon Dhyana support to KVM
x86/mce: Add Hygon Dhyana support to the MCA infrastructure
x86/bugs: Add Hygon Dhyana to the respective mitigation machinery
x86/apic: Add Hygon Dhyana support
x86/pci, x86/amd_nb: Add Hygon Dhyana support to PCI and northbridge
x86/amd_nb: Check vendor in AMD-only functions
x86/alternative: Init ideal_nops for Hygon Dhyana
x86/events: Add Hygon Dhyana support to PMU infrastructure
x86/smpboot: Do not use BSP INIT delay and MWAIT to idle on Dhyana
x86/cpu/mtrr: Support TOP_MEM2 and get MTRR number
x86/cpu: Get cache info and setup cache cpumap for Hygon Dhyana
x86/cpu: Create Hygon Dhyana architecture support file
x86/CPU: Change query logic so CPUID is enabled before testing
x86/CPU: Use correct macros for Cyrix calls
内核rpm包中包含的文件
以内核版本4.18.0为例,首先使用rpm命令查询内核rpm包中包含有哪些文件,如下所示,rpm包中包含的文件有:
- 内核文件:/boot/vmlinuz-4.18.0-348.7.1.el8_5.x86_64
- initrd压缩包:/boot/initramfs-4.18.0-348.7.1.el8_5.x86_64.img
- 内核编译文件(一般用不到):Module.symvers文件boot/symvers-4.18.0-348.7.1.el8_5.x86_64.gz、配置文件/boot/config-4.18.0-348.7.1.el8_5.x86_64、内核符号表/boot/System.map-4.18.0-348.7.1.el8_5.x86_64、内核完整性校验文件/boot/.vmlinuz-4.18.0-348.7.1.el8_5.x86_64.hmac等
- 动态库加载配置文件:/etc/ld.so.conf.d/kernel-4.18.0-348.7.1.el8_5.x86_64.conf
- 内核模块:/lib/modules/4.18.0-348.7.1.el8_5.x86_64/目录下的各种文件
- 文档、签名、许可证等杂项:/usr/share/目录下的文件
# rpm -ql kernel-core-4.18.0-348.7.1.el8_5.x86_64
/boot/.vmlinuz-4.18.0-348.7.1.el8_5.x86_64.hmac
/boot/System.map-4.18.0-348.7.1.el8_5.x86_64
/boot/config-4.18.0-348.7.1.el8_5.x86_64
/boot/initramfs-4.18.0-348.7.1.el8_5.x86_64.img
/boot/symvers-4.18.0-348.7.1.el8_5.x86_64.gz
/boot/vmlinuz-4.18.0-348.7.1.el8_5.x86_64
/etc/ld.so.conf.d/kernel-4.18.0-348.7.1.el8_5.x86_64.conf
/lib/modules
/lib/modules/4.18.0-348.7.1.el8_5.x86_64
/lib/modules/4.18.0-348.7.1.el8_5.x86_64/.vmlinuz.hmac
/lib/modules/4.18.0-348.7.1.el8_5.x86_64/System.map
/lib/modules/4.18.0-348.7.1.el8_5.x86_64/bls.conf
/lib/modules/4.18.0-348.7.1.el8_5.x86_64/build
/lib/modules/4.18.0-348.7.1.el8_5.x86_64/config
/lib/modules/4.18.0-348.7.1.el8_5.x86_64/kernel
/lib/modules/4.18.0-348.7.1.el8_5.x86_64/kernel/arch
/lib/modules/4.18.0-348.7.1.el8_5.x86_64/kernel/arch/x86
/lib/modules/4.18.0-348.7.1.el8_5.x86_64/kernel/arch/x86/crypto
/lib/modules/4.18.0-348.7.1.el8_5.x86_64/kernel/arch/x86/crypto/blowfish-x86_64.ko.xz
/lib/modules/4.18.0-348.7.1.el8_5.x86_64/kernel/arch/x86/crypto/camellia-aesni-avx-x86_64.ko.xz
...
/usr/share/doc/kernel-keys/4.18.0-348.7.1.el8_5.x86_64
/usr/share/doc/kernel-keys/4.18.0-348.7.1.el8_5.x86_64/kernel-signing-ca-20140212.cer
/usr/share/doc/kernel-keys/4.18.0-348.7.1.el8_5.x86_64/kernel-signing-ca-20200609.cer
/usr/share/doc/kernel-keys/4.18.0-348.7.1.el8_5.x86_64/kernel-signing-ca.cer
/usr/share/licenses/kernel-core
/usr/share/licenses/kernel-core/COPYING-4.18.0
Linux内核替换的一种简单方法的更多相关文章
- linux内核空间与用户空间信息交互方法
linux内核空间与用户空间信息交互方法 本文作者: 康华:计算机硕士,主要从事Linux操作系统内核.Linux技术标准.计算机安全.软件测试等领域的研究与开发工作,现就职于信息产业部软件与 ...
- 【转】 Linux内核中读写文件数据的方法--不错
原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法 有时候需要在Linuxkernel--大 ...
- 使用strace工具故障排查的5种简单方法
使用strace工具故障排查的5种简单方法 本文源自5 simple ways to troubleshoot using strace strace 是一个非常简单的工具,用来跟踪可执行程序的系统调 ...
- WPF编程 ,TextBlock 显示百分数值的一种简单方法。
原文:WPF编程 ,TextBlock 显示百分数值的一种简单方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/ ...
- Linux内核配置编译及基本调试方法
一.Linux内核配置编译 1. 交叉编译设置:make ARCH=arm CROSS_COMPILE=arm-linux- 注:也可以直接修改顶层Makefile ARCH ?= arm CROSS ...
- Linux 内核睡眠的几种方式
译至:http://geeki.wordpress.com/2010/10/30/ways-of-sleeping-in-linux-kernel/ 在Linux中睡眠有2-3种不同的方法. 睡眠的第 ...
- Linux内核分析:完成一个简单的时间片轮转多道程序内核代码
PS.贺邦 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 1.m ...
- Honeywords项目——检查密码是否被破解的一种简单方法
Honeywords项目使用一种简单的方法来改进hash后的密码的安全性——为每个账户维护一个额外的honeywords(假密码).如果有黑客拿到了密码的文件,然后试图用brute froce的方式破 ...
- Linux内核crash/Oops异常定位分析方法
在内核开发的过程中,经常会碰到内核崩溃,比如空指针异常,内存访问越界.通常我们只能靠崩溃之后打印出的异常调用栈信息来定位crash的位置和原因.总结下分析的方法和步骤. 通常oops发生之后,会在串口 ...
随机推荐
- SQL order by 语句对null值排序
记order by 语句对null值排序: 目录 记order by 语句对null值排序: MySQL: Oracle: SqlServer: MySQL: 将null值放在最后 select * ...
- 第五篇:vue.js起步
<div id="vue_det"> //使改动全部在指定的 div 内,div 外部不受影响 <h1>site : {{site}}</h1> ...
- FR801xH开发
一.空间分配 二.代码流程 1)user_custom_parameters 函数 __jump_table 结构体中保存了一些配置信息: void user_custom_parameters(vo ...
- 使用verdaccio+docker搭建npm私有仓库以及使用
公司内部前端组件或库的共享等,搭建一个npm私有库就很方便,现在中大型公司也基本都有自己的npm私有库,这篇文章,和大家一起共同搭建一个npm私有库,共同学习 前置条件 一台电脑 可以联网 一.安装d ...
- java8 新特性 -Optional的常见用法
1. Optional 一. 简介 Opitonal是java8引入的一个新类,目的是为了解决空指针异常问题.本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为 ...
- HCIA-STP原理与配置
STP协议生成树协议: 为了保证网络可靠,所以在组网时需要设置冗余链路和设备,从而在物理结构上形成结构,又因为交换机的工作特点导致二层网络中产生广播风暴和MAC地址表震荡现象,影响用户体验. 广播风暴 ...
- Redis从入门到高级笔记【涵盖重点面试题】
NoSQL数据库 DBEngines网站中会统计目前数据库在全世界的排名 1.1 什么是NoSQL 最常见的解释是"non-relational",很多人说它是"Not ...
- 我的 Kafka 旅程 - Consumer
kafka采用Consumer消费者Pull主动拉取数据的方式,当Broker无数据时,消费者空转.Kafka并不删除已消费的消息,各自独立的消费者可消费同一个Broker分区数据. 消费流程 1.消 ...
- Node.js(五)学生管理CRUD
npm init -y(初始化项目) npm install express(引入express) npx express-generator -e(自动生成模板.添加对 ejs 模板引擎的支持) n ...
- Spring Boot 源码学习之转载
这次的学习,主要转载了 波波老师的笔记,后续会自己整理一份 1.Spring-Boot源码分析-源码编译:https://dpb-bobokaoya-sm.blog.csdn.net/article/ ...