Linux kernel: разработка, описание на процес на разработка, изграждане, инсталиране, обновяване. Как да обновите ядрото на Linux?

10.06.2019

Разбира се, най-често срещаните днес са Windows операционните системи, издадени от Microsoft, но не всички потребители знаят, че това всъщност не е първата и със сигурност не е единствената операционна система в света. Както знаете, операционните системи първоначално са били разработени още през 60-те години на миналия век, но поради многото специфични характеристики на компютърната дистрибуция по това време те не са станали толкова чести, представлявайки изключително академични проекти.

Как се появи Linux?

linux kernel

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

Какво се знае за него?

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

Заслужава да се отбележи, че потребителите изразяват много голям интерес към това как работи ядрото на Linux и по принцип цялата операционна система. По този начин, малко след появата на Minix, се появи и отделна група за новини, наречена USENET, предназначена единствено за обсъждане на тази система. След няколко седмици тази група имаше над 40 000 абонати, повечето от които се опитаха да добавят много възможности към системата, опитвайки се да я направят много по-големи и по-добри. Всеки ден стотици хора по света мислят какви други идеи и кодови фрагменти могат да бъдат предложени.

Въпреки това, мнозина се чудят защо в ядрото на Linux сега има толкова малко литература, но всъщност може да има няколко основни причини.

Търговска стойност на документацията

как да се актуализира Linux ядрото

След появата на Unix, нейните кодове бяха известни на масите, в резултат на което те бяха активно изучавани по целия свят. Най-известната книга, описваща тази операционна система, беше Lions Commentary на Unix, която беше публикувана за първи път през 1977 година. Тази книга описва работата на тази операционна система възможно най-подробно, в резултат на което тя се използва в различни университетски курсове, посветени на изучаването на операционните системи. С течение на времето обаче стана ясно, че Unix постепенно се превръща в търговски продукт, в резултат на което е напълно забранено да се изучава изходния код на различни курсове, така че състоянието на търговската тайна да не бъде изложено на риск.

Както казват експерти, за да се създадат предпоставки за един наистина успешен частен бизнес, първо трябва да се сформира напълно затворена търговска инфраструктура, с която да се разбере кодексът и да работи изключително за компанията. Всяко прикриване на информация за архитектурата е изключително ефективна стратегия за контролиране на проекта, където има отворени кодове.

Трудности при овладяването на текстове

описание на ядрото на Linux

Кривата на разходите, необходима за подробно изучаване на ядрото на Linux, става все по-стръмна и по-дълга, тъй като системата постоянно става все по-сложна и обемът й нараства.

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

Предложен е един възможен подход Линус Торвалдс, което е развитието на ядрото на Linux. Той предложи пълна яснота на изходния код, т.е. предоставянето на изключително ясна структура, удобни за потребителя интерфейси, както и следването на принципа „направете малко, но го направете качествено“.

Ако говорим за подхода, предложен от Андрю Мортън, тук предлагаме повече коментари директно в самия изходен код, така че читателят да може да разбере окончателното намерение на програмиста.

Какви са разликите между ядрото на Unix и Linux?

Разбира се, описанието на Linux ядрото значително се различава от основното описание на Unix, но много от тях не знаят какви са тези разлики.

Поради същия API, както и от общия произход, модерните Unix ядра са доста сходни, а изключенията са някои монолични статични двоични файлове, които съществуват като големи изпълними образи, които се изпълняват само веднъж и използват едно копие на адресното пространство. За да се гарантира нормалната работа на Unix, е необходимо да се осигури цялостна система с контролен контролер за пейджинг памет, с която ще бъде възможно да се осигури ефективна защита на паметта в системата, както и да се осигури всеки отделен процес със собствено виртуално адресно пространство.

Ядрото на Linux не се основава на никаква конкретна Unix система и е напълно монолитно. Въпреки това, нейната структура осигурява определени свойства на микроядрената архитектура.

разлики

Инсталиране на ядрото на Linux

