[make-initrd] Не запускать сервис, если запущен другой сервис

Leonid Krivoshein klark.devel at gmail.com
Tue May 2 20:32:26 MSK 2023



On 5/2/23 19:09, Антон Мидюков wrote:
> 02.05.2023 22:50, Leonid Krivoshein пишет:
>> Добрый день!
>>
>>
>>
>> On 5/2/23 15:03, Alexey Gladkov wrote:
>>> On Tue, May 02, 2023 at 06:39:47PM +0700, Антон Мидюков wrote:
>>>> 02.05.2023 18:36, Alexey Gladkov пишет:
>>>>> On Tue, May 02, 2023 at 06:20:27PM +0700, Антон Мидюков wrote:
>>>>>> 02.05.2023 18:17, Alexey Gladkov пишет:
>>>>>>> On Tue, May 02, 2023 at 06:08:56PM +0700, Антон Мидюков wrote:
>>>>>>>> Здравствуйте
>>>>>>>>
>>>>>>>> А есть ли какая-то возможность указать в заголовке init-скрипта initrd, чтобы если он запускается, то другой init-скрипт не стартует?
>>>>>>> Таких зависимостей среди сервисов нет.
>>>>>>>
>>>>>>>> Или как-то иначе решить такую задачу?
>>>>>>>> Конкретика:
>>>>>>>> Нужно, чтобы plymouth не запускался, если будет запускаться bootchain. А уже сам bootchain бы запускал plymouth.
>>>>>>>> Другой вариант: не запускать plymouth, пока bootchain не завершит работу.
>>>>>>>> Причина в том, что plymouth занимает консоль и не даёт bootchain ничего в ней нарисовать.
>>>>>>>> Сейчас bootchain запускается на tty2, и проблемы поэтому нет. Но, если запускать с параметром cmdline console=tty1, при запущенном plymouth bootchain вечно ждёт доступ к tty1.
>>>>>>> bootchain может перед началом работы выполнить: plymouth --hide-splash .
>>>>>>>
>>>>>>> Почему такой вариант не подходит ?
>>>>>>>
>>>>>> plymouth при скрытии splash выводит тему details, т.е. сообщения идут через него. И вот через details bootchain почему-то не работает.
>>>>>> Помогает только nosplash, т.е. отключение запуска plymouth.
>>>>> Я очень плохо знаю опции этой утилиты. Я имел в виду опцию, которая его
>>>>> останавливает. Наверное это quit.
>>>>>
>>>> Да. Если полностью остановить, то работать будет. Просто это же моргание будет дополнительное. Было бы лучше не запускать.
>>> Если plymouth не должен запускаться совсем, то правильнее прописать его
>>> отключения ещё при сборке. В config.mk прописать:
>>>
>>> $(call feature-disables,plymouth)
>>>
>>> В самом initramfs отключение можно сделать только через костыли.
>> Мне тоже первая мысль пришла по поставленной задаче выставить именно такой конфликт сервисов, но дочитав тред до конца, вижу, что проблема специфична для определённых одноплатников и условий с серийной консолью. Прежде чем хвататься за перевод make-initrd-bootchain-interactive на tmux, а эта задача мне меньше всего пока понятна, возникает резонный вопрос: а как у пропагатора обстоит дело с плимутом и серийными консолями? Он же тоже использует TTY's?
>>
> plymouth запускает сам propagator на tty5, поэтому с ним не конфликтует. А выводит он в /dev/console, и выводит в неё только он, не с кем ему её делить.
> Ему нет разницы, что из себя представляет /dev/console. Но так как он выводит логи на tty4, с последовательной консоли их не получить.
> Если переделать bootchain на вывод в /dev/console, то придётся переделать запуск plymouth (на tty5 к примеру). Возможно, это более правильное решение.

/dev/console в make-initrd также используют демоны и rdshell, при этом 
есть механизм блокировки.

Так какое в итоге решение будет более правильным? Конфиг меняется вне 
bootchain, переменную можно запилить в m-p безусловно для 
соответствующих образов, это поможет? Можно сделать interactive 
зависящим от plymouth явно и запускать его из себя, хотя пока не 
понимаю, как это лучше сделать.


>



More information about the Make-initrd mailing list