За обикновените потребители и по-малко от хардкор феновете Linux е операционна система. За пуристите обаче заглавието "Linux" е запазено за ядрото, което захранва операционната система. Ако сте любопитни за това какво е ядрото на Linux, нека да отговоря на този въпрос с едно око на новия потребител.
Режими
Преди да обясним какво е ядрото, важно е да разберете термините "потребителски режим" и "режим на ядрото". Потребителският режим е, когато изпълняващият код няма възможност за директен достъп до хардуера или паметта за справка. За да получите достъп до хардуера и паметта, кодът, който се изпълнява в потребителския режим, трябва да делегира инструкции към системните интерфейси за програмиране на приложения (APIs). Режимът на ядрото е, когато изпълняващият код има неограничен достъп до целия хардуер и е запазен за най-надеждните функции на операционната система.
Какво представлява ядрото?
Всяка операционна система има ядро. Windows, MacOS, iOS, Android, Chrome OS и Linux имат ниска система, която отговаря за взаимодействието на всички приложения с физическия хардуер на компютъра. Без ядрото нито една от вашите приложения няма да може да използва физическия компютър; приложения като Firefox, Chrome, LibreOffice, MS Office или Outlook няма да работят. Ядрото също така отговаря за това, че процесите за обмен на информация се използват чрез т.нар. IPC (Inter-Process Communication).
Съществуват (общо казано) три вида ядки:
- Монолитни ядки: тези ядра обхваща процесора, паметта, IPC, драйверите на устройства, управлението на файловата система и системните сървъри. Също така е отговорен за предаването на безплатна системна памет на приложения. Тези типове ядра обикновено са по-добри при достъпа до хардуер и мултитаскинг.
- Микрокърнъла: Microkernels приемат минималистичен подход и управляват само процесора, паметта и IPC.
- Хибридни ядки: Хибридните ядра имат способността да решават какво искат да се изпълняват в режим на потребител или ядро. Въпреки че това осигурява най-доброто от двата свята, това изисква много повече от производителите на хардуер да създават драйвери, които служат за интерфейс между работещ код и хардуер.
Linux използва монолитно ядро с отворен код, докато MacOS и Windows използват Hybrid Kernels. Linux ядрото е замислено през 1991 г. от Линус Торвалдс. До този момент г-н Torvalds продължава да бъде водещ разработчик на ядрото на Linux, докато разработчици от цял свят допринасят за ядрото на Linux. Всъщност според изчисленията близо 10 000 фирми от повече от 1000 компании са допринесли за ядрото на Linux (тъй като проследяването е започнало през 2005 г.).
Къде е ядрото?
Ако отворите прозорец на терминал и издавате командата ls / boot, ще видите файл, наречен vmlinuz-ВЕРСИЯ (Където VERSION е името или номера на изданието). Файлът vmlinuz е истинското зареждащо се ядро на Linux, а "z" означава, че ядрото е компресирано; така че вместо vmlinux имаме vmlinuz.
В рамките на това / boot директорията има и други важни файлове на ядрото, като initrd.img-VERSION, system.map-VERSION и config-VERSION (където VERSION е или име или номер на съобщение). Тези други файлове служат за следните цели:
- initrd: използва се като малък RAM диск, който извлича и изпълнява действителния файл на ядрото.
- system.map: използва се за управление на паметта преди зареждането на ядрото.
- конфигурационния: инструктира ядрото на това какви опции и модули да се зареди.
модули
Без модули ядрото нямаше да бъде много полезно. Модулите ефективно активират драйверите, необходими за комуникация с хардуера, без да консумират цялата системна памет. Модулите също така добавят функционалност към ядрото, като комуникация с периферни устройства, управление на файлови системи, защита и др. Възможно е да се добавят и премахват модули към ядрото със следните команди:
- lsmod ще се покажат всички модули на ядрото, които са заредени в момента.
- insmod ще зареди модул на ядрото в изпълняваното ядро.
- rmmod ще разтовари модул от работещото ядро.
Така че виждате, с помощта на някои прости команди, Linux ядрото може да бъде доста гъвкаво.
Текущото ядро
От момента на това писане, стабилното ядро на Linux е 4.18.5, но не всички Linux дистрибуции ще включват най-новото ядро. В действителност актуализираната елементарна операционна система на операционната система работи с ядрото 4.15.0-30. Какво означава този номер? В случая с най-новото ядро на елементарна операционна система, това означава:
- 4 е основната версия
- 15 е малката версия
- 0-30 е преразглеждането
Също така е възможно да изтеглите различни версии на ядрото на Linux от kernel.org и да го компилирате сами. Съставянето на ядрото на Linux е задача, най-добре оставена за тези, които наистина знаят какво правят. Неправилно компилираното ядро може да направи системата незаредена. Така че, освен ако не сте готови да се потопите в предизвикателната задача за компилиране на код на това ниво, използвайте ядрото по подразбиране, което се изпраща и актуализира във вашата дистрибуция по избор.