커널을 패치하고, 컴파일 할때 에러나는 부분을 잡는 좋은 방법
글쓴이: kapark / 작성시간: 금, 2003/08/29 - 8:49오후
안녕하세요?
저는 커널을 여러번 컴파일해서 결국은 임베디드 시스템에 포팅을 해야 하는 중에 있습니다.
그런데, 바이너리 순수 커널에다 패치를 하면 잘 되는데,
그 패치한 것에다가 다른 것을 또 패치를 하면, 그때부터
패치시에 .rej파일이 나고,
Hunk #1 FAILED 같은 오류가 많이 납니다.
이건 무슨뜻인지요?
일일이 그 소스를 찾아다니면서 잡아낼려고 하는데,
방대한 소스라서 찾기가 쉽지 않네요..
패치를 하고, reject된 파일만 patch에 적용 시키는 방법이 있나요?
그리고, 순수 커널 소스 말고, 패치된 커널에 또 패치를 해야할떄, 좋은 방법이 있으시면, 제발 조언좀 부탁드립니다.
몇주째 헤매고 있습니다.
이 프로젝트를 끝마쳐야 하니, 까마득하구요...
도움을 기다리겠습니다..
그럼, 미리 답변에 감사드립니다. 꾸뻑.
Forums:
...
이런 일은 패치를 여러번 적용하는 경우에 자주 생기게되지요.
예를 들어 오리지널 코드가 A였는데,
패치x를 적용해서 Ax 가 되었다고 하면,
A에 적용해서 Ay가 되도록 작성되어 있는 패치 y를
Ax 에 적용해버리니 Axy가 되지 않고 그냥 reject되는 것이지요.
영역이 다른 곳에 대한 패치라면 이런일이 별로 없지만,
자주쓰이는 커널코드에 대한 패치를 적용하였다면 아마 다른 패치를 넣을때마다 줄줄이 비엔나처럼 conflict이 생겨나겠지요. 아니면 패치 순서를 한번 바꿔보세요.
물론 패치 내용을 보고 코드의 시맨틱을 고려해 손으로 패치해줄 수도 있습니다만, 정신건강상 그다지 좋지않고... 아마 하셔야 하는 작업이 굉장히 정형화된 일이라면 제대로 순서에 맞는 패치들이 있을것 같습니다. 특히 embedded쪽 작업을 하신다고 하시니 혹시라도 arm 이나 xscale 패치같은 흔한 것이라면 틀림없이 원하시는 내용이 다 적용된 커널 소스 또는 패치에 대한 문서같은 것이 어딘가에는 있을것 같군요. ;-)
아니면 Ax와 Ay, A 를 각각 두고 이 세개를 three-way merge 해보시는건 어떨까요. 이 작업을 해주는 툴들도 찾아보시면 꽤 여러가지 있습니다. 물론 이때에도 적당한 만큼의 conflict 처리는 사람이 할 수 밖에 없겠지만요.
saxbody님 정말 감사합니다.누군가가 같이 고민해 준다는 것이 이
saxbody님 정말 감사합니다.
누군가가 같이 고민해 준다는 것이 이렇게 고마울줄이야...
제가 하고 있는일이,
커널 2.4.19 에다가
USAGI 패치를 하고(IPv6지원),
ARM 패치를 해야 하고,
또, MIPL 패치를 또 해야 한답니다..(Moblie 지원)
우짜노???
엉키고 성킨것을 풀어야지요... 으앙~~~
댓글 달기