Статьи

Стандартна база Linux

  1. Дистрибутивів ОС Linux створено досить багато, і створюється відчуття, що вони вже є окремі, не сумісні...
  2. Linux Standard Base
  3. підтримка LSB
  4. бібліотеки LSB
  5. Сильні сторони і обмеження LSB
  6. імена LSB
Дистрибутивів ОС Linux створено досить багато, і створюється відчуття, що вони вже є окремі, не сумісні один з одним операційні системи. Часом програми, скомпільовані під конкретний дистрибутив, не працюють на іншому дистрибутиві, навіть якщо процесорна архітектура це дозволяє. В результаті виробникам програмного забезпечення доводиться тестувати і сертифікувати свої продукти під різні варіанти Linux.

В даний час в світі Linux виділяються три центри інновацій - Red Hat, Novel / SuSE і Debian, в складі яких є великі команди розробників для доведення, що розвиваються в ініціативному порядку програмних систем до стану цілісних комерційного продукту. Компанія Red Hat здобула популярність завдяки своїй програмі пакетування RPM, ім'я Novell пов'язують з утилітою установки і конфігурації YaST, яка довгий час зберігала статус закритого продукту, а Debian - з системою багатоплатформного розробки та розповсюдження програм. Ці команди внесли істотний внесок у розвиток важливих для комерційних Linux-продуктів технологічних компонентів: багатоплатформного розробки, пакетування і установки програм, а також комплексної настройки всієї системи.

Проблема несумісності дистрибутивів

Досить згадати про складнощі розгортання проекту Linux Standard Base (LSB), що почався в 2002 році за підтримки громадської організації Free Standards Group. Перша версія LSB містила тільки рекомендації, що визначають, в яких каталогах повинні знаходитися компоненти операційної системи - бібліотеки, вихідні тексти, документація і т.п. Згодом з'ясувалося, що цього недостатньо для забезпечення сумісності, і з'явилися такі версії. Зараз прийнята специфікація LSB 2.1, яка послужила основою для документа, спрямованого на утвердження в ISO (правда, в дистрибутивах Linux поки реалізована тільки версія 2.0).

Як відомо, ядро ​​Linux контролюється Лінус Торвальдс; всі ключові зміни ядра узгоджуються з ним або з іншими координаторами. Склад і базова функціональність ядра завжди однакові в одній версії, але щоб у виробників не виникало проблем з перенесенням їх продуктів з однієї версії ядра на іншу, для системних викликів ядра необхідний стандарт. Мінімальною вимогою є дотримання специфікації ISO POSIX, на яку спочатку спиралися розробники Linux. У LSB увійшла розширена специфікація POSIX, прийнята ISO в 2003 році, але в ній не визначено пристрій ядра - описані лише інтерфейси, за допомогою яких додатки з ним взаємодіють. Втім, до складу ядра входять не тільки базові алгоритми управління пам'яттю, розподілу процесорного часу і організації взаємодії процесів ОС, але і драйвери периферійних пристроїв, за які зазвичай відповідають самі виробники. А крім загальних для всіх платформ алгоритмів в ядрі є апаратно залежні частини, які також розвиваються окремо.

Деякі розробники дистрибутивів додають в ядро ​​власні коди або коди сторонніх груп, оформлені як виправлення до ядра. Так, у вигляді виправлень можуть бути реалізовані засоби захисту. Крім того, деякі комерційні компанії додають в дистрибутиви Linux свої розробки, такі як файлові системи, засоби підтримки багатопроцесорних архітектур і розподілених обчислень, інші технологічні новації. Зрозуміло, що додатки, розраховані на підтримку цих технологій з боку ядра, не зможуть працювати з дистрибутивом, в якому такої підтримки немає. Вони не будуть LSB-сумісними, оскільки використовують додаткові інтерфейси, які не завжди є в інших LSB-середовищах. У деяких випадках ситуацію рятує механізм модулів, що дозволяє інтегрувати в ядро ​​додатковий код, але це можливо, тільки якщо в ядрі є інтерфейс для даної функціональності.

