LINUX.ORG.RU

systemd 219

 


2

4

16 февраля был представлен очередной релиз системного менеджера systemd, совмещающего в себе функции системы инициализации, ведения журнала, управления сессиями пользователей и работы с контейнерами. systemd основан на модели зависимостей (в противовес событийной модели), производит отслеживание процессов запущенных сервисов при помощи механизма cgroups ядра Linux, поддерживает механизмы сокет- и dbus-активации сервисов и предоставляет удобный декларативный синтаксис для описания демонов и других сущностей. Это позволяет производить агрессивную параллелизацию при запуске и остановке сервисов.

В рамках проекта также разрабатывается ряд легковесных приложений и демонов, выполняющих второстепенные, но распространённые вспомогательные задачи (т. н. plumbing layer) — от настройки подсистемы VT (systemd-vconsole-setup) и первичного конфигурирования системы (systemd-firstboot) до управления сетью (systemd-networkd) и профилирования загрузки (systemd-bootchart).

Большая часть изменений, вошедших в этот релиз, была направлена на расширение возможностей по работе с контейнерами. Эти изменения сконцентрированы в компонентах systemd-machined и systemd-nspawn и нескольких сопутствующих утилитах.

Примечание переводчика: в плане новых контейнерных фич релиз получился крайне сырой; по факту мало что работает. Такое ощущение, что они тупо сделали промежуточный тарболл, чтобы заиметь чуть побольше тестеров.

Изменения в ядре systemd:

  • При остановке mount-юнита, соответствующего директории, на которую примонтировано более одного устройства, теперь производится отмонтирование всех устройств на этой точке монтирования. [Раньше, надо полагать, отмонтировалось только последнее. Более того, примонтировать несколько устройств на одну директорию средствами mount-юнитов по-прежнему невозможно. — Прим. пер.]
  • device-юниты, соответствующие приводам оптических дисков, теперь считаются активными только при наличии диска в приводе.
  • Все mount-юниты теперь автоматически получают зависимость BindsTo= от «своих» device-юнитов. Вкупе с предыдущим изменением это обеспечивает автоматическое [небезопасное, но так хотя бы /etc/mtab не захламляется — Прим. пер.] отмонтирование дисков и других носителей при их извлечении.
  • Введена концепция «неподдерживаемых» типов юнитов. Так, например, при попытке активировать busname-юнит на системе без kdbus он будет помечен как сбойный с комментарием «unsupported».

    Список типов юнитов, не поддерживаемых на некоторых конфигурациях:

    • .busname — на системах без kdbus;
    • .swap — в контейнерах; на системах с CONFIG_SWAP=n;
    • .automount — в контейнерах; на системах с CONFIG_AUTOFS4_FS=n;
    • .device — в контейнерах.
  • Суммарное потребление памяти всеми процессами юнита (атрибут memory.usage_in_bytes соответствующей контрольной группы) теперь экспортируется как свойство MemoryCurrent объекта юнита на шине и отображается в выводе команды systemctl status. Например:
    $ systemctl status systemd-journald
    ● systemd-journald.service - Journal Service
    [...]
     Main PID: 210 (systemd-journal)
       Status: "Processing requests..."
       Memory: 90.4M
    [...]
    
    $ busctl introspect org.freedesktop.systemd1 /org/freedesktop/systemd1/unit/systemd_2djournald_2eservice org.freedesktop.systemd1.Service
    NAME                                TYPE      SIGNATURE      RESULT/VALUE                             FLAGS
    [...]
    .MemoryAccounting                   property  b              true                                     -
    .MemoryCurrent                      property  t              94887936                                 -
    [...]
    

    [Стоит отметить, что это свойство отражает суммарный RSS и объём файлового кэша процессов в контрольной группе. Также, разумеется, это возможно только при задействовании контроллера memcg, т. е. CONFIG_MEMCG=y в конфигурации ядра и DefaultMemoryAccounting=true в /etc/systemd/system.conf. — Прим. пер.]

  • Генераторы юнитов теперь можно маскировать (по аналогии с самими юнитами), размещая в /{etc,run}/systemd/system-generators/ пустые файлы (или симлинки на /dev/null).
  • Для юнитов, присоединённых к терминалу (StandardInput=tty, StandardOutput=tty), будет автоматически устанавливаться переменная окружения TERM=vt220 (вместо vt102, как было ранее). Это должно исправить ошибки в приложениях, использующих нетривиальные возможности терминала (например, клавиши PgUp/PgDn).
  • Добавлен механизм, позволяющий процессам «сохранять» в PID 1 открытые файловые дескрипторы (например, на время собственного перезапуска). Эта возможность уже задействована в systemd-journald для того, чтобы избежать потери сообщений при перезапуске.

    Таким образом, все три «ключевых» компонента systemd (systemd, logind, journald) теперь способны перезапускаться с сохранением состояния.

    Технически этот механизм реализован через расширение API sd_notify(3) (функция sd_pid_notify_with_fds()). Для прикрепления файловых дескрипторов к сообщению используется концепция fd passing, а само сообщение должно содержать строку FDSTORE=1.

    Количество файловых дескрипторов, которое процессы юнита могут единовременно «сохранить» таким образом, ограничивается значением директивы FileDescriptorStoreMax= в секции [Service] unit-файлов (по умолчанию 0, т. е. нисколько).

  • Нажатие Ctrl-Alt-Del более семи раз в течение двух секунд теперь вызывает аварийный перезапуск системы, эквивалентный результату выполнения systemctl reboot -f (т. е. при этом все процессы завершаются, а файловые системы демонтируются или переводятся в режим «только для чтения»). Этот механизм стоит рассматривать как более «щадящую» альтернативу Alt-SysRq-B.
  • В файле /etc/crypttab (за его обработку отвечает systemd-cryptsetup-generator) добавлена поддержка параметра header= (как в Debian). Этот параметр позволяет указать расположение LUKS-заголовка, если он хранится на отдельном устройстве.
  • При копировании куда-либо каких-либо файлов (например, в контексте действия C в systemd-tmpfiles) компоненты systemd теперь сначала пытаются создавать reflink (на тех ФС, которые это поддерживают, в частности, btrfs и ocfs2). При отсутствии поддержки выполняется обычное копирование.

