LINUX.ORG.RU

Как определить что сетевая карта - интегрированное в материнку, устройство?

 ,


0

2

Как, используя «стандартные» утилиты линуха, определить что сетевая карта - интегрированное в мать устройство??

как пример, есть две сетевухи - одна я знаю точно - интегрированная, вторая воткнута в pci

вот вывод udevadm и lspci для eth1

udevadm info --query=all --path=/sys/devices/pci0000:00/0000:00:01.3/0000:03:00.2/0000:20:04.0/0000:25:00.0/net/eth1
P: /devices/pci0000:00/0000:00:01.3/0000:03:00.2/0000:20:04.0/0000:25:00.0/net/eth1
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:01.3/0000:03:00.2/0000:20:04.0/0000:25:00.0/net/eth1
E: INTERFACE=eth1
E: IFINDEX=2
E: SUBSYSTEM=net
E: USEC_INITIALIZED=17260974
E: ID_BUS=pci
E: ID_VENDOR_ID=0x10ec
E: ID_MODEL_ID=0x8168
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
E: ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
E: ID_MM_CANDIDATE=1
E: ID_PATH=pci-0000:25:00.0
E: ID_PATH_TAG=pci-0000_25_00_0
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/rename2 /sys/subsystem/net/devices/eth1
E: ID_NET_NAMING_SCHEME=sle15-sp3
E: ID_NET_NAME_MAC=enx047c16dcdbc2
E: ID_NET_NAME_PATH=enp37s0
E: TAGS=:systemd:


........


lspci -v -k -s 0000:25:00.0
25:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
	Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7a38
	Flags: bus master, fast devsel, latency 0, IRQ 29
	I/O ports at e000 [size=256]
	Memory at fc604000 (64-bit, non-prefetchable) [size=4K]
	Memory at fc600000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [70] Express Endpoint, MSI 01
	Capabilities: [b0] MSI-X: Enable+ Count=4 Masked-
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Virtual Channel
	Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00
	Capabilities: [170] Latency Tolerance Reporting
	Capabilities: [178] L1 PM Substates
	Kernel driver in use: r8169
	Kernel modules: r8169

вот вывод тех же утилит для eth0

udevadm info --query=all --path=/sys/devices/pci0000:00/0000:00:01.3/0000:03:00.2/0000:20:06.0/0000:27:00.0/net/eth0
P: /devices/pci0000:00/0000:00:01.3/0000:03:00.2/0000:20:06.0/0000:27:00.0/net/eth0
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:01.3/0000:03:00.2/0000:20:06.0/0000:27:00.0/net/eth0
E: INTERFACE=eth0
E: IFINDEX=3
E: SUBSYSTEM=net
E: USEC_INITIALIZED=17192253
E: ID_NET_NAMING_SCHEME=sle15-sp3
E: ID_NET_NAME_MAC=enx00e04c15310a
E: ID_OUI_FROM_DATABASE=REALTEK SEMICONDUCTOR CORP.
E: ID_NET_NAME_PATH=enp39s0
E: ID_BUS=pci
E: ID_VENDOR_ID=0x10ec
E: ID_MODEL_ID=0x8168
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
E: ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
E: ID_MM_CANDIDATE=1
E: ID_PATH=pci-0000:27:00.0
E: ID_PATH_TAG=pci-0000_27_00_0
E: ID_NET_DRIVER=r8169
E: ID_NET_LINK_FILE=/usr/lib/systemd/network/99-default.link
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/eth0 /sys/subsystem/net/devices/eth0
E: TAGS=:systemd:


.....


lspci -v -k -s 0000:27:00.0
27:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
	Subsystem: Realtek Semiconductor Co., Ltd. Device 0123
	Flags: bus master, fast devsel, latency 0, IRQ 31
	I/O ports at d000 [size=256]
	Memory at e2104000 (64-bit, prefetchable) [size=4K]
	Memory at e2100000 (64-bit, prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [70] Express Endpoint, MSI 01
	Capabilities: [b0] MSI-X: Enable+ Count=4 Masked-
	Capabilities: [d0] Vital Product Data
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Virtual Channel
	Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00
	Kernel driver in use: r8169
	Kernel modules: r8169

накопал всё что можно вроде :) даже как узнать скорость соединения через cat /sys/devices/pci0000:00/0000:00:01.3/0000:03:00.2/0000:20:06.0/0000:27:00.0/net/eth0/speed там же можно узнать работает она или нет ./operstate и еще много чего интересного можно узнать :)

