save the world

우분투 서버 버전 설치, 랜카드 드라이버 문제 해결 본문

UBUNTU

우분투 서버 버전 설치, 랜카드 드라이버 문제 해결

함안조씨 2016. 6. 29. 22:08

UBUNTU 14.04.4 SERVER version LTS 설치. 연구실 홈페이지용 서버구축 (구워놓은 CD로 설치하였다.)

연구실 IP
IP address = 166.104.230.29~39.    홈페이지는 29를 사용
netmask = 255.255.255.0
gateway = 166.104.230.1
DNS = 168.126.63.1

설치 후 리눅스가 랜카드 드라이버를 제대로 깔지 못하는 것을 발견하였다. 홈페이지용 서버의 랜카드는 RTL8111/8168/8411 인데 Kernel driver in use: r8169 로 되어있었다. 구글에 검색을 해보니 r8169 드라이버 때문에 생기는 문제가 많다고 한다.
현재 랜카드가 어떤 것인지 알고싶다면 lspci | grep -i Ethernet 또는 lspci 또는 sudo lspci -v 치면 Ethernet 어쩌고 저쩌고 하면서 나온다.

현재 랜 카드가 어떤 것인지 파악했으면 그에 맞는 드라이버를 다운 받는다. 현재 그래픽카드 드라이버를 http://www.realtek.com/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false 에서 linux 버전으로 2016년에 나온 것으로 다운받았다.

다운받은 파일을 usb로 복사하고 리눅스서버로 옮겼다. 우분투 서버 버전이기 때문에 GUI 가 없어서 파일을 옮기는 방법은 임의의 경로를 하나 만들어 준 뒤 usb를 마운트시키고 임의의 경로로 들어가 보면 usb파일에 들어있던 것들이 임의의 경로에 있다. 

sudo -s    (root 계정으로 변환(?), 고정(?))
# mkdir /home/usb    (/home/usb 라는 경로를 잠시 생성시킴)
# fdisk -l    (현재마운트 되어있는 디스크들을 보여줌. 내껀 /dev/sdg1 으로 나와있었음.)

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         124      990688+   b  W95 FAT32
Partition 1 has different physical/logical endings:
     phys=(122, 254, 63) logical=(123, 86, 27)
[root@localhost /]#
위의 붉은색 텍스트 부분이 마운트 될 USB 이다.

출처(소리없는날개짓) http://flapping.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-USB-%EB%A7%88%EC%9A%B4%ED%8A%B8

# mount -t vfat /dev/sdg1 /home/usb    (빨간색 글씨는 마운트할 디스크, 파란색 글씨는 처음에 생성한 usb를 마운트 했을시 사용할 임시경로)
명령어 수행 후 /home/usb 로 들어가보면 usb에 있던 파일이 있다. 이를
cp 파일경로 복사할경로     적어주면 파일이 복사된다.

# umount -t vfat /dev/sdg1    을 하면 disk 가 umount 된다. 단, umount 시에는 mount 된 폴더 밖으로 나가서 umount 해야된다.

폴더삭제방법 = rm -r usb/

다음으로 옮긴 파일의 압축을 풀기위해
# tar xfvj 파일이름     하여준다.

다음으로는 예전 드라이버인 r8169를 부팅할 때 부터 로드하지 않기위해 blacklist 에 r8169를 추가하여주는 작업을 해야한다.
# echo "blacklist r8169" >> /etc/modprobe.d/blacklist.conf

# cd r8168.tar    (압축을 푼 파일로 들어감)
# make clean module 을 해주어야하는데 make 함수가 설치되어 있지 않았다. 게다가 지금 인터넷도 되지 않기때문에 sudo apt-get 도 할수 없는 상황이어서 make 파일을 다른컴퓨터에서 직접 다운(여기서 다운로드 http://packages.ubuntu.com/)받고 usb로 옮겨서 설치해야한다. (참조 http://askubuntu.com/questions/43189/installing-apt-module-without-internet) 에서 "search package directory" 부분에서 'make' 를 검색하여 가장 윗부분에 있는

Package make

  • xenial (devel): utility for directing compilation 
    4.1-6: amd64 arm64 armhf i386 powerpc ppc64el s390x 
    also provided by: make-guile

를 다운받았다. 이후 usb 로 옮기는 과정은 위에 압축파일을 옮기는 방법과 똑같이 하였다.

옮긴 debian 파일 (deb)로 설치하기위하여
# cd /home/vml    (deb파일이 있는 경로로 이동)
# dpkg -i make_4.1-6_amd64.deb 를 쳐주었다. (dpkg -i 의 의미는 depackging install 이다. 이걸 알면 외우기 쉽다)

