커널 컴파일시 질문 입니다.

pandar3의 이미지

리눅스를 시작한지 얼마 안된 허접의 질문입니다.
레드햇 9.0 설치 후 커널 2.6.15를 다운받아 한번
컴파일 했습니다. 잘 할줄 몰라 make menuconfig에서
그냥 저장하고 컴파일 했는데 USB 마우스 및 사운드 카드
모듈에 문제가 생겨 다시 컴파일 해보기로 했습니다.

컴파일 하기전 lsmod 하면 제가 사용하는 랜카드
8139too 라는 모듈이 올라오고 있었는데
이왕 컴파일 하는 길에 빌트인을 시도 해보기로 했는데
make menuconfig하고 rtl8139를 찾아서 '*'하고
컴파일 하고나니 잘되던 인터넷도 안될 뿐만 아니라
lsmod 하면 8139too도 없어 졌습니다.
또, dmesg 해보니까 8139 관련 에러가 10개정도
계속 있어서 혹시나 하고 etc/modeprobe.conf의
alas eth0 8139too를 지워 봤습니다.
에러는 없어졌는데 여전히 인터넷은 안되고 있습니다.

여기서 제짧은 생각으론 menuconfig할시에 '*'만 해주면
나중에 모듈을 올리지 않고도 사용할 수 있다고 생각했는데
잘못된 생각인지 아님설정에 문제가 있었는지요?
제대로 컴파일 성공하면 lsmod 목록에서 사라지는 건지요 ?
그리고 이모듈이 제대로 사용되고 있는지 아닌지를 확인 해보려면
어떻게 하면 제대로 되는건지 많이 아시는 고수님의
답변을 애타게 기다립니다.

innu의 이미지

built-in 은 8139드라이버를 커널이미지에 포함시켜 컴파일하기 때문에 재부팅후 모듈과는 전혀 상관없습니다.
커널 이미지 생성중에 문제같아보입니다.

Debian Spirit !!!

마잇의 이미지

제 마지막 기억으로는 8139 지원 항목이 두가지였던것 같습니다.
8139too하고 rtl8139c 였던가... 정확히 기억이 안나네요.
후자는 설명에 보면 rtl8139c+ 칩셋인가 지원한다고 나오는데 여하튼 일반적으로 쓰는 8139랜카드는 저걸로 지원이 안됩니다. 8139too로 해야 되더군요.

그래도 안되신다면 빌트인 말고 모듈로 해보시길 권해드립니다. ALSA관련 설정할때 빌트인으로 하면 안되고 모듈로는 되고 그랬던 기억이 있었습니다.


--
마잇

pandar3의 이미지

mattengi wrote:
제 마지막 기억으로는 8139 지원 항목이 두가지였던것 같습니다.
8139too하고 rtl8139c 였던가... 정확히 기억이 안나네요.
후자는 설명에 보면 rtl8139c+ 칩셋인가 지원한다고 나오는데 여하튼 일반적으로 쓰는 8139랜카드는 저걸로 지원이 안됩니다. 8139too로 해야 되더군요.

그래도 안되신다면 빌트인 말고 모듈로 해보시길 권해드립니다. ALSA관련 설정할때 빌트인으로 하면 안되고 모듈로는 되고 그랬던 기억이 있었습니다.


