Процесът на зареждане на Linux - това

Преглед на процеса

Основните етапи на натоварване:

  1. BIOS изпълнява зареждане стъпките на специфични за хардуера.
  2. Когато всички устройства са признати и правилно работещи, натоварванията на BIOS и изпълнява кода обувка от един от разделите на посочения устройство за стартиране, който съдържа товарач фазата на Linux обувка 1. Фаза 1 Фаза 2 товари (основен размер буутлоудъра код). Някои товарачи могат да бъдат използвани за тази междинна фаза (наречена фаза 1.5), тъй като сегашните дискове с голям обем могат да се четат правилно, без по-нататъшно код.
  3. Loader често дава на потребителя възможност за избор на наличните опции за зареждане. След това тя зарежда ядрото, което се декомпресира в паметта, той настройва системата функционира като работна памет необходимото оборудване и управление на страници, а след това прави start_kernel () повикване.
  4. След това, start_kernel () изпълнява основната системна конфигурация (прекъсване, оставащ управление на паметта, инициализация устройство, шофьори и др ...), а след това генерира бездейства управителя на процес, а освен тях - първоначален процес (работи в потребителското пространство).
  5. Scheduler започва да по-ефективно управление на системата, а ядрото се премества в застой.
  6. Процесът на първоначален извършва необходимите скриптове, които конфигурират всички услуги и структури, които не са свързани с нивото на ядрото, което води до потребителска среда ще бъде създадена и екрана за вход за потребителя ще бъде предоставена в системата.

Когато изключване, първоначален се нарича за контролирано спиране на програмите на ниво потребител, също според сценариите. След това първоначален затваря и ядро ​​произвежда своя собствена изключване.

товарач фаза

товарач фаза варира в зависимост от платформата. От ранните етапи на натоварване не зависи от процеса на зареждане на операционната система обикновено започва, както следва:

  • За x86 или x86-64. Код от сектор на дисков дял зареждане се извършва в реален режим и зарежда първия етап зареждане на ОС (като правило - част от LILO или GRUB).

От този момент зареждане продължава. Първата фаза на кода зарежда останалата част на зареждане, което обикновено пита какво операционна система (или вида на своята сесия) потребителят иска да се изпълнява. Ако използвате LILO се извършва чрез четене файла /etc/lilo.conf конфигурационния файл. който определя наличните системи. Този файл съдържа, наред с другото, информация на зареждащия дял и местоположението на ядрото за всяка една от тези системи, както и опции за разширено зареждане, ако те са определени. Чрез избора на подходящ ядрото зарежда в RAM. Минималният размер на първоначалната файлова система е конфигурирана на графичен файл (initrd), а след това, заедно със съответните параметри за контрол се предава на нова операционна система.

LILO GRUB и има някои различия: [1]

  • LILO не разпознава файловата система, така че тя използва директно (сурови) компенсиране на диска, както и информация от BIOS, за да се заредят. Той зарежда менюто код и след това, в зависимост от избора, да изтеглят или сектори 512 байта диск за системата въз основа на MBR (например Microsoft Windows), сърцевина на изображения за Linux. [1]
  • GRUB, обратно, разпознава познати файлови системи (като ext2, ext3 и). [2] От GRUB съхранява своите данни в конфигурационния файл, но не и в дневника за зареждане, както и интерфейс за команден ред, често е по-лесно параметри GRUB да коригират или променят, ако е неправилно конфигуриран или е повреден. [3]

Друг начин да изтеглите Linux - от DOS или Windows 9x. където ядрото на Линукс да замести напълно работещ копие на операционната система. Това може да бъде полезно, ако трябва да бъдат включени на хардуера и софтуера, както съществуват подходящи програми само за DOS, но не и за Linux, като собственически производител на софтуер и предмет на търговски тайни. Това досаден начин на зареждане вече не е от голямо значение, тъй като Linux има драйвери за различни хардуерни устройства, въпреки че в миналото той е бил много полезен.
Друг пример: когато Linux е устройство за съхранение на данни, която не е предназначена за сваляне от BIOS: DOS или Windows да изтеглите подходящите драйвери за заобикаляне на ограничения на BIOS и след това заредете от Linux.

Линукс ядрото управлява основните функции, като например управление на паметта, диспечера на задачите. IO. комуникация между процесите, както и цялостното управление на системата. Зарежда се осъществява в две фази: първата ядрото (като компресиран файл с изображение) е зареден в паметта и декомпресира, а след това създаде такива основни функции като основен управление на паметта. След това управлението се насочва към последния път, основният процес стартира ядро. След като ядрото започне да функционира пълноценно (т.е.. F. Loaded и да изпълни своя код), тя е локализирана и започва процеса на първоначален, която автоматично регулира потребителското пространство и процесите, необходими за функциониране на околната среда на потребителя и окончателното влизане в системата. Самата ядрото преминава в спящ режим и е готова за предизвикателствата на други процеси.

сърцевина стъпка натоварване

Ядрото по време на зареждане обикновено е под формата на графичен файл компресиран във формат zImage или bzImage използване Zlib. Той съдържа програмата родител, който извършва минимум хардуерна конфигурация, декомпресира картинката изцяло в горната част на памет и RAM-диск опори. ако това е предвидено. [5] След това, той изпълнява стартиране на ядрото от ./arch/i386/boot/head и startup_32 () процес (за x86 семейство процесор).

Стъпка старта ядрото

ядро старт функция (наричан също svopper или процес 0) организира дейността по управление на паметта (стр маса и лице страница памет) определя типа на процесора и допълнителни функции (например, наличието на по математика копроцесор), а след това превключва на функционален Linux ядрото на архитектурата-независим, като се обадите start_kernel ().

start_kernel () изпълнява различни инициализация задачи. Той конфигурира прекъсват манипулатори (IRQ), а след това се настройва на паметта, започва процеса на първоначален (първо процес потребителския режим), а след това работи на празен ход задача обажда cpu_idle (). Трябва да се отбележи, че процесът на стартиране ядро ​​също монтира започване на RAM-ROM ( «initrd»), който преди това е бил зареден, тъй като временно основната файлова система във фазата на зареждане. Това ви позволява да заредите драйвера модули, без да разчитат на други физически устройства и драйвери и поддържане на малкия размер на ядрото. Кореновата система файл впоследствие се заменя чрез pivot_root () повикване. който слезе от времето и го заменя с недвижими основната файлова система, веднага след като последният стане достъпна. След това използвайте система временно паметта се освобождава.

По този начин, ядрото инициализира каза монтира устройството товарач на файловата система в режим "само за четене" и започва процеса на първоначален (/ sbin / първоначален), който е определен като първа система процес тичане (идентификатор PID = 1 процес). [1] Ядрото на съответните изходи на съобщения (когато монтирате файлова система) и първоначален (стартиране на процеса със същото име). Сърцевината може също да се извърши обработката, за initrd настройки за инициализация и устройства за монтиране на кореновата файлова система. [1]

Според компанията «Red Hat», част от процеса на стартиране на този етап може да се обобщи по следния начин: [2]

Когато ядрото е зареден, той веднага инициализира и конфигурира паметта на компютъра и конфигурира различни хардуер, приложен към системата, включително всички процесори, една подсистема на вход-изход, както и устройства за съхранение. Впоследствие то за сгъстен initrd образа на предварително определено място на паметта, то декомпресира, стойки и натоварвания всички необходими драйвери. На следващо място, го включи виртуални устройства, свързани с файловата система, като LVM или софтуер RAID -massivy преди демонтаж initrd образ на диска и да се освободи цялата памет, заемано преди това от изображенията. Тогава ядрото създава корен устройство, монтира корен дял само за четене и освобождава всички неизползвани памет. По това време, ядрото е зареден в паметта и оперативно. Въпреки това, тъй като няма софтуер по поръчка за смислени въвежда данни в системата, не е малко, за да се направи.

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

първоначален процес (само UNIX System V тип)

Init е майка на всички процеси. Неговата основна задача - да се създаде процес за сценария на файл / и т.н. / inittab. Този файл обикновено съдържа записи, показващи първоначален мицел Гети за всяка линия, на която потребителите могат да влизат в системата. Той също така контролира автономните процеси, изисквани от всяка система. Нивото на изпълнение - софтуерна конфигурация на системата, което позволява само предварително определена група от съществуват процеси. Процеси първоначален генерирани при всеки един от тези нива на изпълнение са определени в файл / и т.н. / inittab. [6]

В действителност първоначален организира и поддържа всички потребителското пространство, което включва и проверка и монтаж на файлови системи, стартиране на услуги и необходимата потребител, превключете на потребителя среда при стартиране на системата е завършена. Тя е подобна на процеса на първоначален в Unix и BSD. от която е налице, но в някои случаи това е модифициран или променя. В типичен първоначален система Linux има параметър, известен като нивото на производителност. е от 1 до 6, и определяне кои области трябва да бъдат включени. За всяко ниво на изпълнение има своя собствена азбука, която регулира различни процеси, които участват в създаването или премахването на това ниво, и тези сценарии се считат за съществени за процеса на зареждане. инициализиращите скриптове обикновено се съхраняват в директории с имена като / и т.н. / RC .... В конфигурацията на ниво файл основна за първоначален - / и т.н. / inittab. [7]

По време на зареждане, той проверява дали нивото на подразбиране в / и т.н. / inittab е описан. и ако не е - тя иска чрез конзолата на системата. Тогава той продължава да изпълнява всички съответни сценарии за зареждане на това ниво, включително зареждането на модули, проверка на целостта на файловата система (която е монтирана само за четене), го прикачете отново за четене и запис, както и конфигурацията на мрежата. [1]

По-специално, в съответствие с Red Hat. процес първоначален следва следната схема: [2]

  1. Той поглежда sysinit сценарий. който "задава пътя към околната среда предизвиква замяната. проверява файловата система и прави всичко, което е необходимо да се инициализира системата. По-специално, системата и часовник хардуер, специални методи за сериен порт, и така нататък. н.
  2. След първоначален изглежда конфигурация, определена за дадено ниво на изпълнението.
  3. След това първоначален задава източник функция библиотека за системата. Той определя как да се започне или премахване на програмата, както и как да се определи неговата PID.
  4. След това започва всички предписани процеси и създава влизане на потребител сесии.

След това е зареди всички от даден процес, първоначален превключва в режим на готовност и чака за една от трите събития:

  1. Нормално или ненормално прекратяване зареди процеси.
  2. Сигнал спиране на тока.
  3. Искане от / sbin / telinit да промените нивото на писта. [6]

Това се отнася до програмата първоначален в UNIX System V. Други програми стил инициализиращите може да се държи по различен начин.

бележки