openEuler编译和更换内核的方法
1. 编译内核生成rpm包2. rpm包替换内核3. 通过删除rpm包来删除内核4. 指定默认启动的内核5. 在两个硬盘上装双系统时指定硬盘启动顺序1. 编译内核生成rpm包内核编译在内核根目录下执行make openeuler_defconfig生成.config文件通过make menuconfig指定一些内核配置选项比如设置编译成的rpm包名称| | | | --- | --- | | 1 | General setup --- | | 2 | (_debug_sp4) Local version - append to kernel release |将spi_dw_mmio.c这个驱动编译为内核| | | | --- | --- | | 1 | Device Drivers --- | | 2 | [*] SPI support --- | | 3 | M Memory-mapped io interface driver for DW SPI core |通过查看.config文件中对应的配置项可以检查make menuconfig中的设置是否生效编译rpm包make binrpm-pkg -j jobs number其中jobs number代表并发量一般小于等于CPU核数生成的rpm包位于~/rpmbuild/RPMS/aarch64目录下共有两个包一个是kernel的二进制包一个是头文件包。| | | | --- | --- | | 1 | [rootlocalhost aarch64]# pwd | | 2 | /home/j00521119/rpmbuild/RPMS/aarch64 | | 3 | [rootlocalhost aarch64]# ll | | 4 | total 32072 | | 5 | -rw-rw-r--. 1 j00521119 j00521119 31602553 Nov 1 16:31 kernel-4.19.90-26.aarch64.rpm | | 6 | -rw-rw-r--. 1 j00521119 j00521119 1234637 Nov 1 16:30 kernel-headers-4.19.90-26.aarch64.rpm |编译过程中可能会遇到缺乏依赖包的问题根据报错内容安装需要的包即可。优化编译时间实际编译过程中会发现最后打包生成rpm包的耗时较长。通过下面的两步操作可以缩短打包生成rpm包的时间同时减少rpm包的size。在内核源码根目录下打开scripts/package/mkspec文件并注释这下述两行| | | | --- | --- | | 1 | bzip2 -9 --keep vmlinux | | 2 | mv vmlinux.bz2 %{buildroot}/boot/vmlinux-$KERNELRELEASE.bz2 |使用环境变量export INSTALL_MOD_STRIP1其中第一步的作用是不把vmlinux打包进rpm包中。vmlinux是linux内核的未压缩二进制文件包含了完整的内核代码和符号表信息通常用于调试和分析内核问题。INSTALL_MOD_STRIP是用来压缩内核模块的变量。在编译内核时内核模块会被编译成.ko文件这些文件可能会占用大量的磁盘空间。为了减少内核模块的体积可以使用INSTALL_MODE_STRIP变量来指定内核模块是否需要被压缩。当该变量的值为1时内核模块会被剥离符号和调试信息从而减小文件大小。2. rpm包替换内核使用下面的命令更换内核一般只用替换kernel包即可。| | | | --- | --- | | 1 | rpm -ivh kernel*.rpm --force |安装完成后可以通过下面的命令检查内核是否已经安装成功。| | | | --- | --- | | 1 | rpm -qa | grep kernel |3. 通过删除rpm包来删除内核通过下面的命令查找当前已经通过rpm包安装的内核| | | | --- | --- | | 1 | [rootvm1 ~]# rpm -qa | grep kernel | | 2 | kernel-5.10.0-136.12.0.86.oe2203sp1.aarch64 | | 3 | kernel-headers-5.10.0-136.12.0.86.oe2203sp1.aarch64 | | 4 | kernel-4.19.90_wayca_sc_with_cluster-34.aarch64 |使用下面的命令删除已经安装的内核| | | | --- | --- | | 1 | rpm -e kernel-4.19.90_wayca_sc_with_cluster-34.aarch64 |4. 指定默认启动的内核有时候会存在多个内核版本同时存在的情况。一种方法是在启动阶段手动选择启动内核使用这种方法除了要登录BMC外还要在启动阶段持续关注启动界面在特定启动阶段手段选择内核。下面给出了一种指定默认启动内核的方法使用这种方法避免了在更换内核后登录BMC的操作。通过命令grub2-editenv list可以查看当前设置的默认启动内核通过命令grep ^menuentry /etc/grub2-efi.cfg可以查看当前支持的所有内核版本通过命令grub2-set-default来设置默认启动内核。使用menuentry之后单引号内的完整字符串作为内核名| | | | --- | --- | | 1 | [rootvm1 ~]# grub2-editenv list | | 2 | saved_entryopenEuler (4.19.90_debug_sp4_wayca_sc) 22.03 (LTS-SP1) | | 3 | [rootvm1 ~]# grep ^menuentry /etc/grub2-efi.cfg | | 4 | menuentry openEuler (4.19.90_wayca_sc_with_cluster) 22.03 (LTS-SP1) --class openEuler --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option gnulinux-5.10.0-136.12.0.86.oe2203sp1.aarch64-advanced-3c1ec069-3a9b-461f-be6c-6f6a7184c3c5 { | | 5 | menuentry openEuler (5.10.0-136.12.0.86.oe2203sp1.aarch64) 22.03 (LTS-SP1) --class openEuler --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option gnulinux-5.10.0-136.12.0.86.oe2203sp1.aarch64-advanced-3c1ec069-3a9b-461f-be6c-6f6a7184c3c5 { | | 6 | [rootvm1 ~]# grub2-set-default openEuler (5.10.0-136.12.0.86.oe2203sp1.aarch64) 22.03 (LTS-SP1) | | 7 | [rootvm1 ~]# grub2-editenv list | | 8 | saved_entryopenEuler (5.10.0-136.12.0.86.oe2203sp1.aarch64) 22.03 (LTS-SP1) |5. 在两个硬盘上装双系统时指定硬盘启动顺序有时候我们会在两个硬盘上安装两个系统除了通过bios来手动指定启动硬盘之外还可以使用efibootmgr命令来指定硬盘启动顺序。efibootmgr命令是一个用于管理UEFI引导选项的命令行工具。它可以列出、添加、删除和修改UEFI引导选项以及设置默认引导选项。通过使用efibootmgr命令用户可以轻松地管理UEFI引导选项以确保系统正确地引导到所需的操作系统或引导设备。efibootmgr常用的使用方法如下也可以使用efibootmgr --help查看其它使用方法efibootmgr用于显示当前的启动顺序当前启动项efibootmgr -o用于设置新的启动顺序设置完成后reboot即可| | | | --- | --- | | 1 | [rootlocalhost aarch64]# efibootmgr | | 2 | BootCurrent: 0010 | | 3 | Timeout: 10 seconds | | 4 | BootOrder: 0010,000E,0002,0003,0004,0005,0006,0007,0008,0009,000A,000B,000C,000D,0001,0000 | | 5 | Boot0000* BootManagerMenuApp | | 6 | ... | | 7 | Boot000E* openEuler | | 8 | Boot0010* Uefi OpenEuler Grub Boot | | 9 | [rootlocalhost aarch64]# efibootmgr -o 0000E,0010 | | 10 | BootCurrent: 0010 | | 11 | Timeout: 10 seconds | | 12 | BootOrder: 000E,0010 | | 13 | Boot0000* BootManagerMenuApp | | 14 | ... | | 15 | Boot000E* openEuler | | 16 | Boot0010* Uefi OpenEuler Grub Boot | | 17 | [rootlocalhost aarch64]# efibootmgr | | 18 | BootCurrent: 0010 | | 19 | Timeout: 10 seconds | | 20 | BootOrder: 000E,0010 | | 21 | Boot0000* BootManagerMenuApp | | 22 | ... | | 23 | Boot000E* openEuler | | 24 | Boot0010* Uefi OpenEuler Grub Boot |经过上面的操作后启动顺序由原来的0010在前变成了000E在前。下次启动时系统就会从000E对应的操作系统启动。