또 mattenqi님이 답을 올려주셨군요 정말 정말 감사합니다.
역시 지적대로 8139 c+로 하니까 8139co인가 하는 모듈이 생성되고 그냥 8139 pci로 선택 하니까 제가 사용하던 8139too가 생성됐습니다.
근데,또 문제와 질문이 생겼습니다. 흐...
먼저 첫번째 질문은요 모듈 컴파일 할때마다 make mrproper을 해야 되는가 ?
두번째 질문은 그리고 모듈만 컴파일 할때도 make bzImage 해줘야하는가 입니다.
모듈만 컴파일 할때 설정하고 make modules
make modules_install 이거만 해도 문제가 없는지 ...
세번째 질문은 여기저기서 주워들은 대로 하면 빌트인 하면 자동으로 모듈이 올라 오는 것으로 생각 했는데
왜 안되는 거죠 ? 무슨 버그 같은 건가요 ?
그리고 마지막으로 발생한 문제 입니다.
일단 mattenqi님의 말대로 '*' 에서 'M'으로 바꾼다음 일단 무식하니까 손을 고생 시켰습니다.
bzImage 만들고 /boot로 카피하고 .... make modules_install...reboot
dmesg에 8139too 관련해서 보는 에러들이 마구 보였습니다. (헤헤 물론 저에게는 모든게 첨보는 거겠지만 ...)
에러를 확인 하기위해 lib/modules/2.6.15/kernel/driver/net/8139too.ko가 만들어져 있음을 확인한후
modprobe 8139too 하는 순간 아까 봤던 그 에러놈이 또 나왔습니다.이렇게
8139too : version magic '2.6.15 SMP preempt PENTIUM4 gcc-3.2' should be '2.6.15 686 gcc-3.2'
안그래도 영어 달리는데 .. 이건 gcc 버젼을 686용으로 업데이트 하라는 얘긴지 아님 686 gcc-3.2로 만들어진
8139too.ko를 설치 하라는 말인지요 ? 제가 설정을 잘못 만져서 그런건가요 ?
처음 컴파일 후 생성된 모듈은 아무 문제 없이 돌아갔는데 다시 컴파일 후 문제로 봐서는 설정시
뭔가 잘못 건드린거 같기도 한데 .... 워낙 달려서 ...
그럼 고수님들의 답을 기다리며 ... 오늘도 날새는 초보가 ...
마잇의 이미지

기존 커널 설정에서 모듈 한두개만 추가할때

make menuconfig // 원하는 모듈 M체크
make modules
make modules_install

이것만 합니다. 이렇게 하고 리부팅 없이 바로 추가한 모듈이 올려졌던 걸로 기억이 나네요.

make mrproper ... 이런거는 커널 2.6대로 진입한 후에는 안합니다. bzImage, modules, modules_install 이거 세가지만 합니다. 가물가물하긴 한데 2.6 인스톨 문서 보시면 mrproper 이런거 안해도 된다고 나올겁니다.

modprobe.conf 수정하신거 다시 복구하시고 시도하신건가 모르겠네요.
모듈 올라갈때 에러메시지는 저도 잘 모르겠네요.

잘 되시길~


--
마잇

pandar3의 이미지

오늘도 너무 친절하게 잘 가르쳐 주셔서 너무 감사 합니다.

사랑천사의 이미지

보통 이더넷 카드 같은건... 모듈로 내버려 둡니다. 그리고 FS같은건 되도록... Built-IN!!! Built-IN으로 컴파일 하면 모듈 올릴 필요 없이 정상적으로 떠야 되는거 맞습니다. 하지만, 사운드나 NIC의 경우.. 문제 생길 소지가 좀 잇다고 봐야 겠지요.

그리고... 저건 글세요.. 모듈 올릴 때 나는 에러라.. 뭘 어떻게 하리기 보다 버젼이 안 맞는다는 소리 같군요. 어떻게 해야 하나는 잘 모르겠습니다. 아.. 근대 이전에 컴파일 하실 때 SMP용으로 컴파일 하셧따가 다음에 모듈 올리실 때 그건 그냥 i686으로 하신거 아닌가요 혹시나... SMP 커널이 아닌 그냥 일반 커널로 i686말이죠... 음.

