Запустите Unified Remote Server перед входом в систему с помощью службы systemd

Я решил проблему с записью образа DD на USB-накопитель вместо образа ISO.

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

При использовании инструмента Rufus в главном диалоговом окне такой опции нет, но после подтверждения форматирования в другом диалоговом окне можно выбрать, следует ли создавать образ ISO (по умолчанию )или образ DD.

1
17.07.2020, 10:40
2 ответа

На Raspberry Pi 4B с Buster у меня возникали разные ошибки при попытке запустить urserverкак службу systemd. Может вообще не иметь отношения к вашим проблемам.

Мне помогло :Я думаю, что ключ был в том, чтобы выйти из стартового скрипта с выходом 0, чтобы systemd игнорировал ошибки, вызванные triggerhappy.

urserver.service:

[Unit]
Description=Unified Remote Server
After=syslog.target network.target

[Service]
Type=forking
User=root
Group=root
ExecStart=/opt/urserver/urserver-start --no-notify
ExecStop=/opt/urserver/urserver-stop
SyslogIdentifier=urserver

[Install]
WantedBy=multi-user.target

урсервер -старт:

#!/bin/sh


#
# Path to installation directory
#
EXEC_PATH="/opt/urserver/urserver"
PID_PATH="$HOME/.urserver/urserver.pid"
ICON_PATH="/usr/share/icons/hicolor/96x96/apps/urserver.png"
REMOTES_PATH="$HOME/.urserver/remotes"
BACKUP_PATH="$HOME/.urserver/backup"


#
# Check arguments
#
NO_COPY=false
NO_MANAGER=false
NO_NOTIFY=false

for var in "$@"
do
       if [ "$var" = "--no-copy" ]; then
               NO_COPY=true
       elif [ "$var" = "--no-manager" ]; then
               NO_MANAGER=true
       elif [ "$var" = "--no-notify" ]; then
               NO_NOTIFY=true
       fi
done


#
# Copy user files
#
if ! "$NO_COPY" = true; then
   echo "copying user files"
   mkdir -p "$HOME/.config/autostart/"
   cp -uf /opt/urserver/urserver-autostart.desktop $HOME/.config/autostart/urserver.desktop

   echo "backup remotes"
   mkdir -p $BACKUP_PATH/
   cp -af $REMOTES_PATH/. $BACKUP_PATH/

   echo "create custom folder"
   mkdir -p $REMOTES_PATH/custom/

   echo "copying remotes"
   rm -rf $REMOTES_PATH/remotes/
   rm -rf $REMOTES_PATH/bundled/
   mkdir -p $REMOTES_PATH/bundled/
   cp -af /opt/urserver/remotes/. $REMOTES_PATH/bundled/
else
   echo "skipping copy"
fi


#
# Start the server
#
echo "starting server"
mkdir -p "$HOME/.urserver"
$EXEC_PATH --remotes=$REMOTES_PATH --daemon


#
# Open the web manager
#
if ! "$NO_MANAGER" = true; then
   echo "opening manager"
   sleep 1
   xdg-open http://localhost:9510/web 2> /dev/null
else
   echo "skipping manager"
fi
exit 0
1
18.03.2021, 23:19

Я бы начал с удаления Environment=HOME=~.

systemdавтоматически устанавливает $HOME, поэтому вам не нужно указывать его, если только вы не хотите, чтобы он был отличным от -по умолчанию. Когда пользователь root, я думаю, $HOME, вероятно, будет установлен на /root. Кроме того, ~— это ярлык shдля домашнего каталога, но вне вашей оболочки это ничего не значит. systemdне является shи не поддерживает весь синтаксис sh. Вы также заметите, что такие вещи, как &&или |, не будут работать в ExecStart=.

Удаление строки Environment=может решить все проблемы. Но если нет, вот еще кое-что, на что стоит обратить внимание:


User=root
Group=sudo

Это немного странно. User=rootуже подразумевается, когда он запускается на системной шине, поэтому он избыточен. Я мог видеть, что Group=sudoполезен только тем, что новые файлы могут быть созданы, принадлежащие группе sudo, хотя это, вероятно, интересно только в том случае, если rootна самом деле является членом sudo, и ваш по умолчанию umaskсоздает новые файлы как группа -доступны для чтения/записи. Я думаю, вы можете удалить их, хотя это может не иметь большого значения.


Поскольку ваш сервис — Type=forking, рассмотрите возможность добавления:

PIDFile=/root/.urserver/urserver.pid

это поможет systemd надежно идентифицировать основной процесс службы


Ошибки DSO_loadуказывают на то, что ваше приложение не может динамически загружать модуль. Сообщение выглядит усеченным, но относится к ssl.

Когда я ищу man openssl, я вижу, что переменная OPENSSL_CONFдолжна указывать на файл конфигурации, а не на каталог, содержащий файл конфигурации. Попробуйте удалить эту строку или использовать что-то вроде:

Environment=OPENSSL_CONF=/etc/ssl/openssl.cnf

Обратите внимание, что это, вероятно, расположение по умолчанию, поэтому переменную, вероятно, не нужно устанавливать.

0
18.03.2021, 23:19

Теги

Похожие вопросы