Что касается функций, Bash может сказать вам, откуда они взялись:
$ help declare
...
-F restrict display to function names only (plus line
number and source file when debugging)
$ shopt -s extdebug
$ declare -F quote_readline
quote_readline 150 /usr/share/bash-completion/bash_completion
(я нашел это в ответе на stackoverflow.)
Для среды переменные, есть несколько хороших способов найти их здесь: Как определить, откуда взялась переменная окружения
Большинство этих функций похоже связаны с завершением командной строки, в моей системе Ubuntu они есть в / usr/share/bash-completion/
, как показано выше.
FWIW, __colormgr_commandlist
, кажется, тоже связан с завершением, есть скрипт, содержащий его здесь.
Если вы сравните шестнадцатеричный дамп smbios_entry_point
с двоичным выходом dmidecode, вы увидите, что он похож на байты 0-31 вывода dmidecode. Аналогично, DMI
соответствует байтам 32+. Байт 32 отсутствует; Я предполагаю, что это всегда ноль.
Это выглядит достаточно близко, чтобы я надеялся, что это сработает.
echo -en '\0' >NUL
sudo cat /sys/firmware/dmi/tables/smbios_entry_point NUL /sys/firmware/dmi/tables/DMI >table
dmidecode --from-dump table
Однако dmidecode дает сбой со следующим выводом:
# dmidecode 2.12-dmifs
Reading SMBIOS/DMI data from file table.
SMBIOS 2.8 present.
Bus error (core dumped)
Спецификация SMBIOS / DMI доступна в Интернете (pdf) ; не должно быть слишком сложно определить допустимые фиктивные значения для заголовка. Я оставляю это в качестве упражнения для читателя, по крайней мере, на данный момент;)
Вы можете указать код изhttps://github.com/mirror/dmidecode/blob/master/dmidecode.c. Удачи тебе.
Пример :7f + 00 + 80 + 30 + 7b = 18а
18a удерживать 8bit = 8a
Новый адрес DMI жестко запрограммирован на 0x20.