Изменения в утилитах и вспомогательных компонентах:

  • Команды loginctl user-status, loginctl session-status и machinectl status теперь также выводят (подобно systemctl status) последние несколько строчек из лога, ассоциированных с данным пользователем, сессией или контейнером соответственно. При этом в последнем случапе имеется в виду не внутренний лог самого контейнера, а лог того юнита, в котором он запущен (т. е., например, вывод systemd-nspawn).
  • Все подкоманды loginctl, которые принимают в качестве аргумента идентификатор сессии или имя пользователя (например, две вышеупомянутые), теперь могут быть вызваны без аргумента. В этом случае они применяются к той сессии, в которой (к тому пользователю, от имени которого) запущены.
  • В systemd-run добавлен параметр командной строки -t (--pty), позволяющий перенаправить ввод/вывод запускаемого процесса в текущую консоль (при этом он всё равно запускается как дочерний процесс systemd). Стоит отметить, что это также поддерживается при запуске процесса в другом контейнере.

    Например, команда systemd-run -t /bin/bash запустит рутовую оболочку в обход PAM и регистрации сессии.

  • В systemd-tmpfiles добавлено действие v — создание btrfs subvolume по указанному пути. В случае невозможности (если используется другая ФС) создаётся обычная директория (эквивалентно действию d).
  • В systemd-tmpfiles добавлено действие a — назначение файлу заданных ACL.
  • В комплект поставки включён скрипт для xinitrc.d, который сообщает systemd --user текущие значения переменных $DISPLAY и $XAUTHORITY. Это позволит «из коробки» запускать с помощью systemd --user графические приложения, взаимодействующие с X-сервером.

    [При этом никаких дополнительных зависимостей не проставляется, поэтому при завершении работы X-сервера все эти приложения не будут корректно прибиты и упадут вслед за сервером. Но лучше так, чем никак. Ждём, пока кто-нибудь придумает, как вписать иксы или вейланд в эту концепцию. — Прим. пер.]

  • В спецификацию формата файла /etc/os-release добавлено новое поле PRIVACY_POLICY_URL=, позволяющее создателям дистрибутива указать ссылку на его Privacy Policy.

Изменения в udev:

  • Часть API libudev, относящаяся к работе с hwdb (декларативной базой данных оборудования), вынесена в отдельную библиотеку sd-hwdb (заголовочный файл sd-hwdb.h), отделённую от libudev.

    Также добавлена вспомогательная утилита systemd-hwdb, позволяющая взаимодействовать с этой базой данных (пересобирать и производить тестовые запросы).

  • Эта самая hwdb теперь включает в себя информацию о «разрешающей способности» колёс прокрутки мышей (что-то вроде «повороту на какой угол соответствует одно событие») и различные сведения о тачпадах.

    [Напомню, что в версии 218 в hwdb начали собирать информацию о разрешающей способности самих оптических сенсоров мышей. Это делается для того, чтобы настройки ускорения курсора и скорости прокрутки работали одинаково на любом оборудовании. Разумеется, необходима поддержка этих свойств со стороны того, кто будет обрабатывать события с устройств ввода; насколько мне известно, это пилят в libinput. — Прим. пер.]

  • Физические размеры сенсорных экранов теперь отражены в атрибутах соответствующих им устройств ввода.

Изменения в journald:

  • systemd-journald теперь устанавливает btrfs-специфичный флаг FS_NOCOW на файлах журнала. Это должно повысить производительность на btrfs, поскольку типичная последовательность обращений к этим файлам [то, как journald работает с этими файлами] достаточно плохо ложится на механизм Copy-on-Write.

    Побочный эффект состоит в том, что также отключается btrfs-специфичный механизм проверки целостности файлов. Однако, это не является проблемой, поскольку формат файла журнала предусматривает собственный механизм контрольных сумм.

    Ещё одно изменение состоит в том, что systemd-journald теперь более корректно обрабатывает события переполнения диска (а именно — сигнал SIGBUS для файлов, отображённых в память) в тех случаях, когда использование fallocate(2) по тем или иным причинам не гарантирует выделения места. [Видимо, имеются в виду Copy-on-Write-ФС, отличные от btrfs. — Прим. пер.]

  • При удалении текущего файла журнала (того, в который сейчас ведётся запись) systemd-journald теперь это замечает и немедленно начинает запись в новый файл.

В networkd добавлена поддержка:

  • FDB-таблиц для соединений типа «мост» (секция [BridgeFDB] network-файлов);
  • сбора LLDP-оповещений (отображаются в выводе утилиты networkctl);
  • нескольких новых типов виртуальных сетевых устройств, а именно ipvlan, gretap, ip6gre, ip6gretap и ip6tnl (директива Kind= секции [NetDev] netdev-файлов);
  • автонастройки link-local IPv6-адресов (директива LinkLocalAddressing= секции [Network] network-файлов);
  • настройки перенаправления и маскарадинга IPv4/IPv6 отдельно для каждого интерфейса (директивы IPForward=, IPMasquerade= секции [Network] network-файлов);
  • явного задания scope (global, link, host) для создаваемых маршрутов (директива Scope= секции [Route] network-файлов);
  • явного задания нижних 64 бит IPv6-адреса при задействовании SLAAC (директива IPv6Token= секции [Network] network-файлов);
  • перечислений и wildcard'ов в директивах секции [Match] всех файлов конфигурации.

    [например, можно указать список MAC-адресов, к которым нужно применить link-файл, или же что-то вроде Name=en* — Прим. пер.]

Другие изменения в networkd:

  • Утилита systemd-networkd-wait-online теперь позволяет указывать подмножество интерфейсов, настройки которых требуется дождаться, и таймаут этого ожидания.
  • systemd-networkd теперь автоматически завершается, когда ему нечего делать (это случается, когда все присутствующие интерфейсы либо не требуют настройки, либо конфигурируются статически). При появлении в системе новых интерфейсов networkd запускается заново, для чего используется вариант механизма сокет-активации.

Изменения, связанные с поддержкой контейнеров:

  • Директория /var/lib/containers, предназначенная для хранения файловых систем контейнеров и образов ВМ, переименована в /var/lib/machines ради единообразия терминологии.
  • Добавлен юнит machines.target, группирующий все автозапускаемые контейнеры в системе.
  • В утилите systemd-nspawn добавлены следующие параметры командной строки:
    • --template (только btrfs) — указание эталонного дерева ФС, которое будет скопировано в корневую директорию контейнера (--directory) в случае отсутствия последней;
    • --ephemeral (только btrfs) — запуск контейнера без внесения изменений в его корневую директорию посредством создания временного btrfs-снапшота этой директории (например, можно сделать systemd-nspawn --ephemeral --directory / и запустить в контейнере копию ОС хоста, не мешая самому хосту);
    • --image — запуск контейнера из образа диска с таблицей разделов MBR или GPT (при этом раздел должен быть один — или, в случае GPT, все разделы должны быть помечены согласно спецификации);
    • --machine, -M — запуск контейнера из дерева ФС или из образа c указанным именем в /var/lib/machines;
    • --network-veth, -n — создание для контейнера собственного veth-интерфейса (теперь для этих интерфейсов по умолчанию задействована вышеописанная директива IPMasquerade=yes, что даёт контейнеру доступ ко всем сконфигурированным на хосте сетям);
    • --port, -p — «проброс» указанного порта из контейнера в хост-систему (в сочетании с --network-veth это позволяет запускать в контейнерах серверные приложения так, как будто они запущены на хосте).
  • Прочие изменения в systemd-nspawn:
    • На директорию /tmp внутри контейнера теперь автоматически монтируется tmpfs
    • Реализована защита от повторных запусков одного и того же образа (read-write блокировка)
    • Почти вся иерархия контрольных групп (/sys/fs/cgroup) теперь отображается внутрь контейнеров (в режиме read-only, за исключением собственного поддерева контейнера)
  • В команде machinectl, предназначенной для взаимодействия с менеджером контейнеров systemd-machined, добавлены следующие подкоманды:
    • machinectl list-images, machinectl image-status — отображение информации об образах контейнеров в /var/lib/machines;
    • machinectl start — запуск контейнера с помощью systemd-nspawn -M (эквивалент systemctl start systemd-nspawn@<имя>);
    • machinectl clone (только btrfs), machinectl rename, machinectl read-only, machinectl remove — различные операции с образами в /var/lib/machines;
    • machinectl copy-from, machinectl copy-to — копирование файлов из контейнера на хост или в обратном направлении;
    • machinectl bind (только systemd-nspawn) — bind-монтирование директорий из хоста в контейнер;
    • machinectl pull-tar, machinectl pull-raw, machinectl pull-dkr (на данный момент только btrfs) — загрузка и распаковка в /var/lib/machines, соответственно, архивов ФС, образов дисков и образов Docker.
  • Последние три подкоманды, предназначенные для загрузки образов контейнеров из Интернета, обеспечивают реализованы посредством нового демона — systemd-importd. Он обеспечивает загрузку данных в фоновом режиме.

P. S.: Да будет срач.

>>> Объявление о релизе

★★★★★

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

Ответ на: комментарий от dexpl

и все. Теперь ты не можешь просто так взять и поставить, благодаря им появились eudev и upower-pm-utils, про гном молчу.

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

При чем тут это? Математика — это вообще отдельная наука.

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

навесив такой ярлык на оппонента, не нужно отвечать на его вопросы. Идеальная логика для ведения спора. Тогда же не нужно искать аргументы и анализировать.

Дык хейтеры вопросов, достойных ответа не задают - они баттхёрт изливают. Вот ты например - вывалил кучу тупейших, однообразных вопросов, щедро перемазанных твоим баттхёртом и претензиями «все должны меня спросить, как им писать ПО». Ну и о каком анализе и поиске аргументов может идти речь при разговорим с таким идиотом?

anonymous
()
Ответ на: комментарий от A-234

Заяц барабанщик! Эти количественные характеристики настроить можно?

Вот ты слоупок!

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

почитал о том,каксистемд плохо документирован

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

Возможно начав разработку своей системы инициализации?

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

Донатов с меня кот наплакал,но теперь Debian, при всём моём восхищении оным их точно не получит.

Всё, капец, разработка дебьяна в панике сворачивается, со слезами умиления Ян жмёт твою мозолистую ладошку и вешает на впалую грудь медаль за «не вклад в линукс», бурные и продолжительные, всеобщее ликование, плавно переходящее в храп.

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

Доку на формат почитай.

Ты ему льстишь. Максимум что хейтер осилит это комиксы. Хм... а идея ведь! Если на ЛОРе скучающие художники?

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

Так для кого?

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

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

Вопрос как раз таки по существу.

