Это не очень выполнимо "вывести всю систему" из пространства пользователя. Как я указывал в предыдущем вопросе, который вы задали, лучший способ - использовать инфраструктуру трассировки в режиме ядра, такую как kprobes
, systemtap
или dtrace
. Вы смотрели на что-нибудь из этого? Есть ли причина, по которой ни один из них не подойдет для вашего варианта использования?
Единственный способ действительно надежно отделить всю систему от пространства пользователя - начать трассировку с процессом init
... но я не уверен, что init
или systemd
были бы очень рады, если бы вы использовали его, так как это очень низкоуровневый материал, который довольно хрупок и его легко сломать (и, к тому же, сложно внедрить в него команды-оболочки).
Вот почему механизмы проверки самого высокого качества имеют некоторый тип модуля ядра, потому что ядро "видит все". Это особенно актуально, так как вы пытаетесь отслеживать активность на символьных устройствах, таких как /dev/console
и /dev/tty*
, а ядро имеет прямой контроль над вызовами к этим устройствам, поскольку они реализованы в пространстве ядра.