Почему системный Linux все еще остается спорным после всех этих лет?

Терминал Linux с зеленым текстом на ноутбуке.
фатмавати ахмад дзенури / Shutterstock

Systemd 10 лет, но чувства по этому поводу в сообществе Linux не смягчились-это, как разделяющие теперь, как это когда-либо было. Несмотря на то, что он используется во многих основных дистрибутивах Linux, жесткое сопротивление не смягчается.

Последовательность загрузки Linux

Когда вы включаете компьютер, аппаратное обеспечение загружается, а затем (в зависимости от типа загрузочный сектор ваш компьютер использует) либо Главная загрузочная запись (MBR) выполняется или Унифицированный расширяемый интерфейс встроенных микропрограмм (UEFI) работает. Последнее действие обоих из них состоит в том, чтобы запустить Ядро Linux,

Ядро загружается в память, распаковывается и инициализируется. временная файловая система создается в оперативной памяти, обычно с помощью утилиты initramfs или initrd, Это позволяет определить и загрузить необходимые драйверы. Это, в свою очередь, позволяет файловой системе пользовательского пространства загружаться и готовиться к созданию среды пользовательского пространства.

Создание среды пользовательского пространства обрабатывается процессом init, который является первым процессом, запускаемым ядром в пользовательском пространстве. Оно имеет идентификатор процесса (PID) 1. Все остальные процессы являются прямыми или косвенными потомками процесса init.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Перед systemd, основным по умолчанию для процесса инициализации была переделка Unix System V init, Были и другие варианты, но System V init была стандартной опцией в большинствеBerkeley Software Distribution (BSD) производные распределения. Поскольку оно пришло непосредственно из System V Unix — духовного предка Linux — многие люди считают его «официальным способом» выполнения init.

Процесс init запускает все демоны и услуги, необходимые для обеспечения операционной системы осмысленным, интерактивным способом. Эти демоны обрабатывают такие вещи, как сетевой стек, включая другое оборудование на вашем компьютере и обеспечивая загрузочный экран.

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

Мы можем использовать ps чтобы увидеть процесс, который имеет PID 1. Мы будем использовать f (полный формат списка) и p (PID) варианты:

ps -fp 1

ps -fp 1 в окне терминала.

Видим процесс с PID 1 systemd, Выполнение той же команды в Manjaro Linux дало другой результат. Процесс с PID 1 был идентифицирован как /sbin/init, Быстрый просмотр этого файла показывает, что это символическая ссылка на systemd:

ps -fp 1
ls -hl /sbin/init

ps -fp 1 в окне терминала.

С использованием ppid (идентификатор родительского процесса) с psмы можем видеть, какие процессы были запущены напрямую systemd:

ps -f --ppid 1

ps -f --ppid 1 в окне терминала.

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

ps -f --ppid 1 в окне терминала.

Альтернативы

Несколько проектов пытались создать альтернативу традиционному System V init. Одна из основных проблем заключается в том, что при инициализации System V все процессы запускаются последовательно, один за другим. Чтобы повысить эффективность последовательности загрузки, многие альтернативные проекты используют параллелизм для одновременного и асинхронного запуска процессов.

Вот некоторая информация о некоторых из них:

Есть много других, отличающихся функциональностью и дизайном. Тем не менее, ни один из них создал фурор systemd сделал.

Системный Путь

systemd был выпущен в 2010 году и использовался в Fedora в 2011 году. С тех пор он был принят во многих дистрибутивах. Это было разработано Леннарт Поэттеринг а также Кей Сиверсдва программиста в RedHat.

systemd это гораздо больше, чем замена init. Скорее, это набор из примерно 70 двоичных файлов, которые обрабатывают инициализацию системы, демоны и службы, ведение журналов и журналирование, а также многие другие функции, которые уже обрабатывались выделенными модулями в Linux. Большинство из них не имеют ничего общего с инициализацией системы.

Некоторые из демонов предоставлены systemd находятся:

  • Systemd-udevd: Управляет физическими устройствами.
  • Systemd-logind: Управляет пользовательскими логинами.
  • Systemd-решение: Обеспечивает разрешение сетевых имен для локальных приложений.
  • Systemd-networkd: Управляет и обнаруживает сетевые устройства, а также управляет конфигурациями сети.
  • Systemd-tmpfiles: Создает, удаляет и очищает временные и временные файлы и каталоги.
  • Systemd-localed: Управляет настройками локали системы.
  • Systemd-механическая обработка: Обнаруживает и контролирует виртуальные машины и контейнеры.
  • Systemd-nspawn: Может запускать команду или другой процесс в облегченном контейнере пространства имен, предоставляя функциональность, аналогичную корневой,

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

«Это слишком большое. Это слишком много ».

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

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

Хотя он не может быть монолитным, он большой. Чтобы получить представление о масштабе, мы посчитали строки текста в базе кода ядра 5.6.15 и systemd мастер ветка репозитория GitHub,

Это был довольно грубый показатель. Он считал строки текста, а не только строки кода. Таким образом, это включало комментарии, документацию и все остальное. Тем не менее, это было сопоставимое сравнение и дало нам простой критерий:

( find ./ -name '*.*' -print0 | xargs -0 cat ) | wc -l

В ядре было около 28 миллионов (27 784 340, если быть точным) строк текста. В отличие от systemd было 1 349 969, или почти 1,4 миллиона. С нашей счастливой метрикой, systemd выходит примерно на 5 процентов размера ядра, что просто безумие!

