A rakodási folyamat linux 1
A folyamat áttekintése
A főbb állomásai loading:
- számítógépes rendszer firmware végrehajtja a kezdeti hitelesítése és inicializálása hardver.
- Ez betölti a BIOS firmware-t a RAM és végrehajtja a boot kódot egyik szakaszok egy előre meghatározott töltési eszköz, amely tartalmaz egy fázist 1 Linux betöltő. 1. fázis 2. fázis terhelések (fő mérete bootloader kód). Néhány rakodók lehet használni erre a közbenső szakasz (az úgynevezett fázis 1,5), mivel a jelenlegi meghajtók nagy térfogatú lehet leolvasni minden további nélkül kódot. Abban az esetben, UEFI boot futtatja a letöltött Service Partition (EFS), amely szerint kiválasztott beállítás indítási prioritását határozza meg a nem-felejtő memória. Lehetőség van letölteni nem csak egy dedikált rakodó, de lehet letölteni közvetlenül a Linux kernel (mag erre a célra kell gyűjteni EFI_STUB opció).
- Loader gyakran biztosít a felhasználó számára rendelkezésre álló menü opciók közül választhat. Kiválasztása után, vagy azt követően egy meghatározott időkorlát értéket betölti a kernelt.
- Loaded kernel kicsomagolása a memóriában, akkor beállítja a rendszer funkcióit, mint például a munkamemória szükséges berendezések és kezelése oldalt, akkor teszi start_kernel () hívást.
- Ezt követően, a start_kernel () végzi az alap rendszer konfiguráció (megszakítást, a fennmaradó memória kezelése, az eszköz inicializálása, a járművezetők, és így tovább. D.), és előállítja az üresjárati folyamat. Manager és a tőlük függetlenül - ez a folyamat az init (futó felhasználói térben).
- Scheduler kezd hatékonyabban kezelni a rendszert, míg a mag mozdul a holtpontról.
- Az init folyamat végrehajtja a szükséges beállító parancsfájlokat az összes szolgáltatás és struktúrák, amelyek nem kapcsolódnak a szint a kernel, ami a felhasználói környezet jön létre, és a felhasználó bejelentkezési képernyő fognak nyújtani a rendszerben.
Ha a kikapcsolást, az init az úgynevezett szabályozott leállítását felhasználói szintű programok is, szerint a forgatókönyv. Ezt követően az init bezárja és a mag gyárt saját shutdown.
Amikor le BIOS-on keresztül: Boot Loader Phase befolyásolhatják az platformon. Mivel a korai szakaszában a terhelés nem függ az operációs rendszer boot folyamat rendszerint a következőképpen kezdődik:
- Az x86 vagy x86-64. kódot egy boot partíció, szektor végre valós módban, és betölti az első szakaszban boot loader (mint általában - részben a LILO vagy GRUB).
Ettől a pillanattól kezdve betöltés folytatódik. Az első szakasz a kód betölti a többi rakodó, ami általában azt kérdezi, hogy milyen operációs rendszer (vagy típusától ülésén) a felhasználó akar futtatni. rakodó kód létrehozása a konfigurációs fájl /etc/lilo.conf (a LILO). amely meghatározza a rendelkezésre álló rendszerek. Ez a fájl tartalmazza többek között információt a boot partíció, és a helyét a kernel minden egyes ilyen rendszerek, valamint a Speciális rendszerindítási beállítások, ha be van állítva. Kiválasztja a megfelelő kernel betöltése a memóriába. minimális kezdeti fájlrendszer van konfigurálva Egy képfájl (initrd), majd együtt a megfelelő paramétereket vezérlés átkerül egy új operációs rendszer.
LILO GRUB, és van néhány különbség: [1]
- LILO nem ismeri fel a fájlrendszert, ezért használja a közvetlen (nyers) ellensúlyozza a lemezen, és a BIOS-tól betölteni az adatokat. Ez betölti a menüt, majd ezután, választásától függően, letöltés akár 512 bájtos lemezszektorokat a rendszer alapján az MBR (például Microsoft Windows), a mag kép Linuxra. [1]
- GRUB fordítva, érzékeli a közös fájlrendszer (például ext2, és ext3). [2] Mivel a GRUB az adatot a konfigurációs fájlban, de nem a boot rekordot, és a parancssori felület, gyakran könnyebb GRUB paraméterek javítására vagy módosítására, ha megfelelően konfigurálva, vagy sérült. [3]
Amikor elindítod a UEFI: nem kell verni magad külön fázisokra és elhelyezni őket a különböző helyeken a UEFI boot loader azonnal elindul védett módban (32-bit vagy 64-bit), és gyakorlatilag az összes terhelés azonnal rakodó fázis (figyelembe véve a szolgáltatás boot betöltő számára ). Ellenkező esetben a kernel boot és inicializálási folyamat eltér a kiviteli alakban a BIOS.
Egy másik módja, hogy letölthető Linux - DOS vagy Windows 9x. a Linux kernel teljesen helyettesíti futó példányát az operációs rendszer. Ez akkor lehet hasznos, ha a hardver és szoftver kell tartalmaznia, mivel léteznek megfelelő programok csak a DOS, de nem a Linux, mint a szabadalmaztatott szoftver gyártó és figyelemmel az üzleti titok. Az indító módszer nem különösebben fontos, mivel a Linux van vezetők a különböző hardver eszközök, bár a múltban nagyon hasznos volt.
Egy másik példa: ha a Linux egy adattároló eszköz, amely nem szánt letölthető a BIOS, a DOS vagy Windows letöltheti a megfelelő illesztőprogramokat, hogy megkerülje a BIOS korlátozás, majd töltse ki a Linux.
A Linux kernel kezeli a fő funkciók, mint például a memória kezelése. Feladatkezelő. IO. közötti kommunikációt, és a teljes rendszer ellenőrzése. Loading zajlik két szakaszból áll: az első kernel (a tömörített képfájl) betöltődik a memóriába, és kibontja, majd állítsa be olyan alapvető funkciók, mint a fő memória kezelése. Ezután a vezérlés átadódik az utóbbi időben a fő kernel elindítása folyamatban. Amikor a kernel teljes mértékben működőképessé válik (azaz. F. Loaded és végrehajtja a kódot), akkor megkeresi és elindítja az init folyamat, amely automatikusan beállítja a felhasználói tér és a folyamatok működéséhez szükséges a felhasználói környezet és az utolsó bejegyzés a rendszerbe. A kernel maga alvó módba, és készen áll a kihívásokra más folyamatok.
magtöltés lépés
A kernelnek rendszerint úgy valósul meg a képfájl tömörített formátumban zImage vagy bzImage zlib használatával. Ez tartalmazza a szülő program, amely elvégzi a minimális hardver konfiguráció, kibontja a képet teljes egészében a felső memória és a RAM-lemez tartók. ha van ilyen. [5] Ezután, végrehajt egy indítási kernel ./arch/x86/boot/head és startup_32 () eljárás (x86 processzor család).
Step dob kernel
nucleus start funkció (más néven svopper vagy eljárás 0) szervezi memóriakezelés (oldal asztal és egy oldalt memória egység) meghatározza a processzor típusát, és további funkciók (például, a jelenléte a matematikai társprocesszor), majd átvált a architektúra-független funkcionális Linux kernel hívja start_kernel ().
start_kernel () végzi a különböző inicializálási feladatokat. Ez beállítja megszakításkezelõkben (IRQ), akkor beállítja a memóriát, elindítja a folyamatot, az init (első felhasználói módban folyamat), majd futtatja tétlen feladat hívja cpu_idle (). Meg kell jegyezni, hogy a folyamat a kiindulási nucleus is tartóknak kezdeményező RAM-ROM ( «initrd»), amelyet korábban betöltött ideiglenes root fájlrendszert a terhelési fázis. Ez lehetővé teszi, hogy töltse meghajtó-modulok nélkül támaszkodva más fizikai eszközök és a járművezetők, és fenntartani a kis méret a sejtmagban. A gyökér fájlrendszer helyébe később keresztül pivot_root () hívást. amely leszáll az idő és a helyére igazi gyökér fájlrendszer, amint az utóbbi elérhetővé válik. Felhasználási ideiglenes memória rendszer ezután kiengedik.
Így a kernel inicializálja a készülék tartók említett rakodó fájlrendszer a „csak olvasható” módban, és elindítja a folyamatot a init (/ sbin / init), amelyet A eljárás első futó rendszer (azonosító PID = 1 folyamat). [1] A megfelelő kimeneteket üzenetek mag (felszerelésekor a fájlrendszer), és az init (indítási folyamat ugyanaz a neve). A mag végre a feldolgozást initrd inicializálás beállításokkal és eszközökkel, hogy felmászik egy root fájlrendszert. [1]
A cég szerint «Red Hat», a boot folyamat ezen szakaszában lehet a következőkben foglalhatók össze: [2]
Amikor a kernel betöltése után azonnal alaphelyzetbe állítja és konfigurálja a számítógép memóriájában, és konfigurálja a különböző hardver csatlakozik a rendszer, beleértve az összes processzort, alrendszer input-output, és a tároló eszközök. Ezután megkeresi a tömörített initrd egy előre meghatározott memóriahely kicsomagolja, tartók és tölti be az összes szükséges illesztőprogramokat. Ezután inicializálja virtuális eszközök kapcsolódnak a fájlrendszer, például LVM vagy RAID szoftver -massivy előtt szét initrd lemezképet, és engedje szabadon az összes memóriát által korábban elfoglalt a képeket. Ezután a rendszermag létrehoz egy gyökér eszköz, csatolja a root partíció csak olvasható, és felszabadítja a fel nem használt memóriát. Ekkorra a kernel betöltődik a memóriába, és működőképes. Azonban mivel nincs egyedi programozás értelmes bemenő adatokat a rendszerbe, akkor alig kell tenni.
Most, hogy magában foglalja a megszakítás-vezérlő is eltarthat a teljes ellenőrzést a rendszer, hogy az elővásárlási multitasking, és az init folyamat folytatásához betöltésekor a felhasználói környezet felhasználói térben.
Process init (csak UNIX System V típusú)
Init a szülő a folyamatok. A fő feladat -, hogy hozzon létre egy eljárás a szkriptet a / etc / inittab. Ez a fájl általában tartalmaz bejegyzéseket jelzi init spawn getty minden vonalon, amelyen a felhasználó bejelentkezik a rendszerbe. Továbbá azt is szabályozza az autonóm folyamatok által igényelt bármilyen rendszeren. A szintű teljesítményt - egy szoftver konfiguráció a rendszer, amely lehetővé teszi a csak egy előre meghatározott csoport folyamatok léteznek. Folyamatok init által generált minden egyes ilyen teljesítmény szinten. határozza meg az / etc / inittab. [6]
Valójában init szervezi és támogatja az összes felhasználói térben. amely magában foglalja ellenőrzése és szerelési fájlrendszerek indítási szolgáltatásokat, valamint a szükséges felhasználói váltson a felhasználói környezetet, amikor a rendszer indításakor befejeződött. Ez hasonló az init a Unix és BSD. ahonnan nem volt, de bizonyos esetekben ez a módosított vagy megváltoztatott. Egy tipikus Linux init rendszer paraméter ismert, mint a teljesítményt. jelentése 1-től 6, és meghatározzuk, mely területeket tartalmazza. Minden szinten a megvalósítás saját script, amelyek szabályozzák a különböző folyamatok létrehozására vagy eltávolítására ezen a szinten, és ezek a forgatókönyvek nélkülözhetetlennek tartják az indítási folyamatot. init szkriptek általában könyvtárakban tárolják nevekkel, mint az / etc / rc .... A fő szintű konfigurációs fájlja init - / etc / inittab. [7]
Indításkor, ellenőrzi, hogy az alapértelmezett szint a / etc / inittab ismertetjük. és ha nem - kéri a konzolra. Aztán továbbra is teljesíti az összes vonatkozó terhelési forgatókönyvek ezen a szinten, beleértve a modulbetöltés, ellenőrizze a fájlrendszer integritásának (melyet írásvédett), újra fel írható-olvasható, és a hálózati konfigurációt. [1]
Különösen szerint a Red Hat. init folyamat követi a következő séma szerint: [2]
- Úgy néz ki, sysinit forgatókönyv. amely „meghatározza az elérési utat a környezet váltja ki a csere. ellenőrzi a fájlrendszert, és teszi minden, ami szükséges elindítani a rendszert. Különösen a rendszer és a hardver órát, speciális eljárások a soros port, és így tovább. n.
- Akkor úgy néz ki, az init konfigurációs beállítása egy adott teljesítményt.
- Ezt követően, az init beállítja a forrás függvénykönyvtár a rendszer. Ez határozza meg, hogyan kell kezdeni, vagy távolítsa el a programot, és hogyan kell meghatározni a PID.
- Aztán kezdődik minden előírt folyamatokat, és létrehoz egy felhasználói bejelentkezési ülés.
Azt követően, hogy létrehozta az összes, az adott folyamat az init készenléti üzemmódba kapcsol, és vár egy három esemény:
- Normál vagy rendellenes terminációs szült folyamatok.
- Jel áramszünet.
- Kérése / sbin / telinit változtatni a futási szintet. [6]
Ez arra utal, hogy az init programot a UNIX System V init Más stílus programok másképp viselkednek.