커널버전과 커널헤더관련 궁금증

classique의 이미지

리눅스 배포판을 보면 보통 Linux-headers라는 패키지가 있는 걸로 알고 있습니다.

그런데 이 패키지는 커널소스에서 헤더파일을 모아놓은 것으로 알고 있습니다. 커널모듈 컴파일이라

던지 여러 프로그램 컴파일시 필요하여 존재하는 것으로 알고 있습니다. 그런데 궁금한 것은 보통의

배포판에서 보면 커널버전과 Linux-headers 버전이 일치하지 않는다는 것입니다. 보면 커널버전 따로 나

가고 Linux-headers버전 따로 나갑니다. 커널소스에서 헤더가 변경되지 않아서 버전이 올라갈 필요가 없

다면 이해가 되는데 시스템이 커널을 2.6을 사용해도 Linux-headers는 여전히 2.4 버전을 사용한다는

것은 좀 이해가 잘 안됩니다. 젠투의 경우는 2.4 헤더 패키지, 2.6 헤더 패키지 두 개 모두 공존하는군요.

왜 이런것인지... 가르쳐 주세요.

이렇게 헤더 버전이 따로 존재하게 되면 사용하는 커널은 2.6 커널인데 glibc는 2.4헤더를 기반으로 컴파일

했다고 가정하면 2.6에서 추가된 기능은 glibc를 2.6헤더 기반으로 다시 컴파일 해야하지 않나요.

이런 경우를 고려하면 오히려 컴파일시 문제점을 발생할 소지가 클 것으로 생각하는데요.

fibonacci의 이미지

커널 헤더는 여러가지 버전을 깔아도 지장 없습니다.

예를 들어 커널 2.4.23과 2.6.8 을 깔아서 필요에 따라 다른 버전의 커널로 부트한다고 합시다.

새로운 하드웨어가 생겨서 모듈 컴파일을 한다면 커널 2.4.23으로 부트한 상태에서는 기본적으로 2.4.23에 해당하는 헤더를 참조하여 컴파일 하고 , 2.6.8로 부트한 상태에서는 기본적으로 2.6.8에 해당하는 헤더를 참조합니다.

커널 2.6.8로 부트한 후 헤더는 2.4.23버전만 깔려있는 상황이라면, 외장 모듈을 컴파일할 때 "알수 없는 심벌" 에러를 낼 것입니다.

No Pain, No Gain.

gonEH의 이미지

NPTL를 사용하기 위해서는 2.6커널과 해더파일을 써야한다네요;;
그래서 전 header 2.4버전을 삭제하고 씁니다.

# emerge -C linux-headers
# emerge linux26-headers

해더파일은 상황에 따라 다르게 불러오는 것으로 알고 있습니다.
lib들도 그렇지 않나요? 잘못 알고 있나;;

USE="multilib"

gonEH의 이미지

이번 젠투를 2005.0으로 업그레이드하면서 알게된건데요.

USE="multislot"

multislot은 gcc-3.3.x버전과 gcc-3.4.x버전을 같이 사용하는 거네요;

그나저나 2005.0으로 업그레이드 하면서 linux-headers를 다시 깔았는데요.. ( 매뉴얼에 나온데로..;; )
그게 원인인지 multilib를 설정할 수 없게 되어있네요..

# emerge -pv gcc glibc
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild   R   ] sys-devel/gcc-3.4.3.20050110  -bootstrap -boundschecking -build -debug +fortran -gcj +gtk -hardened (-ip28) (-multilib)* +multislot (-n32) (-n64) +nls -nocxx -objc -static (-uclibc) 27,896 kB
[ebuild   R   ] sys-libs/glibc-2.3.4.20050125  -build -debug -erandom -hardened (-multilib) +nls -nomalloccheck +nptl +nptlonly -pic +userlocales 0 kB

왜 이럴까요;;

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.