LINUX.ORG.RU

В OpenRC добавлены пользовательские сервисы

 


2

2

OpenRC – система инициализации для Linux-систем, которая поставляется вместо systemd в таких дистрибутивах как Gentoo и Alpine Linux.

В ветку master репозитория openrc добавлена функциональность, необходимая для запуска сервисов в сессии пользователя с помощью этой системы инициализации.

Конфигурационные файлы и скрипты инициализации пользовательских сервисов размещаются в следующих папках:

/etc/user/init.d
${XDG_CONFIG_HOME}/rc/init.d

/etc/user/conf.d
${XDG_CONFIG_HOME}/rc/conf.d

${XDG_CONFIG_HOME}/rc/rc.conf
${XDG_CONFIG_HOME}/rc/runlevels

Все поставляемые с openrc утилиты, такие как собственно openrc и rc-*, получили дополнительную опцию --user / -U для работы с пользовательскими сервисами.

Данные изменения вероятно войдут в ещё не выпущенный релиз openrc 0.57.

>>> коммит с документацией

★★★★★

Проверено: dataman ()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от mord0d

Ты чё дурак что ли? Рефанкторинг, разбить на модули, преписать под новый стандарт компилятора, перейти на новые библиотеки… Пришли новые люди - это написано не нами… Инициализация - говно, ща чОтко всё сделаем. Дохрена чего. Особенно актуально с инициализацией запуска сервера. Вот стоит с аптаймом года два-три, дисковая ёмкость заканчивается… Железо за хренову тучу километров. Казалось бы… Ну, заодно и обновить ПО. Всё обновлено. Всё здорово. Человек на месте диски крутит. KVM на крайняк подключен… И казалось бы… Загрузись со старым initrd. Примонтируй (бл… по UID) корень, тупо запусти сервисы, которые запустятся (ssh практически всегда запускается), подключись и разруливай. Хрен там. А почему? Да нормально - новая версия systemd.

Перезапуск - хрен с ним. Раз в три года можно и на консоли четыре пять часов погемороиться. А после тупого обновления каждые пятнадцать минут начинает подать основной сервис - база данных у порядка тысычи клиентов - какая прелесть.

qwe ★★★
()
Последнее исправление: qwe (всего исправлений: 1)
Ответ на: комментарий от qwe

Вот стоит с аптаймом года два-три

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

gaylord
()
Ответ на: комментарий от qwe

Самому не смешно? CVE читай, думай, какие у тебя, включай мозг

Да-да, вечно эти отмазки. Я почитал твои старые темы – все сходится. Криворукий дядя, который бекапы настраивать не умеет, бухает и учит нас всех жизни. Печально признавать, что LOR превратился в гараж для алкашей от мира IT.

gaylord
()
Ответ на: комментарий от gaylord

Криворукий дядя, который бекапы настраивать не умеет,

Подозреваю о чём Вы. Заметьте, советы не помогли. Но восстановил базу данных полностью на момент краха и все бинарные данные. Клиенты не потеряли ни байта.

Малыш, так можешь?

qwe ★★★
()

К слову, что об OpenRC думают разработчики Alpine:

2025-01-03 20:05:05 <Ariadne> alpine with openrc is not going anywhere, probably won't ever go anywhere because there's too many unknowns in switching the init away (even if openrc maintenance situation is... wavering between a bus factor of 0 and 1 for years now)
2025-01-03 20:05:51 <ncopa> i have been thinking of dinit or even write my own init

То есть им страшно, но деваться некуда, потому что они там застряли. Это буквально vendor lock-in :DDD

gaylord
()
Последнее исправление: gaylord (всего исправлений: 1)
Ответ на: комментарий от gaylord

ниче не знаю, конфиг есть значит лезет. в этом же конфиге и /tmp перечислено куда тоже лезет. системд должно заниматься только запуском программ и максимум управлением их ресурсами, а не в каждую дырку проникать и костылить там.

bernd ★★★★★
()
Ответ на: комментарий от bernd

ниче не знаю, конфиг есть значит лезет. в этом же конфиге и /tmp перечислено куда тоже лезет. системд должно заниматься только запуском программ и максимум управлением их ресурсами, а не в каждую дырку проникать и костылить там.

Почему? Мне нравится, что systemd + coreutils + util-linux – это базовая ОС, как в *BSD.

gaylord
()
Последнее исправление: gaylord (всего исправлений: 2)
Ответ на: комментарий от bernd

кому-то и с попой различные экшены нравятся, но это же не означает, что это нормально.

А почему базовая ОС это не нормально? Это буквально то, с чего UNIX начинался.