но вот как определить что карта интегрированная в мать или это отдельное устройство воткнутое в разъем …. Подскажите, как узнать какая из этих карт интегрированная? т.е. не по косвенным признакам, а четко указанным.

Перемещено hobbit из general

По идентификатору устройства.

mord0d ★★★★★
()

В общем случае по-моему никак, одни и те же электрические соединения могут вести как на слот, так и на чип припаянный к материнке.

firkax ★★★★★
()

Тащемто никак. Сетевая карта встроенная в мать так же по pci-e подключается, как и не встроенная. Если топологию разводки слотов матери знать можно угадать. Ну и обычно встроенная карта разводится на канал pci-e обслуживаемый мостом, а не процессором, но далеко не всегда, это раз, pci-e слот на матери в который внешнюю сетевую воткнули тоже может быть на мост разведён, это два.

Jameson ★★★★★
()

По-хорошему, встройка (on board) должна была бы быть внесена производителем в SMBIOS, показываемый dmidecode.

gag ★★★★★
()
Ответ на: комментарий от cobold

Вынь ту что в слоте и посмотри какая пропала в списке устройств

вариант имеет право на жизнь, но а ежели для этого в другой город ехать надо? :))

ssnakess
() автор топика

Очень просто, с помощью

  • dmidecode
  • lshw
  • hwinfo

Определяешь модель материнской платы. Далее идёшь на сайт производителя и открываешь спецификацию, либо гуглишь в Internet на других сайтах.

Определяешь по полученной информации какой сетевой контроллер интегрирован.

А дальше в выводе указанных выше утилит прочие оставшиеся сетевые контроллеры будут в слотах расширения.

kostik87 ★★★★★
()
Ответ на: комментарий от gag

По-хорошему, встройка (on board) должна была бы быть внесена производителем в SMBIOS, показываемый dmidecode.

не спорю, но ….

dmidecode -t 10
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.

как бы - нету

хотя есть тут упоминание

Handle 0x0026, DMI type 8, 9 bytes
Port Connector Information
	Internal Reference Designator: J1503
	Internal Connector Type: None
	External Reference Designator: Network
	External Connector Type: RJ-45
	Port Type: Network Port
ssnakess
() автор топика
Ответ на: комментарий от kostik87

Очень просто, с помощью dmidecode lshw hwinfo Определяешь модель материнской платы. Далее идёшь на сайт >производителя и открываешь спецификацию, либо гуглишь в Internet >на других сайтах. Определяешь по полученной информации какой сетевой контроллер >интегрирован. А дальше в выводе указанных выше утилит прочие оставшиеся сетевые контроллеры будут в слотах расширения.

это косвенные признаки. И есть более простой вариант такого определения :) т.к. мать MSI это можно узнать из dmidecode то и по Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7a38 можно сказать что именно эта сетевуха - интегрированное устройство

Но я как бы спрашивал немного другое - «Подскажите, как узнать какая из этих карт интегрированная? т.е. не по косвенным признакам, а четко указанным.»

т.е. запустить какую-либо утилиту (желательно, которую не надо дополнительно ставить ибо ради этого ставить программу специальную - ИМХО треш :)) ) или прочитать какой-то файл из /proc чтобы четко было понятно - эта устройство интегрированное в мать

ssnakess
() автор топика
Ответ на: комментарий от kostik87

Утилита lspci читает содержимое /sys и /proc, ищи.

ну как бы я привел вывод udevadm и lspci для обеих карт.

и не нашел прямого указания кто из них двух - интегрированная :) по косвенным признакам можно догадаться, но это не более чем догадка.

Могу продублировать вывод lspci

ssnakess
() автор топика
Последнее исправление: ssnakess (всего исправлений: 1)
Ответ на: комментарий от gag