이렇게해서 make 함수를 리눅스서버에 다운 받았고,
# cd r8168    폴더로 이동
# make clean module    하여주었는데 "gcc: command not found" 라고 하면서 오류가 생겼다. 오류메세지의 의미는 gcc 가 없다는 것! (있는지 없는지 확인을 위해 # gcc -v 를 쳐보았더니 똑같이 'gcc' is not installed 라는 메세지가 떴다) 이걸 또 http://packages.ubuntu.com/ 여기서 gcc 를 검색해서 다운받자. (혹시 나중에 모를수도 있으니 사진추가.)

gcc-5도 깔자... 근데 이거까는데도 다른게 계속 필요한 것 같아서 포기.... 하려고했으나 아래에 있는 목록들을 설치하여 수동으로 dpkg 해줌.

아래의 것들을 필요하다고하는 순서대로 설치해가면서 ( 저 스크린샷을 찍을때의 작업 이 후에 다시 우분투 서버를 설치해서 재시도 해 본 결과 이 문제를 해결하는 방법은 # cd r8168폴더 로 들어가서 # make clean modules 를 한 번 해주면 오류가 나는데 어떤 컴파일러가 없어서 오류가 나는지 나와있다. 내 기억으로는 binutils 와 libmpc10 을 새로 받아서 dpkg 한 후 다시 # make clean modules 를 해준 것으로 기억하고있다. 즉 저렇게 많은 걸 안해도 될 거라는 예상이 된다. 하지만 진짜 두가지 binutils 와 libmpc10 만 디패키징 해본것이 아니라 전부다 디패키징 해보았는데 오류가 생겼고 마지막에 binutils 와 libmpc10 두가지를 디패키징 후 make clean modules 해주었을때 잘 되었다는 이야기이다.)


# make clean modules 를 해주니 어느 순간 성공 하였다. 그러나 문제는 다시 생겼다.
# make install     단계에서 can't read private key 라고 하면서 오류가 생겼다. 어떤 사람이 이 오류 메세지(can't read private key)는 상관없다고 하였으나 # lspci -v     를 해서보면 제일 밑에 "r8169"가 버젓히 남아 있었다. 여차저차하여 구글검색을 하다보니 # rmmod r8169     를 하라고 하여 해주었다. 사실 저것 외에도 # rm r8169     도 해버렸다. 명령어를 실행 후 # lspci -v 를 하여보니 "r8169" 가 없어져 있었다. 이후 압축해제한 "r8168" 폴더로 이동하여 # ./autorun.sh    를 실행하여주고 # lspci -v    를 하여보니 "r8168" 로 바뀌어져 있었고 # ping google.com    의 실행결과도 "unreachable" 이라는 메세지 없이 "time=51.2ms" 같은 정보가 잘 나왔다. 

다음으로 step 7. Welcome r8168 을 따라간다.
# depmod -a     실행은 아무 반응이 없고
# insmod ./src/r8168.ko 도 ERROR: could not insert module ./src/r8168.ko: File exists 라는 오류가 떴다. 이건 이미 파일이 있다는 이야기 일수도?? 
# mkinitramfs -o /boot/initrd.img-'uname -r' 'uname -r' 을 했더니 제대로 된 반응이 나왔다. 자신의 'uname -r' 이 뭔지 알고싶으면 $ uname -r 을 입력해보면 본인의 'uname -r' 정보가 나온다. 
# echo "r8168" >> /etc/modules 또한 아무 반응이 없었다 (제대로 동작하였기때문)
# lspci -v 를 해보니 r8168 이 있었다. 이제 재부팅 할때도 이렇게 잘 잡힌다면 성공이다. 
어쩔 땐 재부팅하니 인터넷 접속이 안됐는데 # make clean modules 부터 한번씩 새로 해주니까 되는 현상을 보였다.
안될 땐 # rmmod r8168로 드라이버를 지웠다가 다시 까는것을 위의 방법대로 해주면 된다. 즉 rmmod r8169 대신 r8168로 대체하고 #make clean modules 부터 다시 해주면 되었다.

참조 : http://myungin.tistory.com/entry/02-%EB%A6%AC%EB%88%85%EC%8A%A4%EB%A5%BC-%EC%84%A4%EC%B9%98%ED%96%88%EB%8A%94%EB%8D%B0-%EC%99%B8%EB%B6%80-%ED%86%B5%EC%8B%A0%EC%9D%B4-%EC%95%88%EB%90%98%EC%9A%94 이 링크는 우분투 서버에서 인터넷 연결이 제대로 되지 않을 때 이다. 이때까지 해준 작업을 해도 ping 8.8.8.8 명령어를 입력하여 인터넷 연결을 확인하고자 했지만 연결이 되지 않았을때 문제를 해결해준다.
핵심적인 부분은 route 설정이었는데 # route 를 쳐보니 default 에 gateway 주소가 0으로 없었다. 그래서 # route add default gw 192.168.1.1 (연구실 netgear 주소가 192.168.1.1 이라서 저렇게 적어야 하는걸로 추측...)    을 입력하여주고 ping test 를 해보니 잘 되었다.


참조 https://unixblogger.com/2011/10/18/the-pain-of-an-realtek-rtl8111rtl8168-ethernet-card/