Системи системd отримують експериментальну підтримку для musl libc
Системи системd отримують експериментальну підтримку для musl libc
Системи системd отримали експериментальну підтримку для musl libc, що є реалізацією стандартної бібліотеки C, створеної на основі API системних викликів Linux. Це означає важливий зсув у сумісності по всьому середовищу Linux. Якщо вас цікавить, чому це так важливо, я поясню.
Різниця між системd та musl
Впродовж багатьох років системd і musl існували в окремих світах: системd вимагав glibc, тоді як дистрибутиви на базі musl покладалися на альтернативні системи ініціалізації та менеджери сервісів.
Іншими словами, дистрибутиви, що використовують musl libc, не могли запускати системd без масштабних модифікацій – або взагалі. Таким чином, всі дистрибутиви на основі musl були фактично без системd (вони використовували OpenRC, s6, runit, dinit тощо).
Потенційні зміни з підтримкою musl
Однак завдяки цій зміні ситуація може суттєво змінитися. Системd тепер успішно компілюється з musl у CI на upstream завдяки включенню необхідного коду для забезпечення сумісності.
Ю Ватанабе, старший інженер програмного забезпечення Red Hat та розробник системd, прокоментував:
“Я вирішу об’єднати це. Здається, що все це досить крихке, тому я трохи переживаю, що обслуговування стане проблемою. Але єдиний спосіб перевірити це – об’єднати і дати людям спробувати.”
“Я витратив деякий час на компіляцію з musl локально на Fedora, і ця частина працює досить добре. Але я не зміг запустити тести без контейнера. Ця частина трохи дратує – нам дійсно потрібно мати простий локальний робочий процес для розробки. Але, принаймні, компіляція працює, тож може, не все так погано.”
“Компіляція та юніт-тести проходять у CI, що поки що достатньо.”
Вплив на дистрибутиви, що базуються на musl
Як я вже згадував, цей розвиток може мати прямий вплив на дистрибутиви, побудовані на musl. Alpine Linux, Chimera Linux, postmarketOS та інші легкі або вбудовані системи можуть (згодом) почати експериментувати з компонентами системd.
І хоча жоден з цих проектів не оголосив про плани впровадження – і, найімовірніше, не впроваджуватиме – підтримка на upstream усуває давню перешкоду, що раніше ускладнювала ці експерименти.
Важливість для розробників
Ця зміна також важлива для розробників, які націлені на мобільні, IoT або платформи, зосереджені на контейнерах. Musl пропонує невелику і передбачувану бібліотеку libc, тоді як системd забезпечує комплексний набір послуг, логування, cgroup і мережеві компоненти. Можливість поєднувати ці два елементи розширює спектр конфігурацій, доступних для спеціалізованих пристроїв і мінімальних образів хмари.
На даному етапі, розробники системd вважають підтримку крихкою і очікують виникнення проблем під час тестування від більшої кількості користувачів. Однак інтеграція musl у CI проекту забезпечує видимість потенційних регресій для upstream-розробників, а не залишає їх для патчів.
Таким чином, musl стає першокласною увагою у процесі збірки системd вперше.
Для отримання додаткової інформації, відвідайте PR на GitHub, щоб дізнатися більше про підтримку musl у системd.