В качестве еще одного сравнения, количество строк для современной реализации System V init для дистрибутива Arch Linux составило 1721 строк.

Поэзия явно не имеет никакого отношения к Институт инженеров по электротехнике и электронике (IEEE) компьютерное общество, ни Портативный интерфейс операционной системы (POSIX) стандарт. На самом деле он призвал разработчиков игнорировать POSIX:

«Итак, приобретите себе копию Программного интерфейса Linux, игнорируйте все, что говорится о совместимости с POSIX, и взломайте свое удивительное программное обеспечение Linux. Это очень облегчает!

Были обвинения в том, что systemd это проект Red Hat, который приносит пользу только Red Hat, но его принудительно кормят в более широком мире Linux. Да, он был рожден в Red Hat и управляется им. Тем не менее, из 1321 участника, только небольшая часть работает на Red Hat.

Итак, каковы преимущества Red Hat?

Джим Уайтхерст, президент IBM, который был однажды генеральный директор Red Hat сказал:

«Red Hat рассмотрела множество доступных вариантов и даже использовала Upstart от Canonical для Red Hat Enterprise Linux 6. В конечном итоге мы выбрали systemd, потому что это лучшая архитектура, которая обеспечивает расширяемость, простоту, масштабируемость и четко определенные интерфейсы для решения проблем, которые мы видим. сегодня и предвидеть в будущем ».

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

Это похоже на технически обоснованные причины. Вы можете понять потребность компании в надежности, и для Red Hat вполне разумно следить за своими интересами, но должны ли все остальные следовать этому примеру?

Пить системный Kool-Aid?

Некоторые противники systemd скажем, дистрибутивы и люди просто слепо следуют примеру Red Hat и принимают его.

Однако, как и фраза «пить Kool-Aid», это не совсем правильно. Создан в 1978 году после культовый лидер Джим Джонс, вынудив своих более чем 900 последователей покончить жизнь самоубийством, выпив жидкость со вкусом винограда, залитую цианидом, эта фраза неправильно позорит Kool-Aid. Группа на самом деле выпила «Ароматную помощь», но с тех пор эта кисть смололась.

Кроме того, дистрибутивы Linux не следуют слепо за Red Hat; они принимают systemd после серьезного обсуждения. Дебаты бушевали на Debian списки рассылки давно. Однако в 2014 году сообщество проголосовало за принятие systemd как система инициализации по умолчанию, но также для поддержки альтернатив,

Debian является важным примером, потому что он не является производным от RedHat, Fedora или CentOS. К Debian из Red Hat не применяется управление. И у Debian, как и у PID 1, есть много потомков, в том числе Ubuntu и его многочисленные побочные продукты.

Решения, принятые сообществом Debian, являются далеко идущими. Они также активно обсуждаются и голосуются за использование метод голосования Кондорсе, Сообщество также не делает такой выбор легко.

Он снова проголосовал в декабре 2019 года продолжать фокусироваться на systemd и продолжать изучать альтернативы. В противоположность слепому следованию, это на самом деле пример учебника демократии и свободы выбора на работе.

Ограничения выбора

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

Люди, которые используют Debian, мягкая фетровая шляпа, CentOS, Ubuntu, арочный, в единственном числе, а также OpenSUSEи возражать против принятия systemdможет показаться, что их лишают возможности использовать свое распределение выбора. Если они будут достаточно твердо относиться к любому из архитектурных решений, ползучести или игнорированию POSIX, они могут посчитать невозможным продолжать использовать этот дистрибутив.

Конечно, есть спектр. С одной стороны, у вас есть люди, которые не понимают проблем (или даже не заботятся), а с другой, у вас есть страстные возражающие. Где-то посередине находятся те, кому не нравятся перемены, но они не настолько обеспокоены, чтобы прыгнуть с корабля. Но как насчет распределения беженцев, которые не могут остаться в выбранном распределении из-за своих предпочтений или принципов?

К сожалению, это не так просто, как просто установить ту систему инициализации, которую вы хотите. Не у каждого есть техническая возможность сделать это, не обращая внимания на трудности, возникающие при работе приложений или рабочих сред, таких как GNOME, иметь зависимости от systemd,

Как насчет перехода на другой дистрибутив? Некоторые, как Devuanпоявился как неsystemd форки дистрибутивов (в данном случае Debian), которые приняли systemd, Использование Devuan должно быть похоже на родительский дистрибутив, но это не относится ко всемsystemd вилки. Например, если вы покинете Fedora и перейдете к Antix, Gentoo, или Slackwareу вас будет совсем другой опыт.

Это никуда не денется

Мне нравится кое что systemd делает (простые и стандартизированные механизмы управления процессами). Я не понимаю обоснование того, что он делает (двоичные журналы). Мне также не нравится то, что он делает (обновляет домашние папки — кто об этом просил?).

Такие дистрибутивы, как Debian, делают умную вещь и исследуют альтернативы, чтобы сохранить свои опции открытыми. Однако, systemd в нем надолго.

Если вы управляете машинами Linux для других, изучите systemd а также вы знаете System V init. Таким образом, независимо от того, с чем вы столкнетесь, вы сможете выполнять свои обязанности.

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

СВЯЗАННЫЕ С: Systemd изменит работу вашего домашнего каталога Linux

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *