Назад | Перейти на главную страницу

Как включить файлы ядра в CentOS 6

Я пытаюсь включить файлы ядра на машине с CentOS 6; однако ничего из того, что я пробовал, не привело к созданию файлов ядра ... вот что я сделал:

Добавлены следующие две строки в /etc/security/limits.conf:

*     hard    core    unlimited
*     soft    core    unlimited

Добавлена ​​следующая строка в /etc/sysconfig/init:

DAEMON_COREFILE_LIMIT='unlimited'

Добавлена ​​следующая строка в /etc/profile:

ulimit -c unlimited > /dev/null 2>&1

Добавлены следующие строки в /etc/sysctl.conf:

kernel.core_pattern = '/srv/core/%p_%t.core'
fs.suid_dumpable = 1

Я убедился, что /srv/core существует и имеет 777 разрешения. Я казнил init 6 для перезагрузки ОС. После восстановления системы я выполнил следующий сценарий C в попытке создать файл ядра:

#include <sys/types.h>
#include <unistd.h>
#include <signal.h>

int main(int argc, char **argv) {
  kill(getpid(), SIGQUIT);
}

Не производит файл ядра :(

Что я упускаю или делаю не так? Заранее спасибо за вашу помощь!

Если ваша программа работает от имени root, то добавленные вами записи limits.conf не будут применяться. «*» относится ко всем пользователям, кроме root.

Если ваша программа работает от имени пользователя root, добавьте следующее:

root     hard    core    unlimited
root     soft    core    unlimited

Также убедитесь, что SELinux не препятствует записи дампа ядра.

getenforce

Если SELinux запущен, убедитесь, что аудит запущен, попробуйте получить дамп ядра, а затем выполните:

grep -i denied /var/log/audit/auditd

Проблема, вероятно, в том, что путь указан для core_pattern. Попробуйте вместо этого:

kernel.core_pattern = /srv/core/%p_%t.core