Oops

З Вікіпедыі, свабоднай энцыклапедыі
Выснова на экран пры ўзнікненні oops у Fedora Linux.

Oops — функцыя ядра аперацыйнай сістэмы Linux, якая выклікаецца пры адхіленні ад звычайнай працы Linux. Пры oops’е ядро ​​стварае запіс у логу з апісаннем памылкі. Нярэдка за выклікам oops выклікаецца kernel panic з наступным прыпынкам або перазапускам сістэмы.

Механізм працы[правіць | правіць зыходнік]

Калі ядро ​​заўважае праблему, на экран выводзіцца паведамленне аб памылцы. Гэтае паведамленне выкарыстоўваецца распрацоўшчыкамі для выпраўлення праграмнага кода ядра.

Linux kernel oops у SPARC.

Пасля oops’а некаторыя рэсурсы сістэмы могуць быць недаступныя. Такім чынам, нават калі здаецца, што сістэма працуе правільна, непажаданыя пабочныя эфекты могуць быць вынікам ліквідацыі актыўнай задачы. Памылка ядра часцей за ўсё прыводзіць да панікі ядра, калі сістэма спрабуе выкарыстаць неіснуючыя рэсурсы. Некаторыя ядра настроены на паніку, калі адбываецца шмат праблем (па змаўчанні 10 000)[1][2]. Гэты ліміт oops’а робіцца, напрыклад, з-за таго, што зламыснікі могуць паўторна выклікаць oops і звязаную з ім уцечку рэсурсаў, якая ў канчатковым выніку перавышае колькасць integer  (англ.) і дазваляе далейшае зламыснае выкарыстанне сістэмы[3][4].

Афіцыйная дакументацыя ядра Linux, якая тычыцца паведамленняў oops, знаходзіцца ў файле Documentation/admin-guide/bug-hunting.rst[5] у зыходных кодах ядра. Пры высвятленні прычын узнікнення oops таксама можа дапамагчы вывучэнне змесціва файла System.map.

Для чалавека, не знаёмага з тэхнічнымі дэталямі камп'ютараў і аперацыйных сістэм, паведамленне "oops" можа выглядаць незразумелым. У адрозненні ад іншых аперацыйных сістэм, такіх як Windows або macOS, Linux абірае дэталі, якія тлумачаць збой ядра, а не спрошчанае, зручнае паведамленне, як, напрыклад, BSoD у Windows. Некалькі разоў прапаноўваўся спрошчаны экран збояў, аднак зараз ні адзін з іх не распрацоўваецца.

Аўтаматызаваны збор інфармацыі[правіць | правіць зыходнік]

Для аўтаматычнай адпраўкі інфармацыі існуе праграма kerneloops-daemon, якая рэгіструе ўзнікненні oops і дасылае іх на сайт kerneloops.org. Гэтая праграма ўяўляе сабой праграму-дэман, якая правярае сістэмны лог на прадмет адпаведнай інфармацыі. У выпадку яе выяўлення яна аўтаматычна перадае яе на сайт kerneloops.org.

Зноскі

  1. Horn, Jann. [PATCH exit: Put an upper limit on how often we can oops]. lore.kernel.org (7 лістапада 2022). Праверана 31 January 2023.
  2. Documentation for /proc/sys/kernel/. docs.kernel.org. Праверана 31 January 2023.
  3. Corbet, Jonathan. Averting excessive oopses. LWN.net (18 лістапада 2022).
  4. Jenkins, Seth. Exploiting null-dereferences in the Linux kernel. Google Project Zero (19 студзеня 2023).
  5. bug-hunting. kernel.org.