우분투에 설치된 Lan card 드라이버를 다른 리눅스에서 설치하려면 어떻게 해야 하나요?

제가 맥에 우분투 13.04와 민트 15를 함께 설치했습니다.

우분투는 설치할 때에는 무선랜만 잡더니 나중에 쓰다 보니 다행히 유선랜도 잡더군요.

그런데 민트는 설치할 때부터 둘 다 전혀 잡지를 못하고 있습니다.

그래서 우분투에서 현재 잘 돌아가고 있는 랜카드 드라이버를 찾아서 민트에 설치해볼까 하는데 어떻게 하면 되는지 알고 싶습니다.

일단 현재 ethtool -i eth0 를 입력한 결과는 아래와 같습니다.

driver: wl0
version: 6.20.155.1 (r326264)
firmware-version:
bus-info:
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

그럼, 소중한 답변 미리 감사드리겠습니다.

  1. 우분투에서 네트웍카드 커널 모듈 파일 찾기

[code:powvtmft]sudo apt-get install hwinfo
IF=eth0 && hwinfo --network 2>/dev/null|sed -rn ‘/Driver Modules:/{N;s/[^:]+: (\S+)/ \1/g;s/ "([^"]+)" (\S+)/\2 \1/g;p}’|grep $IF|cut -d " " -f2|xargs modinfo|grep filename:|awk ‘{print $2}’
[/code:powvtmft]
2) 해당 파일을 적당한 위치로 복사
3) 민트 라이브 부팅
4) 복사위치를 마운트
5) sudo insmod 마운트된위치의ko파일경로

도움 말씀 감사합니다.

그런데 반드시 라이브 부팅을 해야 하나요?

일단 알려주신 방법대로 하여 wl.ko라는 파일을 찾았고, 현재 민트 15 부팅 usb를 다시 만들기가 조금 곤란한 상황이라 일단 민트 15로 부팅하여 폴더를 하나 만든 다음 그 곳에 wo.ko를 복사하고 나서 insmod 명령을 내려봤는데 아래와 같은 메시지가 나오더군요.

insmod 다음에 경로와 찾은 파일까지 입력하니,

could not insert mode : unknown symbol in module

이것이 라이브 부팅을 하지 않아서 생기는 문제라면 부팅 usb를 다시 만들어서 해 보고요 그렇지 않고 다른 문제라면 다시 한 번 도움을 주셨으면 합니다.

[quote="grenis":ugwuakae]
insmod 다음에 경로와 찾은 파일까지 입력하니,

could not insert mode : unknown symbol in module
[/quote:ugwuakae]

이건 의존성의 문제입니다.

라이브 부팅을 하라고 한것은, 민트설치를 못하신 줄 알고,
라이브모드로 부팅해서 설치하시라는 뜻이었구요.

근데 wl.ko라는 이름을 추측해 본다면, 무선랜카드??
어쨋든,

[code:ugwuakae]#wl모듈이 모듈경로에 존재할때...
modinfo wl | grep depends
#그냥 일반경로에 존재할때
modinfo /경로/wl.ko | grep depends
[/code:ugwuakae]
이 명령으로 의존된 모듈을 찾을 수 있습니다.
관련 모듈도 함께 저장해 주셔야 하고, 의존된 모듈을 먼저 올리는게 좋습니다.
/etc/modprobe.d 디렉토리내에 부팅시 로드할 모듈과 거부할 모듈을 설정하실 수 있습니다.

** 라이브모드에 대한 부연 설명 **
라이브모드로 부팅하는건 부팅용 USB가 필요하지 않고,
ISO파일과, 이 ISO파일로 부터 부팅할 수 있게 custom.cfg나 grub설정을 변경하시면 됩니다.

[code:ugwuakae]
menuentry "Live" {
insmod ext2
insmod fat
insmod ntfs
insmod loopback
set isofile=/경로/ubuntu.iso
loopback lo (hd0,1)$iso
linux (lo)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash noprompt noeject
initrd (lo)/casper/initrd.lz
}
[/code:ugwuakae]
물론 GRUB부트 메뉴에서 편집키 눌러 직접 입력하셔도 됩니다.

