CN112631897A - 一种快速调试linux内核的方法 - Google Patents
一种快速调试linux内核的方法 Download PDFInfo
- Publication number
- CN112631897A CN112631897A CN202011419093.3A CN202011419093A CN112631897A CN 112631897 A CN112631897 A CN 112631897A CN 202011419093 A CN202011419093 A CN 202011419093A CN 112631897 A CN112631897 A CN 112631897A
- Authority
- CN
- China
- Prior art keywords
- kernel
- packet
- self
- new
- rpm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种快速调试linux内核的方法,包括如下步骤:S1、制作官方内核源码tar包如下步骤:S2、解压缩内核tar包,以binrpm‑pkg方式编译内核;S3、编写自执行文件的自执行脚本;S4、制作自执行文件;S5、配置SSH免密登录;S6、部署自执行文件并执行;S7、远程修改测试设备的默认启动项;S8、远程重启测试设备;S9、生成内核补丁;S10、更新内核源码RPM包;S11、生成新内核RPM包。本方法可以保证在CentOS系统中使用RPM软件包的方式编译内核,同时大幅度缩减编译、调试内核花费的时间。
Description
技术领域
本专利申请属于内核调试技术领域,更具体地说,是涉及一种快速调试linux内核的方法。
背景技术
随着嵌入式设备越来越普遍,很多功能都是在Linux内核内部开发的,即功能实现的代码集成在Linux内核内部,没有作为应用程序在用户态实现,这样就无法方便的使用GDB等调试工具去调试定位应用程序运行状态。虽然有比如KGDB和KDB等工具实现内核调试功能,但用起来需要修改内核代码,调试需要的环境也依赖较多。比如用户想查看内核某处代码的值是否正确;遍历某个链表,看看当前链表有哪些值等这些简单的调试需求,用这些工具就显得大材小用了。
内核调试步骤分为三步:第一,编译;第二,部署;第三,验证。且常见的服务器操作系统CentOS中,软件和文件都是以RPM包的方式进行管理的,内核也不例外,所以内核在调试时也最好遵循这一理念。但使用RPM包方式进行内核调试会对内核调试人员造成更大的阻碍。
目前有两种常用的内核调试方法。
第一种,使用官方提供的内核RPM源码包,预编译后生成新的git根,修改源码后使用git命令产生新的patch,修改spec文件以应用新的patch,编译成二进制内核RPM包,最后再部署、重启后验证。这样会浪费大量的时间,其中编译二进制内核RPM包这一项,若不做特殊处理,需要花费将近4小时,使用特殊处理,至少也需要花费20-40分钟。
第二种,使用官方提供的内核RPM源码包,rpmbuild-bp后,把BUILD文件夹内的工程复制出来,使用SOURCES文件夹内的config文件编译内核,手动复制vmlinuz到/boot下,手动生成initramfs,手动修改grub启动项。这种方法操作繁琐,而且容易出错。
以上两种方法均会浪费大量的时间。
发明内容
本发明需要解决的技术问题是提供一种快速调试linux内核的方法,可以保证在CentOS系统中使用RPM软件包的方式编译内核,同时大幅度缩减编译、调试内核花费的时间,有效节省研发时间。
为了解决上述问题,本发明所采用的技术方案是:
一种快速调试linux内核的方法,基于CentOS操作系统,在编译源码时,使用官方提供的内核RPM源码包,配合Linux安装包的makeself生成工具,把新编译的内核RPM源码包制作成可自动执行文件,并为此可自动执行文件写好自执行脚本,再使用免密SCP远程拷贝到测试环境后,重启测试环境并选择更新后的内核,对其进行正确性验证。
SCP是Secure Copy的简称,是用来与远程主机之间进行数据传输的协议,相当于经过加密的Copy命令。SCP数据传输使用ssh协议,并且和ssh使用相同的认证方式,提供相同的安全保证。根据实际需要,scp进行验证时会要求输入密码或口令,此处研发人员进行免密码操作。
本发明技术方案的进一步改进在于:包括如下步骤:
S1、制作官方内核源码tar包;
S2、解压缩内核tar包,以binrpm-pkg方式编译内核;
S3、编写自执行文件的自执行脚本;
S4、制作自执行文件;
S5、配置SSH免密登录;
S6、部署自执行文件并执行;
S7、远程修改测试设备的默认启动项;
S8、远程重启测试设备;
S9、生成内核补丁;
S10、更新内核源码RPM包;
S11、生成新内核RPM包。
本发明技术方案的进一步改进在于:步骤S1中,具体过程为:
S101、事先对内核源码进行预编译处理;
S102、复制源码包中的config文件到工程目录树下;
S103、使用tar命令把工程目录树做成tar包。
本发明技术方案的进一步改进在于:步骤S3中,执行脚本的执行步骤为:
S31、安装内核RPM包;
S32、使用grub2-mkconfig命令重新生成新的grub启动引导文件;
S32、使用new-kernel-pkg命令生成与S2步骤生成的新内核相对应的initramfs。
本发明技术方案的进一步改进在于:步骤S4中,使用makeself软件,指定步骤S3中生成的自执行脚本,配合内核源码包,制作出自执行文件NEW_KERNEL。
本发明技术方案的进一步改进在于:步骤S5中的SSH免密登录过程为:
制作root用户的RSA证书/root/.ssh/id_rsa.pub,把RSA证书下的/root/.ssh/id_rsa.pub和/root/.ssh/authorized_keys这两个文件复制到测试机的/root/.ssh/目录下。
本发明技术方案的进一步改进在于:步骤S9中,在验证新编译内核无问题后,根据当前工程和tar包内的工程使用diff制作内核补丁kernel-new-func.patch。
本发明技术方案的进一步改进在于:步骤S10是指,把内核补丁kernel-new-func.patch放到rpmbuild/SOURCES内,修改kernel.spec,增加kernel-new-func.patch的引用。
本发明技术方案的进一步改进在于:步骤S11中,使用ba方式编译内核,产生新的内核RPM包。
由于采用了上述技术方案,本发明取得的有益效果是:
本发明基于CentOS操作系统,使用make binrpm-pkg的方式编译内核,使用makeself工具生成自执行文件,使用免密ssh(也就是免密码登陆)和免密scp的方式部署、更新、测试内核。
本发明适用于虚拟机和实体机,可以大量节约内核开发人员的编译、部署、验证时间。第一次编译、部署、验证需要大约10分钟,第二次以后每次最短只需要1-2分钟,即可完成,用时极短。使用ssh免密登录,可以在编译环境远程操作测试环境,简化调试步骤,缩短调试时间。
附图说明
图1为本发明实施例的流程图。
具体实施方式
下面结合实施例对本发明做进一步详细说明。
本发明公开了一种快速调试linux内核的方法,核心思想是,基于CentOS操作系统,在编译源码时,使用官方提供的内核RPM源码包,配合Linux安装包的makeself生成工具,把新编译的内核RPM源码包制作成可自动执行文件,并为此可自动执行文件写好自执行脚本,再使用免密SCP远程拷贝到测试环境后,部署、更新、测试内核并重启。
该方法的具体流程参见图1,包括如下步骤:
S1、制作官方内核源码tar包;
S101、事先对内核进行预编译,代码如下:
wget
http://vault.centos.org/7.6.1810/os/Source/SPackages/kernel-3.10.0-957.el7.src.rpm
rpmbuild-bp kernel.spec
S102、复制源码包中的config文件到工程目录树下;
S103、使用tar命令把工程目录树做成tar包。
S2、解压缩内核tar包,使用INSTALL_MOD_STRIP=1参数以binrpm-pkg方式编译内核,代码为:
tar xf linux-3.10.0-957.el7.centos.x86_64.tar.gz
cd linux-3.10.0-957.el7.centos.x86_64
make binrpm-pkg INSTALL_MOD_STRIP=1-s-j48
S3、编写自执行文件的自执行脚本,执行脚本的功能执行步骤为:
S31、安装内核RPM包;
S32、使用grub2-mkconfig命令重新生成新的grub启动引导文件;
S32、使用new-kernel-pkg命令生成与步骤S2中的新内核相对应的initramfs。
S4、制作自执行文件:使用makeself软件,指定步骤S3中生成的自执行脚本,配合内核源码包,制作出自执行文件NEW_KERNEL。
S5、配置SSH免密登录:制作root用户的RSA证书/root/.ssh/id_rsa.pub,把RSA证书下的/root/.ssh/id_rsa.pub和/root/.ssh/authorized_keys这两个文件复制到测试机的/root/.ssh/目录下,也就是根目录下。
S6、部署自执行文件并执行,代码为:
scp NEW_KERNEL root@192.168.100.1:/NEW_KERNEL。
S7、远程修改测试设备的默认启动项,代码为:
ssh-t root@192.168.100.1‘chmod+x NEW_KERNEL&&/NEW_KERNEL&&grub2-set-default 3.10.0’。
S8、远程重启测试设备,代码为:
ssh-t root@192.168.100.1‘reboot’。
S9、生成内核补丁,在验证新编译内核无问题后,根据当前工程和tar包内的工程使用diff制作内核补丁kernel-new-func.patch。
S10、更新内核源码RPM包,把内核补丁kernel-new-func.patch放到rpmbuild/SOURCES内,修改kernel.spec,增加kernel-new-func.patch的引用。
S11、生成新内核RPM包,使用ba方式(rpmbuild-ba kernel.spec)编译内核,产生新的内核RPM包。
本发明基于CentOS操作系统适用于虚拟机和实体机,可以大量节约内核开发人员的编译、部署、验证时间。第一次编译、部署、验证需要大约10分钟,第二次及以后每次最短只需要1-2分钟,再长也不超过10分钟,即可完成。使用ssh免密登录,可以在编译环境远程操作测试环境,简化调试步骤,缩短研发周期。
Claims (9)
1.一种快速调试linux内核的方法,其特征在于,基于CentOS操作系统,在编译源码时,使用官方提供的内核RPM源码包,配合Linux安装包的makeself生成工具,把新编译的内核RPM源码包制作成可自动执行文件,并为此可自动执行文件写好自执行脚本,再使用免密SCP远程拷贝到测试环境后,重启测试环境并选择更新后的内核,对其进行正确性验证。
2.根据权利要求1所述的一种快速调试linux内核的方法,其特征在于,包括如下步骤:
S1、制作官方内核源码tar包;
S2、解压缩内核tar包,以binrpm-pkg方式编译内核;
S3、编写自执行文件的自执行脚本;
S4、制作自执行文件;
S5、配置SSH免密登录;
S6、部署自执行文件并执行;
S7、远程修改测试设备的默认启动项;
S8、远程重启测试设备;
S9、生成内核补丁;
S10、更新内核源码RPM包;
S11、生成新内核RPM包。
3.根据权利要求2所述的一种快速调试linux内核的方法,其特征在于,步骤S1中,具体过程为:
S101、事先对内核源码进行预编译处理;
S102、复制源码包中的config文件到工程目录树下;
S103、使用tar命令把工程目录树做成tar包。
4.根据权利要求3所述的一种快速调试linux内核的方法,其特征在于,步骤S3中,执行脚本的执行步骤为:
S31、安装内核RPM包;
S32、使用grub2-mkconfig命令重新生成新的grub启动引导文件;
S32、使用new-kernel-pkg命令生成与步骤S2中的新内核对应的initramfs。
5.根据权利要求4所述的一种快速调试linux内核的方法,其特征在于,步骤S4中,使用makeself 软件,指定步骤S3中生成的自执行脚本,配合内核源码包,制作出自执行文件NEW_KERNEL。
6.根据权利要求5所述的一种快速调试linux内核的方法,其特征在于,步骤S5中的SSH免密登录过程为:
制作root用户的RSA证书/root/.ssh/id_rsa.pub,把RSA证书下的/root/.ssh/id_rsa.pub和/root/.ssh/authorized_keys这两个文件复制到测试机的/root/.ssh/目录下。
7.根据权利要求6所述的一种快速调试linux内核的方法,其特征在于,步骤S9中,在验证新编译内核无问题后,根据当前工程和tar包内的工程使用diff制作内核补丁kernel-new-func.patch。
8.根据权利要求7所述的一种快速调试linux内核的方法,其特征在于,步骤S10是指,把内核补丁kernel-new-func.patch放到rpmbuild/SOURCES内,修改kernel.spec,增加kernel-new-func.patch的引用。
9.根据权利要求1~8任一项所述的一种快速调试linux内核的方法,其特征在于,步骤S11中,使用ba方式编译内核,产生新的内核RPM包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011419093.3A CN112631897B (zh) | 2020-12-07 | 2020-12-07 | 一种快速调试linux内核的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011419093.3A CN112631897B (zh) | 2020-12-07 | 2020-12-07 | 一种快速调试linux内核的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112631897A true CN112631897A (zh) | 2021-04-09 |
CN112631897B CN112631897B (zh) | 2023-08-08 |
Family
ID=75308892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011419093.3A Active CN112631897B (zh) | 2020-12-07 | 2020-12-07 | 一种快速调试linux内核的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112631897B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327487A (zh) * | 2021-12-30 | 2022-04-12 | 广东中兴新支点技术有限公司 | 一种源码包自动编译方法、系统、装置及存储介质 |
CN114676069A (zh) * | 2022-05-30 | 2022-06-28 | 深圳市科力锐科技有限公司 | 内核文件测试方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040244008A1 (en) * | 2003-05-29 | 2004-12-02 | Myung-Jae Lee | Method of implementing Linux-based embedded system for mobile communication |
CN101281488A (zh) * | 2007-04-06 | 2008-10-08 | 上海宇梦通信科技有限公司 | Linux操作系统的内核调试方法 |
CN104317693A (zh) * | 2014-10-30 | 2015-01-28 | 浪潮电子信息产业股份有限公司 | 一种自动检测硬盘性能波动的方法 |
CN106294147A (zh) * | 2016-08-09 | 2017-01-04 | 上海盈方微电子有限公司 | 一种linux操作系统的调试方法 |
CN106293756A (zh) * | 2016-08-16 | 2017-01-04 | 汉柏科技有限公司 | 一种用于快速更换的自定义Linux内核系统 |
CN107153590A (zh) * | 2017-05-04 | 2017-09-12 | 郑州云海信息技术有限公司 | 一种识别乱序情况下自动测试磁盘性能的方法 |
CN108804313A (zh) * | 2018-05-22 | 2018-11-13 | 联想(北京)有限公司 | 一种远程调试程序的方法、装置和服务器 |
US20190340108A1 (en) * | 2018-05-01 | 2019-11-07 | Hitachi, Ltd. | System and method for microservice validator |
-
2020
- 2020-12-07 CN CN202011419093.3A patent/CN112631897B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040244008A1 (en) * | 2003-05-29 | 2004-12-02 | Myung-Jae Lee | Method of implementing Linux-based embedded system for mobile communication |
CN101281488A (zh) * | 2007-04-06 | 2008-10-08 | 上海宇梦通信科技有限公司 | Linux操作系统的内核调试方法 |
CN104317693A (zh) * | 2014-10-30 | 2015-01-28 | 浪潮电子信息产业股份有限公司 | 一种自动检测硬盘性能波动的方法 |
CN106294147A (zh) * | 2016-08-09 | 2017-01-04 | 上海盈方微电子有限公司 | 一种linux操作系统的调试方法 |
CN106293756A (zh) * | 2016-08-16 | 2017-01-04 | 汉柏科技有限公司 | 一种用于快速更换的自定义Linux内核系统 |
CN107153590A (zh) * | 2017-05-04 | 2017-09-12 | 郑州云海信息技术有限公司 | 一种识别乱序情况下自动测试磁盘性能的方法 |
US20190340108A1 (en) * | 2018-05-01 | 2019-11-07 | Hitachi, Ltd. | System and method for microservice validator |
CN108804313A (zh) * | 2018-05-22 | 2018-11-13 | 联想(北京)有限公司 | 一种远程调试程序的方法、装置和服务器 |
Non-Patent Citations (2)
Title |
---|
DIDIER NADEAU,ET AL.: "Efficient large-scale heterogeneous debugging using dynamic tracing", 《JOURNAL OF SYSTEMS ARCHITECTURE》, vol. 98, pages 346 - 360, XP085764944, DOI: 10.1016/j.sysarc.2019.02.016 * |
赵俊涛等: "嵌入式内核远程调试系统的研究与应用", 《计算机应用与软件》, vol. 32, no. 8, pages 211 - 214 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327487A (zh) * | 2021-12-30 | 2022-04-12 | 广东中兴新支点技术有限公司 | 一种源码包自动编译方法、系统、装置及存储介质 |
CN114676069A (zh) * | 2022-05-30 | 2022-06-28 | 深圳市科力锐科技有限公司 | 内核文件测试方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112631897B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fischer et al. | Engage: a deployment management system | |
US7802243B1 (en) | System and method for server customization | |
Weiss et al. | Tortoise: Interactive system configuration repair | |
US9081747B1 (en) | Computer program deployment to one or more target devices | |
US7827548B1 (en) | Environment-neutral application build | |
Smith | Docker Orchestration | |
CN112631897B (zh) | 一种快速调试linux内核的方法 | |
CN106325953A (zh) | 一种Weblogic集群一键自动部署方法 | |
CN110286921B (zh) | 一种自动化安装分布式大数据平台cdh方法 | |
CN102707971A (zh) | 一种在虚拟机中自动获取和安装软件的方法 | |
US7627866B2 (en) | Systems and methods for dynamic application patching | |
Shi et al. | Industry practice of coverage-guided enterprise linux kernel fuzzing | |
Fan et al. | OPS: Offline patching scheme for the images management in a secure cloud environment | |
CN113760339A (zh) | 漏洞修复方法和装置 | |
ApS | MOSEK Licensing Guide | |
CN111158773A (zh) | 一种ks引导自动化批量装机的方法及系统 | |
CN103077063B (zh) | 微码编译方法及装置 | |
Tyndall | Building an effective software deployment process | |
CN114253590A (zh) | 嵌入式软件的加密式差分升级方法、装置、设备及介质 | |
CN111966364A (zh) | 一种基于docker的Weblogic自动化环境搭建方法及系统 | |
Chacon et al. | Pro Git | |
TWI416410B (zh) | 可執行文件版本更新系統及方法 | |
WO2020258175A1 (zh) | 一种自动化安装分布式大数据平台cdh方法 | |
CN118797751A (zh) | 密钥管理方法、计算机设备、存储介质及程序产品 | |
CN106603267A (zh) | 一种MySQL和Weblogic组合一键自动部署方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |