LINUX.ORG.RU
ФорумTalks

systemd саботаж - стоит свеч?

 , нед лудд


0

3

Простите, тяпница, каберне-совиньон, всё такое...

Но нельзя отрицать, что systemd жёстко прибит к необязательным фичам ядра linux, а мэйнстримный linux софт - к systemd.

В контексте этого и моего опыта вайб-кодинга, я пристал к chatgpt с таким вопросом:

Можно ли пропатчить systemd таким образом, чтобы ему не нужны были cgroups2? цель - не повторить функциональность, а просто наделать "заглушек", чтобы программы запускались как в 1990-х.

После серии наводящих промптов я получил такой ответ:

Если задача — именно обмануть systemd, а не реализовать настоящие cgroups, то можно заменить файловую систему cgroup на внутреннюю модель, хранящуюся, например, в /tmp или /run.

Например, вместо

/sys/fs/cgroup/system.slice/sshd.service/
    cgroup.procs
    memory.max
    cpu.max

создавать

/tmp/systemd-fake-cgroup/
    system.slice/
        sshd.service/
            procs
            memory.max
            cpu.max

Тогда функции вроде

cg_get_path()
cg_create()
cg_trim()

смогут работать почти без изменений, просто с другим префиксом пути.

Однако есть ограничение: ядро никогда не будет читать эти файлы. Поэтому запись в

memory.max

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

Проблема возникает с операциями, которые предполагают взаимодействие с ядром. Например, запись PID в cgroup.procs в реальности перемещает процесс в группу. В «фальшивой» реализации можно:

просто записывать PID в файл procs;
вести внутреннюю таблицу «unit → список PID»;
использовать её при stop и restart, отправляя сигналы этим PID.

То есть вместо

echo 1234 > cgroup.procs

получится примерно

append_pid("/tmp/systemd-fake-cgroup/system.slice/sshd.service/procs", 1234);

А при остановке сервиса:

прочитать файл procs;
проверить, какие PID ещё существуют;
отправить им SIGTERM, затем при необходимости SIGKILL;
удалить каталог.

Это уже довольно близко к поведению старых init-систем.

Есть ещё одна тонкость: некоторые части systemd ожидают событий от cgroups (например, что группа опустела после завершения всех процессов). Это тоже можно эмулировать, периодически проверяя сохранённые PID через kill(pid, 0) или анализируя /proc. Такой подход менее эффективен и не столь точен, как механизм ядра, но для минимальной совместимости может оказаться достаточным.

Вопрос: как вам такой луддизм? Закопать systemd набором патчей, позволяющим запускать прибитый к systemd софт на оффтопике, но при этом полностью уничтожающих все преимущества systemd для безопасности? Сможет ли это создать анархическое KISS движение за использование примитивных ядер там, где не нужны развесистые?

★★★★★

Последнее исправление: Shadow (всего исправлений: 1)

Человеческие способности безграничны. Сделать можно что угодно. Только какую проблему мы этим решим?

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

Совместимость популярного OpenSource софта с ЛЮБОЙ OS кроме linux. Сильное «облегчение» софта.

Например, ext4fs драйвер занимает в несколько раз больше места, чем ext3fs драйвер, ест больше процессорного времени, а пользователь десктопа особо не замечает разницы между ext4 и ext3. Более того, в ОБЫЧНЫХ случаях, ext3 может быть также быстрее, чем ext4, как fat быстрее, чем ntfs. Примитивность - это не недостаток, это преимущество. Одно из самых приятных вин Италии делается из винограда сорта Primitivo (ладно, в Америках он называется Зинфандель)

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

Игра стоит свеч? Софт начнёт глючить, скорее всего. Получим wine v2 и борьбу за спецификации. Оно нам надо тратить бесценные часы жизни ради *заглушек*? Уж лучше настоящего вина попить.

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

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

Софт начнёт глючить

Как раз нет. Софт использует какие-то формальные политики, наследуемые от systemd - на сам софт это не влияет. Это будет как работа под админом в оффтопике, с отключённым антивирусом. Это может вдохновить кучу школоты использовать эти патчи вместо оригинального systemd. И наступит анархический хаос. А так как ЗППП не подхватишь, аргументов не использовать сломанный, но суперсовместимый systemd не будет. Все болгеносы будут его использовать! Тогда подтянутся тру юниксойды, и втащат этот слой совместимости в sysVinit и runit.

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

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

> Софт использует какие-то формальные политики, наследуемые от systemd - на сам софт это не влияет

Хочешь сказать, что основная проблема в systemd, а не в бескрайнем множестве сторонних программ? Это правда, но ведь то, как программы работают, зависит от того, как systemd ими управляет. И как на это повлияют заглушки - непредсказуемо. По стабильности это будет на уровне удаления всего cgroups из systemd средствами LLM.

> Это может вдохновить кучу школоты

Школоту вдохновляет разум, а не стадный мистицизм-скептицизм. Так что мимо.

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

systemd ими управляет

Да никак он не управляет - ограничивает ресурссы и делает watchdog на падающих в корку.

Школоту вдохновляет разум

Зойчем тогда она использует Kali?

Shadow ★★★★★
() автор топика

каберне-совиньон

Сможет ли это создать анархическое KISS движение за использование примитивных ядер там, где не нужны развесистые?

Заканчивай пить этот шмурдяк брат.

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

Я делаю это профессионально.

Меняй такую профессию брат.

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

Да никак он не управляет - ограничивает ресурссы и делает watchdog на падающих в корку.

Ты неправ брат. Systemd вполне себе следит за процессом по его pid’у. Watchdog же работает с точностью наоборот - процесс постоянно подает какие-то сигналы ему о том, что он жив. А core dump вообще из другой оперы.

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

А какой софт окромя ГОНОМа так намертво привязан к системд?

Я немного не специалист по сустэмди, но каким образом ГОНОМ намертво к нему привязан? Сижу на Guix’е с Gnome’ом, тут Shepherd и нету systemd. ЧЯДНТ?

Camel ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)