Стасик, ты не просто туп - твоя фотка должна быть в википедии под статьёй о синдроме Даннинга-Крюгера.

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

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

ну мааааам, я уже большой мальчик, ну можно я оставлю анимешного чувака!

Нельзя! Во-первых он курит что-то, явно притовопоказанное твоей неокрепшей психике, а во-вторых ты уже настолько большой, что можешь поставить на аватарку анимешную девочку.

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

Купи уже себе велосипед, а?

Седло для велосипеда же. Стыдно классику не помнить ;-)

anonymous
()
Ответ на: Почему на самом деле не нужен systemd от Croco

Я. Не. Смог. Настроить. Сеть.

Ты лох.

Ну то есть как, я, наверное, если бы очень сильно упёрся, то смог бы.

Ага, ага, а мы типа как-бы почти верим, что уж если, то всенепременно...

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

Именно так. Ты - лох.

Иное дело systemd.
...
много вкусного, отборного баттхёрта
...
Вердикт? Расстрелять.

Не, мы гуманные - даже такой лох как ты имеет право на жизнь. Опять же лулзы доставляешь неплохо.

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

Аноним, такой аноним) Из контекста догадаешься?

Ничё не понял в этих закорючках, но на всякий случай подрочил.

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

А давайте добавим еще и потоковое видео из журнала, криптозащиту и тетрис?

Криптозащита там уже есть, а разбирать по пунктам остальной баттхёрт мне чё-то лень. Может добрые люди подадут интеллектуально необеспеченным слоям населения?

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

Столько надрыва, разрыва и срыва нет, пожалуй, ни по одному тегу.

Измельчал народ, опаскудился - уже даже 10 страниц баттхёрта нагенерить не могут... Вот раньше было время - глянешь налево, там хвостострел на баттхёртной тяге вираж закладывает, глянешь направо - там ах в конвульсиях пену пускает... а теперь - одна мандавошка с перечёркнутым systemd на аватарке и пяток её клонов. Уныние и тлен.

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

«Для меня. Для того, чтобы мой демон грамотно стартанул под systemd на нужном порту мне достаточно пары строчек кода вместо простыни в полэкрана для всякого легаси. » для sysV тоже самое.

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

LOL!

Эк он его подколол - народ за год умудрялся CPL ME IFR сделать :)

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

Теперь ты не можешь просто так взять и поставить

А еще я не могу так просто взять и поставить hal, lilo, ядро 2.4 и многое-многое другое. И по каждому из всего этого в свое время стояли плач и панихида — ну как же, старое закопали, новое внедрили, как теперь с этим жить? А потом оказывалось, что ничего страшного не произошло, новое имеет преимущества перед старым (да и старое в принципе можно при желании продолжать использовать), жизнь продолжается.

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

для sysV тоже самое

Ай не бзди - там надо сокет создавать, на порт биндиться, слушать на нём... всё это ещё с проверкой ошибок на каждый чих. На кой хрен мне эта перхоть в моём коде если я просто могу получить готовый fd от systemd. И это я ещё логирование и демонизацию посредством двойного форка с кувырком не упоминал. Нах, пусть гентушники с этим говном возятся, мне надо делом заниматься, а не поддерживать закостенелое убожество, порождённое коекакерами ещё до моего рождения.

anonymous
()

«При копировании куда-либо каких-либо файлов (например, в контексте действия C в systemd-tmpfiles) компоненты systemd теперь сначала пытаются создавать reflink (на тех ФС, которые это поддерживают, в частности, btrfs и ocfs2). При отсутствии поддержки выполняется обычное копирование. » нафига менять стандартное поведение на непредсказуемое?

anonymous
()

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

ps в дополнение начало глючить автоопределение и автомонтирование устройств.

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

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

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

Где здесь непредсказуемое? Рефлинк — это «почти копия» (copy-on-write). Внешних различий никаких. Он для того и создавался.

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

кстати о правильном запуске как запустить демон которые «не хочет сам биндится на порт и проверять ошибки» _без_ системд? просто из командной строки? ну например в целях отладки ? или стресс теста?

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

баг с разрушением файловых систем при гибернейте цветет и пахнет

Ссылку.

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

раз уж тут так много знатоков systemd собралось, позволю себе спросить, как родными его средствами ограничить настройки контроллера cpuset в cgroups для набора сервисов; нашел что можно задать свой .slice и включить туда мои сервисы, но доступные настройки по ограничению cgroup — только процент CPU, память в байтах и IO, а мне надо ограничить доступные ядра (cpuset.cpus) и выделение памяти только на определенной ноде (cpuset.mems)

PS (по теме срача): что-то в systemd нравится, что-то не нравится, что-то настораживает, но громко хейтить разработчиков и мантейнеров дистрибутивов считаю просто недопустимым; каждый из них в своем праве писать какой угодно код и собирать дистрибутив из какого угодно софта, а если это кому-то не нравится, то у вас есть все возможности;
можете разработать свою систему инициализации с блекджеком и шлюхами — компиляторы и текстовые редакторы доступны, можете допиливать старые initV/upstart/... — код открыт и никуда не делся, можете создать и мантейнить свой новый дистрибутив линукса — весь софт доступен, если сами все это делать не умеете, то можете найти людей, которые умеют, и заплатить им, чтобы они сделали то, что вы хотите,
а указывать другим свободным людям, что они должны делать, а чего не должны — это синдром вахтера; жрите что дают и не жужжите, вам никто ничего не обещал

anonymous
()

systemd такое говнище что миня аж трисёт всиво поттеринг маст дай!

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

нет вы действительно упертый. повторяю вопрос «кстати о правильном запуске как запустить демон которые «не хочет сам биндится на порт и проверять ошибки» _без_ системд? просто из командной строки? ну например в целях отладки ? или стресс теста?» _без_ systemd. нет его в системе.

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

«а указывать другим свободным людям, что они должны делать, а чего не должны — это синдром вахтера; жрите что дают и не жужжите, вам никто ничего не обещал» вот собственно одна из претезий к леннарту и компании RH в том что они _указывают_ другим свободным людям что и как делать. и не просто указывают а проталкивают используя даже не технические аргументы а банальный «административный ресурс»/ смотри например усторию с включением системд в дебиан. сидел бы системд в редхате да и бог бы с ним. ну был бы в редхат клонах неприятно но можно. но ведь целеноправленно и административно продавили всюду куда можно.

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

Значит, нужно (собрать и) поставить. Запущенного systemd эта утилита не требует, так что с этим никаких проблем не будет.

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

и не просто указывают а проталкивают используя даже не технические аргументы а банальный «административный ресурс»/ смотри например усторию с включением системд в дебиан

можно вкратце? пришли с автоматами в дебиан-тим и заставили юзать системд?

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

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

Во ! Во !! Набегают быдлокодеры, быдлокодят новую фигню с красивыми обоями, хомячки её хотят, не разбираясь, что там внутри, и здраствуйте: к вам приехал systemd. :-)

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

кстати о правильном запуске как запустить демон которые «не хочет сам биндится на порт и проверять ошибки» _без_ системд? просто из командной строки? ну например в целях отладки ? или стресс теста?

Помнится в какой-то книге читал руководство как устанавливать и запускать apache. Компилируешь из исходников и запускаешь из командной строки. Именно. Сделать из программы демон, то есть написать к ней скрипт или юнит - это задача мейнтейнера, а не разработчика и не твоя.

Кстати я пошёл по пути доказательства от противного, то есть для того чтобы доказать что systemd не нужен, сначала представлю будто бы он нужен и начну его изучать, пока не зайду в тупик. Изучаю 4-й день на примере дистрибутива Mageia, пока не распробовал, честно говоря. Не знаю, есть ли тут что-то что можно «распробовать», да - юнит содержит меньше строк чем скрипт, но юнитов больше, с переходом на systemd в системе стало больше файлов, она стала более запутанной.

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

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

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

твоя отвественность - проверять ошибки

Вот так и подмывает тебя послать то-ли в задницу, то-ли программирование учить. В последий раз объясняю как для тупых: я говорю не о какой-то абстрактной фигне, прочитанной в интернетах, а о вполне конкретном boilerplate коде, с которым сталкивался каждый, кто хоть раз писал сетевого демона. Systemd позволяет этот код безболезненно выкинуть, получив при этом более безопасное, легко настраиваемое и интегрируемое решение.

Да, при этом оно не заработает на каком-нить устаревшем говне. При коммерческой разработке я бы может ещё и заморочился на тему окупятся ли затраты на поддержку этого дерьма поступлением от клиентов с нищебродских машин. В случае open source даже вопроса нет - убогие с баттхёртом немедленно идут нахер. Убогие с патчами - туда-же, если ради их баттхёрта мне прийдётся вкорячить простыню boilerplate кода, который я ещё и тестировать не смогу. Вот если кто-нибудь запилит библиотечку-враппер, будет её хорошо поддерживать, запакует для основных дистров... Отсутствие подобной библиотеки для меня наиболее сильный аргумент в пользу того, что среди systemd-хейтеров нет технически подкованных людей.

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

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

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

«Systemd позволяет этот код безболезненно выкинуть, получив при этом более безопасное, легко настраиваемое и интегрируемое решение.» офигительно безопастно и удобно взять часть настроек (ну хотя бы порт) и выложить из конфигурацинных файлов того демона к которому они относятся в какоето левое место. которое кстати может и помняться как только поттеринг этого захочет (а захочет он этого как только появится распространненная совместима альтернатива) так что получаем и неудобно и кстати небезопастно

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

как родными его средствами ограничить настройки контроллера cpuset

Пока что никак. Это всё (управление ресурсами) очень сильно WIP, причём в скором времени собираются и ядерные интерфейсы перепилить. В настоящий момент, если очень надо, можно использовать ExecStartPost= и спецификатор %c (путь к контрольной группе юнита).

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

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

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

Вот если кто-нибудь запилит библиотечку-враппер

Для systemd? Помилуйте, но это не благодарное дело - учитывая как бурно идет разработка этой поделки. Никому это нафиг не надо, даже чтоб доказать что-то месье Anonymous'у.

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

хомячки её хотят, не разбираясь, что там внутри, и здраствуйте: к вам приехал systemd

Твой баттхёрт сегодня как-то особенно доставляет - не иначе как приближение весны сказывается :)

Кстати вспомнилось - за включение journald в обязательном виде Леннарту памятник надо поставить! Прикинь - используя socket activation в качестве бесплатного бонуса я получаю возможности забрать отладочный вывод своего демона одной командой. Одной, мля, командой! Ничего не потеряв и ничего лишего, только релевантный лог, причём независимо от того, что у клиента - fluentd, elasticsearch или ещё какой страх.

Одной командой, которую даже сраная, блин, секретарша скопипастить может! Причём судя по тому, сколько иногородний коллега учил её волшебной магии «выделить мышкой для копирования - вставить по средней кнопке» она либо редкостная ТП, либо он её таки трахнул.

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

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

там выше был вопрос как запускать подобный «cтильно-модно-молодежный» «демон» без системд

И там же выше был ответ, причём сразу со ссылкой на документацию. Но хейтерам хоть вглаза ссы.

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

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

и выложить из конфигурацинных файлов того демона к которому они относятся в какоето левое место

Какой же ты скучный тупарь - ты даже не в курсе, что unit это, как правило, часть дерева исходников upstream проекта, а не systemd.

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

Помилуйте, но это не благодарное дело

Ну да, действительно - всего-то облегчить поддержку устаревающих систем... ни в какое сравнение не идёт с нытьём, по поводу отсутствия их поддержки. Пролжайте ныть :)

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

блин! ты читать умеешь? я ж написал _почему_, сразу после фразы «не благодарное дело».

и ты же сам добавил %)))

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

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

Ты просто ещё мал, а мы это уже проходили. Именно так шагала Windows: интересные фишки для разработчиков, но говно в виде ОС. И да, завязка на говно в ущерб кроссплатформенности.

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

баг с разрушением файловых систем при гибернейте цветет и пахнет.

Ждём от разработчиков systemd цирка в lkml по поводу неправильного ядра.

SystemD-hater
()
Ответ на: комментарий от anonymous

нет в третий раз писать багрепорт не буду

Первые два багрепорта покажешь?

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

завязка на говно в ущерб кроссплатформенности.

Наоборот - завязка на удобную функциональность вместо кроссплатформенного говна. Да и какие именно платформы ты имеешь ввиду? Мастдай? Сами в нём копайтесь. Бзди? Рип. Соплярис? Уже даже пахнуть перестал. Ведроид и прочие недоОС? Один хрен с нуля переписывать.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.