리눅스에서 랜카드 설치..문제는 해결하였으나 이유가 궁금해요
레드햇9 에서 Intel® 82547EI Gigabit Ethernet Controller 랜카드를 인식시켜야할 일이 있었습니다.
역시 예상대로 기본적으로 잡지는 못하더군요.
그래서 intel 홈페이지에서 드라이버를 다운로드 받고 메뉴얼대로 따라 했습니다.
modprobe하는 부분에서 에러가 발생하더군요..
init_module : no such device
HINT : insmod erros can be caused by incorrect module parameters
including invalid IO or IRQ parameter
IO와 IRQ를 수동으로 할당해야 하는구나 해서 이것저것 다 넣어봤지만 소용이 없었습니다.
검색해본 결과 커널 컴파일을 다시 해보라는 글들이 있어서
menuconfig에 들어가봤더니
Network device에 Intel 기가비트가 Module로 설정되어있더군요
혹시나 해서 Module이 아니라 built-in으로 설정하여 커널 컴파일을 하였습니다.
그리고 나서 Intel 홈페이지에서 다운받은 드라이버로 modprobe 하였더니 문제없이 올라가더군요..
여기서 질문하나 드리겠습니다.
Module이든 Built-in이든 설정이 가능했다면 레드햇9에서 랜카드 드라이버를 지원하고 있다는 얘기였는데 왜 자동으로 잡지 못하고
따로 받은 드라이버로 설치해야만 했던 걸까요....
뭐 설치는 되어 문제는 해결했지만 궁금합니다.
제 추측으로는 menuconfig에 있는 intel 기가비트 디바이스는 어떠한 라이브러리 역할만 하는것이 아닌가 싶은데...
그리고 Module과 Built-in의 차이가 궁금하네요..막연한 필요할때 불러쓴다는것과 기능을 포함시킨다는 차이 말고요..
답변 부탁드리겠습니다..
드라이버가
드라이버가 필요로하는 펌웨어가 대부분 non-free(데비안 용어 ?) 이기 때문이며..
때로는 마듈을 목적으로 만든게 있고 커널 기본 기능들은 built-in 으로 해주어야
오히려 안정적이라고 합니다(이를 목적으로 최초 작성후 마듈 지원여부를 확장)..
마듈간 때때로 충돌을 일으키기도 하며 상당히 주의사항을 잘 살펴봐야 합니다.
가끔 non-free 인 드라이버등이 설치시디와 함게 제공되는 배포판인 경우에도
직접 네트워크로 다운 받아야 잘 된다고 합니다..
마듈은 외국 위키의 내용을 보면 커널안으로 code 를 직접 넣는것과 동일하다고
합니다.. 하지만 개발자만 아는 민감한 차이점들이 분명 존재하는것 같습니다..
그래서 이래저래 애매하게 말들 돌리며 설왕설레 하는것 같습니다(문서마다 특히
freeBSD 문서에 좀더 사실적으로 표현되어 있더군여).
참고로 마듈로 해야하는것을 built-in 으로 하면 안되는 경우도 있습니다..
그리고 버그는 프로젝트팀에서 대부분 직접 수정하므로 최신버전으로 다운 받는게
더 좋습니다..
추가로 마듈은 udev,
추가로 마듈은 udev, hotplug, modprobe ,kernel modules loader 이 올리는걸 담당하는데 ..
built-in 하면 udev(이게 실수를 많이한다고 봄,,드라이버 표준화(개발버전인 경우등)및 기타 udev
자체문제) 이나 modprobe 등에의 발생하는 마듈적재 실패를 줄일수 있습니다..
마듈적재 실패는 마듈 올리는 순서와 속도에의해서도 영향을 받습니다..
답변 감사합니다
어렵네요..module과 built-in로 구분해둔 이유는 뭘까요..
단지 커널 이미지 크기때문은 아니란 생각이 듭니다.
좀 더 공부를 해야겠습니다.
아직은 편한 윈도우에 익숙한 유저라 이런 문제를 접하면 난감하네요..
겨우(?) 랜카드 설치인데 커널 컴파일 까지 해야 하는 상황이라면...
이런게 리눅스 매력이라면 매력이라고 할 수 있겠죠^^;
구분해둔 이유는
구분해둔 이유는 커널 개발과 돌립적으로 드라이버만 별도로 커널에 맞게 제작할수 있도록 하기 위함이라고 합니다..
추가로 마듈로
추가로 마듈로 안되어있는경우 설치시디에서 커널은 모든 드라이버를 다 built-in 되어 있어야 할겁니다..
그래야 모든 하드웨어를 지원할수 있을테니까여...
이때문에 마듈과 initrd 를 함께 유동적으로 사용합니다..
특별한 목적이
특별한 목적이 없으면, 레드햇 9라면 빨리 페도라 시리즈 같은 최신 배포판으로 올라가는 것이 정신 건강에 좋습니다.
---- 절취선 ----
http://blog.peremen.name
제가 보기엔 소
제가 보기엔 소 뒷걸음질에 쥐가 잡혔습니다.
처음에 modprobe 로 했을 때 에러가 나면서 올라가지 않은 이유는,
다운로드해서 만드신 드라이버가 아니라 기존의 드라이버가 선택되었기 때문일 것입니다. 확실히 하시려면 lsmod 로 확인하고, rmmod 를 사용해서 기존 드라이버를 내리고, insmod 를 사용해서 드라이버 바이너리를 지정하는 방식으로 올리시면 됩니다.
insmod, lsmod, rmmod, modprobe 의 도움말은 man 으로 쉽게 살펴볼 수 있습니다.
built-in 과 module 로 만들었을 때 묘하게 동작이 되고 안되고의 차이가 있다면, 당연히 드라이버가 꼴통입니다.
두어개의 module 이 연계되어 동작하는 경우, 어떤 단계를 지나서 다음 단계로 이행할 때 놓치기 쉬운 전제조건들이 있는 경우가 많습니다.
h/w 의존적인 부분도 있지만, 드라이버 개발자 자신이 의도했음에도 기억하지 못하는 경우도 있습니다. 후자는 보통 scheduling 이 덜 되거나 더 되는 바람에 필요한 데이타를 건지지 못하는 경우가 대부분입니다.
엠..
처음에 답변 주신 분이 매우 그럴 "듯" 하게 답변을 주셔서 낚일수도 있겠다 싶군요;; -_-
요즘 종종 매우 혹 할만한 내용의 답변을 달아주시는 분들이 계셔서;;
====================여기부터 식은어치====================
안녕하세요. 저는 야동 초등학교 2학년 6반 11번입니다!! 제 컴퓨터에 리눅스를 깔아보고 싶습니다. 리눅스라는건 어제 처음 들어 보았습니다.
리눅스에서도 카트라이더는 되겠지요? 설마 안되나요? 안되면 왜 쓰나요? =3=33 리눅스에서는 카트라이더 캐릭터 머리가 너무 커서 못받아들이나요?
이해하기 어려운
이해하기 어려운 comment 이군여 .. 뭐가 혹한지..
??????????????????????? 제대로 머리한번 파헤쳐 보고 싶다..!!!
군대서 저러면 고문관 이라하지...
요즈음 국내 어디가도 레드햇글자 들어가면 point 삭제부터 들어 가더라..
할짓이 그렇게 없나...알바들쓰는 모양이다..주제에 먹고 살겠다고 아둥거리는거
보기 가엽다..
야동 글짜 좀 올리지
야동 글짜 좀 올리지 마라 애들도 아니고 야동,야동 구멍이 그렇게 뇌리에서 멤도나보지...쯔즈
내가 보기엔 니가 더한 놈이다..
댓글 달기