Основні відмінності дистрибутивів полягають в наборах програм, які їх складають. Для кожної програми потрібен свій набір бібліотек, які задіє додаток. У разі застосування відкритих вихідних кодів бібліотеки, розроблені одним програмістом або групою розробників, використовуються багатьма. А якщо вже додаток спирається на якусь бібліотеку, вона також повинна бути поміщена в дистрибутив. В результаті набір додатків визначає і вибір бібліотек.

При цьому в Linux прийнято використовувати динамічне зв'язування бібліотек: під час запуску програми ядро ​​ОС збирає її виконуваний образ з актуальними версіями бібліотек. Якщо ж інтерфейс бібліотеки не збігається з застосовуваної програмою, виникає помилка. Те ж саме відбувається, коли програма динамічного зв'язування не може знайти затребувану додатком бібліотеку, розташовану, наприклад, в нестандартному каталозі. Таким чином, для забезпечення сумісності дистрибутивів потрібно розміщувати стандартизовані бібліотеки в заздалегідь встановлених місцях, і якщо перша версія специфікації LSB визначала тільки стандартний набір каталогів, то друга зачіпає вже і набір функцій, об'єднаних в стандартній бібліотеці.

Вирішити проблему несумісності конкретної версії програми з бібліотекою дозволяє статичну зв'язування додатків: в їх склад включаються необхідні бібліотечні функції. Саме в такому вигляді поставляються більшість комерційних додатків, розробники яких не хочуть, щоб у клієнтів виникали проблеми з їх установкою. Однак при використанні статично пов'язаних бібліотек розмір самого додатка і обсяг займаного їм місця на диску збільшуються, тому розробники пропонують різні варіанти поставки своїх рішень - з динамічними або зі статичними бібліотеками. Стандарт LSB дозволяє вирішити ситуацію, якщо для розробника програми досить його базової функціональності. Втім, коректна робота додатків визначається доступністю не тільки кодів і бібліотек, а й інших ресурсів, таких як картинки, конфігураційні файли, підказки та документація. Вони також повинні розташовуватися в заздалегідь відомих і закріплених стандартом каталогах.

Несумісність може виникати при запуску додатків заздалегідь визначеними користувачами і їх групами (mail, shutdown, lp і ін.). А тому стандарт повинен закріплювати ще і розміщення ресурсів додатків: конфігураційні файли, системні сценарії запуску, графічні файли і документація, а також найменування стандартних користувачів і груп (в сенсі ОС), від імені яких може знадобитися виконати установку програми.

Linux Standard Base

Базовий набір специфікацій LSB називається LSB Base і включає в себе LSB-Core, LSB-C ++ і LSB-Graphics, що відповідають за стандартизацію відповідних елементів операційної системи. LSB-Core описує стандартне розташування файлів, LSB-C ++ - інтерфейс ядра на мові С ++, а LSB-Graphic - роботу додатків з X Window. Передбачається, що розробники будуть задіяти ту чи іншу специфікацію, якщо їх додаток використовує відповідну функціональність, і не вдаватися до допомоги функцій, які не описаних в специфікації. Тільки в цьому випадку гарантується коректна робота додатків у всіх LSB-сумісних дистрибутивах.

У специфікаціях є частини, які залежать від платформи (скажімо, LSB-IA-32 - специфікація LSB для 32-розрядних процесорів Intel-архітектури). Ці документи визначають особливості процесорної архітектури, які можуть вплинути на сумісність додатків. Фактично, специфікація стандарту для конкретної архітектури є комбінацією загального документа LSB-generic і архітектурно залежної частини LSB-arch; обидві є обов'язковими до виконання.

Базовим для Unix стандартом є формат уявлення здійсненних програм і бібліотек у вигляді файлів. Цей стандарт входить до складу специфікації System V ABI і називається Executable and Linking Format (ELF). Він важливий і для Linux: перехід версії ядра з 1.x на 2.x пов'язаний з підтримкою формату ELF і відмовою від застарілого a.out. Після появи другої версії ядра ELF є суттєвою частиною Linux, а його специфікація перекочувала в LSB.