По-хорошему, встройка (on board) должна была бы быть внесена производителем в SMBIOS, показываемый`dmidecode`.

И в жесткий whitelist чтоб не втыкали всякую фигню. :)

hbars ★★★★★
()

в общем случае мне кажется никак

можно ещё помедитировать над lspci -t

по хорошему это решается во время изначальной настройки системы: сразу выдать интерфейсам понятные имена, а не эти enp@#$@#$/ethN

sergej ★★★★★
()

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

undef ★★★
()

Ну вот у тебя в одном случае:

	Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7a38

а в другом случа:

	Subsystem: Realtek Semiconductor Co., Ltd. Device 0123

По-моему вполне понятно кто здесь встроен, а кто нет.

zg
()

Нашел способ однозначно определить какая карта интегрированная, какая нет. Правда решение - то еще :))

  1. смотрим dmidecode -t 9 и выбираем те слоты которые In Use - т.е. заняты устройством
...
Handle 0x0036, DMI type 9, 17 bytes
System Slot Information
	Designation: J3700 PCIE x4 slot from Promontory
	Type: x4 PCI Express x4
	Current Usage: In Use
	Length: Short
	ID: 2
	Characteristics:
		3.3 V is provided
		PME signal is supported
	Bus Address: 0000:20:04.0
....

  1. выписываем себе на бумажку Bus Address этих занятых слотов. Выше я привел тот который нужен.

  2. смотрим на DEVPATH нужных нам устройств

/devices/pci0000:00/0000:00:01.3/0000:03:00.2/0000:20:04.0/0000:25:00.0/net/eth1

и

/devices/pci0000:00/0000:00:01.3/0000:03:00.2/0000:20:06.0/0000:27:00.0/net/eth0

ищем там упоминание Bus Address слота - 0000:20:04.0 и спокойно определяем что eth1 - это сетевая карта - не интегрированная, а воткнута непосредственно в слот PCI Express x4

:))

как то так :)

ssnakess
() автор топика

Очень просто.

1. Вынимаешь внешнюю сетевую карту. Даешь команду получить список сетевых устройств. Сохраняешь.

2. Вставляешь сетевую карту. Даешь ту же команду. Сохраняешь новый список. Сравниваешь командой diff.

3. ???

4. PROFIT

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

Очень просто. 1. Вынимаешь внешнюю сетевую карту. Даешь команду получить список сетевых устройств. Сохраняешь.

угу, «очень просто», только есть проблемы:

  1. машинка в другом городе
  2. машинка работает 24/7
  3. я по ssh сижу в её терминале

так что с вашим утверждением «очень просто» - в данном случае, можно поспорить :)))

ssnakess
() автор топика
Последнее исправление: ssnakess (всего исправлений: 1)

У внешней карты по идее как правило будет «Option ROM» коорый в линуксе виден как /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/rom

Для устройств, которые могут быть полезны на этапе загрузки он может поставляться на плате, чтоб поставлять EFI-драйвер для этого устройва. А для распаянных на плате - это обычно интегрировано в основной BIOS платформы и такого ROM не будет.

То есть - чип-контроллер и линии к нему одинаковы для встроенной и внешней системы, но вот наличие UEFI-драйвера может быть разным

GPFault ★★
()
Ответ на: комментарий от GPFault

У внешней карты по идее как правило будет «Option ROM» коорый в линуксе виден как /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/rom

Проверил - для обеих сетевых карт нет такого файла.

Проверил для видеокарты, и для контроллера sata - да, «есть такая буква» в этом слове. Для этих внешних карт существует rom. Хотя не могу проверить его отсутствие для встроенной видео, к сожалению нет компа со встроенной видео :)

Т.е. скорее всего Вы правы, но почему-то для сетевых карт это правило не работает

ssnakess
() автор топика
Ответ на: комментарий от ssnakess

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

Я думал что и для внешних сетевух будет, но увы) Возмжно что у некоторых внешних есть. Тo есть наверное можно использовать как один из критрериев - «если есть rom то очень вероятно что внешняя», а если нет - то хз.

GPFault ★★
()
Ответ на: комментарий от GPFault

это возможно есть лишь на твоем железе :)

@ssnakess универсального и точного средства нет.
как уже выше сказали, для программного окружения нет разницы между разъемом и цельным проводником.

кроме документации на материнку - в ней конкретно описано что в материнку заложено. и то могут быть модификации материнки с нераспаянными компонентами.

pfg ★★★★★
()
Ответ на: комментарий от pfg

это возможно есть лишь на твоем железе :)

возможно. Но, нашел в своем парке машинок одну с интегрированной видюхой и в папке этого устройства таки есть rom ! т.е. это не признак интегрированности карт.

получается самым железобетонным является поиск то, как я писал выше - т.е. dmidecode -t 9 смотрим собственно адреса разъемов и сравниваем devpath устройства. если таки адрес разъема есть в пути к устройству - то это внешнее устройство, если нет - интегрированное.

проверил на нескольких машинкав - определяется четко - интегрированное или нет :)

ssnakess
() автор топика
Ответ на: комментарий от ssnakess

А может быть как-то так:

sudo dmidecode -t 9
# dmidecode 3.2
Scanning /dev/mem for entry point.
/dev/mem: Operation not permitted


lsusb
Bus 001 Device 006: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
Bus 001 Device 005: ID 0bda:5411 Realtek Semiconductor Corp. 
Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
undef ★★★
()
Ответ на: комментарий от undef

А может быть как-то так: sudo dmidecode -t 9

dmidecode 3.2

Scanning /dev/mem for entry point. /dev/mem: Operation not permitted

на Ubuntu - да, там su и sudo - это боль и кровь из глаз :) там только через sudo bash т.е. сперва надо таки зайти в bash как root и только тогда там работают утилиты или запустить sudo -i и тогда вы будете работать под рутом

т.е. прикол в том что если вы запускаете программу, а она в процессе запускает еще утилиты (в процессе своей работы), то ubunta не дает им права первоначального процесса, и следовательно вы первый процесс запустили из под рута, а им порожденные - под обычным юзером. как то так :)

причем такая шляпа замечена именно на бубнте. На debian, opensuse, fedora, astra, centOs - работает нормально и адекватно. на бубунте - шиш с маслом, тока через одно место :))

ssnakess
() автор топика
Последнее исправление: ssnakess (всего исправлений: 1)
Ответ на: комментарий от ssnakess

запустил sudo dmidecode -t 9 на подручной убунте - все ок, все вывел, никаких проблем с доступом.
мож конкретно в твоей системе заблокирован доступ к /dev/mem ??

$ ll /dev/mem
crw-r----- 1 root kmem 1, 1 мая 24 18:28 /dev/mem

чёт первый раз слышу про такой финт с обрубом наследования прав. в той же бубунте

$ sudo bash -c "id -un"
root

норм. хотя в определенных действиях такое было бы удобно.

pfg ★★★★★
()
Ответ на: комментарий от ssnakess

Это на дебиане запускалось.

Прикол в том, что на той железке нет DMI, поэтому определить вышеуказанным способом, какая из usb-сетевух встроенная, не получится.

undef ★★★
()
Ответ на: комментарий от ssnakess

ищем там упоминание Bus Address слота - 0000:20:04.0 и спокойно определяем что eth1 - это сетевая карта - не интегрированная, а воткнута непосредственно в слот PCI Express x4

И что это за магическое 0000:20:04.0 ?

Почему способ выше, с Subsystem тебе не подошёл?

zg
()
Ответ на: комментарий от zg

Почему способ выше, с Subsystem тебе не подошёл?

не понял как именно по subsystem это определять? вот вывод lspci

25:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
	Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7a38
	Kernel driver in use: r8169
	Kernel modules: r8169

27:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
	Subsystem: Realtek Semiconductor Co., Ltd. Device 0123
	Kernel driver in use: r8169
	Kernel modules: r8169

и каким образом тут понять что одна интегрированная, вторая нет?

вот пример еще одного вывода, не сетевой карты, а устройства которое тоже воткнуто в pci

26:00.0 SATA controller: ASMedia Technology Inc. ASM1166 Serial ATA Controller (rev 02)
	Subsystem: ZyDAS Technology Corp. Device 2116
	Kernel driver in use: ahci
	Kernel modules: ahci

