[질문]리눅스 커널 패치 방법에 대해서,,,,

k3rnel의 이미지

안녕하세요,
커널 패치 방법을 확실히 몰라서 질문드립니다.

제 리눅스 박스 /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는 두단계낮은 수준,,,이런식으로 패치를 적용한다고 하던데요,, 정확하게 무엇을 말하는지 모르겠습니다,,

답변 부탁드리겠습니다 (_ _)
수고하세요

bushi의 이미지

세번째 질문의 답을 아시면 죄다 풀리실 것 같습니다.

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

k3rnel의 이미지

답변 감사합니다...

의문이 가는것이 있는데요
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"를 선택하여 자동으로 패치 확인 여부를 묻지 않고 패치할 방법은 없을까요?

Necromancer의 이미지

리눅스 커널이라면

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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.