klp-build: 리눅스 커널 라이브패치 모듈 생성을 위한 새로운 방법 제안

전문: https://www.phoronix.com/news/Linux-Livepatch-klp-build

원저자: Michael Larabel | 작성일: 2024-09-03 12:41
사이트 내 게시일: 2024-09-03 12:50
이 기사는 klp-build라는 리눅스 커널의 라이브패치 모듈 생성을 위한 새로운 방법을 소개합니다. klp-build의 개발은 함수 변경 감지를 위한 대부분의 작업을 이미 수행하고 있는 objtool의 기존 기능에서 영감을 받았습니다. 10년 이상 외부 프로젝트로 운영되어 온 kpatch-build와 달리, klp-build는 더 깔끔한 구현을 제공하며 라이브패치 모듈 생성을 위한 '공식' 방법이 되는 것을 목표로 하고 있습니다.

klp-build는 소스 패치에서 라이브패치 모듈을 생성할 수 있도록 하는 새로운 'objtool klp' 하위 명령어를 포함하는 스크립트를 활용합니다. 이 방법은 패치를 적용하기 전과 후에 커널을 빌드하고, 이진 차이를 수행하며, 수정된 함수를 새로운 객체 파일로 추출하여 라이브패치 모듈에 링크하는 과정을 포함합니다. klp-build의 설계는 kpatch-build에 비해 약 3,000줄이 적은 코드로 훨씬 간단하며, 기존 objtool 기능을 활용하여 변경된 함수를 쉽게 감지할 수 있도록 체크섬을 생성합니다.

klp-build가 kpatch-build에 비해 가지는 주요 장점으로는 간접 분기 추적(Indirect Branch Tracking, IBT) 및 링크 타임 최적화(Link Time Optimization, LTO)와 같은 지연 링크 기능과의 호환성, 그리고 adjust-patch-lines 스크립트를 사용하여 __LINE__ 오프셋 변경과 관련된 문제를 해결하는 점이 있습니다. 인트리(in-tree) 솔루션인 klp-build는 유지 관리가 더 용이하고 잠재적인 유지 관리자의 범위를 넓혀, 이전 방법과 관련된 전반적인 복잡성과 불필요한 요소를 줄일 것을 약속합니다.

* 이 글은 phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은 이곳에서 확인하실 수 있습니다.
카테고리: Software
태그: Linux (780) Open Source (584) software development (222) kernel (134) Livepatch (1) Klp-build (1) Objtool (1) Kpatch-build (1)

댓글

댓글을 쓰기 위해서는 로그인을 해 주세요.