а вот интегрированные

03:00.1 SATA controller: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller (rev 01)
	Subsystem: ASMedia Technology Inc. Device 1062
	Kernel driver in use: ahci
	Kernel modules: ahci

03:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller (rev 01)
	Subsystem: ASMedia Technology Inc. Device 1142
	Kernel driver in use: xhci_hcd
	Kernel modules: xhci_pci

т.е. каким образом по Subsystem, можно определить какие интегрированные в мать, а какие платы расширения и занимают разъемы на матери?

ssnakess
() автор топика
Ответ на: комментарий от undef

отсутствует как класс :) железяка уж больно древняя.
и я о томже что не все так логично как кажется

pfg ★★★★★
()
Ответ на: комментарий от ssnakess

для драйвера PCI нет разницы как подключено устройство через разъем или напрямую :)
только если производитель каким-либо образом специально такое не пропишет где нить в прошивке.

pfg ★★★★★
()

Можно по mac адресу определить вендора. Для встройки это будет производитель материнки.

m0xf
()
Ответ на: комментарий от pfg

это понятно и логично. но блин как же тогда из вывода команды lspci узнать какое устройство - интегрированное, а какое внешнее?

фокус с dmidecode -t 9 работает но не на всех матерях :( на некоторых возвращает bus address - которого тупо нет в папке /sys/bus/pci в некоторых возвращает bus address который есть в папке /sys/bus/pci но у этого устройства нет подчиненных (например вернулся адрес 0000:00:01.0, в папке нет подчиненных устройств, а реальные устройства подключены и находятся в папке /sys/bus/pci/0000:00:02.0)

т.е. фиг с ним в какой именно разъем материнки воткнули карту, понять бы из вывода lspci - какое устройство интегрированное, какое нет! но понять без гадания на кофейной гуще, и поиска в гуглах, а просто по тем данным котрые выданны командой, или находятся в соответствующей папке устройства (как пример наличие файла speed в папке с устройством сетевой карты, позволяет понять какая скорость сейчас используется для этого сетевого интерфейса и т.п. )

ssnakess
() автор топика
Ответ на: комментарий от ssnakess

и каким образом тут понять что одна интегрированная, вторая нет?

25:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
	Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7a38

MSI - производитель материнской платы, значит это встроенное устройство.

27:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
	Subsystem: Realtek Semiconductor Co., Ltd. Device 0123

Сам Realtek - устройство вставлено в PCI

В твоих следкющих примерах устройств материнская плата другая, от ASMedia?

zg
()
Ответ на: комментарий от m0xf

Можно по mac адресу определить вендора. Для встройки это будет производитель материнки.

Почему именно материнки? Обычно там всегда префикс производителя контроллера.

zg
()
Ответ на: комментарий от zg

В твоих следкющих примерах устройств материнская плата другая, от ASMedia?

нет, плата одна и та же, как и вся машинкав :)

dmidecode -t 2
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
	Manufacturer: Micro-Star International Co., Ltd.
	Product Name: B450M PRO-VDH MAX (MS-7A38)
	Version: 8.0
	Serial Number: 07A3881_N61E717893
	Asset Tag: To be filled by O.E.M.
	Features:
		Board is a hosting board
		Board is replaceable
	Location In Chassis: To be filled by O.E.M.
	Chassis Handle: 0x0003
	Type: Motherboard
	Contained Object Handles: 0

Сам Realtek - устройство вставлено в PCI

вот тут как раз и засада, ибо не понятно…. по данным утилит

Handle 0x0036, DMI type 9, 17 bytes
System Slot Information
	Designation: J3700 PCIE x4 slot from Promontory
	Type: x4 PCI Express x4
	Current Usage: In Use
	Length: Short
	ID: 2
	Characteristics:
		3.3 V is provided
		PME signal is supported
	Bus Address: 0000:20:04.0

