[질문]리눅스 커널 패치 방법에 대해서,,,,
안녕하세요,
커널 패치 방법을 확실히 몰라서 질문드립니다.
제 리눅스 박스 /usr/src 디렉터리에는 아래와 같은 서브 디렉터리가 존재합니다.
linux-2.4.32 와 linux-2.6.22.7
여기서 linux-2.6.22.7 버젼을 그 다음 최선버젼 2.6.22.8로 패치 하려고 합니다
그래서 http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.8.gz 파일을 다운받았습니다.
그런데 이 patch-2.6.22.8.gz 파일을 어떻게 이용해서 패치를 하는지 잘 모르겠습니다.
첫째: 이 patch-2.6.22.8.gz 파일을 어느 디렉터리에 가져다 놓아야 되나요? /usr/src 디렉터리에 가져다 놓아야하나요?
둘째: 패치 방법을 확실히 모르겠습니다.
예를들어서, 이 patch-2.6.22.8.gz 파일이 /usr/src 디렉터리에 있다고 가정했을 때. /usr/src/ 디렉터리에서
bzip2 -cd patch-2.6.22.8.gz |patch -p0 라고 명령어를 실행하는게 맞는지요?
세번째: patch -p0 이 부분에서 -p0 -p1 -p2... 이런식으로 p다음에 숫자가 나오는것을 볼수있는데요,
검색해보니. -p0는 디폴트값이고 -p1은 한단계 낮은 수준,,, -p2는 두단계낮은 수준,,,이런식으로 패치를 적용한다고 하던데요,, 정확하게 무엇을 말하는지 모르겠습니다,,
답변 부탁드리겠습니다 (_ _)
수고하세요
세번째 질문의 답을
세번째 질문의 답을 아시면 죄다 풀리실 것 같습니다.
diff 파일을 들여다보시면 수정된파일의 path 가 명시되어 있습니다.
patch 의 -p 옵션은 무시할 directory depth 를 의미합니다.
수정된 파일의 path 가 a/b/c/d/e/f.txt 이라 가정하면,
-p0 는 a/b/c/d/e/f.txt 를 찾아서 패치하려고 시도하고
-p1 은 b/c/d/e/f.txt 를
-p2 는 c/d/e/f.txt 를
-p3 는 d/e/f.txt 를
-p4 는 e/f.txt 를
-p5 는 f.txt 를 찾아서 패치하려고 시도합니다.
diff 파일이 어디에 있느냐는 중요하지 않습니다.
현재 위치하고 있는 곳(current directory)이 어디냐가 중요합니다.
OTL
아직도 의문이 가는것이 있는데요,,
답변 감사합니다...
의문이 가는것이 있는데요
linux-2.6.22.7 버젼에서... 그 다음 버젼 2.6.22.8을 사용하기 위해서
patch-2.6.22.8.bz2 파일 받아서 패치하는게 맞는지요?
그리고 patch-2.6.22.8.bz2 파일을 받아서 /usr/src/linu-2.6.22.7 디렉터리에서
bzip2 -cd patch-2.6.22.8.gz |patch -p1 으로 패치를 시도하니,,,,
해당되는 패치파일 하나하나 마다 패치 파일을 찾았고 그파일에대해서 패치 여부 확인을 하는 메시지가 나오는데
전부 "Y"를 선택하여 자동으로 패치 확인 여부를 묻지 않고 패치할 방법은 없을까요?
리눅스
리눅스 커널이라면
gunzip patch-XXX
cd linux-X.X.XX
patch -Np1-i ../patch-XXX
식이죠.
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
댓글 달기