Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Модулі ядра

Особливості ядра в FreeBSD, його складові

Ядро FreeBSD розповсюджується під ліцензією GNU General Public License (GPL), і розробляється людьми з усього світу, що дозволило йому стати одним із найвидатніших прикладів відкритого програмного забезпечення. Особливістю ядра FreeBSD є те, що її розробляються разом з операційною системою, на відміну від дистрибутивів Linux, де версія ядра і версія дистрибутива це зовсім різні поняття.

Ядро FreeBSD складається з додаткових модулів і основного модуля ядра (/boot/kernel/kernel), які збираються з вихідного коду на основі файлу конфігурації ядра (за замовченням GENERIC). Майже всі додаткові модулі ядра можна скомпілювати в основний модуль (виключенням є специфічні модулі такі як модуль файлової системи ZFS які фізично мають завантажуватись до основного модуля). Модуль ядра в процесі роботи може виводити певні повідомлення, для перегляду яких існує спеціальна команда: dmesg, використання якої досить зручно при пошуку неполадок при нестабільній роботі системи.

 

Деякі модулі ядра Freebsd можна завантажувати, вимикати і вивантажувати під час роботи системи. Наявність системи, в якій служби ядра можуть завантажуватися і розвантажуватися під час роботи, має ряд переваг перед системою, в якій всі служби ядра повинні компонуватися під час побудови.

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

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

Однією з проблем при потребі завантаження і вивантаження модулів під час роботи є безпека. У версіях BSD до FreeBSD ядро було цільним і повністю захищеним від зміни користувачем під час роботи. Єдиним способом взаємодії з працюючим ядром був інтерфейс syscall (системних викликів). Системні виклики визначалися під час побудови ядра і надавали лише вузький канал комунікації. Цей щільно контрольований інтерфейс надавав рівень безпеки.

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

Всі стандартні модулі знаходяться в каталозі /boot/kernel/ з розширенням *.ko. При кожній перезборці ядра всі модулі в цьому каталозі знищуються і створюються заново. При використанні сторонніх модулів бажано їх зберігати в інший каталог /boot/modules/, який створений спеціально для них. Для динамічного завантаження або вивантажування існує спеціальна команда kldload або kldunload після якої відповідно вказується назва модуля (можна без розширення), щоб переглянути всі завантажені модулі використовується команда kldstat. Щоб необхідний модуль завантажувався автоматично при старті системи необхідно задати строку назва_модуля_load="YES" в файлі /boot/loader.conf або включити в саме ядро при перезборці.

 


Читайте також:

  1. Вектори рівні, якщо вони колінеарні, мають однакові напрями і рівні модулі.
  2. Конфігурація Apache, додавання і налаштування модулів
  3. Лекційні модулі
  4. Мал. 1.2. Способи з'єднання модулів
  5. Модулі електронного підручника
  6. Модулі пружності однонаправлених армованих КМ
  7. Модулі ядра
  8. Побудова універсальних логічних модулів (УЛМ) за допомогою MS.
  9. Характеристика окремих складових модулів системи автоматизації D2 System.
  10. Характеристика окремих складових модулів системи автоматизації D2 System.




Переглядів: 885

<== попередня сторінка | наступна сторінка ==>
Основні команди для роботи з ОС | Налаштування ядра FreeBSD з використанням утиліти sysctl

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.016 сек.