일요일 7월 08, 2007

Install NIC Driver

R500에 설치된 NIC 칩은 Intel 82566MC 입니다. 우선 Intel 사이트에서 직접 검색해 본 결과 지원하지 않습니다.  하지만 8255x, 8256x 관련 이전 드라이버는 Solaris내에 존재하는 것을 확인 하였습니다. 따라서 backward compatibility를  예상할 수 있습니다. 관련 드라이버 이름은 e1000g 로 Ethernet 1 Gbit을 의미하는 이름으로 예상됩니다.

참조: Solaris 5.11 svn_64a 버젼에서는 NIC가 바로 잡히는 것을 확인하고 참조하였습니다.

Problem 

현재 설치 된 Solaris 5.11 svc_55a버젼에서는 NIC를 인식하지 못 하는 문제가 있습니다. ifconfig -a로 우선 장치가 올라와 있는지 확인합니다.

bash-3.00# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
        inet6 ::1/128

장치가 보이지 않습니다. /etc/drivers_aliases를 검색하여 e1000g장치가 alias되어 있는지 확인합니다.

bash-3.00# grep "e1000g" /etc/drivers_aliases

장치가 나타나지 않습니다. /kerner/drv/amd64에서 e1000g 드라이버가 있는 것을 확인합니다. 확실히 하기 위해서 rev_drv e1000g를 하고 add_drv를 이용해서 driver를 load시킵니다.

여기서 중요한 것은 NIC장치가 어느 address에 연결되어 있는지 확인 하는 것입니다. 64a 버젼을 설치한 laptop에서 NIC는 pci1854,0의 주소에 연결되어 있는 것을 확인하고, add_drv로 해당 주소가 e1000g 장치임을 알려주어 드라이버를 추가합니다.

# rem_drv e1000g

# add_drv -i '"pci1854,0"' e1000g

정상적으로 드라이버가 로드되면 modinfo에서 드라이버 정보를 확인 할 수 있습니다.

bash-3.00# modinfo |grep e1000g
193 fffffffff822e000  20e00  10   1  e1000g (Intel PRO/1000 Ethernet 5.1.8)

드라이버가 커널에 로드되어도 장치를 찾아 instance를 만들지 못하면 실제 드라이버를 사용할 수 없습니다. snv_55a 버젼에서는 드라이버가 로드되어도 instance가 생기지 못하고 장치를 찾지 못 하여 이 이상 진행 할 수가 없습니다.

그 확인은 prtconf 명령을 이용해서 합니다.

bash-3.00# prtconf -D
System Configuration:  Sun Microsystems  i86pc
Memory size: 2047 Megabytes
System Peripherals (Software Nodes):

i86pc (driver name: rootnex)
    scsi_vhci, instance #0 (driver name: scsi_vhci)
    isa, instance #0 (driver name: isa)
        motherboard
        i8042, instance #0 (driver name: i8042)
            keyboard, instance #0 (driver name: kb8042)
            mouse, instance #0 (driver name: mouse8042)
    pci, instance #0 (driver name: npe)
        pci1854,93
        pci8086,2a01, instance #0 (driver name: pcie_pci)
            display, instance #0 (driver name: nvidia)
        pci1854,0,  (driver name: e1000g)
        pci1854,93, instance #0 (driver name: uhci)
            storage, instance #0 (driver name: scsa2usb)
                disk, instance #1 (driver name: sd) 

위와 같이 instance #0이 생성되지 않습니다. 

Solution

우선 현재의 상태에서는 해결 방법을 찾지 못 했습니다. 그러나 snv_66a 버젼의 드라이버를 사용하면 해결할 수 있습니다. e1000g 드라이버 파일과 /etc/driver_aliases 파일을 복사하여 각각 해당하는 directory에 복사합니다. 만약을 위해 원본 파일은 mv명령을 이용해서 이름을 변경합니다.

이제 새로운 버젼의 드라이버를 올리면 드라이버가 정상적으로 로드되고 장치를 찾아 NIC를 사용할 수 있게 됩니다.

# rev_drv e1000g

# add_drv -i '"pci1854,0"' e1000g


이제 다음과 같이 ifconfig를 실행하면 e1000g가 e1000g0 즉, 0번째 디바이스가 잡힌 것을 확인 할 수 있습니다.

# ifconfig -a plumb

# ifconfig -a
l
o0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=201004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4,CoS> mtu 1500 index 2
        inet 0.0.0.0 netmask ffffff00
        ether 0:e0:91:31:6:76
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
        inet6 ::1/128
ST,IPv4,VIRTUAL> mtu 8232 index 1

마지막으로 이제 DHCP를 이용하여 IP를 받아오면, Network을 사용할 수 있습니다.

# ifconfig e1000g0 dhcp start

# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=201004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4,CoS> mtu 1500 index 2
        inet 192.168.1.195 netmask ffffff00 broadcast 192.168.1.255
        ether 0:e0:91:31:6:76
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
        inet6 ::1/128
 

위의 명령으로 IP를 할당 받아오고 확인할 수 있습니다.

하지만, DNS 부분의 문제로 Internet access가 제대로 되지 않을 경우에는 다음과 같은 명령을 실행시켜 줍니다.

#cp /etc/nsswitch.dns /etc/nsswitch.conf

그러면 Internet 역시 사용이 가능하게 됩니다.







Install graphic driver 

솔라리스로 부팅하고 난 후 login은 기본이 console이 아닌 dtlogin으로 잡혀 있으므로, 바로 dtlogin으로 진입하게 됩니다.

Problem

dtlogin은 text mode가 아닌 graphical mode로 동작하게 됨으로 현재 Solaris의 graphic device driver가 R500 laptop에 설치된 Geforce 8400 M GS 칩셋을 지원하지 않으므로, 화면이 그냥 꺼지게 되는 현상이 발생합니다. 화면이 나타나질 않아 더 이상 진행 할 수가 없습니다.

Solution

Failsafe로 진입하면, console mode login으로 작동하게 됩니다. 따라서 GRUB에서 Failsafe를 선택하여 부팅합니다.

root로 로긴 후  dtlogin 서비스를 중단 시킵니다.

# svcadm disable cde-login

만약 위의 방법이적용되지 않을 경우에는 다음과 같이 진행합니다.

#cd /a/etc/rc2.d
#cp S94ncalogd S99dtlogin
#echo "/usr/dt/bin/dtlogin -d" > S99dtlogin

루트 밑에 /a가 되는 것은 Failsafe로 부팅하였기 때문입니다.  

S94ncalogd를 복사하는 것은 파일 속성과 권한을 그대로 이용하기 위함입니다. 이렇게 수정하고 reboot을 하게 되면 dtlogin이 실행 되지 않아 console login 상태가 유지되게 됩니다.

이제 아래 site에서 최신 Solaris용 nvidia graphic driver를 download 합니다. 이 부분은 미리 다운로드하여 USB Memory stick또는 다른 partition 영역에 저장해 둡니다.

Solaris Display Driver – x64/x86

위 Link의 문서를 확인하시면, 현재 8400 M GS 칩을 지원하는 것을 볼 수 있습니다. 또한 설치 방법 역시 설명되어 있습니다.

드라이버 파일을 USB Memory Stick에서 copy할 경우, 연결을 하고, df 명령으로 어디로 mount되었는지 알 수 있습니다.

bash-3.00# df
/                  (/dev/dsk/c1d0s0   ):86117074 블록  5787922 파일
/devices           (/devices          ):       0 블록        0 파일
/dev               (/dev              ):       0 블록        0 파일
/system/contract   (ctfs              ):       0 블록 2147483616 파일
/proc              (proc              ):       0 블록    29902 파일
/etc/mnttab        (mnttab            ):       0 블록        0 파일
/etc/svc/volatile  (swap              ): 4021064 블록   292755 파일
/system/object     (objfs             ):       0 블록 2147483426 파일
/etc/dfs/sharetab  (sharefs           ):       0 블록 2147483646 파일
/lib/libc.so.1     (/usr/lib/libc/libc_hwcap1.so.1):86117074 블록  5787922 파일
/dev/fd            (fd                ):       0 블록        0 파일
/tmp               (swap              ): 4021064 블록   292755 파일
/var/run           (swap              ): 4021064 블록   292755 파일
/media/AS          (/dev/dsk/c2t0d0p0 ):   34564 블록       -1 파일

/media/AS에 장치가 연결된 것을 확인 할 수 있습니다. 드라이버 파일을 복사한 후 설치합니다.

# cp /media/AS/NVIDIA-Solaris-x86-100.14.11.run /var/tmp/

아래와 같이 드라이버를 설치합니다.

# cd /var/tmp/
# sh NVIDIA-Solaris-x86-100.14.11.run

설치가 끝나고 현재 시스템을 위한 xorg.conf를 작성해 주기 위해 nvidia-xconfig를 실행하고 reboot을 하게 되면 설치가 끝나게 됩니다.

새로 부팅을 하고, root로 로긴한 후 dtlogin 또는 gdm 을 실행하면, 선명한 nvidia 로고를 볼 수 있으며, graphical login  창이 나타나게 됩니다.

다음 부팅부터 바로 dtlogin 또는 gdm로긴을 하기를 원한다면, 다음과 같이 실행합니다.

# svcadm enable gdm-login

or 

# svcadm enable cde-login

다음 부팅부터는 바로 dtlogin 또는 gdm으로 진입하게 됩니다.



 


[Read More]

This blog copyright 2009 by Ilho Kim