Позвольте мне ответить, насколько я могу с предоставленной информацией.
Во-первых, SLES 12 (и более поздние версии )действительно не нуждаются в пакете ядра -kdump. Этот особый вариант ядра был нужен только в древние времена, потому что ядро паники должно быть загружено по физическому адресу, отличному от работающего ядра, но адрес загрузки можно было изменить только во время компиляции (, иначе ядро нельзя было перемещать ). ].
Во-вторых, kdump не запускается, потому что базовый системный вызов kexec_file_load
завершается с ошибкой EADDRNOTAVAIL
. Это происходит, если система не может выделить один или несколько буферов, необходимых для загрузки ядра паники в оперативную память. Обратите внимание, что теоретически может быть достаточно зарезервированной памяти для ядра паники, но поскольку выделение имеет некоторые дополнительные ограничения, накладываемые загрузочным кодом ядра Linux и/или драйверами, эта оперативная память может не использоваться для загрузки ядра паники. Другой системе может повезти больше благодаря другому расположению физической памяти.
В качестве первого шага я бы попробовал увеличить размер зарезервированной памяти в командной строке ядра (, например. crashkernel=256M
), перезагрузитесь и посмотрите, поможет ли это.
Systemd может запускать службу условно относительно другой службы, применяя зависимые отношения, которые вы указываете в файле модуля службы. У меня была такая же проблема, как и у вас, когда мне нужно было выполнить скрипт в определенном порядке, поэтому я создал для него службу systemd и запустил свою собственную службу ПОСЛЕ другой службы.
Звучит сложнее, чем есть на самом деле. Не очень сложно и стоит знать об этом для дальнейшего использования.
Это (2 )шага процесса:
Прежде чем указать условную связь для запуска сценария(в качестве службы)либодо , либопослев файле модуля службы, необходимо понять, когда и как услуги поднимаются -вверх.
Приведенная ниже команда отобразит запуск служб -с соответствующим временем от включения питания -до :
.sudo systemd-analyze plot > /home/pi/services-startup.svg
Откройте файл с помощью Средство просмотра изображений , и вы увидите при запуске системы, когда запускаются службы.
Другие инструменты для понимания зависимостей между сервисами:
sudo systemd-analyze critical-chain
sudo systemd-analyze critical-chain someServiceName.service
tree /etc/systemd/system
Существует множество директив, которые можно использовать для создания зависимых отношений между сервисами, Before
и After
являются наиболее очевидными:
https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Before=
У меня был сценарий, который отправлял по электронной почте IP-адрес безголового Pi, который не работал из-за порядка, в котором сценарий (запускался как служба ). Я провел приведенный выше анализ и создал следующую конфигурацию файла модуля для выполнения моего сценария в качестве службыoneshot .Это было достигнуто путем ожидания запуска моей пользовательской службы до ПОСЛЕ завершения службы motion
:
cat <<EOF> /etc/systemd/system/email-camera-address.service
[Unit]
Description=Email IP Address of Camera on Boot
Requires=network-online.target
After=motion.service
[Service]
User=pi
Group=pi
Type=oneshot
ExecStart=$PATHSCRIPTS/email-camera-address.sh
[Install]
WantedBy=multi-user.target
EOF
chmod 644 /etc/systemd/system/email-camera-address.service
systemctl enable email-camera-address.service
Полный скрипт, взятый из приведенного выше, можно найти ЗДЕСЬ: