리눅스 커널 패치

리눅스 커널 패치

나는 Peter Jay Salzman의 "Linux Kernel Module 프로그래밍"을 읽고 있는데 그 책에서 그들은 이렇게 말합니다.

sys_call_table은 더 이상 2.6.x 커널로 내보내지지 않습니다. 이 위험한 모듈을 정말로 사용해보고 싶다면 제공된 패치를 현재 커널에 적용하고 다시 컴파일해야 합니다.

"패치"가 무엇을 의미하는지, 그리고 커널을 다시 컴파일한다는 것이 무엇을 의미하는지 설명해 줄 수 있는 사람이 있습니까?

답변1

"패치"는 다른 파일의 변경 사항을 설명하는 파일입니다(파일은 소스 코드를 포함하여 무엇이든 될 수 있음). 패치를 만들고 사용하는 가장 쉬운 방법 중 하나는 diff및 를 사용하는 것입니다 patch.

다음과 같은 파일에 간단한 hello world 프로그램이 있다고 가정합니다 hello1.c.

#include <stdio.h>

int main(void)
{
  printf("Hello world!\n");
  return 0;
}

이제 문자열을 "Hello world!\n"다음으로 변경 "Hi world!\n"하고 새 프로그램을 호출해 보겠습니다 hello2.c.

#include <stdio.h>

int main(void)
{
  printf("Hi world!\n");
  return 0;
}

이제 터미널에서 다음 명령을 실행하십시오.

diff -u hello1.c hello2.c > hello-patch

출력 패치 파일의 내용은 cat hello-patch다음과 같습니다.

--- hello1.c    2019-03-18 13:29:35.897546888 -0500
+++ hello2.c    2019-03-18 13:30:02.866456737 -0500
@@ -2,6 +2,6 @@

 int main(void)
 {
-  printf("Hello world!\n");
+  printf("Hi world!\n");
   return 0;
 }

이 문서에서는 hello1.c와 사이의 변경 사항을 보여줍니다 hello2.c.

hello1.c이제 소스 코드를 친구들 에게 배포했다고 상상해 보세요 . 이 hello-patch패치 파일은 친구가 patch 명령을 사용하여 변경할 수 있습니다 hello1.c. 패치와 동일한 디렉터리에 있는 hello2.c경우 이 명령은 다음과 같습니다.hello1.c

patch < hello-patch

그러면 "패치를 적용 hello1.c"하게 됩니다. 완료되면 hello1.c업데이트가 이루어지며 이제 hello2.c.

그래서 패치는 그냥파일(또는 파일 세트)에 대한 변경 목록, 이러한 패치를 사용하면 누군가가 패치를 적용하여 파일을 선택적으로 업데이트할 수 있습니다.

diffpatch작은 패치에는 명령이 잘 작동합니다. 크고 복잡한 작업에는 산업용 도구가 필요합니다. Linux 사용법 git. 도움말 git시스템이 매우 좋습니다. 예를 들어 git help -a모든 git도움말 항목을 나열하고 git help format-patch"이메일 제출을 위한 패치 준비" 방법을 자세히 설명합니다.

Linux 개발은 이메일을 통해 이루어지며 다음 주소에서 Linux 개발자가 보낸 이메일 아카이브를 볼 수 있습니다.lmll.org, 그리고kernelnewbies.orgLinux 커널 개발을 배우기 위한 좋은 출발점입니다. 귀하가 인용한 책은 2009년에 출판된 것으로 보이므로 여기에 포함된 기술적인 세부 사항 중 일부는 최신 내용이 아닐 수 있습니다.

여기서 "재컴파일"이란 단순히 소스에 패치를 적용한 후 다시 컴파일하는 것을 의미합니다. 이는 gcc hello1.c -o hello소스 파일을 실행 가능한 코드로 컴파일하는 것과 같은 작업을 실행할 때와 같습니다 .이 가이드에서는 Linux 구축에 대해 설명합니다..이 문서는 데비안 배포판에서 사용할 수 있는 빌드 프로세스와 몇 가지 단계를 설명합니다..

Linux 개발자 Greg Kroah-Hartman의 2016년 강연에서는 Linux 개발 개요를 제공합니다.

답변2

"커널 재컴파일"과 "패치 적용"이 무엇을 의미하는지 모른다면, 특정 리눅스 커널 책에서 지식을 얻으려고 시간을 낭비하기보다는 보다 기본적인 주제를 다루는 다른 Linux/Unix 관련 책을 읽어야 합니다. Peter Jay Salzman의 "Linux 커널 모듈 프로그래밍"과 같은 개발.

Unix 계열 운영 체제를 작동하는 방법에 대한 지식을 얻기 위한 여정을 시작하려면 다음 책(이 게시물이 광고처럼 보이면 죄송합니다)을 읽어 보시기 바랍니다.

  • UNIX 및 Linux 시스템 관리 핸드북, 제4판저자: Evi Nemeth(저자), Garth Snyder(저자), Trent R. Hein(저자), Ben Whaley(저자)
  • Linux 작동 방식: 모든 고급 사용자가 알아야 할 사항브라이언 워드
  • 대성당과 아고라스: Linux와 오픈 소스에 대한 우연한 혁명가의 생각저자: 에릭 S. 레이먼드

관련 정보