강좌 & 팁
안녕하세요 판다 이우영 입니다.
오늘은 저번 시간에 이어서 path audfud에 대해서 알아 보도록 하겠습니다.
1. 복습!!
먼전 저번 시간에 했던 diff의 사용법에 대해서 복습을 하도록 하겠습니다.
우선 중요한것은 diff 사용하는 방법이겠죠?
diff -urN [원본파일이름] [변경된 파일이름] 를 입력하시면
두파일의 차이점이 화면에 출력 됩니다.
EX)
diff -urN [원본파일이름] [변경된 파일이름] > [패치파일이름]
EX)
2. patch 명령어
저번 시간에는 테스트를 파일 하나를 가지고 했습니다.
하지만 diff는 포더에 있는 모든파일에 적욕이 가능합니다.
자 그럼 생각해 봅시다
2.6.29 커널에서 2.6.30 커널로 버전업을 할려고 합니다.
그럼 두 커널의 차이점이 있겟죠?
자 이 차이점을 diff를 해둔것이 바로 패치 파일입니다.
파일의 확장자를 patch로 해두어야 에디터로 보실 때 다음과 같이 칼라 풀하게 나옵니다.
이 patch 파일을 가지고 패치를 진행해야 합니다.
그럼 간단하게 테스트를 통해서 사용법을 익혀 보겠습니다.
3. 간단한 테스트
오늘은 우선 aa, bb 폴더를 만들고 전에 만든 a,b(a로 이름을 바꿉시다) 파일을 넣어 두겠습니다.
그럼 폴더를 diff 해보겠습니다.
diff -urN aa bb > aa.patch
패치 파일이 준비 되었으니 그럼 패치를 해볼까요?
patch -p1 < test.patch
그럼 패치가 됬는지 확인해 볼까요?
음 변하지 않았내요..
왜그럴까요?
이번에는 patch -p0 < test.patch 이걸로 해봅시다.
변했습니다!!
자 왜 이렇게 돌아서 테스트를 한이유가 있습니다.
바로 -p 옵션을 설명하기 위해서 입니다.
p다음 숫자는 패치를 어디서 부터 적용할것인가? 입니다.
예를 들어 폴더가 다음과 같이 구성 되어 있습니다.
linux/arch/arm
그럼 처음에 한것 처럼 -p1을 했을경우 아까와 같이 아무것도 변하지 않았을까요?
아닙니다. arch이후의 파일들은 모두 패치가 되어있습니다.
그럼 arm이후의 파일들만 하기위해서는 어떻게 해야 할까요?
-p2 옵션을 주시면 됩니다.
그러명 아까 -p1일 때 패치가 않된 이유를 아시겠죠?
마지막으로 하나만 더알려 드리겠습니다.
자 지금이야 간단하지만 커널같은 경우
덩치가 산만합니다. 여기에 바로 패치를 적용하기에는 두려움이 생기겠죠?
그래서 커널에 패치 테스트만을 해보는 옵션이 있습니다.
바로 --dry-run 입니다.
이 옵션을 주고 하시면 패치가 실패하는지 성공하는지 미리 알아볼 수가 있습니다.
이후 대처를 할 수 있겠죠?
그럼 오늘은 여기까지!!
다음시간에 만나겠습니다.
바이바이~~~