LINUX.ORG.RU
ФорумTalks

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

 , нед лудд


0

4

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

Но нельзя отрицать, что 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 ★★★★★
()
Ответ на: комментарий от Shadow

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

Зачем? Вместо того, чтобы использовать преимущества, ограничиваем себя кастрированным общим подмножеством.

Сильное «облегчение» софта.

В чем заключается? Как много повседневного софта намертво завязано на cgroupsv2?

Siborgium ★★★★★
()

Оффтопик лист:

  1. Темы вида «Я спросил у LLM, и вот что она мне ответила».
James_Holden ★★★★★
()

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

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

«облегчение» системы и совместимость со всем подряд. Сегодня я трезв и, кажется, идея неплохая. Но пока занят. И, конечно, это будет нормальный слой совместимости, а не борьба с systemd.

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

«облегчение» системы

Я набрал в htop systemd и на обычном десктопу все системные сервисы systemd жрут метров 100-150. При том, что вся система жрет 16Гб.

совместимость со всем подряд

Нарушить совместимость почти со всеми современными Линуксами, чтобы получить мифическую совместимость «со всем подряд»? Которую никто даже не просил?

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

совместимость почти со всеми современными Линуксами

В чём? Эту функциональность только на серверах используют.

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

ext4fs драйвер занимает в несколько раз больше места, чем ext3fs … а пользователь десктопа особо не замечает разницы между ext4 и ext3

Да, конечно, разница между 170кб и 278кб это прямо веская причина. И ты видимо забыл как при внезапной потери питания на ext3 можно было получить нерабочую файловую систему, так как в журнале нет контрольных сумм и там может появиться мусор.

в ОБЫЧНЫХ случаях, ext3 может быть также быстрее, чем ext4

Что такое ОБЫЧНЫЕ случаи? я могу сходу представить только мифическую ситуацию когда у тебя куча файлов, которые не превышают 4кб (потому что ext3 пишет именно такими блоками) и то, из-за специфики журналирования в ext3 (когда каждый раз надо дожидаться записи в журнал) вряд ли она будет быстрее.

Одно из самых приятных вин Италии делается из винограда сорта Primitivo

Вкусовщина. Да и вообще отправдывать свою очень странную идею сортом винограда такое себе.

(ладно, в Америках он называется Зинфандель)

Это уже давно совершенно разные сорта. 200 лет все-таки прошло. Причем настолько разные, что сейчас Zinfandel отдельным сортом выращивают в Италии.

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

В чём? Эту функциональность только на серверах используют.

Блин, тебе разработчики ядра дали отличный механизм изоляции процессов. Очень удобный, гибкий и не требующий ресурсов. Чем он тебе так жмет то?

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

А чем плохо одни и те же навыки использовать и при рулёжке локалхоста, и при рулёжке сервером? Вроде бы Линукс не венда, в которой ради серверных компонент плати ценник в 10 раз выше за серверную Винду.

Пока что мы услышали только аргумент с 150 дополнительно занятых мб ОЗУ. Вот у меня, например, ноут на 8Гб есть, и там довольно таки свежий КДЕ. Т.е. я уже не экономию на расходе ОЗУ. Если мне предложат вместо systemd какой-то другой сервис, который надо будет изучить, то… Ради чего всё это? Чтобы можно было открыть ещё десяток сайтов в браузере? Да ну нафиг.

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

systemd толстоват по меркам коммерческих юниксов типа Соляриса, когда к нему прилагался толстенный мануал админа и толстенный мануал программиста с описанием API. Толстый админ знал, как Солярис настроить для любого применения, к которому этот Солярис вообще был готов. И понимал язык программистов, когда они говорили, что кучи куда-то там не влезают, а дисковый раздел маловат.

Он выписывал в тетрадочку секреты и трюки соляриста, полученные непосредственно от платной техподдержки Sun, клал эту тетрадочку в огнеупорный шкафчик справа внизу, и закрывал его на ключик, чтобы никто не узнал ноухау.

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

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

Не так вопрос поставлен. Правильный вопрос: зачем мне лезть в кишки системы и рассматривать их, если у меня нет проблем с этой системой. Допустим, я не архитект и не интегратор и не девопс, и даже не разраб. Зачем мне стремиться к системе, в которой, условно говоря, команда перезагрузки «def», а не «abc»?

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

И заметь, что полноценная документация, а следовательно и советы ИИшки - это буквально пара дистров Линукса, а в остальных документация - шлак. Т.о. универсальная подсистема контроля процессов, - в отличие от кучи других, но «своих» и по-своему идеологически правильных - даёт мне возможность читать качественную документацию о подсистеме в юзерспейсе, даже если на сам дистр (Арч) мне наплевать.

seiken ★★★★★
()

Гента вполне без систумд живет

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

«облегчение» системы

В дикие времена я пользовался Winxp и как-то угорел по «облегчению системы». Мне на глаза попалась статья, где удаляли все «лишнее». В общем, я удалил, в т.ч. и «лишние» драйвера устройств, всяческих мышей и прочего. В результате, при подключении новых устройств они у меня не определялись.

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

MoldAndLimeHoney ★★★
()

Не время сейчас, ЛОР на Rust не портирован

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

Да я как-то по OpenWRT угорал, мне нравилось.

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

может не ext3, а ext2?
на фрониксе тесты показывали преимущества ext4 над ext3.
я и сейчас использую ext2 для выигрыша в солидные 20%-50%.

s-warus ★★★★★
()

хочу, очень хочу, правда сейчас я противоположное делаю: cgroups2 (nftable) изоляцию приложения по сети (мах) при его свободе в системе, такой флетпак без изоляции переизобретаю.

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

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

Ну… Это иллюзия разума.

her_s_gory ★★
()

Я ничего не понял. Ни одной нужной программы, прибитой к systemd, я не видел. Пусть идут в мусорку вместе с поттерингоподелием.

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

Должно быть проще, чем сделать заглушки.

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

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

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

Должно быть проще, чем сделать заглушки.

Я к тому, что мы живём в период, когда дисплей-сервер старательно отменяют.

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

Конечно.

  • epoll – вменяемый API вместо poll/select! Быстрый. Удобный.
  • signalfd, timerfd, eventfd – вменяемые API для различных событий!
  • pidfd – идентификаторы процессов с семантикой fd! Никаких гонок вокруг pid’ов, легко отслеживать, просто работает.
  • io_uring – полноценная SQ/CQ вместо синхронных read/write! Бывают уязвимости, ну что поделать, подсистема молодая.
  • memfd_create – анонимные (!) файлы в памяти! Просто. Удобно. Надо передать куда-то fd? Не нужно гадить в ФС, положил в память и отдал.
  • capabilities – fine-grained permissions, вместо рута.

Это только навскидку из того, что обычно используется напрямую (не через прокладки и обертки) в повседневной жизни для того, чтобы писать может и системное, но все же конечное ПО.

И cgroupsv2, которые ты бездарно и безосновательно хейтишь, строго лучше cgroupsv1. Именно cgroupsv2 позволяют обеспечить нормальное управление ресурсами в системе. Именно управление, а не домохозяечное «запустил и оно само дальше крутится».

В конечных приложениях фича может не использоваться. При этом быть необходимой структурно дял реализации примитивов и системных библиотек. Примеры: futex, rseq. Так и с cgroupsv2.

Siborgium ★★★★★
()
Последнее исправление: Siborgium (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему: только для зарегистрированных, score>=50.