저같은 경우는 기본적인 FS 모듈들(Ext2, Ext3, XFS, CRAMFS)은 전부 Built-IN 해 주고... (SMBFS와 NFS모듈 등도) 파일 시스템 문자셋 지원 같은 경우도 EUC-KR/CP949인 한글 문자셋과 ASCII, UTF-8, Latin1정도를 제외하고는 전부 다 N(선택을 아예 해제 합니다.) 그리고 Latin1 이외의 것들이 필요하다면(예를 들자면 중국어, 일본어 등의 파일명을 볼 수 잇게 해야 할 때) 관련 파일 시스템 문자셋 모듈들은 전부 M으로 두고 컴파일 시킵니다. 그리고 CD-ROM도 자주 쓰기 때문에 이것 또한 올렸다 내렸다 하면 불편하고 시스템도 성능 떨어지니 Built-IN 시킵니다. 그 밖에 네트워크에서 패킷 소켓과 유닉스 도매인 소켓 등은 전부 다 Y(*라고 표시 하셨군요.)로 해서 Built-IN 시킵니다.

쓸 때 없는 기능은 전부 빼 버리고요... 하드웨어 모듈은 되도록 일단 다 넣어 둡니다. AGP 같은 경우 제가 사용 하기 때문에 AGP 지원 모듈은 Built-IN, 그 외에 하위의 각 AGP 포트 칩셋 지원 모듈은 M으로 두었습니다. 그 밖에 실시간 시계 같은 경우 지원 향상 모듈을 Built-IN 시켰습니다... 뭐 이거 제 컴파일 팁을 다 적는 기분이군요. 아무튼... 그리고 아직은 IPv6을 쓰지 않고 필요성이 저한탠 없기 때문에 네트워크 설정 할 때에 IPv6지원은 아예 하지 않게 했습니다. ATM도 안 쓰니까 그것도 지원 자체를 없에 버렸고요. 조이스틱과 터치 스크린 등도 Input 에서 없에 버렸습니다. 키보드와 마우스만 쓰게 해 주었죠.

아무튼 하드웨어 모듈은, 다양하고 풍부하게 해 놓으시고요. Built-IN 시키기엔 좀 그렇습니다. 하드웨어 모듈은. 그리고 뭐 ISA 슬롯이 없고 카드도 안 쓰신다면 ISA 지원은 아예 컴파일 안 하게 만드시는 것도 좋습니다. 뭐 EISA 정도야 필요 할 수도 잇으니 두셔도 되겠지만..

글세요... 뭐 이상입니다. 제가 뭔 소릴 더 하겠습니까... 저도 컴퓨터를 12년 하고 윈도우즈를 12년 리눅스를 6년째 사용 하고 있지만, 전혀 잘 한다고 생각지 않습니다. 스스로 아직도 초보라고 자부합니다.(정말로.) 그런 사람이 커널에 대해 뭘 안다고 더 적겠어요... 그래도 도움이라도 되시면 좋겠습니다. 커널 컴파일 하나라 고생 주구장창 한거 기억 하면... 다른 분들은 더 하시겠지요.. 그럼...

이여송 사도요한 드림.

사람천사

익명 사용자의 이미지

ysnglee2000 wrote:

그리고... 저건 글세요.. 모듈 올릴 때 나는 에러라.. 뭘 어떻게 하리기 보다 버젼이 안 맞는다는 소리 같군요. 어떻게 해야 하나는 잘 모르겠습니다. 아.. 근대 이전에 컴파일 하실 때 SMP용으로 컴파일 하셧따가 다음에 모듈 올리실 때 그건 그냥 i686으로 하신거 아닌가요 혹시나... SMP 커널이 아닌 그냥 일반 커널로 i686말이죠... 음.

상세하게 노하우 까지 알려주셔서 너무 감사합니다만,조그만 더 가르쳐 주세요.
커널도 종류가 많은가요 ?
SMP커널은 무엇이고 그냥 일반 커널은 무엇인가요?
제가 한거라고는, http://www.kernel.org/pub/linux/kernel/people/rusty/modules/ 요기서
module-init-tools-3.2 다운 받아서 설치하고,
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.15.tar.gz 이거 받아서 컴파일 했습니다.
PS2마우스 사용하다가 USB마우스를 나중에야 설치했었고,사운드도 안되고 있어 무섭지만
meke menuconfig에 들어 갔습니다. mattenqi님의 조언을 듣고 용기를 얻어 ...
그리고,컴파일 하는 길에 랜카드 모듈을 built-in 한번 해보려고
'*' 찍고 usb-ushci 에도 한표찍고,그리고 부팅하면서 kernel not support ext3 인가 하는 에러가 나길래
ex3 라는 항목에 한표 이렇게 하고 컴파일, make moduels,make modules_install 했다가 변을 당했습니다.
dmesg 해보면,usb-usci 요기 하고 8130too 요기 하고 똑 같은 에러가 나옵니다.
짧은 생각으로는 첨에 컴파일했을 때 위 모듈들을 아무문제 없이 사용했으니까 gcc 컴파일러 버젼이나
아님 모듈 버젼은 문제가 없을 것 같은데.... 이런 환경들이 문제라면 첨에도 이런 에러가 나지 안았을까요?
제가 설정하면서 뭔가 건드린거 같기도 합니다.잘몰라서 여기저기 기웃 겨렸거든요.
안돼서 고생은 많이 하고 있지만,이렇게 관심을 가지고 글올려주는 분들이 많아 열심히 배우고 있습니다.
사랑천사의 이미지

무엇보다 잘 모르시면 천천히 하세요... 그리고 영어 딸리시면 책 펴 놓고 하세요(사전.) 음... 큰 책은 필요 없고요... 간단한 소형 단어책자 정도라면.. 후후.

그리고 SMP라는 것은 듀얼 이상의 CPU를 지원 하기 위해 나온 것입니다.(정확히 설명 드리고 잇나 모르겠습니다만...) 물론 이것도 커널의 프로세서 관련 설정에서 바꿀 수가 있습니다. 만약 그 문제라면 모듈을 올리시기가 좀 까다로워 집니다. 혹시 Ext3 같은걸... 찍으실 때 *로 하셧다면 make modules 정도론 안 됩니다. make all 해 주시는게 바람직 할 거고요... 로딩이 안 된다면 initrd도 만들어 주셔야 할 것 같습니다.
[*] Symmetric multi-processing support 이 부분이 SMP에 대한 부분입니다. 이 항목 아래에는 최대 프로세서를 몇 개 까지 사용 가능하게 컴파일 할 것인가? 하이퍼 쓰래딩은 지원 할 것인가 등의 기능 설정이 가능한 항목들이 있고요. 음...

아시겠지만 하이퍼 스레드도 결국 프로세서 두 개로 잡힙니다.(하이퍼 스래드 되는 프로세서의 경우...) 윈도우즈 XP에서 P4 하이퍼 스래드 가능한 프로세서가 장착된 PC의 장치 관리자를 열어보면 프로세서가 두 개로 나오는 것을 알 수 있죠. 그래서 이것도 SMP 하위에 있는 것입니다. 근대 제가 보기에 저 문제는 처음에 커널 컴파일 할 때는 SMP로 컴파일 하셨는데 모듈은 SMP를 지원 안 하게 다시 커널을 바꿔 놓고 컴파일 하신거 아닌가 싶군요. 일반 커널은 1개 프로세서만 지원 합니다. 하이퍼 스래드도 안 되죠 음.

아무튼... 그리고 모듈 관리 툴이라.. 훗.. 저 부분은 잘 모르겠네요. 음.. 전 지금까지 모듈 관리 툴을 특별히 쓴 적이 없습니다. 그러니까 업데이트 시키거나 따로 깐 적이 없단 뜻이죠. 그런건 보통 배포판 내에서 업데이트 가능한 걸로 알고 있습니다. 음...

그리고 하나 더... 커널 컴파일 해서 올리실 때... 필수적으로 이전에 잘 돌아 가던 커널을 부트로더와 디스크에서 삭제 하지 마십시요. 뭔 일 나면 이전처럼 돌아 오셔야 되니.. 다행히 그런 일은 없으신 것 같은데...(아닌가요? 음...)

그럼 또 뵙겠습니다. 뭘 더 말씀 드려야 되는진 잘 모르겠네요.
이여송 사도요한 드림.

