Konfigurácia a kompilácia vlastného jadra linuxu
Úloha
Nakonfigurujte, skompilujte a nainštalujte svoje linuxové jadro.
Postup
-
Nainštalujte balík linux-source
-
Preskúmajte adresár /usr/src
-
Aká je verzia jadra? Aký je veľký súbor s príponou tar.xz
-
Súbor s príponou tar.xz je predchodca toho čo poznáte z windowsu s príponou zip.
Spustite si mc a preskúmajte jeho obsah.
Preskúmať sa to dá tak že klávesou Enter "otvoríte" súbor ako vo windowse (mimochodom túto vlastnosť otvárania komprimovaných
súborov mal mc skôr ako to urobili vo windows).
Pozor po stisnutí klávesy treba počkať - je to veľký súbor ktorý treba načítať do pamäte a dekomprimovať.
Všimnite si ako sa zmenila cesta v ráme okna ktorá informuje o mieste kde sa nachádzate.
Vystúpiť späť sa dá návratom prostredníctvom "adresára" s názvom ..
-
Zistite koľko slovákov je spomenutých v súbore CREDITS
-
Zistite koľko čechov je spomenutých v súbore CREDITS
-
Ukončite mc a príkazom tar ???? treba zistit rozbalte súbor do aktuálneho adresára.
V minulosti tar nevedel obsluhovať kompresiu xz, dnes už vie.
-
Zistite čo pribudlo a koľko to zaberá miesta na disku
-
Chodte do podadresára Documentation/admin-guide
a otvorte si súbor README.rst
Nájdite kapitolu Installing the kernel source
Na konci je veta Make sure you have no stale .o files and dependencies lying around::
Klávesou Ctrl + O presunte mc na pozadie a prejdite do adresára kde sa súbory rozbalili (linux-source.....).
príkaz cd teda treba upraviť .
Vyčistite prípadané už existujúce skompilované súbory.
Po inštalácii by to malo byť čisté ale príkaz sa hodí ak budte chcieť niekedy začať znova a s čistým stolom.
-
Vráttde sa na súbor README.rst
Nájdite kapitolu Configuring the kernel
Vyskúšajte prvý alternatívny príkaz pre konfiguráciu kernelu.
Nič tam nemente len to odosielajte klávesou Enter
Sledujte čo sa dá všetko konfigurovať. Keď vás to prestane baviť ukončite konfiguráciu predčasne klávesou Ctrl + C
Tento spôsob konfigurácie bol používaný v začiatkoch OS linux a je veľmi nepraktický.
-
Vyskúšajte druhý spôsob konfigurácie kernelu.
predpokladám že dostanete chybu.
Tejto chyby sa zbavíte tak že si naištaľujete balik libncurses-dev
Knižnica ncurses je jedna z opbľúbených na vytvátanie textových okienkových aplikácií
(aj mc ju používa). V prípade kompilácie kernelu ale potrebujeme vývojové prostredie z ktorého sa toto okienkové rozhranie
skompiluje. Preto pá prípona -dev od slova develop - vyvíjať.
-
Opakované spustenie už bude bez chyby a ak to robíte na konzole sytému tak bude aj všetko pekne vyzerať.
V prípade že to ale budete púštať v emulátore terminála putty tak orámikovanie
nebude asi funkčné. Ukončite prokram príkazom exit bez ukladania konfigurácie.
Potom v meny programu putty (ikona v ľavom hornom rohu okna), dajte príkaz Change Settings...
Následne výberte možnosť Window > Translation. Teraz už len zakliknite posledné okienko.
Enable VT100 line drawwing even in UTF-8 mode.
-
Opakovane spustite konfiguráciu kernelu pomocou druhej možnosti. Teraz by to malo byť pekne oprámované,
a hore je aj slušne napísané ako sa to ovláda. Sú tam dva kurzory. Jeden sa posúva šipkami ↑ ↓
a vybrerá sa tak za ponuky konfiguračných možností. Druhý kurzor je dolu a vyberá operácie. Týmto sa pohubuje šípkami
← →. Sevect vyberá vstup do položky ktorá má hlbšie submenu
Exit sa vracia o jednu úroveň dozadu, prípadne úplne ukončuje konfiguráciu.
Ďalšou špeciálnou klávesou je Enter Ten aktivuje daný príkaz.
Poslednou používanou klávesou je medzerník Ten prepína možnosti pri voľkách ktoré ich majú.
Poznáte ich tak že sú buď v hranatých zátvorkách [*] alebo v zložených zátvorkách {*}
Ak je tam znak * tak to znamená že daná voľba sa bude kompilovať do jadra.
Ak je tam znak M tak sa voľba nekompiluje priamo do jadra, ale sa skompiluje modul
ktorý je možné v prípade potreby do jadra načítať (alebo zase v prípade že nie je potreba tak odstrániť z jadra).
Ak tam nie je nič, znamená to že táto možnosť nebude v jadre nijako dostupná.
Niečo si popozeráme ale ani tu neskončíme pretože táto metóda konfugurácie je asi tak 20rokov stará.
Po chvíli slúmania teda aj toto rozhranie ukončíme a konfiguráciu neuložíme.
-
Použijeme tretiu možnosť konfigurácie, ak budem v konzole, alebo v putty. Štvrtá a priato možnosť je vhodná
ak konfigurujete z grafickej konzoly.
-
A teraz si naozaj aj niečo nakonfigurujeme. Cvičenie som robil podľa tohoto videa
takže ako prvé si nastavte v časti
General setup --->
položku označnú ako () Local version - append to kernel release
Tam zadajte text -xx Kde xx sú vaše iniciálky
Teoretický rozbor
Popis systému systemd v Linuxe
systemd je moderný init systém a správca služieb používaný v Linuxe.
Je to prvý proces, ktorý sa spustí po načítaní jadra (má PID 1), a stará sa o spúšťanie
všetkých ostatných procesov, služieb a systémových funkcií.
1. Spustenie systemd
Po načítaní jadra Linuxu sa vykoná:
/sbin/init → symlink → /lib/systemd/systemd
Tým sa spustí proces systemd ako PID 1.
2. Načítanie konfigurácie
Systemd načítava jednotky (units) z týchto priečinkov:
/etc/systemd/system/ – používateľské úpravy
/run/systemd/system/ – dočasné jednotky
/lib/systemd/system/ – systémové predvolené jednotky
3. Jednotky (Units)
Každá služba, mount alebo cieľ je definovaný v súbore s príponou
.service, .target, .mount, .socket, .timer atď.
# /lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
After=network.target
[Service]
ExecStart=/usr/sbin/sshd -D
Restart=always
[Install]
WantedBy=multi-user.target
4. Ciele (Targets)
Systemd používa tzv. targets namiesto starých "runlevelov".
| Runlevel | systemd Target | Popis |
| 1 | rescue.target | Jednouchý režim (single user) |
| 3 | multi-user.target | Bežný textový režim |
| 5 | graphical.target | Grafické prostredie |
| 0 | poweroff.target | Vypnutie systému |
| 6 | reboot.target | Reštart systému |
5. Paralelné spúšťanie
Systemd dokáže spúšťať služby paralelne podľa ich závislostí
(After=, Requires=), čo výrazne zrýchľuje štart systému.
6. Správa služieb
Na správu služieb sa používa príkaz systemctl:
systemctl status sshd.service # stav služby
systemctl start sshd.service # spustiť
systemctl stop sshd.service # zastaviť
systemctl restart sshd.service # reštartovať
systemctl enable sshd.service # spúšťať pri štarte
systemctl disable sshd.service # nespúšťať pri štarte
7. Logovanie – journald
Systemd má vlastný systém logovania (journald):
journalctl # všetky logy
journalctl -b # logy od posledného bootu
journalctl -u sshd # logy konkrétnej služby
8. Analýza bootu
Na analýzu rýchlosti štartu systému:
systemd-analyze
systemd-analyze blame
systemd-analyze critical-chain
9. Zhrnutie komponentov
| Funkcia | Komponent |
| Init proces | /lib/systemd/systemd |
| Správa služieb | systemctl |
| Logovanie | journald |
| Čas a dátum | timedated |
| Sieť | networkd |
| Používatelia | logind |
| Automatické úlohy | systemd-timer |
Poznámka: Systemd spúšťa služby paralelne a sleduje ich stav počas celého behu systému.
Ak služba zlyhá, môže ju automaticky reštartovať.
Postup