Ще одним інститутом стандартизації, на документи якого спиралися творці LSB, є IETF. Так, в LSB використовуються стандартний алгоритм хеш-функції MD5 (RFC 1 321), протокол віддаленого виклику процедур RPC (RFC 1833), стандарти стиснення інформації ZLIB (RFC 1950), DEFLATE (RFC 1951), GZIP (RFC 1952), а також стандарт на електронний підпис OpenPGP (RFC 2440). Є і ще кілька специфікацій, на які спиралися розробники LSB, зокрема специфікації пакетування програм і перевірки цілісності пакету, що встановлюється в операційному середовищі.

Документ LSB-Core складається з трьох частин: специфікація формату ELF, набір вимог LSB і специфікація Linux Packaging Specification. В саму специфікацію LSB входять визначення базових та додаткових бібліотек, набір стандартних команд і утиліт Linux, вимоги до середовища виконання (ієрархія каталогів, локалізація, права доступу та ін.) І до стандартної процедури ініціалізації Linux, а також список стандартних рольових користувачів. Природно, специфікація фіксує лише базові можливості, яких проте досить для більшості утиліт і додатків. Якщо розробник застосовує в своїх продуктах тільки ці набори бібліотек, його застосування безболісно переносяться в будь-який LSB-сумісний дистрибутив.

Як стандарт пакетування програм служить RPM, що ускладнює забезпечення відповідності LSB для дистрибутивів, які не мають його підтримки, наприклад Debian. Втім, в стандарті є приписка, що при необхідності розробники дистрибутивів можуть використовувати і інші програми пакетування. Незмінним залишається лише вимога того, щоб після установки на клієнтську машину все компоненти додатків розташовувалися і іменувалися відповідно до LSB. Таким чином, частина Linux Packaging Specification фактично є необов'язковою: вона лише визначає стандартний формат представлення програм у файлах RPM.

Специфікація LSB-C ++ встановлює інтерфейс з ядром Linux для програм на мові програмування С ++. Цей інтерфейс зібраний в бібліотеку libstdcxx і визначається стандартом на С ++, який специфікований документом ISO / IEC 14882: 2003, а також специфікацією бінарного інтерфейсу Itanium C ++ ABI (Revision: 1.75). А специфікація LSB-Graphics містить опис інтерфейсу для графічних бібліотек, які пов'язані зі стандартами на X Window і OpenGL.

підтримка LSB

Підтримка специфікацій LSB може здійснюватися як на рівні дистрибутивів, так і на рівні додатків. Від укладачів дистрибутивів потрібно дотримуватися найменування каталогів і правильно пакетировать їх в дистрибутиві. Велика частина стандарту LSB встановлює використання конкретних технологій компіляції, тому розробникам дистрибутивів потрібно задіяти саме компілятори, що генерують виконані файли в форматі ELF. Стандарт LSB важливий тим, що значно розширює набір виконуваних додатків.

Природно, і самі програми для дистрибутива повинні відповідати специфікації LSB, що обмежує їх вибір. Втім, зараз з'явилося досить багато додатків, які відповідають специфікації LSB і гарантовано працюють в середовищі дистрибутива, сумісного з LSB.

бібліотеки LSB

Стандарт LSB передбачає наявність на клієнтській машині ряду загальних бібліотек:

  • libdl - функції динамічного зв'язування додатків;
  • libcrypt - набір функцій шифрування;
  • libz - пакет утиліт архівування;
  • libncurses - утиліти управління курсором і псевдографікою в термінальному режимі;
  • libutil - різні утиліти;
  • libpthread - бібліотека потоків, які відповідають специфікації POSIX;
  • libpam - функції аутентифікації користувачів;
  • libgcc_s - набір визначень бібліотеки Unwind.

Стандарт також передбачає наявність бібліотек libm і libc, визначення яких залежать від використовуваної процесорної архітектури. Функції цих бібліотек такі:

  • libc - інтерфейси RPC, IPC, системних викликів, стандартного введення / виведення, сигналів, локалізації, мережевих сокетів, роботи з рядками і регулярними виразами, маніпуляцій з часом і інші інтерфейси, пов'язані з платформою;
  • libm - математичні функції.

Нарешті, стандартом передбачені наступні графічні бібліотеки:

  • libX11 - функції роботи з системою X Window;
  • libXt - набір утиліт для роботи з X Window (X toolkit);
  • libGL - набір функцій для роботи з OpenGL;
  • libXext - функції, що розширюють базову функціональність X Window;
  • libICE - функції, що забезпечують взаємодію різних клієнтів одного X-сервера (Inter-Client Exchange);
  • libSM - утиліти управління сеансами протоколу X Window.

Сильні сторони і обмеження LSB

У число розробників LSB входять провідні гравці ІТ-ринку, такі як IBM, HP, Intel, Sun Microsystems, AMD, а також виробники найбільш популярних дистрибутивів Mandriva, RedHat і некомерційна організація Software for Public Interest, що представляє інтереси Debian. Брати участь в розробці LSB може будь-хто, хто підписався на відповідні списки розсилки, тому прийняття рішень навряд чи зможе монополізувати будь-яка група компаній.

LSB відповідають мінімальним бібліотек, що входять в основну частину дистрибутива. Регламентовані версії бібліотек, які повинні входити в кожен дистрибутив, і описані їх інтерфейси. Цей забезпечує зворотну сумісність програм з дистрибутивом: користувач повинен бути впевнений, що і через десять років новий дистрибутив, який підтримує набір стандартів LSB, дозволить запускати додатки, сумісні з конкретною версією LSB.

Крім того, LSB визначає порядок роботи стандартних утиліт, що входять в будь-який дистрибутив Linux. Це робить LSB схожим на Single Unix Specification Version 3, на якому засновані ядро ​​Linux і додатки: вони часто використовують shell-сценарії для установки, видалення, ініціалізації або припинення роботи програмного забезпечення. У таких сценаріях найчастіше застосовуються стандартні утиліти, а LSB описує, які параметри вони повинні мати. Крім того, LSB включає в себе стандарт ієрархії файлової системи (Filesystem Hierarchy Standard, FHS), який регламентує розміщення файлів і бібліотек ( www.pathname.com/fhs ).

У LSB є засоби розпізнавання сервісів, які запускаються при ініціалізації системи. Визначено стандартна схема розташування ініціалізацій сценаріїв і потрібних їм файлів, завдяки чому виробник програмного забезпечення може бути впевнений, що сумісна з LSB система запустить сервіс саме в той момент, коли всі інші необхідні сервіси вже будуть працювати.

Формат бінарних файлів ELF ( www.linuxbase.org/spec/refspecs/elf.pdf ) Є фактичним стандартом для всіх дистрибутивів, заснованих на GNU / Linux. LSB підтримує його використання і включає в себе набір тестів для перевірки на сумісність.

Стандарт LSB розбитий на кілька частин відповідно до платформами, на яких працює ядро ​​Linux, а також з рівнями сумісності. Так, поточна версія LSB 2.9 опублікована для апаратних платформ IA-32, IA-64, PowerPC32, PowerPC64, S390 і S390X і ділиться на частини Core, Embedded, Desktop, Java, C ++, Packaging і Graphics. Кожна з частин відповідає за відповідну область застосування LSB-сумісного програмного продукту.

Примітно, що значна частина можливостей GNU / Linux не покривається стандартами LSB. Виробникам дистрибутивів Linux, інтеграторам і розробникам вигідно не тільки те, що LSB стандартизує основні програми, але і те, що LSB не описує вимоги до операційної системи «до останнього файлу». LSB визначає певний рівень порушення сумісності з додатками, нижче якого «опускатися» неприпустимо. Ядро Linux, яке знаходиться вище цього рівня, може розвиватися без обмежень.

