CN112631897A - 一种快速调试linux内核的方法 - Google Patents

一种快速调试linux内核的方法 Download PDF

Info

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
Application number
CN202011419093.3A
Other languages
English (en)
Other versions
CN112631897B (zh
Inventor
郭皓
吴春光
刘步权
齐璇
战茅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kirin Software Co Ltd
Original Assignee
Kirin Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kirin Software Co Ltd filed Critical Kirin Software Co Ltd
Priority to CN202011419093.3A priority Critical patent/CN112631897B/zh
Publication of CN112631897A publication Critical patent/CN112631897A/zh
Application granted granted Critical
Publication of CN112631897B publication Critical patent/CN112631897B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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内核内部开发的,即功能实现的代码集成在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包。
CN202011419093.3A 2020-12-07 2020-12-07 一种快速调试linux内核的方法 Active CN112631897B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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