gaylord
()
Ответ на: комментарий от gaylord

Вот не надо: «Учить нас всех…».

Малыш, какой жизни я тебя учил? Я как-то… много чего можно было спросить как-то… Но жизни начал учить именно ты («кончай бухать»). Не смог ответветить на простой вопрос. А ЛОР уже «печально признаться».

qwe ★★★
()
Ответ на: комментарий от gaylord

нет, начинался он НЕ с комбайнов, а с набора команд, которые выполняют только 1 функцию, но делают это хорошо. к системд это не относится.

bernd ★★★★★
()
Ответ на: комментарий от gaylord

Я могу гораздо лучше:

Иннокентий, не узнаю Вас в гриме. Гендальф?

qwe ★★★
()
Ответ на: комментарий от bernd

нет, начинался он НЕ с комбайнов, а с набора команд, которые выполняют только 1 функцию, но делают это хорошо. к системд это не относится.

Это твои фантазии. По факту systemd это набор компонентов, которые прекрасно вытаскиваются без привязки к PID1. Тот же Alpine этим сейчас занимается, чтобы заменить elogind и eudev. В рамках самого systemd они могут быть включены/выключены по желанию, и по умолчанию большая часть сервисов systemd выключена. Короче, ты просто не шаришь.

gaylord
()
Последнее исправление: gaylord (всего исправлений: 1)
Ответ на: комментарий от gaylord

Вы тут отходите от своего амплуа. Начинаете нормально мыслить.

qwe ★★★
()
Ответ на: комментарий от gaylord

Да, б****, пойми, сейчас systemd - охрененный набор компонентов. Но… Init, который работает в первом пиде. Вот сам попробуй (не безнадёжен, чую) - скажи grub в коммандной строке ядру, что root=[а тут хоть по метке] init=/bin/bash (или sh, что есть). Создай каталог. Разрули руками точки монтирования. Примонтируй туда нужный корень, потом dev и proc. Сделай смену корневой и «оборот» корневой с переходом первого pid на другой init.

Попробуй. Поймёшь некоторые разводы.

qwe ★★★
()
Ответ на: комментарий от bernd

кому-то и с попой различные экшены нравятся, но это же не означает, что это нормально.

Бросьте. Это ничего не значит.

qwe ★★★
()
Ответ на: комментарий от bernd

почему базовая ОС это не нормально? Это буквально то, с чего UNIX

«А это «Большая красная книга, которая не вмещается ни на одной полке»». (с) Фильм «Хакеры».

Обожаю Джоли. (там ей лет четытнадцать - пятнадцать). Круче только Мила Йовович в «Обитель Зла»

А книга… Было издание в переводе. У меня есть. Даже с афтографом (не, не Джоли) Степанцова В.Ю.

qwe ★★★
()
Последнее исправление: qwe (всего исправлений: 10)
Ответ на: комментарий от qwe

сейчас systemd - охрененный набор компонентов. Но… Init, который работает в первом пиде. Вот сам попробуй (не безнадёжен, чую) - скажи grub в коммандной строке ядру, что root=[а тут хоть по метке] init=/bin/bash (или sh, что есть). Создай каталог. Разрули руками точки монтирования. Примонтируй туда нужный корень, потом dev и proc. Сделай смену корневой и «оборот» корневой с переходом первого pid на другой init.

Со всеми этими задачами прекрасно справляется «Бизибокс». Для запуска вычислительного устройства, набор ПО на котором неизменен, достаточно лишь загрузчика, ядра «Линукса», «Бизибокса» и файлов прикладного ПО на носителе с файловой системой. Что гораздо проще, чем вникать как всё устроено в «Систем-Ди».

Запускатель служб «Систем-Ди» изначально создан для бестолочей, которые никогда не станут вникать во внутренности. Для недоучек-админов, если короче.

Enthusiast ★★★
()
Ответ на: комментарий от Enthusiast

Толсто. Сделаем это упражнение интересным: покажи как только с помощью busybox гарантированно получить dhcp, предварительно загрузив нужные модули, без ручного modprobe всех известных ethernet драйверов.

gaylord
()
Последнее исправление: gaylord (всего исправлений: 3)
Ответ на: комментарий от Enthusiast

У тебя в соседних строчках «А гораздо проще Б» и «Б создано для недоучек, которые не будут вникать».

thesis ★★★★★
()
Ответ на: комментарий от gaylord

Сделаем это упражнение интересным: покажи как только с помощью busybox гарантированно получить dhcp, предварительно загрузив нужные модули, без ручного modprobe всех известных ethernet драйверов.

Ты сомневаешься, что вычислительное устройство под управлением «Бизибокса» способно получить IP-адрес с сервера? И зачем тебе именно модули подгружать, если необходимые драйверы можно сразу вложить в ядро «Линукса» на вычислительном устройстве, на котором состав ПО неизменен?

Enthusiast ★★★
()
Ответ на: комментарий от gaylord

Сделаем это упражнение интересным: покажи как только с помощью busybox гарантированно получить dhcp, предварительно…

А попробуйте сами. Или не пробуйте. В busybox есть не только прекрасный DHCP клиент, но и замечательный init. Проверено.

А модули сами подгружаются (внезапно!). udevd называется хрень, которая их подгружает. А в busybox есть по крайней мере mdev.

Рекомендую на досуге прошивочку android ковырнуть для любого старого телефона (версии андроид 2.5-2.6). Там легко можно разобраться и как грузится всё и как ОС работает (внезапно! без systemd). Там, правда, не совсем busybox (toolbox, если не ошибаюсь). Заметьте, по железу это были… Ну-у… Так себе.

qwe ★★★
()
Последнее исправление: qwe (всего исправлений: 2)
Ответ на: комментарий от qwe

А попробуйте сами

Я это уже делал. И я знаю что это ни разу не проще, чем systemd. Потому что «hurr durr mdev» это хорошо, пока не становится ясно, что нужно дождаться обработки всех coldplug событий. А mdev этого не умеет. А монтировать файловую систему, не дождавшись пока mpt3sas просрется, бессмысленно. Нужно не забыть руками загрузить нужные модули, иначе udhcpc не сможет сообщения отправлять (а mdev этого за тебя делать не будет, потому что к железу это не имеет отношения). Чтобы запустить софт, нужно дождаться пока сеть поднимется. И вот мы уже придумали свою концепцию systemd-network-online.target. И так потихонечку, полегонечку, ты напишешь свой openrc или systemd, только корявый и нетестированный. Серьезно, вы ваще не шарите.

gaylord
()
Последнее исправление: gaylord (всего исправлений: 1)
Ответ на: комментарий от gaylord

Комрад, я понимаю, что круто латиницей писасть, а можно писать так, чтобы соотечественникам было понятно?

Цитировать всю фигню не буду.

Там просто: «Ты чё, совсем дурак? У меня ж лапки.»

Вот правда, извини.

qwe ★★★
()
Последнее исправление: qwe (всего исправлений: 1)
Ответ на: комментарий от gaylord

Потому что «hurr durr mdev» это хорошо, пока не становится ясно, что нужно дождаться обработки всех coldplug событий. А mdev этого не умеет

Во-первых не факт что не умеет, я вроде видел какие-то шевеления в списках рассылки.

Во-вторых умеет mdevd от разраба s6, который можно использовать с тем же конфигом, но в любом случае в этом нет смысла, потому например sway и все прочее на wlroots жестко зависит от (e)udev. Я бы конечно хотел это поправить, но где ж время взять?

Lrrr ★★★★★
() автор топика
Ответ на: комментарий от Lrrr

eudev сдох, его pmos мейнтейнил, а они ушли на systemd. Если я правильно понял, то все уговорили леннарта сделать нормальный способ собирать udev, logind и все остальное отдельно и туда идут.

gaylord
()
Ответ на: комментарий от gaylord

Но альтернативу udev-settle ты пишешь сам, увы

https://www.freedesktop.org/software/systemd/man/latest/systemd-udev-settle.service.html

This service calls udevadm settle to wait until all events that have been queued by udev(7) have been processed

https://skarnet.org/software/mdevd/mdevd-coldplug.html

-O nlgroup : synchronous coldplug. mdevd-coldplug will not exit until the last uevent it triggers has been handled by mdevd

звучит довольно одинаково

Lrrr ★★★★★
() автор топика
Ответ на: комментарий от Lrrr

Это скарнетовое, оно отдельное. Мы-то про busybox. Так-то и udev можно взять.

gaylord
()

Намально, подождём, пока что вижу в тесте sys-apps/openrc-0.56::gentoo.

spawn_sp ★★★★
()
Ответ на: комментарий от gaylord

Ну ты же сказал что это проще, чем с systemd страдать. Пруфани.

Хорошо. Чтобы вычислительному устройству получить IP-адрес с сервера даже «Бизибокс» не требуется - ядро «Линукса» может сделать это действие самостоятельно. Меньше сущностей -> проще и надёжнее работа устройства в целом.

Enthusiast ★★★
()
Ответ на: комментарий от gaylord

