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

Alexey Gladkov gladkov.alexey at gmail.com
Tue May 2 21:14:01 MSK 2023


On Tue, May 02, 2023 at 08:32:26PM +0300, Leonid Krivoshein wrote:
> 
> 
> 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, при этом 
> есть механизм блокировки.

Механизм блокировки не позволит занять консоль. Кроме того rdshell сам не
вызывается и нужно просто остановить отсчёт rootdelay. Сервисы же по
умолчанию пишут в свои логи, а не на console.

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



More information about the Make-initrd mailing list