Поиск «глубины» в /usr/src/linux/fs/overlayfs
показывает, что это просто проверка текущей глубины стека по FILESYSTEM_MAX_STACK_DEPTH
. Поиск этого во включенных файлах обнаруживает, что FILESYSTEM_MAX_STACK_DEPTH
определяется как 2 в /usr/src/linux/include/linux/fs.h
. В комментарии говорится
Maximum number of layers of fs stack. Needs to be limited to prevent kernel stack overflow
Очевидно, поскольку файловая системаproc
-добавляет еще один уровень косвенности по сравнению с dev
или sys
, вы превышаете глубину стека. Я не вижу какой-либо очевидной причины, по которой он не может стекироваться глубже, поэтому попробуйте увеличить FILESYSTEM_MAX_STACK_DEPTH
, перекомпилируйте ядро и посмотрите, работает ли оно.Это может привести к тому, что ядро будет использовать больше стека, а значит, больше памяти в целом, и это может сделать его медленнее. -Я не знаю подробностей о реализации.
Изменить в ответ на комментарий
Я предполагаю, что файловая система proc
должна отслеживать файлы для каждого модуля, чтобы она могла удалить их при удалении модуля. По сути, это оверлейная файловая система для всех модулей. Но мне пришлось бы подробно прочитать источник, чтобы убедиться в этом (, и вы тоже можете прочитать источник. :-).
Глубина стека находится в поле stack_depth
структуры суперблока, поэтому, чтобы показать ее, вам нужен какой-то способ доступа к структурам данных ядра. Я полагаю, что это может сделать какой-нибудь инструмент отладки ядра (, или вы всегда можете написать расширение/модуль ядра, который где-то отображает это ), но я не знаю конкретного способа.
Мы почти уверены, что это не вилочная бомба, вызывающая это. Если у него есть 60 секунд, то есть много вещей, которые можно пробежать.
Я бы сделал:
terminal1$ wssh rpi-server cat /var/log/syslog > rpi-syslog
terminal2$ wssh rpi-server tail -f /var/log/syslog
terminal3$ wssh rpi-server top
terminal4$ wssh rpi-server dmesg
(wssh
ждет открытия порта и немедленно запускает SSH, так что вы войдете как можно скорее. Он использует w4it-for-port-open
и nc
:
https://gitlab.com/ole.tange/tangetools/tree/master/w4it-for-port-open
https://gitlab.com/ole.tange/tangetools/tree/master/wssh)