HTML

Bagoj úr blogja

Kíváncsi Bagoj befigyel a Linux belsejébe, illetve különféle Linux terjesztéseket próbál ki. Ha jó napja van, scriptet ír Neked.

Friss topikok

Linux boot 5 másodpercen belül?!

2008.10.13. 09:04 bagoj ur

Végre megcsinálták. A Linux Plumbers Conference-en az Intel két mérnöke bemutatott egy öt másodpercen belül bootoló EEE PC-t. Nem hiszem, hogy lehetne gyorsabbat azzal a technológiával, amelyet ma használnak a PC-k. Természetesen a memória lecserélése nemfelejtősre lecsökkentené ezt is majdnem azonnali használatbavételre, illetve célgépeknél ez évtizedek óta működik, gondoljunk csak az autónkra - ha a gyújtáskulcs elfordításakor elkezdene egy Ubuntus bitkolbászt húzni, a fejem már rég felrobbant volna az idegtől. Szerencsére az autó azonnal indul. :-)

"Háhogy'"?

És hogyan sikerült elérni mindezt? Nem azt a módszert alkalmazták, amit sokan előttük, azaz itt is nyernek fél másodpercet, ott is két tizedet és végül elmondhatják, hogy kicsit sikerült javítani a boot időn, hanem megválasztottak egy szerintük reális felállást:

  • SSD drive-ról (azaz flash-alapú merevlemezről) bootolnak
  • A kernel egy másodpercen belül el kell induljon, minden modullal együtt
  • A boot közben lefutó szkriptek és programok: egy másodperc
  • X indítása: egy másodperc
  • A teljes grafikus környezet elindítása: két másodperc

Ebből talán kiderülhetett, hogy a gdm indítása helyett egyből a grafikus környezetbe bootolnak be. Splash screent természetesen nem alkalmaznak, ahogyan az egyik mérnök fogalmazott: "Utáljuk a splash screent. Az alatt az idő alatt, amíg megjelenik, már végezni is akarunk."

Az eredményhez behatóan elemezték a Fedora és Ubuntu terjesztések boot chart-jait, és kiderült, hogy rengeteg idő megy el olyan feladatokra, amik az emberek 5%-ának igényeit hivatottak kielégíteni. Pl. Ubuntun 12 másodpercig tart egy modprobe által indított shell script ami egy modprobe-ot indít el, hogy egyetlen kernel modult betöltsön. A bináris meghajtók (pl. bizonyos wifi meghajtók) betöltése 2,5 másodperc, de szerencsére a Linux jó hardvertámogatása miatt sok embernek nem kell azt használnia.

  1. Kernel módosítások: initrd elvetése, hardver inicializációk párhuzamosítása (AHCI és UHCI), és a readahead kernel-szintű támogatása (a readahead előre beolvassa a memóriába azokat a függvénykönyvtárakat és programokat, amelyeket sokszor vagy gyorsan kell használni később. A memóriából ezek sokkal gyorsabban elindulnak, hiszen nem kell a lassú diszkről felolvasni. A támogatás abból áll, hogy a kernel nyilvántartja, hogy mely blokkokat kell felolvasni a diszkről, így még keresgélnie sem kell).
  2. Init módosítások: Az upstart, amelyet a Fedora és Ubuntu is használ, az ősöreg init felváltására készült, és nagy gyorsulást vártak tőle. Ez a mai napig nem nagyon következett be (főleg mert félnek a kompatibilitási problémáktól). Az Intel mérnökei inkább visszaléptek az init-re, mert azt jobban tudták faragni. Ez egyrészt elindítja az általuk használt, módosított readahead-et, amely a memóriába cache-eli a szükséges programokat. Párhuzamosan megy a diszk ellenőrzés, a D-Bus indítása (amely a különféle processzek egymás közötti kommunikációjául szolgál, a Freedesktop.org szabványban rögzítettek szerint), majd az X indítása. Párhuzamosan, a harmadik szálon pedig a HAL daemon és az udev indul, amelyek a hotplug hardverek (pl. usb-s kütyük) felismerését teszik lehetővé. Ez a párhuzamosítás lehetővé teszi, hogy a CPU és a diszk I/O is maximalizálva legyen: mire az X elindul, addig a memóriában lesz minden, amire szüksége van, nem kell várnia. Az X további finomításokra szorult: például fél másodpercet tölt a videokártya detektálására, pedig azt a HAL megteszi már előtte (ez más hardver-detektálásra is igaz; reméljük az X-et abba az irányba fejlesztik tovább, hogy a kernelre hagyja a detektálást). Ugyanígy kicsit durva, hogy az X induláskor a különféle billentyűkiosztás-fájlok generálásához a C fordító precompilerét használja (!!!), tehát minden X indításakor elindul a C előfordító.

Érdekes ötlet, hogy a hibernáció utáni felálláshoz hasonlóan a legutolsó felhasználó session-jét állítanák vissza, bekapcsolt képernyővédővel, amely lehetővé teszi a felhasználóváltást, tehát helyettesítené a jövőben a GDM-et és egyéb bejelentkeztető programokat.

Én még annyit tennék hozzá, hogy a kernel és init módosítások még rendben vannak, de az X-et más szabad operációs rendszerek is használják, úgyhogy nem lehet azok figyelembevétele nélkül átírni. Persze fordítási paraméterekkel sok minden elérhető, de a gyökeresen eltérő működés nonszensz. Végfelhasználóként engem mindenesetre csak az érdekel, hogy gyors legyen a boot. :-)

Amit ez alapján mindenki meg tud tenni, az initrd és a bináris driverek betöltésének kikapcsolása, ha nem szükséges. Az előbbihez talán segít ez a post. Végül pedig annak, aki nem hisz a dologban, itt a bootchart az öt másodpercen belül induló linuxról (XFCE4 grafikus környezetet indít el):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Szólj hozzá!

Címkék: linux x boot hibernálás

A bejegyzés trackback címe:

https://bagojur.blog.hu/api/trackback/id/tr31711067

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.