Linux 2006/09/08 14:10
블로그 > Human Packet http://blog.naver.com/jabusunin/20012727557 | ||||||||||
많은 개발자들은 자신들이 개발하는 프로그램 소스의 버전을 유지하기 위해, 원소스 외에 패치파일을 준비한다. 일반적으로 패치파일은 diff를 사용해서 작성하고, 해당 패치파일을 적용할 때는 patch 명령어를 사용해 패치적용을 완료한다. 필자는 처음에 커널 공부를 할 때, 패치파일 사용으로 어려움을 겪은적이 있다. 실제 버전업된 커널 소스 파일 전체를 받는게 나은지, 아님, 하나의 커널 소스 파일을 받고, 패치 파일만 받는게 낳은지 잠시나마 고민했던 적도 있다. 따라서, diff 와 patch 파일은 커널에만 관련있는 내용은 아니나, 커널 패치와 유용히 사용될 수 있는 명령어이므로, 아래에서 살펴보고자 합니다. 기본 개념 및 사용법은 아래의 설명을 따라하기 식으로 해보면, 이해할 수 있을겁니다. 1. 두개의 빈 파일을 생성합니다.
2. aaa에 아래의 라인을 추가합니다. (vi 사용법은 애플리케이션 소개란을 참고하세요. ^^)
3. aaa 를 bbb로 복사하고, 새로운 라인을 추가합니다.
4. aaa와 bbb의 변경 부분을 패치파일로 만듭니다. 그리고, 변경되는 부분이 패치파일에 어떻게 저장되나 확인합니다.
5. bbb를 지우고, 패치파일의 내용을 aaa에 적용시킵니다.
6. aaa에 패치파일의 내용이 적용되었나 확인합니다.
위의 예제에서는 diff와 patch 명령어의 사용과 개념을 이해하기 위해 간략히 설명했지만, 실제 소스의 크기가 상당한 경우, 원소스(aaa)를 가지고, 패치파일만 가지고 작업합니다. 그럼, diff와 patch의 기본 개념 및 사용법을 이해했으니, 커널과 관련되어 알아보도록 하지요.. 일반적으로 커널에 자신만의 변경 내용을 담고자 하고, 그 패치를 제공하고자 하면, 아래의 방법 대로 하시면 됩니다. 1. 바닐라 커널 소스를 준비한다. (kernel.org 에서 다운로드 2. 커널 소스의 복사본을 준비하고, 해당 소스에 변경을 가한다.
3. 소스 수정이 끝나면, 패치파일을 작성한다.
gzip으로 압축하면, mykernel.patch는 mykernel.patch.gz으로 파일명이 변경됩니다. 4. 원소스에 패치 적용을 한다.
커널과 관련해, diff/patch 명령어를 알아보았습니다. 위의 명령어 설명은 기본적인 내용만 다루었습니다. 실제 리눅스에서 자주 언급되는 커널이 어떠한 것이 있는지, 자세한 명령어 활용은 어떻게 되는지는 다음에 다시 글을 올리겠습니다. |
이 글에는 트랙백을 보낼 수 없습니다
0