Завантажуваний модуль ядра

Завантажуваний модуль ядра (loadable kernel module чи LKM) — об'єктний файл, який містить код, що розширює працююче ядро, або так сказати базове ядро, операційної системи. LKM-и використовуються в основному для додавання підтримки нового апаратного забезпечення та/чи файлових систем, чи додавання системних викликів.

Найбільш сучасні Unix-подібні системи та Microsoft Windows підтримують завантажувані модулі ядра, хоча вони можуть використовувати інші назви для цього, такі як kernel loadable module (kld) в FreeBSD, kernel extension (kext) в OS X[1] та kernel-mode driver в Windows NT.[2] Вони також знані як Kernel Loadable Modules (or KLM), або просто як Kernel Modules (KMOD).

Переваги

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

Недоліки

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


Реалізації в інших операційних системах

Linux

Завантажувані модулі ядра в Linux — це завантажені (або вивантажені) за допомогою команди modprobe. Вони розміщені в /lib/modules та мають розширення .ko («kernel object») з версії 2.6 (в попередніх версіях використовувалося розширення .o).[3] Команда lsmod[en] показує список завантажених модулів ядра. В аварійних ситуаціях, коли система не може завантажитися через наприклад зіпсуті модулі, спеціальні модулі можуть бути включені або виключені за допомогою зміни завантажуваних параметрів ядра (наприклад якщо використовується GRUB, натискаєте 'e' в стартовому меню GRUB та редагуєте стрічку параметрів ядра).

Ліцензійні спірні питання

На думку Linux розробників, LKM — це похідний твір ядра. Лінукс розробники дозволяють розповсюдження пропріетарних модулів но символи мають бути марковані як такі які є тільки доступними для GNU General Public License (GPL) модулів.

Під чам завантаження пропріетарного або не GPL-сумісного LKM буде ставитися прапорець 'taint'[4] в працюючому ядрі — це значить що будь-яка проблема чи помилка буде досліджена розробниками з менш імовірністю.[5][6] LKM-и оперативно стали частиною працюючого ядра, вони можуть пошкодити структуру даних ядра та принести дефекти в роботі програми, що можуть не бути дослідженими, якщо модуль  справді пропріетарний.

Linuxant суперечка

В 2004, Linuxant— консультуюча компанія, що реалізовувала пропріетарні драйвера пристроїв як завантажувані модулі ядра — спробувала зловжити нульовим символом[en] в MODULE_LICENSE, як видно в наступному уривку коду:

MODULE_LICENSE("GPL\0for files in the \"GPL\" directory; for others, only LICENSE file applies");

Код порівняння стрічок, який використовується ядром для виявлення ліцензій відмінних від GPL, в момент визначення ліцензії, досяг NULL символу(\0), що, в свою чергу, призвело до зупинки процесу перевірки ліцензії, визначивши її як ліцензію «GPL».[7]

FreeBSD

Модулі ядра для FreeBSD , які розповсюджуються з ОС, зберігаються в /boot/kernel/, а в /boot/modules/ зазвичай встановлені з FreeBSD ports[en] or FreeBSD packages, або є пропріетарними. В іншому випадку тільки двійкові модулі. Модулі ядра FreeBSD мають розширення .ko. Як тільки машина готова, вони можуть бути завантажені за допомогою команди kldload, вивантажені -  kldunload, та перечислені — kldstat. Модулі можуть також бути завантажені з завантаєувача перед стартом ядра, або автоматично (через /boot/loader.conf) або вручну.

OS X

Деякі завантажувані модулі ядра в OS X можуть бути завантаженими автоматично. Завантажувані модулі ядра можуть також бути завантаженими з допомогою команди kextload, перечислені — kextstat. Вони розміщені в bundle[en]-ів з розширенням .kext. Модулі, які постачаються з операційною системою зберігаються в директорії /System/Library/Extensions; модулі, які постачаються третьою стороною — в різних інших.

NetWare

Модуль ядра NetWare — називають NetWare Loadable Module[en] (NLM). NLM — вставляються в NetWare ядро командою LOAD, та видаляються командою UNLOAD; команда modules показує всі завантажені на даний момент модулі. NLM можуть розміщуватися в будь-якому пошуковому місці, що прив'язані до NetWare сервера, також вони мають .NLM розширення файла.

Двійкова сумісність

Лінукс не забезпечує стабільний API чи ABI для модулів ядра. Це означає що є різниця у внутрішній структурі та функції між різними версіями ядра, які можуть спричиняти проблеми сумісності. Спробою побороти ці проблеми стало розміщення мітки даних про версію в .modinfo секцію ELF модулів. Ця інформація про версію може бути порівняна з тією, яку має працююче ядро перед завантаженням модуля; Якщо версії несумісні — модуль не буде завантажений.

Інші операційні системи, такі як Solaris, FreeBSD, OS X, та Windows підтримують API та ABI ядра відносно стабільними, що дозволяє уникнути таких проблем. Для прикладу, модулі ядра FreeBSD, які скомпільовані для версії ядра 6.0 будуть працювати без компіляції на будь-якій іншій версії FreeBSD 6.x, наприклад 6.4. Однак вони несумісні з іншими мажорними версіями та повинні бути перезібрані для використання з FreeBSD 7.x, так як API і ABI сумісність підтримується тільки в межах гілки.

Безпека

Так як завантажувані модулі ядра — зручний спосіб зміни працюючого ядра, це може використовуватись нападниками для своїх цілей на скопроментованій системі. Наприклад, щоб уникнути виявлення їхніх процесів та файлів, що дозволяє таким чином підтримувати контроль над системою. Багато руткітів використовують LKM для цього. Запам'ятайте, що на більшості операційних систем модулі не допомагають підвищити привілеї, оскільки підвищені привілеї потрібні для самого завантаження модуля ядра; вони просто полегшують процес приховування слідів нападника.[8]

Лінукс

Лінукс дозволяє  забороняти завантаження модулів через sysctl параметр /proc/sys/kernel/modules_disabled.[9][10] Система Initrd initramfs може завантажувати специфічні модулі, які потрібні для машини під час завантаження і потім забороняти завантаження модулів. Це робить систему безпеки безпеку дуже схожою до такої, яка властива монолітним ядрам. Якщо атакуючий може змінити initramfs, то він зможе змінити і двійковий код ядра.

OS X

На OS X, завантажуваний модуль ядра в ядровому розширеному bundle може бути завантаженим непривілейованим користувачем, якщо властивість OSBundleAllowUserLoad встановлено в True в  в списку властивостей bundle.[11] Однак, якщо будь-який з файлів в bundle, включаючи виконувач код, не приналежний root та групі wheel, чи не записаний групою «інші», спроба завантажити модуль ядра провалиться.[12]

Див. також

Примітки

  1. «Kernel Extension Programming Topics: Introduction» [Архівовано 2 червня 2012 у Wayback Machine.].
  2. «What Determines When a Driver Is Loaded» [Архівовано 6 березня 2013 у Wayback Machine.].
  3. «The Linux Kernel Module Programming Guide, section 2.2 „Compiling Kernel Modules“» [Архівовано 2012-08-18 у Wayback Machine.].
  4. Linus Torvalds; et al. (2011-06-21).
  5. Jonathan Corbet (2006-03-24).
  6. «Novell support documentation: Tainted kernel» [Архівовано 2012-10-19 у Wayback Machine.]. 2007-07-26.
  7. Jonathan Corbet (April 27, 2004).
  8. Exploiting Loadable Kernel Modules. Архів оригіналу за 4 лютого 2012. Процитовано 27 жовтня 2015.
  9. «Sysctl/kernel.txt»[недоступне посилання з квітня 2019].
  10. Kees Cook (2012-11-28).
  11. «Info.plist Properties for Kernel Extensions» [Архівовано 4 травня 2013 у Wayback Machine.].
  12. kextload(8) – Darwin and Mac OS X System Manager's Manual

Посилання

Read other articles:

У этого термина существуют и другие значения, см. Танненбергская битва. Битва при ТанненбергеОсновной конфликт: Восточно-Прусская операция (1914) Российско-германский фронт23—30 августа, 1914 Дата 26—30 августа 1914 года Место вблизи Танненберга, к юго-западу от города Алленштей...

 

SMA Negeri 7 KediriSMAN SAPTAInformasiNama latinPrinceps Schola SeptemDidirikan1954 Sekolah Guru A Kediri 1966 Sekolah Pendidikan Guru Negeri Kediri 1989 SMA Negeri 7 KediriJenisSekolah Menengah AtasAkreditasiANomor Statistik Sekolah103105630104MotoSMAPTA PRIMA!Kepala SekolahDrs. Mohamad Tohir, M.Pd.IJumlah kelas36 Kelas Reguler, 2 Kelas AkselerasiJurusan atau peminatanAkselerasi IPA, IPA, IPS, dan ECPRentang kelasX IPA, X IPS, dan X Akselerasi XI IPA, XI IPS, XI Akselerasi XII...

 

