Как получить имя устройства BIOS из Linux, аналогично формату диспетчера устройств Windows

В zshдля сокращения списка файлов до существующих можно использовать квалификатор (N)glob, добавляемый к каждому элементу списка:

files=(/opt/foo/lib.jar /opt/bar/lib.jar)
that_exist=($^files(N))

(($#that_exist > 0 )) && print -rl -- $that_exist

Обратите внимание, что, в отличие от ls, он может сказать, существует ли файл или нет, даже если у вас нет поиска доступа к его родительскому каталогу (до тех пор, пока у вас есть доступ для чтения ), так как он ищет соответствующие записи в каталоге, не пытаясь получить доступ к файлу.

См. также:

that_exist_after_symlink_resolution=($^files(N-^@))

Который выбирает файлы, которые не являются(^)символической ссылкой(@)после разрешения символической ссылки(-). Эквивалентно использованию ls -Ld.

1
07.06.2021, 13:00
1 ответ

Я не знаю, лучшее ли это решение и будет ли оно работать во всех дистрибутивах Linux, но я могу найти нужную мне информацию \_SB_.PCI0.GFX0с помощью этой команды:

# cat /sys/class/pci_bus/0000:00/device/0000:00:02.0/firmware_node/path

Это также известно как путь ACPI. Почему эта команда работает для меня?

Пояснение
В Linux устройство PCI идентифицируется 16 -битным номером домена, 8 -битным номером шины, 5 -битным номером устройства и 3 -битным номером функции; последние три числа обычно обозначаются как BDF устройства или B/D/F (для шины/устройства/функции ).

Команда lspciможет отображать этот идентификационный номер, используя...

# lspci -D
..
0000:00:02.0 VGA compatible controller: VMware SVGA II Adapter
..

Формат этого номера 0000:00:02.0domain:bus:device:function.

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

# cat /sys/class/pci_bus/<domain:bus>/device/<domain:bus:device:function>/firmware_node/path

Опять же, я мало знаю об этой теме или о том, будет ли эта процедура работать на всех дистрибутивах, но она работает на моем Ubuntu mate 20.04.1.

Другой хакерский метод может состоять в том, чтобы выполнить шаги, описанные в моем первоначальном вопросе, с acpidump, acpixtractи iasl. Затем просто найдите в полученном дизассемблированном файле.dsl DeviceObj. Таким образом, нахождение строки:External(SB .PCI0.GFX0, DeviceObj)будет означать, что путь ACPI\_SB_.PCI0.GFX0

Ссылки
Интерпретация вывода lspci
Полезный пост на Reddit

2
28.07.2021, 11:26

Теги

Похожие вопросы