Има няколко разлики, които ви позволяват да разберете как да разпознаете ядрото на Linux:

  • На първо място, заслужава да се отбележи възможността за поддържане на динамично заредени модули. Въпреки че ядрото на тази операционна система е напълно монолитно, допълнително се поддържа възможността за динамично зареждане и разтоварване на код в случай на такава нужда. Тази функция първоначално се появи във версия 0.99 и допринесе за това от Питър Макдоналд.
  • Ядрото може да поддържа симетрично многопроцесорно обработване. В преобладаващата част от търговските версии на Unix OS тази функция се поддържа, но при традиционните реализации такава поддръжка по-често отсъства.
  • Ядрото на Linux е превантивно, т.е. може напълно да изтласка изпълняваща задача, дори ако работи в режима на даденото ядро. Сред по-голямата част от търговските реализации, превантивното ядро ​​на Unix OS има само IRIX, Solaris и самото Unix.
  • В Линукс е било обичайно да се използва напълно различен подход към реализацията на нишки, в резултат на което те на практика не се различават от стандартните процеси. Имайки предвид тях от гледна точка на ядрото, може да се каже, че всички процеси са абсолютно идентични, само някои от тях се отличават с наличието на общи ресурси.
  • Ядрото на 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". Освен това трябва да обърнете внимание на раздела "Файлови системи", където трябва да бъдат маркирани настоящите файлови системи.

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

предупредителен

Linux модули на ядрото

Извършването на експерименти с ядрото може да доведе до много различни вредни процеси, тъй като не всеки специалист може да актуализира ядрото на Linux. Последствията могат да бъдат най-сериозни, включително пълното срив на системата и пълното унищожаване на информацията на диска. Поради тази причина, за да се гарантира максимална сигурност, се препоръчва да се използва само отделна дистрибуция, инсталирана на виртуалната машина.

В допълнение към сигурността, можете да го използвате, за да постигнете еднаква конфигурация на всички компютри, които са участвали в тази процедура. Препоръчително е да използвате Slackware Linux като такава дистрибуция, защото използва непроменени софтуерни компоненти. VMware или QEMU могат да действат като виртуална машина, но това не е необходимо.

Инсталирането на ядрото на Linux отнема около 20 минути, докато си струва да се отбележи, че изграждането на ядрото, което е изградено в съответствие със стандартната конфигурация, може да се направи без създаване на RAM диск, тъй като в този случай не се създават никакви важни драйвери.

дизайн

Развитие на ядрото на Linux

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

Чрез системни повиквания се осигурява гаранция за стабилна и безопасна работа на системата. Тъй като ядрото е посредник между различни програми и системни ресурси, те могат да вземат решения за предоставяне на достъп в пълно съответствие с правата на потребителя, както и редица други критерии.

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

В определена част, интерфейсът към системните функции се осигурява с помощта на библиотеката С. Например, функцията printf ви позволява да формирате линия, съответстваща на посочения формат, в резултат на което тази мивка ще бъде прехвърлена към системата за запис, която я изпраща към стандартното изходно устройство, което може да бъде, например, терминал. ,

Освен това отделна библиотека езикови функции C също осигурява доста голяма част от стандарта POSIX API. По-специално, с помощта на командата strace, ако е необходимо, е възможно да се проследи в детайли обжалването на конкретна програма към ядрото, ако се извършва чрез системни повиквания. Поради тази причина тази команда често се използва, когато възникнат грешки, за да се отстранят грешките им, както и за да се открие причината за тяхното възникване.

Наред с другите неща, си струва да се отбележи и фактът, че Linux има абсолютно уникална реализация на нишки, тъй като няма разлика между нишките и процесите. Многопоточността е организирана като процес с споделени ресурси, докато в пространството на ядрото има и отделни теми, които се изпълняват изключително там. Въпреки това, тяхното планиране и изпълнение се извършва по същия начин, както при стандартните процеси. Когато е възможно, всички програми, които се изпълняват в ядрото, се наричат ​​отделни задачи, докато програми, изпълнявани в потребителски режим, се наричат ​​процеси.

Заслужава да се отбележи, че в съвременните системи процесите използват два виртуални ресурса едновременно.