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 ()

Ответ на: комментарий от 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

Re: Почему на самом деле не нужен systemd

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

Ты лох.

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

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

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

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

Иное дело 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 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.