Системд, стар десет година, и даље изазива жустре дебате у Линук заједници. Иако га користе бројне велике Линук дистрибуције, отпор према њему остаје јак.
Процес покретања Линукс система
Када се рачунар укључи, хардвер се активира, а затим, у зависности од типа сектора за покретање, рачунар извршава главни запис за покретање (МБР) или Унифиед Ектенсибле Фирмваре Интерфаце (УЕФИ). Коначни задатак оба процеса је покретање Линукс кернела.
Кернел се учитава у меморију, декомпресује и иницијализује. У РАМ меморији се креира привремени систем датотека, обично користећи алатку под називом инитрамфс или инитрд. Ово омогућава проналажење и учитавање неопходних драјвера. Даље, омогућава се учитавање система датотека корисничког простора и припремање окружења за кориснички простор.
Креирање корисничког окружења контролише инит процес, први процес који кернел покреће у корисничком простору. Он има ИД процеса (ПИД) један. Сви други процеси су директни или индиректни потомци инит процеса.
Пре системд-а, чест стандард за инит процес је био прерада Уник Систем В инит. Постојали су и други избори, али Систем В инит је био стандардни избор у већини дистрибуција које нису засноване на Беркелеи Софтваре Дистрибутион (БСД). С обзиром на то да је проистекао директно из Систем В Уник-а, духовног претка Линукс-а, многи га сматрају „званичним начином“ за извршавање инит процеса.
Процес покретања иницира све демоне и сервисе који су неопходни за несметано функционисање оперативног система. Ови демони се баве мрежним стеком, омогућавају рад другог хардвера у рачунару и обезбеђују почетни екран.
Многи од ових процеса у позадини настављају да раде након покретања система. Они управљају информацијама о догађајима у дневницима, прате промене у хардверу приликом уметања или уклањања уређаја и управљају пријављивањем корисника. Није изненађење да систем инит такође укључује функције за управљање сервисима.
Можемо користити команду ps да погледамо процес са ПИД 1. Користићемо опције ф (приказ у пуном формату) и п (ПИД):
ps -fp 1
Видимо да је процес са ПИД 1 системд. Покретање исте команде на Мањаро Линук-у дало је другачији резултат. Процес са ПИД 1 је идентификован као /сбин/инит. Кратак поглед на ту датотеку показује да је то симболичка веза ка системд-у:
ps -fp 1
ls -hl /sbin/init
Користећи опцију ппид (ИД родитељског процеса) са командом ps, можемо видети које процесе је директно покренуо системд:
ps -f --ppid 1
То је прилично дугачка листа, као што се види на слици испод.
Алтернативе
Неколико пројеката је покушало да створи алтернативу традиционалном Систем В инит-у. Један од главних проблема са Систем В инит-ом је што се сви процеси покрећу серијски, један за другим. Да би се побољшала ефикасност процеса покретања, многи алтернативни пројекти користе паралелизам за покретање процеса истовремено и асинхроно.
Ево информација о неким од њих:
Upstart: Развијен од стране Canonical, коришћен је у Ubuntu 9.10, Red Hat, Red Hat Enterprise Linux (RHEL) 6, CentOS 6, и Fedora 9.
runit: Ради на FreeBSD и другим BSD дериватима, macOS и Solaris, као и на Linux системима. Такође је укључен као подразумевани инит систем у Void Linux-у.
s6-linux-init: Ова замена за System V init је дизајнирана да строго прати Unix филозофију, која се често своди на „ради једну ствар и уради то добро“.
Постоје многе друге имплементације са различитим функционалностима и дизајном. Међутим, ниједна од њих није изазвала толику контроверзу као што је то учинио системд.
Системд приступ
Системд је представљен 2010. године и почео да се користи у Федори 2011. Од тада га је усвојио велики број дистрибуција. Развили су га Ленарт Потеринг и Кеј Сиверс, два софтверска инжењера у Ред Хат-у.
Системд је много више од инит замене. То је пакет од око 70 бинарних датотека које управљају иницијализацијом система, демонима и сервисима, евидентирањем и праћењем дневника, као и многим другим функцијама којима су раније управљали наменски модули у Линук-у. Већина њих нема никакве везе са иницијализацијом система.
Неки од демона које обезбеђује системд су:
системд-удевд: Управља физичким уређајима.
системд-логинд: Управља пријављивањем корисника.
системд-ресолвед: Омогућава резолуцију имена мреже за локалне апликације.
системд-нетворкд: Управља и открива мрежне уређаје и управља мрежним конфигурацијама.
системд-тмпфилес: Креира, брише и чисти нестабилне и привремене датотеке и директоријуме.
системд-лоцалед: Управља подешавањима локализације система.
системски машински: Открива и надгледа виртуелне машине и контејнере.
системд-нспавн: Може да покрене команду или други процес у лаганом контејнеру именског простора, пружајући функцију сличну chroot.
И то је само врх леденог брега, што је и суштина проблема. Системд је одавно премашио оно што се очекује од инит система, што, према његовим противницима, представља дефиницију пузања опсега.
„То је превелико. То ради превише.“
Противници системд-а указују на велику, неуобичајену комбинацију функција коју он обухвата. Све ове функције су већ постојале у Линук-у, и можда је неким од њих било потребно освежење или нови приступ. Међутим, комбиновање свих ових функција у оно што би требало да буде инит систем је архитектурално збуњујуће.
Системд је описан као једна тачка отказа за превише критичних функција, али то изгледа неоправдано. Истина, то оповргава Уник филозофију стварања малих алата који раде заједно, уместо великих софтверских пакета који све раде одједном. Иако системд није строго монолитан (састоји се од много бинарних датотека, а не једне огромне), он обједињује велики број различитих алата за управљање и команди под једним кровом.
Иако можда није монолитан, огроман је. Да бисмо стекли представу о његовој величини, избројали смо редове текста у кодној бази кернела 5.6.15 и главној грани системд-а GitHub репозиторијума.
Ово је била релативно груба пројекција. Бројали смо редове текста, а не само редове кода. Дакле, укључени су коментари, документација и све остало. Међутим, ово је било слично поређење и пружило нам је једноставно мерило:
( find ./ -name '*.*' -print0 | xargs -0 cat ) | wc -l
Кернел је имао скоро 28 милиона (тачније 27.784.340) редова текста. Са друге стране, системд је имао 1.349.969, или скоро 1,4 милиона. По нашим мерилима, системд је око 5 процената величине кернела, што је невероватно!
Као поређење, број линија за модерну имплементацију Систем V init за Арцх Линук дистрибуцију је износио 1.721 ред.
Поезија очигледно не поштује Институт инжењера електротехнике и електронике (IEEE) Computer Society, нити Интерфејс преносивог оперативног система (POSIX) стандард. У ствари, он је охрабрио програмере да занемаре POSIX:
„Дакле, узмите копију Linux програмског интерфејса, занемарите све што пише о POSIX компатибилности и хакујте свој невероватан Linux софтвер. То је прилично олакшавајуће!“
Постојале су оптужбе да је системд Red Hat пројекат који користи само Red Hat-у, али се насилно намеће широј Linux заједници. Да, он је настао у Red Hat-у и њиме се управља. Међутим, од 1.321 сарадника, само мали део ради за Red Hat.
Дакле, шта Red Hat добија?
Џим Вајтхерст, председник ИБМ-а, који је некада био генерални директор Red Hat-а, изјавио је:
„Red Hat је размотрио многе доступне опције и чак је користио Canonical-ов Upstart за Red Hat Enterprise Linux 6. На крају, изабрали смо системд јер је то најбоља архитектура која обезбеђује проширивост, једноставност, скалабилност и добро дефинисане интерфејсе за решавање проблема које видимо данас и које очекујемо у будућности.“
Вајтхерст је такође рекао да виде предности и у уграђеним системима. Red Hat сарађује са „највећим добављачима уграђених уређаја на свету, посебно у телекомуникационој и аутомобилској индустрији, где су стабилност и поузданост на првом месту“.
Ово звучи као технички оправдани разлози. Може се разумети потреба компаније за поузданошћу, и није неразумно да Red Hat води рачуна о својим интересима, али да ли сви остали треба да следе њихов пример?
Да ли сте „попили системд Kool-Aid“?
Неки противници системд-а тврде да дистрибуције и појединци само слепо прате Red Hat и усвајају га.
Међутим, баш као и фраза „попити Kool-Aid“, то није сасвим тачно. Фраза је настала 1978. године, након што је вођа култа Џим Џонс приморао своје преко 900 следбеника да изврше самоубиство пијући течност са укусом грожђа помешану са цијанидом. Фраза је погрешно нанела срамоту Kool-Aid-у. Група је заправо пила Flavor Aid, али је Kool-Aid од тада био на црној листи због те асоцијације.
Поред тога, Linux дистрибуције не прате слепо Red Hat; они усвајају системд након озбиљног разматрања. Дебата је већ неко време беснела на Debian мејлинг листама. Међутим, 2014. године заједница је гласала за усвајање системд-а као подразумеваног инит система, али и за подршку алтернативама.
Debian је важан пример јер није проистекао из Red Hat-a, Fedore или CentOS-а. На Debian-у није примењено управљање из Red Hat-а. И Debian, попут ПИД 1, има много потомака, укључујући Ubuntu и његове бројне спин-офф-ове.
Одлуке које доноси Debian заједница су далекосежне. О њима се такође жустро расправља и гласа се за употребу Condorcet методе гласања. Ни заједница не доноси такве изборе олако.
Поново је гласала у децембру 2019. године да се настави са фокусом на системд и да се наставе истраживања алтернатива. Супротно слепом праћењу, ово је заправо пример демократије и слободе избора на делу.
Ограничења избора
Обично не можете да бирате да ли ћете користити системд са одређеном Linux дистрибуцијом. Уместо тога, дистрибуције саме бирају да ли желе да га користе, а ви можете да изаберете коју Linux дистрибуцију преферирате. Могуће је да је Linux дистрибуција коју волите прешла на системд. Као омиљени музичар који мења жанрове, ово може бити непријатно.
Људи који користе Debian, Fedora, CentOS, Ubuntu, Arch, Solus, и openSUSE, а који се противе усвајању системд-а, могу се осећати као да су избачени из своје омиљене дистрибуције. Ако су довољно убеђени у било који архитектонски избор, смањење обима или занемаривање POSIX-а, можда ће сматрати да је неодрживо да наставе да користе ту дистрибуцију.
Постоји спектар, наравно. На једном крају су људи који не разумеју проблеме (или их чак није брига), а на другом крају су страствени противници. Негде у средини су они који не воле промене, али им то није довољно да би напустили ту дистрибуцију. Али шта је са онима који због својих преференција или принципа не могу да остану на својој дистрибуцији?
Нажалост, није тако једноставно као инсталирање било ког инит система који желите. Немају сви техничку способност да то ураде, без обзира на потешкоће које настају када апликације или десктоп окружења, попут GNOME-а, зависе од системд-а.
Шта је са преласком на другу дистрибуцију? Неки су наклоњени Devuan-у, који се појавио као несистемски форк дистрибуција (у овом случају Debian) који је усвојио системд. Коришћење Devuan-а би требало да буде слично матичној дистрибуцији, али то није случај за све несистемске форкове. На пример, ако напустите Fedoru и пређете на antiX, Gentoo, или Slackware, имаћете сасвим другачије искуство.
Не иде нигде
Свиђа ми се нешто од онога што системд ради (једноставни и стандардизовани контролни механизми за процесе). Не разумем разлоге за неке од ствари које ради (бинарни дневници). Не свиђа ми се ни нешто од онога што ради (премештање кућних фасцикли — ко је то тражио?).
Дистрибуције попут Debian-а раде паметне ствари и истражују алтернативе како би његове опције остале отворене. Међутим, системд је овде на дуге стазе.
Ако администрирате Linux машине за друге, научите системд као што знате System V init. На тај начин, без обзира на шта наиђете, моћи ћете да обављате своје дужности.
Само користите Linux код куће? Ако јесте, изаберите дистрибуцију која задовољава ваше техничке потребе и усклађена је са вашом Linux идеологијом.