initctl: Невозможно подключиться к Upstart

Простой ответ: это зависит от вашего оборудования и требований.

Большинство дистрибутивов предоставляют вам уже скомпилированное ядро. Эти ядра созданы так, чтобы работать на максимально возможном количестве машин, поэтому они содержат много вещей, которые вам не нужны.

Ядро содержит много всего. Вы хотите скомпилировать определенные драйверы - к сожалению, я не могу сказать вам, какие драйверы - они зависят от вашего оборудования. Остальное можно пропустить - драйверы, которые вы не будете использовать, вам все равно не понадобятся.

Ядро также поддерживает некоторые файловые системы - если вы знаете, что не будете использовать определенные файловые системы, вы можете не компилировать и эти драйверы - вы всегда можете перекомпилировать ядро, когда возникает необходимость в использовании какой-либо файловой системы.

Допустим, вы случайный пользователь Linux. Что делать?

Я бы посоветовал оставить ядро ​​как есть . Обычно ядро ​​в порядке, и вы не получите ничего заметного от настройки. Если у вас нет опыта, это также может стать беспорядком, если вы сделаете что-то не так, так что на всякий случай - оставьте это как есть.

То же самое, если вы «хакер» или «программист».Вам не нужно настраивать ядро, чтобы быть лучшим программистом / упростить программирование - в конце концов, программы должны работать на ядре, которое тоже не настраивается (или в чем будет смысл программы?). Конфигурация ядра предназначена в основном для энтузиастов или людей, которым это необходимо (например, ядро ​​для встроенных устройств). Funtoo - новый проект от создателя Gentoo - также использует предварительно скомпилированное ядро.

Самостоятельная компиляция ядра может оказаться интересным занятием. Вы можете увидеть (немного), как это работает, и что «под капотом». Вы можете убедиться, что некоторые вещи, которые вы хотите, включены / выключены. Вы можете узнать больше о Linux.

Но, честно говоря, если он вам не нужен - вы в порядке с ядром по умолчанию. Если вы хотите большего, вы всегда можете найти предварительно скомпилированные усиленные или иным образом настроенные ядра, и все будет в порядке.

1
10.03.2018, 15:59
1 ответ

/lib/systemd/systemd-sysv-install— это хук, работа которого заключается в выполнении не -собственных действий включения/отключения, которые распознаются systemd-sysv-generatorи другими системами управления службами. Ubuntu /lib/systemd/systemd-sysv-installпросто вызывает Ubuntu /usr/sbin/update-rc.d. Это, в свою очередь, вызывает /sbin/insserv. Тот, в свою очередь, видит, что в /etc/init.dесть скрипт van Smoorenbug rc, и пытается получить от него информацию о заголовке LSB.

У

/sbin/insservесть особый случай, когда он распознает, когда найденный скрипт van Smoorenburg rcдействительно является символической ссылкой на программу Upstart /lib/init/upstart-job. Поскольку это универсальная программа, которая заменяет многие сценарии van Smoorenburg rc, в ней не будет информации заголовка LSB, соответствующей конкретным службам. Таким образом, /sbin/insservпытается вызвать сценарий rc, точнее /lib/init/upstart-job, с подкомандой lsb-header, чтобы заставить его рассчитать и распечатать правильные заголовки LSB для службы.

Но на самом деле /lib/init/upstart-jobне поддерживает эту подкоманду. Программное обеспечение никогда не интегрировалось должным образом. /lib/init/upstart-jobзапускает initctl, который пытается подключиться к работающему диспетчеру служб Upstart и, конечно же, терпит неудачу (, потому что он не запущен ), и выводит первую ошибку, которую вы видите, о невозможности подключения к сокету /com/ubuntu/upstart, а затем печатает вторую ошибку, которую вы видите, о том, что подкоманда lsb-headerне поддерживается «для заданий Upstart» (, хотя это было то, что было для).

В итоге все идет не так.

Уже несколько лет все идет не так. Можно найти людей, сообщающих об этой ошибке,что, конечно же, произошло, когда люди insservпрямо или косвенно управляли Апстартом и ван Смуренбургом init, и на тот момент прошло уже более десяти лет. Об этом спрашивали на AskUbuntu в 2016 году. Это несколько ошибок Launchpad, таких как эта от 2016 года .

Интересно, что в одной из этих ошибок Launchpad, одной из 2010, кто-то попытался предоставить патч, чтобы upstart-jobпонимал подкоманду lsb-headerи давал insservкак минимум что-то для работы, даже если это было довольно неинформативно. Никто, кроме некоторых пользователей, не имевших доступа к самостоятельному исправлению программного обеспечения, этого не заметил.

Конечно, эти сценарии van Smoorenburg rcявляются оболочкой для Upstart в интересах программного обеспечения и людей, которые не понимают, как управлять Upstart напрямую с помощью initctl, но знают, как управлять старым van Smoorenburg rc. ] скрипты. Однако вы используете Ubuntu 16; системная операционная система. Механизм обратной совместимости systemd берет некоторые сценарии ван Смуренбурга rc, которые сами по себе являются чужим механизмом обратной совместимости, оборачивая их в нативные модули systemd, и в конечном итоге пытается отразить отправленные команды. к диспетчеру служб systemd к диспетчеру служб Upstart, которого там нет.

Это просто смешно.

  1. Найдите в /etc/init.dсимволическую ссылку, указывающую на /lib/init/upstart-job. Судя по всему /etc/init.d/screen-cleanup.
  2. Удалите его.

Вишенкой на торте является то, что transmission-daemonуправляется родным сервисным модулем systemd(/lib/systemd/system/transmission-daemon.service)в Ubuntu 16, а механизмы обратной совместимости van Smoorenburg rcи /lib/systemd/systemd-sysv-installне применяются к нему в первую очередь..

Дополнительная литература

8
27.01.2020, 23:12

Теги

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