т.е. есть PCIe слот который in use - т.е. в него чото воткнуто :) если посмотреть на «путь» к одной из сетевых карт /devices/pci0000:00/0000:00:01.3/0000:03:00.2/0000:20:04.0/0000:25:00.0 то видно, что она как раз на этом адресе и сидит, т.е. её адрес 25:00.0, а она сидит в 20:04.0 т.е. она воткнута в слот PCIe О3700 на матери и вот её данные по lspci

lspci -k -s 25:00.0
25:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
	Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7a38
	Kernel driver in use: r8169
	Kernel modules: r8169

т.е. подход типа - мать MSI и карта MSI - значится она интегрированная - не подходит, именно она и является в данном случае внешней (см. выше) а вот как раз та что просто realtek - так и интегрированная :))

В твоих следкющих примерах устройств материнская плата другая, от ASMedia?

ASMedia, это еще одно устройство которое торчит в PCIe - это контроллер SATA расширяющий количество портов SATA представленных материнкой. И самое прикольное что на матери встроенный контроллер SATA - тоже ASMedia!!! т.е. полный абзац :) если определять устройства встроенное/не встроенное по названию вендора - Вы ни разу не угадали :) все полностью наоборт :)))

ssnakess
() автор топика
Ответ на: комментарий от GPFault

У внешней карты по идее как правило будет «Option ROM» коорый в линуксе виден как /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/rom

Я «покрутил» этот момент. В выводе lspci -vv есть упоминание об «Expansion ROM», т.е. взял этот признак и добавил еще несколько признаков которые выдает lspsi (сравнив интегрированные карты и внешние) - Endpoint и Control I/O+, и вроде получилось разгрести отдельно встроенные и не встроенные карты. Т.е. не только сетевые, а и все остальные.

Не знаю на сколько эти правила будут применимы для большинства устройств, но во всяком случае видюхи, сата-контроллеры и сетевые получилось разделить :)

Так что спасибо за наводку.

ssnakess
() автор топика
Ответ на: комментарий от zg

Понятьно. А зачем тебе вообще понадобилось всё это программно определять?

когда одна машина и стоит рядом, то можно открутить крышку корпуса и посмотреть, но когда их 10 и они далеко (в другом городе), то не наездишься на них смотреть.

Я не понимаю, серверов где используется линукс - много, и почти всегда они не в зоне прямого доступа находятся :) то почему не сделать адекватные утилиты, которые покажут не просто название карты, а то какая она - интегрированная в мать или внешняя.

dmidecode работает, но не всегда и не везде, lspci - работает, но информации больше чем надо и вопрос, кому надо :) udevadm выдает информацию частично и зачастую для того чтобы узнать название модели устройства, надо смотреть не его самого, а его родителя. Часть инфы находится в файлах с папкой устройства - ну тот же файл speed. Другая часть инфы только в /proc можно узнать.

треш какойто :)) как в том анекдоте про колобка в публичном доме :))

ssnakess
() автор топика
Ответ на: комментарий от ssnakess

Так и не понял зачем тебе это надо. Вот определил ты что это устройство встроенное, а вон то нет. И дальше что? Зачем тебе нужна эта информация? Что ты с ней дальше делать будешь?

zg
()
Ответ на: комментарий от zg

Так и не понял зачем тебе это надо. Вот определил ты что это устройство встроенное, а вон то нет. И дальше что? Зачем тебе нужна эта информация? Что ты с ней дальше делать будешь?

одна из карт ведет себя «не культурно», и надо её менять. если это карта внешняя, то проблем нет - купил такую же - воткнул и радуйся. если она интегрированная, то далее смотрим на свободные слоты материнки, а их оказывается нету :) в данном случае на матери 3 слота и заняты они видюхой, картой и sata-контроллером. т.е. отключить интегрированную и воткнуть внешнюю - не получится (см. выше - нет мест). т.е. придется покупать новую мать!!

вот поэтому и вопрос - определения какая из карт интегрированная, а какая внешняя. а т.к. комп - удаленный, то для принятия решения - что с ним делать далее - и ковыряю как узнать программно (утилитами).

так понятнее??

ну и так же мне надо как-то обосновать начальству - что и почему мне надо приобрести, и сколько денех на это надо :))

ssnakess
() автор топика
Последнее исправление: ssnakess (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.