相关新闻

云克隆原创 | 兔角膜上皮细胞(CEC)原代细胞分离、培养和鉴定Protocol

云克隆原创 | 兔角膜上皮细胞(CEC)原代细胞分离、培养和鉴定Protocol

兔角膜上皮细胞(Primary Rabbit Corneal Epithelial Cells )的分离一、简介:角膜是由角膜上皮层、前弹力层、基质层、后弹力层和内皮层组成,角膜上皮层(Epithelial cell)是由非角化的鳞状上皮构成的&#x…

2026/10/13 4:30:35 阅读更多 →
2026年7月徐州市新房价格深度分析报告

2026年7月徐州市新房价格深度分析报告

一、报告背景与数据说明本报告基于2026年7月徐州市新房市场实际成交案例,结合各区域在售楼盘的真实网签数据、备案价格及成交结构,对当前徐州新房价格水平、区域分化特征及未来走势进行深度分析。报告数据主要来源于徐州市房地产信息网公示的成交备案信息…

2026/10/7 6:36:38 阅读更多 →
2026年7月无锡市新房价格深度分析报告

2026年7月无锡市新房价格深度分析报告

一、报告背景与数据说明本报告基于2026年7月无锡市新房市场实际成交案例,结合各行政区、典型板块的成交价格、成交结构及市场供需变化,对当前无锡新房价格走势进行深度剖析。报告数据来源于公开成交备案信息、典型楼盘实际成交记录及市场调研&#xff0c…

