Ядро linux: розробка, опис процесу розробки, складання, встановлення, оновлення. Як оновити ядро linux?

Звичайно, найбільш поширеними на сьогоднішній день є операційні системи Windows, випущені компанією Microsoft, однак не всі користувачі знають про те, що насправді це далеко не перша, і вже тим більше не єдина ОС в світі. Як відомо, спочатку операційні системи розроблялися ще в 60-х роках минулого століття, проте через безліч специфічних особливостей поширення комп`ютерів в той час вони не стали настільки поширеними, представляючи собою виключно академічні проекти.

Як з`явився Linux?

ядро linux

Перша система, яка вийшла за межі свого батька, це Unix, яка моментально поширилася по різним освітнім установам, маючи повністю відкриту природу. З плином часу було прийнято рішення приховати вихідні тексти Unix як комерційної таємниці, внаслідок чого розробникам доводилося задовольнятися виключно теорією. Ситуація змогла кардинально змінитися після того як в світ вийшла операційна система Minix, а також її спадкоємиця під назвою Linux. Головною особливістю цих ОС є те, що в них присутня повністю відкритий код, тобто ядро Linux є доступним для будь-яких користувачів. Саме з цієї причини дана ОС на сьогоднішній день є другою за поширеністю.

Що про нього відомо?

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

Варто зазначити, що користувачі висловлюють дуже великий інтерес до того, як працює ядро Linux, і в принципі вся операційна система. Таким чином, незабаром після появи Minix з`явилася також окрема група новин під назвою USENET, призначена виключно для обговорення даної системи. Через кілька тижнів ця група мала понад 40 000 передплатників, переважна більшість яких намагалося додати системі масу можливостей, намагаючись зробити її набагато більшою і кращою. Щодня сотні людей по всьому світу думали над тим, які можна ще запропонувати ідеї і фрагменти коду.

Однак багато хто дивується, чому ж зараз є так мало літератури, розписується ядро Linux, але насправді цього могло послужити кілька основних причин.

Комерційна цінність документації

як оновити ядро   linux

Після того як з`явився Unix, його коди були відомі широкому загалу, внаслідок чого активно вивчалися по всьому світу. Найбільш відомою книгою, яка описує дану ОС, була Lions Commentary on Unix, яку вперше опублікували ще в далекому 1977 році. Дана книга описувала роботу цієї операційної системи максимально докладно, внаслідок чого її використовували в різних університетських курсах, присвячених вивченню операційних систем. Однак з плином часу стало зрозуміло, що Unix поступово перетворюється в комерційний продукт, внаслідок чого було повністю заборонено вивчати вихідний код на різних курсах для того, щоб статус комерційного секрету піддавався ризику.

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

Складність в освоєнні текстів

опис ядра linux

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

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

Одним з можливих підходів запропонував Лінус Торвальдс, яким і здійснювалася розробка ядра Linux. Він запропонував повну ясність вихідного коду, тобто надання гранично чіткої структури, зручних інтерфейсів, а також проходження принципу «робити трохи, але робити якісно».



Якщо ж говорити про підхід, запропонований Ендрю Мортоном, то тут пропонується більшу кількість коментарів безпосередньо всередині самого вихідного коду для того, щоб читач міг зрозуміти остаточний задум програміста.

У чому відмінності між ядром Unix і Linux?

Природно, що опис ядра Linux значно відрізняється від основного опису Unix, проте багато хто не знає про те, в чому полягають ці відмінності.

Завдяки однаковому API, а також загальним походженням сучасні ядра Unix є досить схожими між собою, і винятками тут є деякі монолітні статичні бінарні файли, що існують у вигляді великих виконуваних образів, що виконуються єдиний раз і використовують єдину копію адресного простору. Для забезпечення нормальної роботи Unix необхідно забезпечити повноцінну систему з контролером управління сторінкової адресації пам`яті, за допомогою якої можна буде забезпечити ефективний захист пам`яті в системі, а також надати кожному окремому процесу своє ВАП.

Ядро операційної системи Linux не ґрунтується на якійсь певній системі Unix і є повністю монолітним. Однак, незважаючи на це, його структура передбачає певні властивості микроядерной архітектури.

відмінності

установка ядра linux