Завдяки цьому розробник дистрибутива є вільним у виборі методів і стратегій адміністрування системи. Наприклад, LSB не вимагає виконання чіткої політики безпеки щодо створення та адміністрування користувальницьких і групових облікових записів, а також прав на файли. LSB-сумісні програми будуть працювати і в тому випадку, якщо адміністратор змінить налаштування безпеки, встановлені за замовчуванням (звичайно, в розумних межах: невмілий адміністратор може зламати всю систему, і LSB не дозволяє запобігти такому розвитку подій). Вплив LSB не поширюється і на засоби настройки програмного забезпечення; так, SuSE і Red Hat містять принципово різні програми настройки. Користувач часто вибирає той чи інший дистрибутив Linux, орієнтуючись саме на зручність настройки, а тому Red Hat і SuSE можуть конкурувати в цій галузі, зберігаючи сумісність з існуючими додатками.

В рамках проекту LSB створені спеціальні засоби, що допомагають розробляти сумісні програмні продукти. Це середовище для складання додатків і пакет Application Battery, який містить стандартний набір бібліотек і скомпільованих спеціальним чином програм. Application Battery використовується для тестування програм на сумісність з LSB, а також дає приклади того, як треба збирати LSB-сумісні програми. Програма, яка претендує на сумісність з LSB, може використовувати тільки програми з Application Battery. Сьогодні в цей пакет входять Apache, celestia, expect, groff, lynx, python, rsync, samba, tcl, xpaint і xpdf.

Для розробніків дістрібутівів є свой набор тестів и приклад реализации LSB-сумісного дистрибутива; він не є повнофункціональним і розробляється паралельно з LSB як «випробувального майданчика» для нових стандартів. Зрештою, LSB розроблявся як набір стандартів для широко поширених дистрибутивів, а не для їх адаптації (скажімо, з метою забезпечення роботи з вбудованими пристроями). Правда, в деяких випадках була б корисна сумісність з LSB спеціальних рішень, заснованих на GNU / Linux, оскільки в LSB є аспекти, які недоречні для таких випадків.

Як середовище спілкування і координації LSB використовує стандартні засоби, прийняті в проектах Free Software, - списки розсилки, IRC і CVS. Кожен, хто зацікавлений у розвитку бази стандартів для Linux, може взяти участь у проекті. Завдяки проведенню відкритих дискусій після прийняття чергової версії стандарту незгодних з тим чи іншим пунктом вимог майже не залишається. Крім того, незважаючи на чималий обсяг стандартів, колективна розробка сприяє тому, що вони не містять внутрішніх протиріч.

У LSB чимало переваг, які є значущими для розробників програмних продуктів для платформи Linux, таких як надійні рекомендації для створення гарного коду. На жаль, ще не всі поширені дистрибутиви сертифіковані на відповідність з LSB; з найбільш поширених слід назвати SuSE 9, Red Hat Enterprise Linux 3 і Mandrake Corporate Server 3.0. Серед постачальників спеціалізованих рішень відповідний сертифікат отримав заснований на Debian продукт Progeny Componentized Linux Core. У разі загального прийняття LSB додатки зможуть працювати на базі будь-якого дистрибутива Linux, а не розроблятися для певних поєднань апаратної платформи і дистрибутива. Акуратно визначаючи рамки сумісності додатків, LSB не загрожує основним ідеям Open Source і дає кожному розробнику свободу внесення нововведень в додатки при збереженні їх сумісності.

Петро Новодворский ( [email protected] ) - технічний фахівець центру компетенції Linux компанії IBM (Москва).

імена LSB

Стандарт LSB визначає рольові імена користувачів, які можуть застосовуватися в операційній системі. Обов'язкових користувачів всього три: root (адміністратор всієї системи) і два успадкованих користувача - bin і deamon. Необов'язкові користувачі і групи такі:

  • adm - альтернативний адміністратор;
  • lp - демон принтера;
  • sync - облікове ім'я для синхронізації системи;
  • shutdown - ім'я для виключення системи;
  • halt - ім'я для припинення системи;
  • mail - ім'я демона електронної пошти;
  • news - ім'я демона системи поширення новин;
  • uucp - ім'я демона пересилання електронної пошти по протоколу UUCP;
  • operator (група root) - ім'я для позначення привілеїв оператора;
  • man - ім'я демона форматування підказки;
  • nobody - ім'я, яке використовується демоном NFS.

Всі ці імена дозволяють правильно налаштувати права доступу для різних підсистем Linux.

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то