2026/10/12 12:23:02 阅读更多 →

最新新闻

JSON一键转Sketch:yoga布局引擎与skpm插件实践

JSON一键转Sketch:yoga布局引擎与skpm插件实践

简介:json-sketchapp 是一款面向 Sketch 设计师与前端开发者的实验性插件,基于 skpm 工具链构建,主要解决从 JSON 结构化数据自动生成 Sketch 设计稿的问题,适合对数据驱动设计或插件开发感兴趣的进阶用户。插件作为实验项目&…

2026/10/13 4:30:06 阅读更多 →
Hrcad铁路平纵面设计实操:从交点法到数据一致性检查

Hrcad铁路平纵面设计实操:从交点法到数据一致性检查

简介:面向铁路线路设计人员与相关专业学生的Hrcad操作指引,聚焦单线铁路平纵面设计全流程,涵盖地形图处理、数据采集与整理、线路初设、纵断面设计、横断面设计、综合优化及成果输出七个阶段,逐环节说明命令用法、图层设置与参数调…

2026/10/13 4:30:06 阅读更多 →
agent技能层:从零构建可复用可评估的工具调用能力

agent技能层:从零构建可复用可评估的工具调用能力

我接到这个项目标题的时候,心里的第一反应是:终于有人把 agent 的“手和脚”当成正经工程来对待了。过去一年里我做了不少 agent 原型,身边朋友也常问同一个问题:为什么智能助手接了七八个工具之后,还是经常答非所问、…

2026/10/13 4:30:06 阅读更多 →
PyTorch自动求导与Hook机制:从计算图到自定义算子实战解析

PyTorch自动求导与Hook机制:从计算图到自定义算子实战解析

1. 自动求导的核心机制拆解PyTorch这几年能成为深度学习的主流框架,有一个很多人没细想的原因——它的自动求导不是简单的“算梯度”,而是一套完整记录运算过程、按链路回溯的机制。刚入门的时候我也觉得,不就是loss.backward()一行代码嘛&am…

2026/10/13 4:30:06 阅读更多 →
X-Router:轻量级自演进模型路由技术实现Agent成本优化

X-Router:轻量级自演进模型路由技术实现Agent成本优化

1. 项目概述:这不是一个“路由插件”,而是一套动态决策中枢“openJiuwen X-Router:自演进模型路由技术,让 Agent 成本降 50%”——这个标题里藏着三个被多数人忽略的关键信号:openJiuwen是开源基座,X-Route…

2026/10/13 4:30:06 阅读更多 →
MODBUS TCP Server源码解析:从报文解析到现场联调避坑

MODBUS TCP Server源码解析:从报文解析到现场联调避坑

简介:这份MODBUS TCP SERVER源码是一套基于C实现的Modbus TCP服务器端程序,面向工业自动化开发者、嵌入式工程师以及正在学习Modbus协议与TCP/IP网络编程的初学者。源码实现了功能码03(读取输入寄存器/离散输入)与功能码16&#x…

2026/10/13 4:29:06 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →