LINUX.ORG.RU

systemd — новый подход к инициализации системы

 , , smf, ,


2

2

Lennart Poettering, сотрудник компании Red Hat, представил концепцию принципиально нового механизма управления инициализацией системы — systemd (system daemon), которая вобрала в себя достоинства классического System V init и более современных launchd (Mac OS X), SMF (Solaris) и Upstart (Ubuntu, Fedora), но при этом лишена многих их недостатков. В разработке этого проекта ему помогали сотрудники Red Hat, Novell, IBM, Intel и Nokia.

systemd опирается на современные linux-технологии: cgroups, AutoFS, D-Bus, и при этом совместим с исторически устоявшимися механизмами: init-скриптами, стандартными командами shutdown, poweroff и т.п. Предоставляемый systemd функционал позволяет заменить не только систему инициализации, но и ряд других подсистем, в частности, cron, (x)inetd, xdm/kdm/gdm/..., частично даже SELinux.

Основные идеи, использованные при создании systemd:

  • Контроль над сокетами. Многие демоны, запускаемые при инициализации, взаимодействуют с другими демонами через unix domain и сетевые сокеты, и большинство существующих систем инициализации запускают демона-клиента только после того, как демон-сервер запустится и создаст сокет. Вместо этого, systemd создает сокеты, а затем запускает демонов, передавая им эти сокеты. Даже если демон-клиент запустится быстрее и начнет использовать сокет раньше сервера, ничего страшного не произойдет: его запрос будет буферизован и передан серверу, как только тот сможет его обработать. Такой подход уже используется в Mac OS X (launchd), позволяя этой ОС достигать впечатляющей скорости загрузки.

    Аналогичный принцип используется systemd и при запуске служб, использующих шину D-Bus.

    Кроме того, возможен автоматический запуск служб при обращении к заданным сокетам (см. ниже).

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

    Разумеется, этот подход неприменим к /, /proc, /sys и т.п.

  • Минимизация числа вспомогательных процессов. В настоящее время значительная часть работ по инициализации производится шелл-скриптами, что приводит к колоссальным времязатратам. В частности, Леннарт пишет:

    On my system the scripts in /etc/init.d call grep at least 77 times. awk is called 92 times, cut 23 and sed 74,

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

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

  • Отслеживание процессов. В ныне используемых системах инициализации в принципе возможна такая ситуация, когда при неправильном форке процесс может «потеряться». Например, так может произойти с некорректно написанным CGI-приложением, и процесс останется работать даже после остановки веб-сервера.

    Для предотвращения таких ситуаций systemd использует интегрированный в ядро Linux механизм контрольных групп (cgroups). Если приложение не имеет доступа к псевдо-ФС, управляющей работой cgroups, то оно не может самостоятельно покинуть свою группу и «потеряться».

    Также к этой группе задач относится и автоматический перезапуск демонов, перенаправление их stdout/stderr на выбранные TTY или в системный журнал, регистрация всех запусков и остановок служб, и многое другое.

  • Ограничение процессов. systemd предоставляет множество возможностей ограничить или расширить полномочия процессов, контролируя такие параметры, как uid, gid, umask, рабочий и корневой каталоги, класс и приоритет CPU и I/O, наличие доступа на чтение и запись к смонтированным файловым системам и отдельным каталогам и т.п. Также можно использовать возможности по ограничению ресурсов, предоставляемые cgroups.

Базовым элементом systemd являются модули (units), которые связаны между собой и имеют определенный тип. Каждый модуль может требовать для своей работы другие модули, конфликтовать с модулями, запускаться только после или до определенного модуля (директивы конфигурации Requires, Conflicts, Before, After, Wants). Из типов модулей определены:

  • service — обычный демон, поддерживающий операции start, stop, restart, reload. Может быть представлен родным (native) файлом конфигурации systemd или System V init-скриптом.
  • socket. При обращении к сокету генерируется событие, для которого можно настроить обработчик. Например, автоматически запускать определенные службы при обращении к заданному сокету. В этом отношении systemd похож на давно известный (x)inetd, однако при этом поддерживает unix domain сокеты и FIFO.
  • device. Отметив нужные устройства в конфигурации udev, впоследствии можно использовать такие события, как появление и удаление устройства, в качестве событий systemd, назначив на них обработчики. Например, при появлении устройства bluetooth будет запущена соответствующая служба.
  • mount. systemd контролирует все точки монтирования файловых систем. В целях обратной совместимости поддерживается сбор информации о точках монтирования из /etc/fstab.
  • automount. Для помеченных таким образом точек монтирования, монтирование выполняется только при обращении к ним.
  • target. Более гибкий аналог уровней исполнения (runlevels), используемых в System V init. Представляет собой группу служб, объединенных по функциональному назначению. Например, multi-user.target идентичен runlevel 5, а bluetooth.target приводит к инициализации подсистемы bluetooth.
  • snapshot — во многом похож на target. Позволяет «запомнить» существующую конфигурацию units (запущенных служб, открытых сокетов, смонтированных ФС) с тем, чтобы в дальнейшем восстановить это состояние. Позволяет, например, перейти в emergency shell (сейчас это init 1), а затем полностью восстановить набор запущенных служб. Другой пример — выход системы из состояния suspend.

