Организация UNIX-систем и ОС Solaris

       

Не распознается сетевая карта


Еще на начальном этапе установки DCA (вы, конечно, помните, DCA - это Device Configuration Assistant, программа, которая определяет, что за оборудование установлено в компьютер, и помогает обнаружить новые устройства) легко определил вашу сетевую карту, и вы до самого конца установки пребывали в уверенности, что Solaris ее поддерживает. Не тут-то было! Никакой сетевой карты после установки Solaris не видит, и все настройки сети отправились коту под хвост! Что можно сделать в этом случае?

Возможно, следует поменять сетевую карту. Однако для NE2000-совместимых карт можно попробовать менее сложный способ. Правда, покажется ли он вам менее сложным к концу следующей страницы?

В Solaris для драйвера каждого устройства существует конфигурационный файл, в котором указано, какие адреса портов и прерывания использует соответствующее устройство. Конфигурационный файл может содержать одни комментарии, тогда драйвер будет использовать значения по умолчанию. Однако файл конфигурации должен присутствовать в любом случае. Файлы конфигурации расположены в файлах /kernel/drv/*.conf и /platform/i86pc/kernel/drv/*.conf.

Мы уже предположили, что у нас есть cетевой адаптер, совместимый с NE2000. Обычно эти адаптеры имеют диапазон адресов портов от 0x240 до 0x360. Но Solaris по умолчанию не ищет адаптер с адресом больше 0x300, так как NE2000 может конфликтовать с другими устройствами. Стало быть, для того чтобы Solaris мог работать с адаптером NE2000 на 0x320, следует изменить файл конфигурации, предварительно удостоверившись в том, что аппаратных конфликтов при этом не будет.

В Solaris файл устройства и драйвер для семейства адаптеров, совместимых с NE2000, принято называть nei. В некоторых системах этот драйвер просто выключен по умолчанию.

Для изменения параметров, используемых драйвером, в нашем случае понадобится изменить файл /kernel/drv/nei.conf. Возможно, вместо этого придется менять файл /platform/i86pc/kernel/drv/nei.conf, в зависимости от системы. Иногда файлы *.conf с одинаковыми именами есть в обоих каталогах - тогда, как показывает практика, лучше использовать каталог /platform/i86pc/kernel/drv/. Для платформы, отличной от x86, следует выбрать каталог, соответствующий платформе. В файле *.conf должно быть нечто вроде:


name="nei" parent="isa" reg=0x1,0x320,0x1f interrupts=11;

Здесь name="nei" обозначает символическое имя, которое будет иметь файл устройства в каталоге /dev. Параметр parent="isa" означает тип шины. Здесь тип ISA включает и шину PCI, что может поначалу ввести в заблуждение. Для Solaris этот параметр равен либо sysbus (это системная шина SPARC), либо isa, что означает любую шину, кроме SPARC sysbus. Флаг "0x1" означает, что далее идет определение диапазона I/O портов, а не смещения в памяти; 0x320 показывает начальный I/O адрес в шестнадцатеричном виде; 0x1f есть размер диапазона портов ввода-вывода от начального адреса; "interrupts=11" показывает IRQ 11 в десятичном виде.

При выполнении подобной операции с файлом конфигурации драйвера другого устройства попробуйте команды

grep conf /kernel/drv/*.conf

и

grep conf /platform/`uname -m`/kernel/drv/*.conf

чтобы выяснить, как называется нужный файл.

Выключите компьютер и (если требуется) измените адрес перемычками на сетевом адаптере. После перезагрузки система должна увидеть карту. Для карт "plug and play" следует отключить функцию самонастройки и установить конкретные номер порта и IRQ.

При добавлении ранее неизвестного системе сетевого адаптера необходимо также создать файл /etc/hostname.nei0 и указать в нем IP-адреса. Это требуется для того, чтобы система увидела не только новое устройство, но и распознала в нем новый сетевой интерфейс. Также добавьте в /etc/hosts строчку, сопоставляющую имя данному интерфейсу, например:

10.1.1.1 mycomputer.domain.com

В этом примере предполагается, что файл /etc/hostname.nei0 содержит адрес 10.1.1.1.

Для того чтобы в каталогах /devices и /dev гарантированно были нужные файлы нового устройства, дайте команду devfsadm (для Solaris 8 и более ранних версий - drvconfig):

devfsadm

или

/usr/sbin/drvconfig -i nei

Эта команда выполняется автоматически при добавлении нового устройства с помощью команды add_drv во время следующей перезагрузки системы. Подробнее о добавлении устройств говорится в лекции 12.

Далее наберите touch /reconfigure; reboot (это можно делать только как root).

После перезагрузки, чтобы быть уверенным, что адаптер опознан, дайте команду

ifconfig nei0 plumb

Строка nei0 должна появиться в выводе программы prtconf.


Содержание раздела