Решение состоит в том, чтобы сбросить и декомпилироватьACPI DSDT
(таблицу дифференцированного описания системы )из BIOS. Сюда входит код для инициализации устройства ACPI, относящийся к используемой системе, а также необходимые идентификаторы устройств.
Должна быть установлена декомпиляция DSDT с помощью следующих команд(iasl
)
cp /sys/firmware/acpi/tables/DSDT dsdt.dat
iasl -d dsdt.dat
Затем запросите идентификаторы устройств в декомпилированном коде
grep '_HID.*"' dsdt.dsl
Вывод будет включать все строки, в которых объявлено устройство, и соответствующие идентификаторы устройств. Наконец, используйте LKDDb
, чтобы найти необходимые драйверы ядра acpi для устройств.
Для быстрого извлечения соответствующих строк вы можете использовать это:
wget https://cateee.net/sources/lkddb/lkddb.list
for i in $(grep '_HID.*"' dsdt.dsl | grep -o '"[A-Z0-9]*"'); do grep "$i" lkddb.list; done | sort -u > relevant
Кроме того, перечислите все CONFIG_*
переменные из вывода:
cat relevant | grep -o 'CONFIG[A-Z0-9_]*' | sort -u
Обратите внимание, что этот список является только руководством и не гарантирует отсутствие ложных положительных или ложных отрицательных результатов. Если вы хотите быть уверены в том, что вы делаете, вы должны исследовать dsdt.dsl
самостоятельно.
Это не работает, потому что вы используете неправильный синтаксис. Что вы делаете, так это ${...}
, которое является расширением параметра bash для выполнения манипуляций с переменными. Например:
foo="abc"
echo "${foo^^}"
# outputs ABC instead of abc
Чтобы заставить его работать, измените его на обратные кавычки `... `или$(...)
Так и будет:
benchmarkStart=`node -e "require('${nm}/benchmarkStart.js')"`
or
benchmarkStart=$(node -e "require('${nm}/benchmarkStart.js')")