Вопрос или проблема
Я пытаюсь обеспечить поддержку дампов памяти на своем устройстве на базе ARM. Я прочитал о /etc/limits
и /etc/security/limits.conf
. В моей файловой системе нет последнего. Поэтому я внес следующие изменения в /etc/limits
root C100000
После добавления этой строки в /etc/limits
, я ожидал создание дампа памяти, но ulimit -a
показывает мне
core file size (blocks, -c) 0
Почему эти изменения в /etc/limits
никак не отражаются?
Что мне now делать?
Должен ли я добавить /etc/security/limits.conf
в свою файловую систему?
Я не рассматриваю вариант использования setrlimit()
.
В зависимости от вашей системы, вам также может потребоваться отредактировать /etc/pam.d/common-session*
и добавить
session required pam_limits.so
И, конечно, вам нужно будет начать новую сессию, чтобы ваши изменения вступили в силу.
Для создания дампа памяти добавьте следующую команду в /etc/profile
ulimit -c 10000
Эта команда устанавливает ограничение размера дампов памяти на 10000 байт (вы можете изменить его на неограниченное). Затем выполните /etc/profile/
снова с помощью source /etc/profile
или . /etc/profile
Ответ или решение
Изменения в файле /etc/limits могут не оказывать влияния на вашу встроенную систему по нескольким причинам. Давайте подробно рассмотрим, почему это происходит и что можно сделать для решения вашей проблемы с настройкой дампов ядра на базе ARM.
1. Ограниченная поддержка PAM и конфигурационных файлов
Во-первых, на встроенных системах часто отсутствует полноценная поддержка PAM (Pluggable Authentication Module). Если ваш дистрибутив Linux, используемый на целевой системе, не поддерживает PAM, то программа pam_limits.so
, которая управляет настройками ограничений, может быть недоступна. Это означает, что изменения в файле /etc/limits
не будут применены, и система не сможет увидеть ваши ограничения по размеру файлов дампа.
2. Проблемы с инициализацией сеанса
Даже если вы изменили /etc/limits
, важно стартовать новый сеанс, чтобы изменения вступили в силу. Например, если настройки были изменены в существующем сеансе, они не будут обновлены, пока вы не выйдете из системы и не войдете снова. В контексте вашего ARM-устройства, часто могут быть настройки, которые управляют автозагрузкой или созданием сеансов, и это может влиять на ваши изменения.
3. Изменения в /etc/security/limits.conf
Если в вашей файловой системе отсутствует файл /etc/security/limits.conf
, это может быть еще одной причиной, по которой ваши изменения в /etc/limits
игнорируются. Вы можете создать этот файл и внести в него необходимые ограничения, что может помочь в их применении. Важно также проверить, поддерживает ли ваша система формат этого файла.
4. Установка ulimit в профиль
Как упомянуто в обсуждении, вы можете установить необходимые ограничения для размера файлов дампа с помощью ulimit
в вашем файле /etc/profile
. Команда:
ulimit -c 10000
устанавливает ограничение на размер дампа ядра в 10000 байт. Не забудьте перезагрузить профиль, выполнив команду source /etc/profile
или . /etc/profile
, чтобы настройки были применены. Если вы хотите разрешить создание дампов без ограничений, вы можете установить ulimit -c unlimited
.
Рекомендуемые действия
-
Создайте и настройте файл
/etc/security/limits.conf
, если это возможно. Это может помочь в применении ваших изменений. -
Добавьте строчку
session required pam_limits.so
в конфигурационные файлы PAM, если ваша система поддерживает PAM. -
Проверьте, что
ulimit
устанавливается в файловом профиле и выполните необходимые команды для инициализации новых сеансов. -
Как вариант, исследуйте возможность использования альтернативных методов управления ограничениями, если ваша система очень сильно обрезана и не поддерживает стандартные механизмы.
Внесение вышеописанных изменений должно помочь вам успешно настроить генерацию файлов дампа на вашем устройстве. Если у вас есть дополнительные вопросы или необходимость в помощи, не стесняйтесь обращаться.