Tokyo Asahi Shimbun's coverage of the first wave of arrests The Popular Front Incident (人民戦線事件, Jinmin sensen jiken) refers to the Imperial Japanese government's suppression of a perceived threat from the political left after the fall of Nanjing during the Shōwa period.[1] During the incident, approximately 400 people were arrested by the authorities between December 1937 and February 1938.[2] Amongst those arrested during the incident were Kanson Arahata, Sabur

Czarny Dunajec Czarny Dunajec in Chochołów Czarny Dunajec in Chochołów Daten Lage Polen Flusssystem Weichsel Abfluss über Dunajec → Weichsel → Ostsee Roztoki (Witów) Westtatra49° 17′ 29″ N, 19° 51′ 2″ O49.29138919.850556880 Quellhöhe 880 m n.p.m. Mündung Dunajec in Nowy Targ49.48444420.043056579Koordinaten: 49° 29′ 4″ N, 20° 2′ 35″ O49° 29

 

Sri Lanka Railways Class S12Class S12 No. 925ManufacturerCSRBuilt atSifang, ChinaFamily nameD 22 (KV Set)Constructed2012Number built22 trainsetsNumber in service22FormationMCG + 3xTC + 3xSC + 1xFC + 1xRC + MCG (Main Line Set), MCG + 5xTC + DDCG (KV Set)Capacity44 (AFC) + 66*3 (TC) + 52 (TCBU) + 44*3 (SC) = 426Operator(s)Sri Lanka RailwaysSpecificationsCar body constructionManufactured In Stainless steelCar length50 ft (15.24 m)Maximum speed100 km/h (62 mph) (De-rated 80...

 

Пам'ятник воїнам першого бастіону 44°36′53″ пн. ш. 33°33′08″ сх. д. / 44.614833° пн. ш. 33.552444° сх. д. / 44.614833; 33.552444Координати: 44°36′53″ пн. ш. 33°33′08″ сх. д. / 44.614833° пн. ш. 33.552444° сх. д. / 44.614833; 33.552444Тип пам'ятникКраїна  Ук...

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (أكتوبر 2019) كاثرين مارشال معلومات شخصية الميلاد 27 سبتمبر 1914[1]  جونسون سيتي، تينيسي  تاريخ الوفاة 18 مارس 1983 (68 سنة) [1]  مواطنة الولايات المتحدة  الحياة ...

 

جائزة بلجيكا الكبرى 2023 السباق 12 من أصل 22. السلسلة بطولة العالم لسباقات فورمولا 1 موسم 2023  البلد بلجيكا  التاريخ بداية:28 يوليو 2023  نهاية:30 يوليو 2023  مكان التنظيم حلبة دي سبا فرانكورشومب  طول المسار 7,004 كيلومتر (4,352 ميل) المسافة 308,052 كيلومتر، (191,415 ميل) عدد اللفات 44 أول

 

منتخب بورتوريكو لكرة الطائرة للسيدات بلد الرياضة بورتوريكو  كونفدرالية اتحاد أمريكا الشمالية والوسطى ومنطقة البحر الكاريبي للكرة الطائرة [الإنجليزية] مراتب تصنيف فيفب قالب:تصنيف فيفب للسيدات قالب:تصنيف فيفب للسيدات الألعاب الأولمبية الصيفية المشاركات 1 (أولها في سنة 2...

Elliptical galaxy in the constellation Aries NGC 904legacy surveys image of NGC 903 and NGC 904 (left)Observation data (J2000 epoch)ConstellationAriesRight ascension02h 24m 05.546s[1]Declination+27° 20′ 32.97″[1]Redshift0.017956[2]Heliocentric radial velocity5335 km/s[2]Distance234.9 Mly (72.02 Mpc)[3]Apparent magnitude (B)14.98[4]CharacteristicsTypecE[4]Other designationsUGC 1852, MCG +04-06-024...

 

The players draft for the 2023 PSL The player draft for the 2023 Pakistan Super League was held on 15 December 2022.[1][2][3] Before the draft teams were allowed to retain a maximum of eight players and make transfers.[4][5] Background Ramiz Raja had hinted that the draft would be replaced by an auction, but the format was retained.[6] The PCB announced that Lahore Qalandars will have the first pick.[7] Each team had the right to exercis...

 

CrescentOne is a supplier of enterprise resource planning (ERP) software for discrete manufacturing and a wholly owned subsidiary of Constellation Software International.[1] The company is best known for its GLOVIA G2 software. Primary markets for GLOVIA G2 are the OEM and the Tier 1, 2 and 3 manufacturers in a variety of industries, including aerospace and defense, automotive, electronics, capital equipment, make-to-order (MTO), engineer-to-order (ETO) and high-volume manufacturing. ...

Japanese manga series BeastarsFirst tankōbon volume cover, featuring LegoshiGenreComing-of-age[1]Drama[2]Fantasy[2] MangaWritten byParu ItagakiPublished byAkita ShotenEnglish publisherNA: Viz MediaImprintShōnen Champion ComicsMagazineWeekly Shōnen ChampionDemographicShōnenOriginal runSeptember 8, 2016 – October 8, 2020Volumes22 (List of volumes) Anime television seriesDirected byShin'ichi MatsumiProduced byShunsuke Hosoi (1–12)Yoshinori Take...

 

Comics character ZaraZara in Wonder Woman (vol. 5) #41; art by Stephen Segovia.Publication informationPublisherDC ComicsFirst appearanceComic Cavalcade #5 (Winter 1943)Created byWilliam Moulton Marston, Harry G. PeterIn-story informationTeam affiliationsVillainy Inc.Cult of Crimson FlameAbilitiesPyrokinesis Zara, Priestess of Crimson Flame is a fictional character appearing in DC Comics publications and related media, commonly as a recurring adversary of the superhero Wonder Woman. Created by...

 

King of Norway from 1093 to 1103 This article is about the second Norwegian king named Magnus Olafsson. For the earlier Norwegian king, see Magnus the Good. Magnus BarefootSilver penning struck sometime during the reign of Magnus.King of NorwayReignSeptember 1093 – 24 August 1103PredecessorOlaf IIISuccessorSigurd I, Eystein I and Olaf MagnussonCo-rulerHaakon Magnusson (until 1095)King of DublinReign1102–1103PredecessorDomnall GerrlámhachSuccessorDomnall GerrlámhachBorn1073NorwayDied24 A...

Italian luthier (c.1505 – 1577) Andrea AmatiBornc. 1505CremonaDied(1577-12-26)26 December 1577CremonaNationalityItalianOccupationluthierKnown forCredited with constructing the first musical instrument of the modern violin family This violin, now at the Metropolitan Museum of Art, may have been part of a set made for the marriage of Philip II of Spain to Elisabeth of Valois in 1559, which would make it one of the earliest known violins in existence. Andrea Amati was a luthier, fro...

 

Municipality of Milan in Lombardy, ItalyZone 1 of Milan Municipality 1Municipality of MilanPiazza del DuomoLocation of Zone 1 of MilanCountryItalyRegionLombardyProvinceMetro City of MilanComuneMilanGovernment • PresidentMattia Abdu (PD)Area • Total3.71 sq mi (9.62 km2)Population (2022) • Total97,897 • Density28,680/sq mi (11,074/km2)Time zoneUTC+1 (CET) • Summer (DST)UTC+2 (CEST) The Zone 1 of Milan, since 20...

 

City in Texas, United StatesEl Lago, TexasCityLocation in Harris County and the state of TexasCoordinates: 29°34′20″N 95°2′37″W / 29.57222°N 95.04361°W / 29.57222; -95.04361CountryUnited StatesStateTexasCountyHarrisArea[1] • Total0.71 sq mi (1.84 km2) • Land0.64 sq mi (1.67 km2) • Water0.07 sq mi (0.17 km2)Elevation[2]10 ft (3 m)Population (2020)&...

Spanish actress (born 1996) In this Spanish name, the first or paternal surname is Pedraza and the second or maternal family name is Morillo. María PedrazaPedraza in 2019BornMaría Pedraza Morillo (1996-01-26) 26 January 1996 (age 27)Madrid, SpainOccupations Dancer Model Actress Years active2017–present María Pedraza Morillo (born 26 January 1996)[1] is a Spanish actress, dancer and model who gained international recognition for her roles in the series Money Heis...

 

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (مارس 2016) مصر في الألعاب الأولمبية علم مصر رمز ل.أ.د.  EGY ل.أ.و. اللجنة الأولمبية المصرية موقع الويبwww.egyptianolymp...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!