Поскольку кажется, что raspbian использует timesyncd , я бы отрегулировал ваш файл модуля, чтобы он зависел от этой цели:
[Unit]
Description=desc
Requires=mysql.service
After=syslog.target mysql.service systemd-timesyncd
# ^^^ the addition ^^^
[Service]
Type=simple
...
Если вы отключили timesyncd в пользу ntp, замените имя службы NTP.
Похоже , что более новые (239+ )версии systemd поддерживают службу синхронизации времени -, которая кажется более полезной, поскольку она ожидает, пока часы не будут синхронизированы, а не только начало процесса синхронизации.
Если короткое время запуска не критично, и вы обнаружите, что ваша служба все еще запускается до того, как время было синхронизировано,вам может показаться достаточным добавить короткую задержку запуска вашей службы с помощьюExecStartPre
:
...
ExecStartPre=sleep 30
...
Скорректируйте время сна на основе экспериментов со временем, которое надежно требуется вашему пи для синхронизации времени.
У меня такая же проблема. Суть в том, что update -grub создает пункт меню для Manjaro, но ему нужны 2 файла в строке initrd:
/boot/amd-ucode.img
/boot/initramfs-5.8-x86_64.img
, но генерирует только первое.
Это известная ошибка , и вы можете решить ее, следуя ответу, найденному здесь
Вот :нужно изменить два файла; Я тестировал его на своем Lubuntu 16.04.1 и Manjaro Linux.
В Ubuntu:
В файле /usr/lib/linux-boot-probes/mounted/40grub2
есть функция parse_grub_menu()
, которая обрабатывает не все параметры initrd. Вам нужно изменить 'case "$1" в... initrd )':
a )удалить назначение
initrd="$(echo "$2"...)"
b )добавить две строки вместо удаленной:
shift 1
initrd="$(echo "$@" | sed 's/(.*)//')"
Файл /etc/grub.d/30_os-prober
внутри цикла for
фиксирует назначениеLINITRD
:
for LINUX in ${LINUXPROBED}; do
...
LINITRD="`echo ${LINUX} | cut -d ':' -f 5 | tr '^' ' '`"
Первое исправление учитывает всю доступную информацию initrd для Manjaro. Второе исправление очищает сгенерированную строку initrd , заменяя некоторые символы ^
пробелами.