"패치할 파일"을 묻는 질문에 패치를 적용할 때 어떻게 해야 합니까?

"패치할 파일"을 묻는 질문에 패치를 적용할 때 어떻게 해야 합니까?

시스템 정지 문제가 있었는데 이것을 발견했습니다논의하다github에서 그들 중 한 명이 5개의 패치를 추가할 것을 제안했습니다.

여기에 이미지 설명을 입력하세요.

내가 입력할 때:

patch p1 < 0001-PM-autocomplet.patch

질문을 받았는데 File to patch무엇을 채워야 할지 몰랐습니다. 이 패치를 어떻게 적용하고 적용합니까? 여기에 이미지 설명을 입력하세요.

답변1

이 형식의 패치를 적용하려면:

diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h
index 0f65d36..ff59753 100644
--- a/include/linux/pm_qos.h

patch -p1, 여러 조건이 충족되어야 합니다.

  1. 커널 소스 트리의 최상위 디렉터리에 있어야 합니다. 이 -p1옵션은 파일 이름에서 경로 부분을 제거하여 로 a/include/linux/pm_qos.h처리됩니다 include/linux/pm_qos.h. 이는 현재 작업 디렉터리에서 확인되어야 하는 상대 경로입니다.

  2. 이 파일은 include/linux/pm_qos.h패치하려는 커널 버전에 있어야 합니다.

1과 2가 충족되지 않으면 patch적용할 파일을 찾을 수 없으며 대화형으로 경로명을 묻는 메시지가 표시됩니다.

물론이죠:

  1. 파일 include/linux/pm_qos.h은 패치가 생성된 파일과 "충분히 유사"해야 합니다. 그렇지 않으면 패치가 적용되지 않습니다.

패치에서 언급된 다른 모든 파일에도 동일한 설명이 각각 적용됩니다.

패치가 생성된 버전과 다른 커널 버전을 패치하려고 하면 "고착"될 수 있습니다. 이를 위해서는 커널 개발에 대한 어느 정도의 이해가 필요합니다(적용하는 데 필요한 조정이 얼마나 복잡한지에 따라 다름). 패치는)입니다.

때때로 우리는 커널 파일의 이름이 방금 변경된 것을 발견합니다. 패치에 언급된 파일의 이름이 새 이름으로 변경되면 패치가 상당히 깔끔하게 적용됩니다. 반면 최악의 경우에는 패치가 무엇을 하는지 실제로 이해한 다음(아마도 패치가 만들어진 원래 커널을 살펴봄으로써) 대상 커널에서 처음부터 동일한 논리를 구현해야 합니다. "중간 난이도"에서는 변수 이름, 함수 이름, 이름이 바뀌는 구조 멤버 이름과 같은 문제만 처리하면 됩니다. 패치가 새 이름만 따르는 경우 패치가 적용됩니다.

관련 정보