Обычно для систем защиты деревья устройств предоставляют аппаратную информацию ядру (Linux). Эти деревья устройств существуют в виде dts (исходных файлов дерева устройств), которые компилируются и загружаются в ядро. Проблема в том, что у меня нет доступа к такому dts
файлу, даже к dtb
файлу.
У меня есть доступ к /sys
и /proc
на машине , и я хотел бы спросить , если это позволит мне «угадать правильные значения» , чтобы использоваться в DTS?
Также потенциальный ответ может дополнительно выделить аспект, если ответ на этот вопрос также зависит от того, использовался ли интерфейс дерева устройств в первую очередь (т. Е. dtb
Был создан и предоставлен ядру) вместо какого-либо взлома, - мы просто отвлекаемся от vanilla и исправить ядро, чтобы решить проблему с информацией об устройстве только для нашего ядра.
источник
Ответы:
/proc/device-tree
или/sys/firmware/devicetree/base
Я думаю, что оба псевдонима,
/sys/firmware/devicetree/base
вероятно, лучший выбор после укрощения/proc
.Затем вы можете получить доступ к свойствам dts из файлов:
Выходной формат для целых чисел является двоичным, поэтому
hexdump
необходим.dtc -I fs
Получить полное дерево устройств из файловой системы:
выводит dts в стандартный вывод.
Смотрите также: Как составить список дерева устройств ядра | Unix & Linux Stack Exchange
dtc
в BuildrootBuildroot имеет
BR2_PACKAGE_DTC=y
конфигурацию для размещенияdtc
внутри корневой файловой системы.QEMU
-machine dumpdtb
Если вы используете Linux внутри QEMU, QEMU автоматически генерирует DTB, если вы не указали его явно с помощью
-dtb
, и поэтому он также может вывести его напрямую с помощью:как упомянуто по адресу: https://lists.gnu.org/archive/html/qemu-discuss/2017-02/msg00051.html
Протестировано с этой установкой QEMU + Buildroot на ядре Linux v4.19 arm64.
источник
Я не уверен, правильно ли я вас понимаю.
Если вы работаете в системе, которая загружается с помощью dtb, ваше дерево устройств должно быть доступно внутри debugfs.
Вы также можете попробовать инструменты dtc от Pantelis Antoniou, они включают в себя fdtdump и fdtget, которые печатают точки из BLOB-объекта.
Если у вас вообще нет дерева устройств и вы не загрузили загрузку с dtb, вам придется самостоятельно просмотреть машинный код и добавить все специфические для устройства атрибуты и узлы в dts. Для такой загрузки не создается "синтетическое" дерево устройств. Отправной точкой будет аналогичная машина или родитель, а затем система будет работать по системе.
источник
dtb
может быть доступен через через debugfs еще , что будет опираться наCONFIG_DEBUG_FS
в.config
и даже если он установлен еще на простой прихоти , что они на самом деле используетсяdtb
для начала, я прочитал это право? Таким образом, с некоторой «неудачей» они не сделали ни одного и использовали какое-то прямое исправление ядра вместо интерфейса дерева устройств, верно? Так что это будет означать, что последним средством будет машинный код, поскольку они нарушают GPLv2 и закрывают исходные тексты ядра, верно?