사람천사

pandar3의 이미지

헉 .... 이렇게 상세하게 답을 해주셨는데 ....
혹시 이런일이 있으셨는지 모르겠네요 ....
저 첨에 컴퓨터 처음 사러 아무것도 모르니까 좀 아는 형님과 같이 갔습니다.
매장 주인과 형님이 컴퓨터 사양에 대해 이런 저런말을 주고 받더군요 ...
아마도 메모리나 뭐 CPU사양 같은 걸 물어보고 했겠지요 .
근데 뭐 두분이 별나라 얘기 하는 것 같은 기분이 들었는데 .... 오늘 또 그렇네요 ...
전 아무 것도 모릅니다 ... 헉 ... 너무 고난도 답변을 해주셔서 OTL ...
하이퍼 스레드라든지 initrd ,make all 이런거 아직도 많이 공부를 해야 될것 같습니다.
하여튼 여기서 다물어보면 아마도 맞아 죽을 것 같고 ... 딱 하나만 다 여쭤 볼께요 ... 죄송합니다.
오늘 나름대로 달리는 영어실력이지만 답을 찾고자 굵은 영어사전 옆구리에 끼고 어는 영문 사이트를 갔었습니다.
거기에 저와 비슷한 질문이 하나 있고 답변이 있었는데 대충은 해석을 했는데 역시 영어실력이 달려서 ...
그분의 문제는 k7(아마도 AMD CPU를 얘기하는데 아닌가)에서 작성해서 잘돌아가는 모듈이 P4에서는
안돌아 간다는 그런 내용이 였습니다.
답변은 역쉬 별나라 얘기에 영어가 마구 뒤썩여 도저히 해석불가 ...하여간 CPU 타입을 얘기 하는 것 같아서
오늘 또 겁도 없이 make menuconfig에 들어가 봤습니다.
그리고 리눅스가 설치되어 있는 컴퓨터 사양은 P3라
Process or type and feature --->요기서
Processor family ---> 여기에 Pentium-4/Celeon(P4-based)/Pentium-4 M/Xeon 으로 잘못(?)
설정 되어있길래 Pentium-III/Celerom(Coppermine)/Pentium-III Xeon 으로 수정 했습니다.
그래도 안되기는 마찬가진데 뭔가 희망이 보이는 듯 했습니다.
modinfo 8139too 하면
8139too : version magic '2.6.15 SMP preempt PENTIUM4 gcc-3.2' should be '2.6.15 686 gcc-3.2'
이렇게 나오던 에러가
8139too : version magic '2.6.15 SMP preempt PENTIUMIII gcc-3.2' should be '2.6.15 686 gcc-3.2'
로 precessor 를 수정하니까 P3 가 P4로 바뀐 걸 보고 그럼 뭔가 잘 선택 하면 686 으로 되겠구나 하고
생각하고 있는데 혹시 어떻게 하면 686으로 되는지 알고 계신지요 ?
이번엔 절대로 SMP 손대지 않았습니다. 믿어 주세요 .... ㅎㅎ
아.. 방금 모둘 컴파일이 끝났습니다. ysnglee2000님의 지적대로
[*] Symmetric multi-processing support 에서 '*'을 빼고 컴파일 했습니다.
...에공 ... 똑 같이 나오는데 ....
8139too : version magic '2.6.15 preempt PENTIUMIII gcc-3.2' should be '2.6.15 686 gcc-3.2'
SMP만 빠졌습니다...
너무 너무 죄송합니다만 686으로 바꿀 수 있는 방법이 필요할 것 같습니다.
참고로 processor family에서 586/k5/5X86/6X86/6x86MX 요건 선택 해봤습니다..
근데 568 gcc ... 이렇게 나오면서 에러가 나왔습니다.
포기하고 새로 설치할까 하는 마음도 들지만,이렇게 오늘도 또 배웠다는 생각에 포기하고 싶지 않습니다.
귀찮지만 도와주세요.

댓글 달기

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