Надо заметить, что systemd отличается от SMF, во-первых, тем, что позволяет оперировать не только зависимостями между службами, но и событиями, например, «готовность устройства» или «обращение к сокету». Во-вторых, systemd использует более простой формат файлов конфигурации (.desktop aka .INI против XML в SMF).

От upstart же systemd отличается более высокой степенью параллелизации, и как следствие, более высокой скоростью загрузки. Например, если демон A требует для работы сокет, открытый демоном B, то upstart сначала запустит демона B, а затем демона A, в то время как systemd создаст сокет сам и запустит обоих демонов одновременно, что занимает примерно в два раза меньше времени. Используемый в upstart принцип, когда ключевыми событиями является лишь запуск и остановка демона, Леннарт и его коллеги считают изначально неэффективным.

Well, the point of the part about Upstart above was to show that the core design of Upstart is flawed, in our opinion. Starting completely from scratch suggests itself if the existing solution appears flawed in its core. However, note that we took a lot of inspiration from Upstart's code-base otherwise.

>>> Подробности

★★★★

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

> Как ты одной командой посмотришь порядок запуска служб в upstart?

апстарт не юзал, но думаю там вывести порядок проблем нет — что-нить типа --dry-run

если что — утилитка для топологической сортировки уже сто лет в дебиане

а порядок загрузки с моими префиксами будет выводится той же командой, что с твоими

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

> Обоснуешь, или так, дело вкуса?

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

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

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

>такое было только в древних бейсиках, где для указания порядка исполнения в начале строки ставился ее номер, да еще в добавок между допустим 31 и 32 было нереально вставить новую строку — ровно то же, что в «современном» дебиане!!!

Там была же какая-то команда для перенумерации строк :D

Чёрт, позабыл основы!

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

>а C++, STL, boost::rope как?

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

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

>> Как ты одной командой посмотришь порядок запуска служб в upstart?

апстарт не юзал, но думаю там вывести порядок проблем нет — что-нить типа --dry-run

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

А вот это уже уродство.

почему-то в LSB решили стандартизировать эти facilies

Я знаю. Но, в отличие от тебя, они не предлагают включать facilities в имена скриптов - именно такое включение я назвал уродством.

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

> 3. эти цифры еще и от дистра зависят

И что? В Debian и пакеты по-другому называются, и даже пакетный менеджер другой.

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

> есть плюсы:

Нету этих плюсов. Сплошные минусы.

1. одинаковый для всех демонов формат конфига над (форкнутыми) экземплярами, ...

Наоборот. Вместо одного конфига - два. Как было уже замечено - systemd не парсит чужие конфиги и не может автоматически определять зависимости. А значит, например, порт mysql-я придется вписывать в двух местах - в конфиг mysql-я, и в конфиг systemd.

2. общий код вынесен в одно место (а-ля inetd, только без тормозов на запуск)

Ага, вместо одного кода - два. Поскольку каждый демон вынужден будет поддерживать два варианта кода. Один - для приема соединений от systemd и второй - для самостоятельного приема соединений (не будет же процесс mysql-я убиваться после каждого запроса, значит ему придется висеть дальше в памяти, и остальные входящие соединения обрабатывать самому).

3. можно закрыть ВСЕ порты, которые не слушает системд (так как демоны получают порты только от него) — получаем единое место конфигурирования

А, точно. Получаем три места конфигурирования: конфиг приложения, конфиг systemd и конфиг файрвола. Ну и где тут единое место? Разве что единое место сбоя - глюкнет systemd и ляжет все. А глядя на то, как «стабильно» работают остальные проекты Леннарта...

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

>Там была же какая-то команда для перенумерации строк :D

А нас в школе без перенумерации учили работать, просто нумеровали не с шагом один, а с шагом 10. Тогда можно было несколько строк впихнуть при необходимости

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

>Наоборот. Вместо одного конфига - два. Как было уже замечено - systemd не парсит чужие конфиги и не может автоматически определять зависимости. А значит, например, порт mysql-я придется вписывать в двух местах - в конфиг mysql-я, и в конфиг systemd.

Ага, вместо одного кода - два. Поскольку каждый демон вынужден будет поддерживать два варианта кода. Один - для приема соединений от systemd и второй - для самостоятельного приема соединений (не будет же процесс mysql-я убиваться после каждого запроса, значит ему придется висеть дальше в памяти, и остальные входящие соединения обрабатывать самому).

Судя по ваши утверждениям, вы слабо себе представляете, что такое сокет. Покурите маны, чтоли.

Хинт: если systemd будет работать как суперсервер, в конфиге мускуля можно писать любуй лабуду про порт. Она ни на что не повлияет. И никаких двух вариантав кода тоже не нужно.

Получаем три места конфигурирования: конфиг приложения, конфиг systemd и конфиг файрвола.

Гораздо проще написать один маленький скриптик, который парсит конфиги одного демона, чем париться с поиском их по всей системе и сотней различных синтаксисов.

Разве что единое место сбоя - глюкнет systemd и ляжет все.

А если глюкнет нынешний init, что будет?

А глядя на то, как «стабильно» работают остальные проекты Леннарта...

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

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

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

Если бы только это, а то ведь космонавт еще и своих ошибок добавил. Например http://0pointer.de/blog/projects/pa-in-ubuntu.html.

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

> Там была же какая-то команда для перенумерации строк :D Чёрт, позабыл основы!

была, но не во всех бейсиках; а еще у нас в школе был фокал, так там тоже номера строк и не было команды перенумерации (1988 год если что)

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

>> почему-то в LSB решили стандартизировать эти facilies

Я знаю. Но, в отличие от тебя, они не предлагают включать facilities в имена скриптов - именно такое включение я назвал уродством.

мысль с самого начала была выражена условно:

ЕСЛИ_УЖ включать что-то в имена скриптов

ТО_РАЗВЕ_ЧТО стандартизированные LSB facilies + локальные свои

НО_НЕ_В_КОЕМ_СЛУЧАЕ не двузначные числа

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

>> 3. эти цифры еще и от дистра зависят

И что?

и то, что тебе, как пакетостроителю, придется помнить не одно цифровое значаение константы NETWORK_IS_UP, а несколько для разных дистров — это и называется зоопарк.

В Debian и пакеты по-другому называются, и даже пакетный менеджер другой.

гы. это не мешает иметь FHS и класть многие файлы в одно и то же место.

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

>> Я знаю. Но, в отличие от тебя, они не предлагают включать facilities в имена скриптов - именно такое включение я назвал уродством.

мысль с самого начала была выражена условно:

ЕСЛИ_УЖ включать что-то в имена скриптов

ТО_РАЗВЕ_ЧТО стандартизированные LSB facilies + локальные свои

Имя всё равно будет уродливым.

В Debian и пакеты по-другому называются, и даже пакетный менеджер другой.

и то, что тебе, как пакетостроителю, придется помнить не одно цифровое значаение константы NETWORK_IS_UP, а несколько для разных дистров

Отчасти для этого придуманы facilities, и см. ниже.

гы. это не мешает иметь FHS и класть многие файлы в одно и то же место.

Как человек, перешедший с RH на Debian, могу сказать, что приоритеты служб - наименьшая из проблем :)

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

>По сути Леннарт пытается всем доказать, что-то вроде «Лисп лучше, чем Cи, а Си вообще дефективен по дизайну».

Вообще-то Леннарт пытается все переписать на Си как настоящий труСишка.

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

>А если глюкнет нынешний init, что будет?

Нынешний init Леннарт не писал - там все в порядке.

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

> Имя всё равно будет уродливым.

как раз таки уродливо или нет имя — это дело вкуса, а вот архитектурное решение «упорядочивать по цифровому префиксу» уродливо гораздо более объективно, и именно про него я с самого начала говорил, а не про имена

кстати, бывает я делаю

./generate | sort -u > new
./new

и в new получается не плоский порядок, а циклы, условные операторы, но блин предложить аналогичное (сортировка по префиксам) для масштаба целой юникс-системы/дистрибутива — это феерично!

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

> Как человек, перешедший с RH на Debian, могу сказать, что приоритеты служб - наименьшая из проблем :)

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

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

> а вот архитектурное решение «упорядочивать по цифровому префиксу» уродливо гораздо более объективно

Ерунда. Тебе просто нужно вставить узел в уплощенный граф зависимостей в уме (этот граф не зависит от дистрибутива, и уплощен до тебя).

Как человек, перешедший с RH на Debian, могу сказать, что приоритеты служб - наименьшая из проблем :)

«наименьшая» должна определяться в рамках нынешней дискуссии

Как раз нет. Цена миграции - это время и усилия на то, чтобы научиться эффективно работать в новой системе. По своему опыту скажу - init-система освоения не требует.

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

> (этот граф не зависит от дистрибутива, и уплощен до тебя).

«уплощенный до меня» граф — это уродство (оно приемлемо только если я сам сделал этот граф плоским, и выброшу скрипт, юзающий его, на следующей неделе)

этот граф не зависит от дистрибутива

ты уверен?

в дебиане дефолтный приоритет 20 и ssh имеет приоритет 15, в редхате ssh имеет приоритет 55, и какой там дефолтный приоритет?

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

> Цена миграции - это время и усилия на то, чтобы научиться эффективно работать в новой системе. По своему опыту скажу - init-система освоения не требует.

«работать в» можно сразу почти везде в unix-like и даже иногда на винде

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

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

> этот граф не зависит от дистрибутива

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

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

> «уплощенный до меня» граф — это уродство

Это приемлемое упрощение.

этот граф не зависит от дистрибутива

ты уверен?

Да.

в дебиане дефолтный приоритет 20 и ssh имеет приоритет 15

Дефолтный приоритет чего?

Цена миграции - это время и усилия на то, чтобы научиться эффективно работать в новой системе. По своему опыту скажу - init-система освоения не требует.

«работать в» можно сразу

Я сказал «эффективно работать».

почти везде в unix-like и даже иногда на винде

Возможно есть такие люди, но я не настолько крут - мне нужно учиться. Да и Unix-like бывают разные - посмотрел бы я на новичка за консолью SPARC/Solaris v2.5

как там в RH с криптованными дисками и на каком приоритете служб они подключаются?

Не сталкивался. Думаю, они монтируются, как обычные локальные ФС.

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

> Уродский или не уродский — это не так важно. Важно, что хорошо документированный.

дружественная к пользователю система (с точки зрения техносноба, как назвал меня сву) должна быть понятна СРАЗУ грамотному человеку, а не специально дрессированному специалисту, убившему время на тупое запоминание и условные рефлексы

короче — синтаксис make-а (с дополнением для мягких зависимостей) был бы примером хорошего дизайна инит-системы

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

> дружественная к пользователю система (с точки зрения техносноба, как назвал меня сву) должна быть понятна СРАЗУ грамотному человеку

Старая SysV init понятна всем и сразу.

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

> Дефолтный приоритет чего?

приоритет, который по дефолту проставляет update-rc.d

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

> Старая SysV init понятна всем и сразу.

МНЕ непонятно, как воткнуть что-то начинающееся на «а» *между* S24hal и S25dbmail, может разъяснишь?

(в то время как в мейк-файле это быбо бы без проблем)

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

> Старая SysV init понятна всем и сразу.

МНЕ непонятно

Доо.

как воткнуть что-то начинающееся на «а» *между* S24hal и S25dbmail, может разъяснишь?

Я даже не буду требовать с тебя хотя бы придумать службу, которая нужна dbmail, и которая нуждается в HAL. Но решается проблема так: ты перенумеруешь нужное количество скриптов (или даже их все), чтобы получить удовлетворяющую тебя последовательность.

Нерешаемая задача для SysV init - это более 100 служб. Ну или по крайней мере я не знаю, как это решить.

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

> Но решается проблема так: ты перенумеруешь нужное количество скриптов (или даже их все), чтобы получить удовлетворяющую тебя последовательность.

она так решается, и даже update-rc.d будет при апдейте не менять мои номера, но мы получем противоречие с

этот граф не зависит от дистрибутива

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

