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
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 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 역시 사용이 가능하게 됩니다.