Є кілька відмінностей, що дозволяють зрозуміти, як дізнатися ядро Linux:

  • В першу чергу, варто відзначити можливість підтримки динамічно завантажуваних модулів. Незважаючи на те, що ядро цієї операційної системи є повністю монолітним, додатково підтримується можливість динамічного завантаження і вивантаження коду в разі такої необхідності. Дана можливість спочатку з`явилася ще у версії 0.99, і посприяв цьому Пітер МакДональд.
  • Ядро здатне підтримувати симетричну многопроцессорную обробку. У переважній більшості комерційних варіантів ОС Unix підтримує цю функцію, однак в традиційних реалізаціях така підтримка частіше відсутня.
  • Ядро ОС Linux є преемптівним, тобто воно може повністю витіснити що виконується завдання навіть в тому випадку, якщо його робота здійснюється в режимі даного ядра. Серед більшості комерційних реалізацій преемптівное ядро ОС Unix має в складі тільки IRIX, Solaris і безпосередньо сам Unix.
  • У Linux прийнято було використовувати абсолютно інший підхід до реалізації потоків, внаслідок чого вони практично не відрізняються від стандартних процесів. Розглядаючи їх з точки зору ядра, можна сказати про те, що всі процеси є абсолютно однаковими, просто деякі з них відрізняються наявністю загальних ресурсів.
  • Ядро Linux, опис процесу розробки якого буде показано далі, не має певних функцій Unix, які були визнані погано реалізованими. Зокрема, це відноситься до STREAMS і деяким іншим.

модулі

як дізнатися ядро   linux



Незважаючи на те що система є монолітною, з її допомогою може здійснюватися динамічна вставка або ж видалення коду ядра в момент роботи. Офлайн об`єкти ядра - це модулі ядра Linux.

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

Модулі беруть участь в самих різних процесах, з якими пов`язана операційна система, включаючи також оновлення ядра Linux. Деякі функції можуть бути доступними виключно для тих модулів, поширення яких здійснюється під ліцензією GPL, зокрема, це стосується можливості роботи з чергами процесів.

збірка

Збірка ядра Linux здійснюється за допомогою спеціалізованої програми Make. Після того як вами будуть отримані вихідні коди ядра, потрібно розпакувати архів linux-2.6.18.tar.bz2, що робиться за допомогою спеціальної утиліти Tar, що відкривається від імені суперкористувача.

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

Для запуску ядра в мінімальній конфігурації цілком достатньо просто вказати той драйвер контролера IDE, який ви використовуєте, в розділі «PCI IDE chipset support». Крім цього, вам слід звернути свою увагу на розділ «File systems», де повинні бути відзначені присутні файлові системи.

Збірка ядра запускається після натискання команди make. У переважній більшості випадків використовується команда make -j2, так як оновити ядро Linux в даному випадку можна буде набагато швидше. В даному випадку параметр -j2 говорить про те, що одночасно запускається відразу два потоки виконання.

застереження

модулі ядра linux

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

Крім безпеки ви з його допомогою зможете домогтися єдиної конфігурації всіх комп`ютерів, які були задіяні в цій процедурі. Рекомендується використовувати в якості такого дистрибутива Slackware Linux, так як в ньому застосовуються немодифіковані програмні компоненти. Віртуальною машиною може виступати VMware або ж QEMU, але це не обов`язково.

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

Розробка

розробка ядра linux

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

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

Розробка прикладних програм здійснюється за допомогою спеціалізованих програмних інтерфейсів додатків. В даному випадку немає ніякої необхідності в тому, щоб здійснювати кореляцію між інтерфейсами, що використовують програми та тими, які надає саме ядро. Може існувати абсолютно ідентичний API для декількох операційних систем, в той час як його реалізація може бути відмінною. Наприклад, Linux і відома на сьогоднішній день система FreeBSD повністю відповідають стандарту POSIX, внаслідок чого більшість додатків, написаних спеціально для однієї операційної системи, згодом при необхідності можна перенести на іншу.

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

Додатково окрема бібліотека функцій мови З надає також чималу частину POSIX стандарту API. Зокрема, за допомогою команди strace при необхідності можна детально відстежити звернення певної програми до ядра, якщо воно здійснюється при використанні системних викликів. Саме з цієї причини дана команда досить часто використовується при виникненні помилок, щоб налагодити їх, а також знайти причину їх виникнення.

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

Стіот відзначити, що в сучасних системах процесами передбачається використання одночасно двох віртуальних ресурсів.



Увага, тільки СЬОГОДНІ!

Увага, тільки СЬОГОДНІ!