т.е. он может зависеть даже от конкретной машинки, что гораздо хуже зависимости от дистрибутива

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

> мы получем противоречие с

этот граф не зависит от дистрибутива

Нет, форма графа останется почти той же - добавится новая вершина (твоя служба) и изменится нумерация следующих за ней вершин уплощенного графа (что естественно).

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

> Нет, форма графа останется почти той же - добавится новая вершина (твоя служба) и изменится нумерация следующих за ней вершин уплощенного графа (что естественно).

может и не остаться, если мы добавим что, что должно пускаться раньше чем допустим S20, но одновременно позже чем S40 — придется перенумеровывать весьма серьезно

как такое может случится? очень просто — какой-нить шейпер трафика, который берет себе данные из БД

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

и честно говоря мне надоело доказывать что это уродство — оно все равно скоро помрет и без моих доказательств

интереснее обсудить возможные недостатки (и достоинства) автоматического (через блокировку на сокетах, файлах, autofs) опеределения зависимостей

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

> upstart собирается заменить и cron, и xinetd. Походу у всех изобретателей новых init - мания величия.

сейчас инит + обвеска к нему криво выполняет простую фундаментальную задачу, которую хорошо выполняет make; в сравнении с добавлением свистелок и перделок (например, не ручаясь за точность — возможность раздельной регуляции громкости того, что обычно регулируется вместе) это разумный подход

насчет крон-а — вроде апстарт его и до сих пор не заменил? (так что разум иногда торжествует)

xinitd просто необходимо заменить для авт. определения зависимостей, и это тоже разумно

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

> Нерешаемая задача для SysV init - это более 100 служб. Ну или по крайней мере я не знаю, как это решить.

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

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

> Нерешаемая задача для SysV init - это более 100 служб. Ну или по крайней мере я не знаю, как это решить.

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

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

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

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

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

> xinitd просто необходимо заменить для авт. определения зависимостей, и это тоже разумно

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

Кстати, а зачем вообще нужно это полуавтоматическое определение зависисмостей? Можно пример, где оно будет полезно?

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

>Вообще-то Леннарт пытается все переписать на Си как настоящий труСишка.

Если вы полагаете, что этого делать не стоит, извольте доказать. Потому что выгода от выкидывания лишних прослоек вполне очевидна.

Вот если бы вы переписали linux на шарпе или яве, и оно работало быстрее и надёжнее нынешнего сишного варианта, тогда бы ваша правота была бы очевидной. А так вы, извините, бред несёте.

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

>> Нерешаемая задача для SysV init - это более 100 служб. Ну или по крайней мере я не знаю, как это решить.

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

Ну тогда нерешаемая задача отодвигается вообще до неприличия далеко :)

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

> Ну тогда нерешаемая задача отодвигается вообще до неприличия далеко

и что более интересно, так это то, что это было тебе *сразу* не ясно (кстати, если бы эти номера были всегда различны и шли сплошным интервалом от 00, я бы счел систему не такой уродской)

а мне сразу не ясно было то, что эти приоритеты сохранятся при апдейте — это я узнал только из man update-rc.d (про возможность одинаковых номеров я давным-давно прочел, а не догадался)

и тут можно было бы не остановиться (как я предложил), а провести анализ — будь система сформулирована в другом виде (как набор зависимостей), возникли ли бы такие непонимания... хотя может и лень

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

и еще добавлю — мой стиль не трогать там, где специально не написано, что можно трогать, и не изучать особенно глубоко — я не админ — так что я бы НЕ СТАЛ собственноручно менять приоритеты

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

>> Ну тогда нерешаемая задача отодвигается вообще до неприличия далеко

и что более интересно, так это то, что это было тебе *сразу* не ясно

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

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

и вот еще — ты сразу догаешься щас — реальный порядко загрузки определяется сортировкой по полному имени, включая префикс, или же инит имеет право отсортировать только по префиксу, и запустить S42foo *раньше* S42bar?

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

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

> Ну да, в 3 часа ночи задача, с которой не сталкивался, может показаться нерешаемой. Но она решаема, что как бы намекает на здравость обсуждаемой системы.

с мейк-файлом таких проблем не было бы и в 3 часа ночи, т.к. он не уродство

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

> с мейк-файлом таких проблем не было бы и в 3 часа ночи, т.к. он не уродство

С абстрактным makefile в вакууме - конечно.

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