Вопрос или проблема
Раньше это работало нормально, но из-за сбоя карты micro-sd в Raspberry Pi Zero W мне пришлось переустановить систему. Старая система работала на более старой версии ОС, так что это определенно может быть частью проблемы. Когда я ввожу команду:
systemctl enable i2cget.service
Я получаю ошибку:
Failed to enable unit: Cannot alias i2cget.service as i2cget
и никакая символьная ссылка не создается.
Странно, но когда я проверяю статус, он говорит, что она включена, и когда я перезагружаюсь, служба активна. Я не понимаю, что происходит. Может ли быть проблема с тем, что символьная ссылка не существует в /etc/systemd/system/multi-user.target.wants?
Это работает под Raspbian 1:6.6.51-1+rpt3
/lib/systemd/system/i2cget.service:
[Unit]
Description=get-i2c демон
After=network.target
Requires=network.target
[Service]
Restart=on-failure
RestartSec=4s
ExecStart=/usr/bin/python3 /home/fpp/media/scripts/get-i2c.py
[Install]
Alias=i2cget
WantedBy=multi-user.target
Ответ или решение
Ошибка, которую вы наблюдаете, связана с невозможностью создания алиасов для сервисов в системе systemd. Давайте детально разберем, что могло привести к появлению ошибки "Failed to enable unit: Cannot alias i2cget.service".
Описание Проблемы:
Вы пытаетесь включить службу i2cget на Raspberry Pi Zero W, используя команду systemctl enable i2cget.service
. Однако возникает ошибка, связанная с попыткой создания алиаса для сервиса.
Причины и Решения:
-
Конфликт Alias:
- В разделе
[Install]
в файле/lib/systemd/system/i2cget.service
у вас указанAlias=i2cget
. Это сообщение указывает на то, что система не может создать алиас, потому что имя i2cget уже используется, или systemd не поддерживает создание алиасов для сервисов.
Решение:
- Попробуйте убрать или изменить запись
Alias=i2cget
. Если алиас не является критически необходимым, удалите его. - После изменения сохраните файл и выполните
sudo systemctl daemon-reload
для обновления конфигурации systemd.
- В разделе
-
Проблема с Ссылкой (Symlink):
- Обычно команда
systemctl enable
создает символическую ссылку в директории/etc/systemd/system/multi-user.target.wants/
. Если запись о том, что служба включена, уже существует, но физической ссылки нет, возможно, был сбой при создании ссылки.
Решение:
- Убедитесь, что никакой конфигурационный сбой не мешает созданию символической ссылки. Вы можете вручную создать символическую ссылку, если необходимо:
sudo ln -s /lib/systemd/system/i2cget.service /etc/systemd/system/multi-user.target.wants/i2cget.service
- Обычно команда
-
Версия и Конфликты ОС:
- Вы упомянули, что обновили вашу систему на новую версию ОС после сбоя SD-карты. Версии systemd или других компонентов могли измениться, что может вызывать непредвиденные проблемы совместимости.
Решение:
- Проверьте обновления для вашей текущей версии Raspbian и systemd, примените все необходимые исправления, используя
sudo apt update && sudo apt upgrade
.
Заключение:
Чтобы исправить указанную проблему, начните с редактирования сервисного файла, чтобы ликвидировать алиас столь, насколько это возможно. Убедитесь, что все символические ссылки находятся на своих местах или создайте их вручную при необходимости. Проверка и обновление системы также может устранить конфликция между пакетами.
Вышеизложенные шаги должны помочь вам диагностировать и исправить проблему, связанную с включением службы в новой версии вашей ОС на Raspberry Pi Zero W.