그리고, 데비안 계열 라이브모드라는게 단순한 사용해보기가 아닙니다.
저기 linux로 시작하는 부트옵션 란에 persistent 옶션을 넣고,
casper-rw파일을 최상위 디렉토리에 만드시거나, casper-rw라는 라벨의 파티션의 만드시면,
변경사항을 그곳에 저장합니다.
즉, 일반 사용해보기 모드는 램디스크에서 사용하기에, 전원이 꺼지면 다 날아가지만…
이것은 변경사항을 casper-rw에 저장하기 때문에… 업데이트도 할 수 있습니다.
home-rw를 만드시면 홈파티션을 따로 분리하실 수 도 있습니다.

다시 도움 말씀 주셔서 감사합니다.

Grub를 이용한 iso 이미지의 라이브 부팅은 요긴하게 쓰일 데가 많을 것 같네요. 나중에 꼭 한 번 해봐야겠습니다.

랜카드 모듈 설치에 관해서는, 알려주신 대로 작업을 해 봤는데 아무런 변화가 없습니다. ^^;;

제가 해 본 작업을 순서대로 말씀드리면,

modinfo wl | grep depends 를 입력하여

cfg80211, lib80211 를 찾았습니다. 이 파일 이름을 보니 무선랜카드 드라이버가 맞는 것 같습니다.

혹시나 해서

modinfo /경로/wl.ko | grep depends 도 입력해 봤지만 역시 동일하더군요.

그래서 위와 같은 이름으로 검색해 봤더니 너무 많은 파일이 나와서 일단 wl.ko 와 같은 경로상에 있는 ko 파일들만 검색하여

/lib/modules/3.8.0-23-generic/kernel/net/wireless 아래에 있는 모든 파일,

cfg80211.ko lib80211_crypt_ccmp.ko lib80211_crypt_wep.ko
lib80211.ko lib80211_crypt_tkip.ko

들을 wl.ko 가 이미 복사되어 있는 곳으로 복사했습니다.

(민트에는 /lib/modules/3.8.0-19-generic/ 폴더까지 밖에 없더군요. 그래서 직접 /lib/modules 아래에 3.8.0-23-generic/ 를 만들어서 이 곳으로 복사했습니다.)

그런 다음 sudo insmode cfg80211.ko 를 했더니 이미 존재한다고 하였고,

다음에 sudo insmode lib80211.ko, sudo insmode wl.ko 를 차례로 입력한 뒤 lsmod를 입력해 보니 세 모듈 다 로드된 것을 확인했습니다.

그런데 모듈이 로드되었다고 해서 무선랜이 잡혔다는 표시가 나오지도 않고 무선랜 기능을 켜야 되는가 싶어서 system setting 부분의 driver manager를 실행시켜 enable the bcmwl-kernel-source 를 적용시켰더니 계속 적용에 실패하더군요.

부팅시에 시동시켜야 되는가 싶어서 말씀해 주신 대로 /etc/modprobe.d 에 들어가서 conf 파일을 살펴보았으나 블랙리스트에 올리는 것은 어떻게 하는 것인지 짐작이 되지만 그 반대는 잘 모르겠더군요. ^^;;

현재 여기까지 진행된 상태이고, 따라서 별다른 변화는 없는 상황입니다.

결론적으로,

  1. 모듈을 올리는 것까지의 과정에는 별다른 문제가 없었는지,
  2. 문제가 없었다면 필요한 후속 작업은 무엇인지를 알 필요가 있는 것 같습니다.

이것저것 살펴보다가 한 가지 더 생긴 궁금한 점은

우분투의 /etc/modprobe.d 나 민트의 /etc/modprobe.d 에 있는 파일들이 하나 빼고는 모조리 똑같고 단 하나의 파일만 우분투에 더 있었는데 이것이 어떤 단서가 아닐까 하는 것입니다.

blacklist-bcm43.conf 란 파일인데 혹시 참고가 될만한 부분이 있을까 싶어서 내용을 올리면 다음과 같습니다.

Warning: This file is autogenerated by bcmwl. All changes to this file will be lost.

blacklist b43
blacklist b43legacy
blacklist ssb
blacklist bcm43xx
blacklist brcm80211
blacklist brcmfmac
blacklist brcmsmac
blacklist bcma

시험삼아 이 파일을 민트의 /etc/modprobe.d에 복사해 넣고 부팅을 해 보았으나 별다른 차이점은 발견하지 못했습니다.

예전에 다른 디바이스 설치할 때는 이렇게 어렵지 않았는데 이번 건은 꽤 쉽지가 않네요. 그래도 그 과정에서 익히게 되는 것들이 많아서 다행입니다. 그럼 계속되는 도움 말씀 부탁 드릴게요. ^^

sudo ifconfig wlan0 down
sudo ifconfig wlan0 up
이렇게 하시면 wlan0장치를 다시로드하여 모듈을 다시로드하실 수 있습니다.
이때, 자동로드 설정되어 있다면, 정상적으로 관련모듈들이 로드됩니다.

modprobe.d의 파일들은
보통은 모듈옵션만 설정합니다.

modprobe.d에 존재하는 파일에서 사용하는 명령일람

alias 별칭 모듈명
=> 모듈에 대한 별칭부여

blacklist 모듈명
=> 모듈에 대한 별칭 제거
모듈은 내부적에서 정의한 별칭들을 사용할 수 있는데…
alias명령으로 내부정의된 별칭을 새로 정의하게 될 수 도 있습니다.
한 장치에 대해 여러모듈이 참조할 경우 별칭에 대해 오류를 뿜을 수 있습니다.
별칭을 사용해서 로드하는 경우, 별칭을 제거하면 로드되지 않습니다.

install 모듈명 명령들…
=> modprobe로 모듈 설치 : 명령들은 일반 쉘명령으로 처리됩니다.

remove 모듈명 명령들…
=> modprobe -r 로 모듈 제거 : 명령들은 일반 쉘명령으로 처리됩니다.

options 모듈명 옵션들…
=> 모듈에 대한 옵션 설정

softdep 모듈명 pre: 모듈들… post: 모듈들…
=> 의존된 모듈 설정 모듈을 로드하기전에 pre에 적힌 모듈들 로드 후, 모듈을 로드하고, 이후, post에 적힌 모듈들 로드

예) 무선랜드라이버
options iwlagn 11n_disable50=1 11n_disable=1

예) 사운드모듈 설치
install sound-slot-0 /sbin/modprobe snd-card-0

예) 무선랜 충돌 모듈제거
remove iwlwifi (/sbin/lsmod | grep -o -e ^iwlmvm -e ^iwldvm -e ^iwlwifi | xargs /sbin/rmmod) && /sbin/modprobe -r mac80211

예) 의존된 모듈로드
softdep mlx4_core post: mlx4_en
==> mlx4_core 모듈을 로드하고, 관련된 모듈인 mlx4_en도 로드

man modprobe.d 하면 영문 도움말을 보실 수 있습니다.
위의 명령들은 여러개가 여러줄로 나올 수 있습니다.

blacklist-bcm43.conf <= 이파일이 우분투에만 있고 민트에는 없다면…
그것 때문일 수 있습니다.

민트에서 bcm43모듈을 로드하고 있을 수 있습니다.
우분투에서는 blacklist로 로드하지 않게 설정하여, 다른 적당한 모듈이 로드되어
무선랜이 제대로 동작할 수 도 있는 것입니다.

blacklist-bcm43.conf 파일을 민트로 가져오신 후,
재부팅했는데 안된다고 하신다면… 흠.