Если я правильно понял, то все уговорили леннарта сделать нормальный способ собирать udev, logind и все остальное отдельно и туда идут.

«Читал пейджер. Много думал.»

qwe ★★★
()
Ответ на: комментарий от gaylord

А еще можно секретаршу Настеньку отправить по телефону позвонить. И даже компов не надо!

Фига се тебя прёт. Со мной понятно - пятница, вечер, алкоголь. С секретаршей не сплю и «позвонить» - это по делу только.

Мне и с женой прикольно.

Спросить-то о чём хотел? Или устыдить? Или что?

Мы выяснили, что Вы не разбираетесь в (ни в чём).

А-а-а… Нет… Помню - упрёк (про старпёров-алкоголиков)

qwe ★★★
()
Последнее исправление: qwe (всего исправлений: 1)
Ответ на: комментарий от bernd

раньше это как-то работало, ну? вот 20 лет до системд работало же? работало, факт.

А почему ты считаешь что это сделано ТОЛЬКО в systemd? Это делает любой менеджер сервисов, включая openrc.

Смотри какая там срань:

        ebegin "Loading hardware drivers"
        find /sys -name modalias -type f -print0 2> /dev/null | xargs -0 sort -u \
                | xargs modprobe -b -a 2> /dev/null
        # we run it twice so we detect all devices
        find /sys -name modalias -type f -print0 2> /dev/null | xargs -0 sort -u \
                | xargs modprobe -b -a 2> /dev/null

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

Мне кажется пуристы не до конца понимают сколько говна разгребает сервис менеджер просто чтобы лялекс нормально загрузился. И это все не то чтобы сложно, просто этих костылей вагон и тележка. Вот без этого, например, у тебя dhcp в busybox работать не будет:

$ cat /etc/modules
af_packet
ipv6
gaylord
()
Последнее исправление: gaylord (всего исправлений: 3)
Ответ на: комментарий от gaylord

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

bernd ★★★★★
()

Это они supervisor изобрели или что?

targitaj ★★★★★
()
Ответ на: комментарий от bernd

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

Так это и есть срань, от которой зависят другие срани. Это hwdrivers, часть дерева зависимостей. Это НИЧЕМ не отличается от unit’ов, кроме синтаксиса. Там же типы зависимостей, тот же алгоритм разрешения, те же таргеты и прочее говно. Вот вообще ничего нового. И каждый раз, начиная с «ой да чо там делать давайте просто busybox возьмем», люди заканчивают вот этим. Почему? Потому что все эти костыли это необходимая часть процесса. И вся сложность systemd это лишь отражение сложности процессов. И нет, страшные сказки про резолвер в pid1 не имеют никаких оснований — это отдельный опциональный демон который не то что выключен, не установлен по умолчанию.

gaylord
()
Последнее исправление: gaylord (всего исправлений: 5)
Ответ на: комментарий от gaylord

Вот без этого, например, у тебя dhcp в busybox работать не будет:

$ cat /etc/modules
af_packet
ipv6

Точно не будет?

box-677 /# cat /etc/modules
cat: can't open '/etc/modules': No such file or directory
box-677 /# ps -o pid,tty,vsz,rss,args | grep init
    1 ?      1304  384 /bin/busybox init
box-677 /# ps -o pid,tty,vsz,rss,args | grep dhcp
  152 ?      1304  196 udhcpc -b -i eth0 -x hostname box-677
box-677 /# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 02:00:00:00:06:77  
          inet addr:192.168.255.217  Bcast:192.168.255.255  Mask:255.255.254.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:23389 errors:0 dropped:186 overruns:0 frame:0
          TX packets:430 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1626454 (1.5 MiB)  TX bytes:122582 (119.7 KiB)
          Interrupt:87 Base address:0xa000
qwe ★★★
()
Ответ на: комментарий от qwe

Это в твоё никто не затолкал.

Начинается, теперь еще специальные ядра нужны. Я же говорю, сказки про «да busybox йопт чо там сложного-то вжух вжух mdev” всегда превращаются в неделю разгребания всех граничных случаев. В этом нет человеческого гения, в этом много тупой, уже сделанной много раз работы. Зачем все это, если есть systemd?

gaylord
()
Последнее исправление: gaylord (всего исправлений: 2)
Ответ на: комментарий от gaylord

… теперь еще специальные ядра нужны.

Бывает и такое.

Посмотрел на ядра в Fedora, Ubuntu, MX Linux, AlmaLinux, Oracle Linux. af_packet везде builtin. Это у тебя ядро какое-то специальное.

А всё-таки, dhcp-то тут причём?

qwe ★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.