Почему изменения в /etc/limits не работают на встроенной системе

Вопрос или проблема

Я пытаюсь обеспечить поддержку дампов памяти на своем устройстве на базе 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.

Рекомендуемые действия

  1. Создайте и настройте файл /etc/security/limits.conf, если это возможно. Это может помочь в применении ваших изменений.

  2. Добавьте строчку session required pam_limits.so в конфигурационные файлы PAM, если ваша система поддерживает PAM.

  3. Проверьте, что ulimit устанавливается в файловом профиле и выполните необходимые команды для инициализации новых сеансов.

  4. Как вариант, исследуйте возможность использования альтернативных методов управления ограничениями, если ваша система очень сильно обрезана и не поддерживает стандартные механизмы.

Внесение вышеописанных изменений должно помочь вам успешно настроить генерацию файлов дампа на вашем устройстве. Если у вас есть дополнительные вопросы или необходимость в помощи, не стесняйтесь обращаться.

Оцените материал
Добавить комментарий

Капча загружается...