먼저 bcm43과 관련된 모듈들을 제거
sed -nr ‘/^blacklist\s+/{s/^\S+\s+//g;p}’ /etc/modprobe.d/blacklist-bcm43.conf | xargs sudo rmmod

모듈의존성 설정파일 /lib/modules/uname -r/modules.dep 업데이트
sudo depmod -a

wl 모듈을 로드할 수 있게… /etc/modprobe.d 디렉토리에 다음과 같은 내용으로 wl.conf를 만들보세요.
install wl /sbin/modprobe --ignore-install lib80211 && /sbin/insmod wl

–ignore-install 명령은 해당모듈에 설정된 install명령을 무시합니다.

현재 커널과 같이 빌드된 커널 모듈이 아니면 기본적으로 커널 간에 호환이 안될 겁니다. 버전이 거의 같은 경우에도요.

http://askville.amazon.com/Linux-driver ... Id=9730773

[quote:2fful6o4]So, to recap, if a driver (in binary form) is a kernel module, then it is unlikely to be compatible between distros because the kernel versions may be different. Even when the kernel versions are the same, the kernel configuration may not be (different compiler options, module configuration, etc.). If the source code is available for a driver, that increases the chances that it will work in multiple distros.[/quote:2fful6o4]

다시 앞서 행했던

sudo insmode cfg80211.ko, sudo insmode lib80211.ko, sudo insmode wl.ko

명령을 내려 세 모듈이 로드된 것을 확인한 후에

sudo ifconfig wlan0 down
sudo ifconfig wlan0 up

명령을 내린 결과

wlan0: ERROR while getting interface flags: No such device

메시지가 뜹니다. 이것은 또 무엇이 문제일까요? ^^;;;

다음 작업으로 bcm43 관련 모듈을 제거하려고 하다가 섣불리 제거했다가 다시 복구시킬 일이 발생하면 어쩌나 싶어서 일단 위의 현상의 원인을 알아낸 다음에 시도해 볼 생각으로 일단 보류한 상태입니다. 만약 다시 설치하려면 어떤 내용들을 알아야 되는지요?

한편, 현재 커널과 같이 빌드된 커널 모듈이 아니면 기본적으로 커널 간에 호환이 안 된다고 하셔서 민트 버전과 똑같은 버전인 3.8.0-19-generic 의 폴더 안에 있는 wl.ko 파일을 민트의 같은 폴더에 복사해서 insmod 명령을 내렸습니다만 똑같은 결과를 얻습니다. 이렇게 하면 되는 것인지 모르겠지만 말이죠.

참고로, 리눅스용 HD 4000 드라이버가 인텔 사이트에 올라와 있길래 다운받아서 설치하려고 보니 시스템 설정에 추가 드라이버란 항목이 아예 없더군요. 그래서 여기저기 뒤져보다가 소프트웨어 업데이트 항목에 추가 드라이버라는 부분이 있길래 보니 "장치가 대안 드라이버를 사용하고 있습니다."라고 하면서 "사용 Broadcom 802.11 리눅스 STA 무선 드라이버 소스 출처 bcmwl-kernel-source(독점"이라고 되어 있던데 이것이 본 건과 어떤 관계가 있는 것은 아닌지 궁금합니다.

그리고 추가 드라이버 항목이 없는 이유는 무엇이고 그것을 다시 생성시키려면 어떻게 해야 하는지도 알려 주시면 감사하겠습니다. (나중에 그래픽 드라이버 설치하는 것도 쉽지 않을지 모르겠다는 불안감이 조금씩 드네요. ^^)

이번에 리눅스에 드라이버 설치하는 것이 여전히 만만치 않다는 것을 제대로 느낍니다만 계속 도움 말씀을 주시는 분들이 계시니 더 힘을 내게 되네요. 그럼 또 한 번 부탁드리겠습니다.

음 일단 ifconfig 해보세요.
어떤 장치들이 있는지 나올겁니다.

보통 무선랜장치는 wlan0으로 시작하지만…
예를들어 ralink드라이버는 ra0로 잡더군요.
장치별로 사용하는 이름이 다를 수도 있습니다.

[code:t5f7u0s9]cat /proc/net/wireless | sed -nr ‘/:/{s/\s+([^:]+).*/\1/g;p}’[/code:t5f7u0s9]
이렇게 하시면 연결된 무선장치를 확인하실 수 있습니다.

그리고, 독점드라이버라는 것은…
드라이버 공급자가 독점적으로 공급한다는 뜻입니다.

즉 일반적인 경우, 제조사가 공급하는 드라이버는 대체로…
제조사이외에는 공급할 수 없게 하기 때문에… 독점드라이버라고 하는 겁니다.
ATI나 NVidia그래픽 드라이버 같은게 독점드라이버죠.

드디어 성공했습니다!

희한하게 ifconfig 명령을 한 번 내려준 다음에 wl.ko를 비롯한 세 모듈을 올리는 작업을 다시 반복하니 wireless available이 뜨더군요. 패널에 있는 인터넷 상태 표시를 클릭하니 주변 AP가 떠 있고 제 AP를 선택하니 인터넷이 되기 시작합니다. 지금 민트에서 글을 쓰고 있습니다. ^^

민트에서의 인터넷은 어렵겠구나 하는 생각이 들던 차에 성공을 했네요.

지금까지 포기하지 않고 계속 도와주셔서 정말 감사합니다. 덕분에 그 과정에서 여러 가지 많은 것을 배울 수도 있었습니다.

그런데, 여기서 하나 더 질문을 드린다면 우분투에서는 무선랜이 잡힌 다음에 자기가 알아서 업데이트를 하고 나면 유선랜도 잡아버리는데 민트에서는 업데이트를 하고 나서도 유선랜이 안 잡히네요. 우분투에서는 ifconfig를 하면 무선랜은eth0, 유선랜은 eth1으로 잡히고 민트에서는 무선랜인 eth0 만 나옵니다. 유선랜까지 잡을 방법이 없을까요? ^^;;

그리고 이와 같은 무선랜을 활성화시키는 작업을 매 부팅시마다 자동으로 이루어지게 하려면 위의 세 모듈을modprobe.d 폴더에 들어가도록 명령을 주는 것이 맞는지요? 이전 글에서 올려주신 설명을 보니 그런 것 같은데 우분투의 modprobe.d 폴더를 보니 그런 부분이 없어서요. 다른 방법으로 하는 것이라면 함께 알려주시면 감사하겠습니다.

그건 커널버전에 맞춰 나온 모듈이라…
모듈설치하면서, modules.dep파일을 설정하여서,
부팅시 자동으로 로드되는 것입니다.
이와같이 자동으로 되지 않는 모듈이거나, 커널버젼에 상관없이…
모듈이 버전업이 안되서 그 모듈을 사용해야 한다던가…등 머 그럴때…
modprobe.d 디렉토리에, 모듈 설치명령을 넣는 것입니다.

보통은 modprobe.d 디렉토리안에 모듈에 대한 옵션이나…
모듈에 대한 거부명령인 blacklist만 만들게 마련이죠.

sudo depmod -a 해면… 커널모듈 디렉토리 내의 모든 파일에 대해…
의존성 검사를 실시해서 modules.dep파일을 갱신합니다.
modules.dep에 추가되면… 부팅시 자동으로 로드하게 됩니다.
그렇지만 이것이 반드시 올바른 모듈을 로드한다고는 장담할 수 없기 때문에…
moprobe.d의 blacklist로 사용하지 않을 모듈을 필터링 합니다.
물론 이과정에서 사용자가 지정한 모듈을 설치하게 할 수 도 있는것이죠.

이제 완전하게 성공한 것 같네요.

sudo depmod -a 명령을 내리니 다행스럽게도 modules.dep에 추가되더군요.

그리고 나서 부팅시 자동으로 로드가 됩니다.

그리고 덤으로 다른 프로그램을 설치하는 중에

sudo apt-get dist-upgrade 를 한 번 했더니 3.8.0-23 버전의 모듈들이 설치되면서 유선랜도 잡히기 시작하네요.

이제서야 민트에서도 우분투에서처럼 편안하게 인터넷을 할 수 있을 것 같습니다.

그동안 도와주셔서 다시 한 번 감사드립니다.