Nov 3, 2023

Proces butovanja Linuxa

 Proces butovanja (boot proces) je osnovni postupak kojim računar ili uređaj učitava operativni sistem i postaje spreman za upotrebu. Evo osnovnog objašnjenja tog procesa:

  1. Napajanje i BIOS/UEFI: Kada uključite računar ili uređaj, napajanje se isporučuje komponentama. Računar prvo prolazi kroz postupak Power-On Self-Test (POST), a zatim se BIOS (Basic Input/Output System) ili UEFI (Unified Extensible Firmware Interface) pokreće. Ovi sistemi firmware-a su odgovorni za inicijalizaciju hardverskih komponenti, uključujući CPU, RAM, hard diskove i druge uređaje.

  2. Boot Loader: Nakon inicijalizacije hardvera, BIOS/UEFI pronalazi i pokreće boot loader (npr. GRUB na Linux sistemima). Boot loader je mali program koji se nalazi na disku i odgovoran je za pronalaženje i pokretanje operativnog sistema. Boot loader može prikazati opcije za izbor operativnog sistema, ako je više njih instalirano na računaru.

  3. Učitavanje jezgra (Kernel): Nakon što se izabere operativni sistem, boot loader učitava jezgro (kernel) operativnog sistema u RAM. Jezgro je srž operativnog sistema i odgovorno je za upravljanje hardverom i izvršavanje sistemskih zadataka.

  4. Inicijalizacija sistema: Jezgro operativnog sistema inicijalizuje sistem, uključujući postavke sistema, upravljanje uređajima, mrežnom vezom i mnoge druge komponente.

  5. Učitavanje servisa i aplikacija: Nakon inicijalizacije sistema, operativni sistem počinje učitavati različite servise, drajvere i aplikacije. Ovo uključuje procese kao što su upravljanje datotekama, grafički interfejs, mrežni servisi i druge komponente koje su potrebne za normalan rad računara.

  6. Prikaz grafičkog korisničkog interfejsa (opciono): Ako koristite računar sa grafičkim korisničkim interfejsom (GUI), operativni sistem će na kraju pokazati grafičko okruženje na ekranu, omogućavajući vam da interagirate sa računarom.


Nakon završetka ovog procesa butovanja, operativni sistem je spreman za upotrebu, i korisnik može započeti sa radom na računaru. Važno je napomenuti da ovaj proces može varirati u zavisnosti od uređaja i operativnog sistema, ali su osnovni koraci slični.

Šta je BIOS?

BIOS (Basic Input/Output System) je firmware računara, odnosno nepromenjiv softver smešten u čip na matičnoj ploči ili uređaju sličnog tipa. BIOS igra ključnu ulogu u inicijalizaciji računara prilikom uključivanja i služi kao most između hardvera i operativnog sistema.

Glavne funkcije BIOS-a obuhvataju:

  1. Provjera hardvera (POST - Power-On Self-Test): BIOS vrši automatsku provjeru i dijagnostiku osnovnog hardvera, uključujući procesor, RAM, grafičku karticu, tastaturu i ostale komponente. Ako se tokom POST-a otkrije hardverski problem, BIOS će obavijestiti korisnika putem zvučnih signala ili poruka na ekranu.

  2. Učitavanje bootloader-a: Nakon POST-a, BIOS traži i učitava bootloader (npr. GRUB, LILO) sa određenog uređaja, obično sa tvrdog diska. Bootloader je odgovoran za pokretanje operativnog sistema.

  3. Konfiguracija računara: BIOS omogućava korisnicima da prilagode osnovne postavke računara, kao što su datum i vrijeme, redosled pokretanja uređaja (boot sequence), i postavke sigurnosti. Ove postavke se obično čuvaju u CMOS memoriji koja se napaja malom baterijom na matičnoj ploči.

  4. Rezervacija resursa: BIOS se takođe koristi za rezervisanje i upravljanje resursima kao što su IRQ (Interrupt Requests) i I/O portovi. Ovo pomaže operativnom sistemu da efikasno komunicira sa hardverom.

  5. Rukovanje uređajima: BIOS podržava osnovnu interakciju sa uređajima, kao što su tastatura, miš i monitor. Omogućava osnovne operacije, kao što je pokretanje računara sa USB uređaja.

Važno je napomenuti da BIOS postaje sve manje prisutan na modernim računarima, jer je zamenjen modernijim UEFI (Unified Extensible Firmware Interface). UEFI ima naprednije funkcije i omogućava više mogućnosti konfiguracije i bezbednosti.

Šta je Boot Loader?

Bootloader je računarski program ili firmware koji se izvršava prilikom uključivanja računara i odgovoran je za pokretanje operativnog sistema. Njegova osnovna funkcija je da učita operativni sistem iz memorije ili diska i preda kontrolu operativnom sistemu kako bi se nastavila normalna funkcija računara. Bootloader obavlja nekoliko ključnih zadataka:

  1. Inicijalizacija hardvera: Bootloader pruža rutine za inicijalizaciju osnovnih komponenti računara, kao što su procesor, RAM, grafička kartica i tastatura. Ovo je važno kako bi se osiguralo da hardver bude u odgovarajućem stanju pre nego što se operativni sistem učita.

  2. Izbor operativnog sistema: Ako na računaru postoji više operativnih sistema (npr. Windows i Linux), bootloader omogućava korisniku da izabere koji operativni sistem želi da pokrene. Ovo se obično postiže prikazivanjem menija sa opcijama pri pokretanju računara.

  3. Učitavanje jezgra operativnog sistema: Nakon što je odabran operativni sistem, bootloader učitava jezgro (kernel) operativnog sistema iz odgovarajućeg diska ili memorijskog uređaja. Jezgro jezgra (kernel) je srce operativnog sistema i odgovorno je za upravljanje svim ostalim procesima i resursima računara.

  4. Konfiguracija i parametri pokretanja: Bootloader omogućava konfiguraciju različitih parametara prilikom pokretanja operativnog sistema. Ovo uključuje postavke kao što su rezolucija ekrana, vremenska zona, jezik tastature i druge opcije specifične za operativni sistem.

Neki od najpoznatijih bootloadera u svetu računarstva uključuju:

  • GRUB (GNU GRand Unified Bootloader): Popularan bootloader koji se često koristi na Linux sistemima. Omogućava izbor između različitih Linux distribucija i drugih operativnih sistema.
  • LILO (LInux LOader): Stariji bootloader za Linux koji se koristi na nekim starijim sistemima.
  • Windows Boot Manager: Bootloader koji se koristi za pokretanje različitih verzija Windows operativnih sistema.

Bootloader je kritična komponenta za pravilno funkcionisanje računara, jer obezbeđuje da se operativni sistem učita i pokrene na odgovarajući način.

Šta je kernel?

Kernel (jezgro) operativnog sistema je centralna komponenta softvera koja ima ključnu ulogu u upravljanju resursima i izvršavanju osnovnih operacija na računaru. Kernel predstavlja most između hardverskih komponenti računara i aplikacija koje korisnici pokreću. Osnovna funkcija kernela je da obezbedi apstrakciju i upravljanje hardverom, omogući multitasking i multitasking, kao i osigura sigurnost i stabilnost operativnog sistema.

Evo nekoliko ključnih zadataka koje kernel obavlja:

  1. Upravljanje hardverom: Kernel komunicira sa hardverskim komponentama računara, kao što su procesor, memorija, diskovi, grafičke kartice, mrežne kartice i mnoge druge. On kontroliše pristup i upotrebu resursa, omogućava komunikaciju između softvera i hardvera, i obezbeđuje efikasno iskorišćenje resursa.

  2. Upravljanje procesima: Kernel omogućava pokretanje, zaustavljanje i upravljanje procesima na računaru. To uključuje raspoređivanje vremena procesora (CPU scheduling), pristup memoriji i kontrolu pristupa resursima.

  3. Komunikacija između procesa: Kernel omogućava komunikaciju između različitih procesa koji se izvršavaju na računaru. To može uključivati deljenje podataka, sinhronizaciju između procesa i komunikaciju putem interprocesnih komunikacionih mehanizama (IPC).

  4. Upravljanje memorijom: Kernel upravlja fizičkom i virtuelnom memorijom računara. To uključuje alociranje i dealociranje memorije za procese, upravljanje stranicama, i obezbeđivanje sigurnosti memorije.

  5. Upravljanje datotekama i sistemskim pozivima: Kernel obezbeđuje interfejs za rad sa datotekama i izvršava sistemski pozive koje aplikacije koriste za pristup hardveru i resursima.

  6. Sigurnost i zaštita: Kernel implementira mehanizme zaštite kako bi sprečio neovlašćen pristup resursima i obezbedio sigurnost sistema. Ovo uključuje mehanizme kao što su korisnički režimi, kontrola pristupa i enkripcija podataka.

  7. Mrežno upravljanje: U kernelu se nalazi i mrežni stek koji omogućava komunikaciju preko mreže, uključujući protokole poput TCP/IP.

  8. Podrška za drajvere: Kernel podržava drajvere (drivers) koji omogućavaju komunikaciju sa različitim hardverskim komponentama. Drajveri su mali programi koji omogućavaju kernelu da komunicira sa uređajima kao što su štampači, tastature, grafičke kartice i drugi uređaji.

Kernel je srce operativnog sistema i radi u pozadini, pružajući osnovnu funkcionalnost i resurse potrebne za rad aplikacija. Različite vrste operativnih sistema, kao što su Linux, Windows, macOS i mnogi drugi, imaju svoje sopstvene kernele sa različitim karakteristikama i dizajnom.

Šta je systemd?

Systemd je sistemski i servisni menadžer koji je dizajniran za modernu Linux distribuciju. To je softverska komponenta koja se brine za pokretanje, upravljanje i održavanje sistema i servisa na Linux računarima. Systemd je postao popularan u mnogim Linux distribucijama kao zamena za tradicionalne init sisteme i druga rešenja za upravljanje servisima. Ovde su neki ključni aspekti systemd-a:

  1. Brže pokretanje sistema: Systemd je optimizovan za brže pokretanje Linux sistema. Uspostavlja različite procese paralelno kako bi ubrzao proces podizanja sistema.

  2. Servis orijentisan pristup: Umesto da koristi složene skripte za pokretanje i zaustavljanje servisa, systemd koristi "unit" fajlove za opisivanje i upravljanje servisima. Ovi unit fajlovi omogućavaju precizno definisanje zavisnosti između servisa, kao i različite vrste jedinica, uključujući servise, uređaje, prezentacije i druge.

  3. Raznovrsne karakteristike: Systemd uključuje različite karakteristike kao što su automatski restart servisa u slučaju pada, praćenje servisa, kontrole i izveštaji o statusu, integracija sa journald sistemom za vođenje evidencije događaja i logova, kao i podršku za aktivaciju servisa na zahtev (socket i D-Bus aktivacija).

  4. Unificirani menadžment servisima: Systemd objedinjuje upravljanje servisima i sistema sa zajedničkim okvirom i komandama. To olakšava administraciju sistema i učini je doslednijom između različitih Linux distribucija.

  5. Aktivacija servisa na zahtev: Systemd omogućava da servisi budu pokrenuti samo kada su zaista potrebni, što može da smanji resurse i ubrza pokretanje sistema.

  6. Različite načine rada: Systemd se može koristiti u različitim načinima rada, uključujući "system mode" i "user mode". Svaki modus ima svoju namenu i karakteristike.

  7. Drajveri i uređaji: Systemd takođe može da rukuje hardverskim uređajima i drajverima, omogućavajući kontrolu nad uređajima poput USB priključaka, mrežnih kartica i drugih.

Iako je systemd postao standard u mnogim Linux distribucijama, vredno je napomenuti da je izazvao dosta diskusija i debata u Linux zajednici. Neki korisnici i administratori vole systemd zbog njegovih prednosti u brzini i funkcionalnosti, dok drugi preferiraju tradicionalne init sisteme. Važno je razumeti da izbor init sistema može značajno varirati između različitih distribucija, a odluka o tome koji sistem koristiti često zavisi od specifičnih potreba i preferencija korisnika.

Šta je MBR?

MBR, što je skraćenica od "Master Boot Record", je specijalni sektor na početku hard diska koji igra ključnu ulogu u procesu podizanja (bootanja) računara. MBR sadrži informacije i kod koji su potrebni da bi se operativni sistem učitao sa diska. Evo nekoliko ključnih stvari koje treba znati o MBR:

  1. Boot Loader: MBR sadrži bootloader, koji je mali program koji se izvršava pri pokretanju računara i ima zadatak da učita operativni sistem u memoriju. Bootloader obično omogućava korisnicima da izaberu koji operativni sistem žele da pokrenu ako na računaru postoji više operativnih sistema.

  2. Particijske informacije: MBR takođe sadrži informacije o particijama na disku, kao što su njihovi početni sektori i veličine. Ovo pomaže operativnom sistemu da zna gde se nalazi svaka particija na disku.

  3. Master Boot Code: MBR sadrži i master boot code (glavni boot kod), koji je odgovoran za učitavanje bootloader-a i, posredstvom njega, operativni sistem. Ovaj mali program je od suštinskog značaja za proces podizanja sistema.

  4. Samo prvi sektor: MBR se nalazi samo u prvom sektoru diska (takođe poznatom kao "sektor 0"). Ovaj sektor je prvi koji se učitava kada se računar pokreće. Zbog ograničenog prostora na ovom sektoru, MBR ima vrlo mali kapacitet za skladištenje informacija.

  5. Ograničenje na broj particija: Tradicionalni MBR sistem ima ograničenje na broj particija koje se mogu registrovati. Obično je podržano samo četiri primarne particije. Da bi se prevazišlo to ograničenje, neka rešenja koriste proširene particije koje sadrže logičke particije, ali GPT (GUID Partition Table) format za particionisanje, koji je modernija alternativa MBR-u, omogućava mnogo veći broj particija i podržava diskove veće od 2 TB.

  6. Rizik od oštećenja: MBR je kritičan za proces podizanja sistema i njegovo oštećenje može dovesti do nemogućnosti pokretanja operativnog sistema. Iz tog razloga, važno je pažljivo rukovati alatima za particionisanje diska i MBR-om.

Važno je napomenuti da se sa modernijim računarima i UEFI (Unified Extensible Firmware Interface) sistemom za pokretanje, GPT je postao sve češće korišćen kao zamena za MBR. GPT pruža veću fleksibilnost i podršku za velike diskove, a omogućava i sigurnije upravljanje particijama.

Kako konfigurisati butloder?

Konfiguracija bootloadera na Linux sistemu može značiti različite stvari, u zavisnosti od bootloadera koji koristite. Najčešće korišćen bootloader na Linux sistemima je GRUB (Grand Unified Bootloader). Evo osnovnih koraka za konfiguraciju GRUB bootloadera:

  1. Pristup konfiguraciji: Pristupite konfiguraciji GRUB bootloadera tako što ćete uređivati odgovarajuću konfiguracionu datoteku. U većini Linux distribucija, ova datoteka se obično nalazi u /etc/default/grub.

  2. Izmena konfiguracione datoteke: Otvorite konfiguracionu datoteku sa odgovarajućim tekstualnim uređivačem, kao što su nano, vim ili gedit. Na primer:

    sudo nano /etc/default/grub
  3. Izmena opcija: U ovoj datoteci možete konfigurisati različite opcije GRUB bootloadera. Neke od čestih opcija uključuju:

    • GRUB_TIMEOUT: Vreme (u sekundama) koliko GRUB čeka pre automatskog pokretanja zadnjeg izabranog operativnog sistema.
    • GRUB_DEFAULT: Odabir podrazumevanog operativnog sistema koji će se pokrenuti.
    • GRUB_CMDLINE_LINUX: Ovde možete dodati kernel parametre za Linux kernel.
  4. Sačuvajte promene: Nakon što izmenite konfiguracionu datoteku, sačuvajte promene.

  5. Ažuriranje GRUB konfiguracije: Da biste primenili izmene, trebate ažurirati konfiguraciju GRUB bootloadera. Koristite sledeću komandu:

    sudo update-grub

    U nekim distribucijama umesto update-grub možete koristiti grub-mkconfig -o /boot/grub/grub.cfg ili drugu ekvivalentnu komandu.

  6. Ponovno pokretanje računara: Da biste primenili izmene, ponovo pokrenite računar.

Nakon ovih koraka, GRUB bootloader će koristiti konfiguraciju koju ste postavili. Obratite pažnju da se konfiguracija bootloadera može razlikovati između različitih Linux distribucija. Ako koristite neki drugi bootloader kao LILO ili Syslinux, koraci će biti slični, ali komande i konfiguracione datoteke mogu biti drugačije.

Kako grub zna gde je kernel?

GRUB zna gde se kernel nalazi putem informacija koje su navedene u njegovoj konfiguracionoj datoteci. Konfiguraciona datoteka GRUB-a obično se naziva grub.cfg i nalazi se u direktorijumu /boot/grub/ ili sličnom mestu na vašem Linux sistemu. Evo kako GRUB zna gde se kernel nalazi u konfiguracionoj datoteci:

U grub.cfg datoteci, obično ćete pronaći linije koje izgledaju otprilike ovako:


linux /vmlinuz-5.4.0-88-generic root=/dev/sda1 
initrd /initrd.img-5.4.0-88-generic

Ove linije govore GRUB-u gde da pronađe kernel i initrd slike za određenu verziju kernela. Evo šta svaka od ovih linija radi:

  • linux /vmlinuz-5.4.0-88-generic: Ova linija definiše putanju do kernel slike (vmlinuz) i specificira verziju kernela koju treba koristiti. Putanja može biti apsolutna ili relativna u odnosu na GRUB-ovu lokaciju.

  • initrd /initrd.img-5.4.0-88-generic: Ova linija definiše putanju do initrd (initial ramdisk) slike (initrd.img) koja se koristi zajedno sa kernelom. Takođe specificira verziju initrd slike.

Uz ove linije, u grub.cfg datoteci možete pronaći i druge parametre, kao što su opcije za butovanje, odabir korisničkog interfejsa i druge konfiguracijske informacije.

Kada GRUB butuje sistem, koristi te informacije iz grub.cfg datoteke da bi pronašao i učitao odgovarajući kernel i initrd slike. Ove linije se automatski generišu prilikom ažuriranja GRUB konfiguracije, na primer nakon instalacije nove verzije kernela.

Važno je napomenuti da konkretni putovi i verzije kernela mogu varirati na različitim sistemima, pa je važno pravilno konfigurisati grub.cfg datoteku kako biste omogućili ispravno butovanje sistema.

Sta je initrd?

initrd (Initial RAM Disk) je mala, privremena fajl slika koja se koristi prilikom procesa butovanja Linux sistema. Glavna svrha initrd-a je da omogući osnovne funkcionalnosti za početno butovanje sistema pre nego što se glavni korenski fajl sistem montira. Evo nekoliko ključnih uloga initrd-a:

  1. Učitavanje drajvera: initrd sadrži drajvere za osnovne komponente hardvera, poput diskova, mreže i sistema fajl sistema. Ovo je važno kako bi sistem mogao da komunicira sa hardverom i da pravilno učita korenski fajl sistem.

  2. Montiranje korenskog fajl sistema: Nakon učitavanja potrebnih drajvera, initrd ima zadatak da montira glavni korenski fajl sistem (koji može biti na različitim particijama ili uređajima) kako bi omogućio dalji proces butovanja.

  3. Izvršavanje skripti i alatki: initrd takođe može sadržati skripte i alatke koje se izvršavaju tokom inicijalnog butovanja. Ove skripte mogu izvršavati zadatke kao što su provera i popravka fajl sistema, montiranje posebnih particija i konfigurisanje mrežnih parametara.

  4. Omogućavanje hitnih popravki: initrd može poslužiti kao alatka za hitne popravke sistema. Ako se sistem ne butuje ispravno, možete koristiti initrd kao "recovery" sredstvo kako biste pristupili sistemu i rešili probleme.

initrd se koristi samo tokom inicijalnog butovanja i nakon što se korenski fajl sistem uspešno montira, njegova uloga završava. Glavni kernel se potom pokreće i preuzima kontrolu nad sistemom.

Važno je napomenuti da neki Linux sistemi, posebno oni sa novim verzijama kernela i modernim inicijalnim sistemima (npr. systemd), sve više prelaze na korišćenje initramfs (Initial RAM File System) umesto initrd. initramfs je slična ideja, ali se razlikuje po tome što omogućava veću fleksibilnost u uključivanju komponenti i podržava kompresiju fajl sistema.

Šta je bootloader recovery?

Bootloader recovery (oporavak bootloadera) je postupak vraćanja ili popravljanja bootloadera na računaru ili uređaju nakon što je oštećen ili izgubljen. Bootloader je odgovoran za učitavanje operativnog sistema sa diska i omogućava vam da odaberete koji operativni sistem želite pokrenuti ako ih imate više instaliranih.

Situacije u kojima je bootloader oštećen ili izgubljen mogu se javiti iz različitih razloga, kao što su greške prilikom instalacije operativnog sistema, problemi sa particionisanjem diska ili nepravilno uklanjanje operativnog sistema.

Bootloader recovery može uključivati ​​različite korake, uključujući:

  1. Korišćenje instalacionog medija: Često se koristi instalacioni medij za operativni sistem (npr. USB bootable flash drajv ili DVD) kako biste pristupili režimu oporavka ili alatima za popravku bootloadera.

  2. Korišćenje bootloader komandi: U režimu oporavka, možete koristiti bootloader komande za ponovno konfigurisanje bootloadera ili vraćanje bootloadera na prethodno funkcionalno stanje. 

  3. Popravka particija: Ponekad oštećen bootloader može biti rezultat oštećenja particija na disku. Popravka particija može biti deo postupka oporavka bootloadera.

  4. Korišćenje alata za oporavak treće strane: Postoje i alati za oporavak bootloadera treće strane koji mogu olakšati proces oporavka i rekonfiguracije bootloadera.

Cilj bootloader recovery postupka je vratiti funkcionalni bootloader kako biste ponovno mogli pokrenuti operativni sistem na vašem računaru ili uređaju. Oporavak bootloadera obično zahteva naprednije tehničko znanje i pažljivo rukovanje, pa se preporučuje da se obratite stručnjaku ako niste sigurni kako to da uradite.

Komande za rad u bootloader recovery konzoli

Evo 20 komandi koje se često koriste u bootloader recovery konzoli (najčešće GRUB konzoli) za dijagnostiku i oporavak sistema:

  1. ls: Prikazuje listu dostupnih diskova i particija.

  2. set: Prikazuje ili postavlja promenljive okoline, uključujući root za korensku particiju.

  3. ls (hdX,Y): Prikazuje sadržaj određene particije, gde X predstavlja broj diska, a Y broj particije.

  4. ls /: Prikazuje sadržaj korenske particije.

  5. cat (hdX,Y)/path/to/file: Prikazuje sadržaj određenog fajla na particiji.

  6. insmod module_name: Učitava određeni GRUB modul.

  7. rmmod module_name: Uklanja GRUB modul.

  8. linux /path/to/kernel: Postavlja putanju do kernela za butovanje.

  9. initrd /path/to/initrd.img: Postavlja putanju do initrd slike.

  10. boot: Butuje sistem sa konfiguracijom koja je postavljena u GRUB konzoli.

  11. set root=(hdX,Y): Postavlja korensku particiju.

  12. root (hdX,Y): Podešava korensku particiju.

  13. chainloader (hdX,Y)+1: Pokušava butovanje druge particije.

  14. bootmgr /bootmgr: Butuje Windows Boot Manager.

  15. bootrec /fixmbr: Popravlja Master Boot Record (MBR) na Windows sistemima.

  16. bootrec /fixboot: Popravlja but sektor na Windows sistemima.

  17. bootrec /scanos: Skenira sisteme za Windows operativnim sistemima.

  18. bootrec /rebuildbcd: Rekonstruiše BCD (Boot Configuration Data) za Windows.

  19. efibootmgr -v: Prikazuje EFI boot menadžer konfiguraciju na UEFI sistemima.

  20. exit: Izlazi iz GRUB konzole i nastavlja butovanje sistema.


Šta su kernel moduli?

Kernel moduli su dinamički učitane programske komponente u Linux jezgru koje omogućavaju dodatnu funkcionalnost i podršku za različite uređaje i sistemske funkcije. Ovi moduli omogućavaju jezgru da se proširi bez potrebe za ponovnim kompajliranjem i ponovnim pokretanjem celog jezgra. Ovaj pristup omogućava veću fleksibilnost i efikasnost upravljanja hardverom i softverom u sistemu.

Evo nekoliko ključnih karakteristika kernel modula:

  1. Dinamičko učitavanje: Kernel moduli se dinamički učitavaju i istovremeno uklanjaju iz jezgra tokom rada sistema. Ovo omogućava dodavanje i uklanjanje podrške za različite uređaje i funkcije bez potrebe za ponovnim pokretanjem sistema.

  2. Podrška za različite uređaje: Kernel moduli omogućavaju podršku za različite hardverske uređaje kao što su grafičke kartice, mrežne kartice, USB uređaji, zvučne kartice i mnogi drugi. Svaki uređaj može imati odgovarajući kernel modul koji mu omogućava komunikaciju sa jezgrom.

  3. Funkcionalnost sistema: Pored podrške za uređaje, kernel moduli omogućavaju dodatne sistemske funkcije kao što su datotečni sistemi, mrežni protokoli, sigurnosni mehanizmi i mnoge druge. Ovo proširuje mogućnosti jezgra i omogućava prilagođavanje sistema specifičnim potrebama.

  4. Efikasnost i resursi: Kernel moduli zauzimaju minimalan prostor u memoriji dok nisu učitani i koriste resurse sistema samo kada su aktivni. Ovo doprinosi efikasnosti i resursima sistema.

Kernel moduli su važan deo Linux operativnog sistema i omogućavaju mu da podrži raznovrsne uređaje i funkcije. Korisnici i administratori sistema mogu upravljati ovim modulima pomoću alatki kao što su modprobe i lsmod, omogućavajući im da prilagode funkcionalnost jezgra prema potrebama svog sistema.

30 komandi za rad sa kernel modulima

Evo 30 komandi za rad sa kernel modulima u Linux sistemu:

  1. lsmod: Prikazuje listu trenutno učitanih kernel modula.

  2. modprobe modul_ime: Učitava određeni kernel modul.

  3. modprobe -r modul_ime: Uklanja određeni kernel modul.

  4. modprobe -l: Prikazuje sve dostupne kernel module.

  5. insmod putanja/do/modula.ko: Ručno učitava kernel modul.

  6. rmmod modul_ime: Uklanja učitani kernel modul.

  7. ls /lib/modules/uname -r/kernel/: Prikazuje putanju do direktorijuma sa kernel modulima.

  8. ls /lib/modules/uname -r/kernel/drivers/: Prikazuje putanju do direktorijuma sa drajverima.

  9. lsmod | grep ime_modula: Prikazuje informacije o određenom kernel modulu.

  10. dmesg | grep modul_ime: Prikazuje kernel log poruke povezane sa određenim modulom.

  11. lsmod | awk '{print $1}': Prikazuje samo imena učitanih modula.

  12. ls /sys/module: Prikazuje sve module u /sys direktorijumu.

  13. modinfo modul_ime: Prikazuje informacije o određenom kernel modulu.

  14. lsmod | sort: Prikazuje listu učitanih modula sortiranih po abecedi.

  15. ls /lib/modules/uname -r/build/: Prikazuje putanju do direktorijuma sa kernel izvornim kodom.

  16. depmod -a: Rekonstruiše zavisnosti između modula.

  17. lsmod | grep -v modul_ime: Prikazuje listu učitanih modula bez određenog modula.

  18. lsmod | awk '{print $3}': Prikazuje veličinu kernel modula.

  19. ls /lib/modules/uname -r/kernel/drivers/char: Prikazuje drajvere za karakteristične uređaje.

  20. modprobe -v modul_ime: Učitava kernel modul sa verbose (razgovetnim) izlazom.

  21. find /lib/modules/uname -r/ -iname '*.ko': Pronalazi sve kernel module za trenutnu verziju jezgra.

  22. modinfo -p modul_ime: Prikazuje parametre koje podržava određeni kernel modul.

  23. modinfo -d modul_ime: Prikazuje opis određenog kernel modula.

  24. modinfo -n modul_ime: Prikazuje ime fajla koji sadrži određeni kernel modul.

  25. lsmod | wc -l: Broji koliko modula je trenutno učitano.

  26. modprobe -n modul_ime: Prikazuje šta bi se desilo kada bi se učitao određeni kernel modul, ali ga ne učitava.

  27. modprobe -r -v modul_ime: Uklanja kernel modul sa verbose izlazom.

  28. modinfo -F depends modul_ime: Prikazuje zavisne module određenog kernel modula.

  29. ls /lib/modules/uname -r/build/include/linux/: Prikazuje putanju do kernel izvornih kodova.

  30. modprobe -l | grep ključna_reč: Pretražuje dostupne module po ključnoj reči.

Napomena: Da biste izvršavali mnoge od ovih komandi, potrebna su vam administratorska (root) prava ili da budete član grupe sa odgovarajućim pravima.

Systemd arhitektura 

Systemd je inicijalni sistem i sistema za upravljanje servisima za Linux operativne sisteme. Njegova arhitektura je dizajnirana da omogući bolje upravljanje sistemom i servisima tokom butovanja i tokom rada sistema. Evo pregleda systemd arhitekture:

  1. systemd PID 1:

    • Systemd zauzima mesto inicijalnog procesa (PID 1) tokom butovanja. To znači da je systemd prva stvar koja se pokreće prilikom butovanja sistema.
  2. systemd servis fajlovi:

    • Servisi se konfigurišu putem systemd servis fajlova (.service datoteke) koje se obično nalaze u direktorijumu /etc/systemd/system/. Ove datoteke sadrže informacije o servisu, uključujući putanju do izvršnog fajla, zavisnosti, opcije i druge parametre.
  3. systemd servis menadžer:

    • Systemd ima svoj servis menadžer koji je odgovoran za upravljanje servisima tokom rada sistema. On može pokretati, zaustavljati, ponovno pokretati i pratiti servise u stvarnom vremenu.
  4. Systemd targeti:

    • Systemd uvodi koncept "targeta", koji su grupisanja servisa i jedinica. Targeti definišu različite stanja sistema, poput "multi-user.target" za normalan multi-user režim ili "rescue.target" za režim oporavka. Svaki target ima svoje zavisnosti prema drugim servisima.
  5. systemd logovanje:

    • Systemd uključuje systemd Journal, napredni sistem za logovanje događaja i praćenje rada sistema. Ovaj journal omogućava efikasno prikupljanje i analizu logova.
  6. systemd-udevd:

    • Systemd uključuje systemd-udevd, koji je odgovoran za upravljanje uređajima, njihovo prepoznavanje i kreiranje odgovarajućih uređajskih fajlova.
  7. systemd-nspawn:

    • Systemd nudi systemd-nspawn, koji omogućava izolaciju procesa i kreiranje chroot okoline za testiranje ili razvoj.
  8. systemd-timedated:

    • Systemd takođe uključuje systemd-timedated, koji se bavi upravljanjem vremenom i datumom na sistemu.
  9. systemd-resolved:

    • Systemd sadrži systemd-resolved za upravljanje DNS (Domain Name System) konfiguracijom.
  10. systemd-networkd:

    • Za upravljanje mrežnim konfiguracijama tu je systemd-networkd, koji omogućava konfiguraciju mrežnih interfejsa.

Ova arhitektura systemd-a omogućava napredno upravljanje sistemom i servisima, a systemd se koristi na mnogim Linux distribucijama kao zamenjena za stariji SysV init sistem. Ovo omogućava brže butovanje, bolje upravljanje servisima i napredne mogućnosti praćenja i logovanja događaja na sistemu.

Sta su systemd targeti?

Systemd targeti su grupisanja servisa i jedinica (unit) u okviru systemd inicijalnog sistema i sistema za upravljanje servisima na Linux operativnim sistemima. Svaki target predstavlja određeno stanje sistema koje definiše skup servisa i resursa potrebnih za postizanje tog stanja. Ovi targeti omogućavaju systemd-u da efikasno upravlja butovanjem i radom sistema. Evo nekoliko ključnih pojmova vezanih za systemd targete:

  1. Targeti kao ciljevi sistema: Targeti se koriste za definisanje ciljeva sistema, tj. specifičnih stanja u kojima treba da se nalazi sistem. Na primer, "multi-user.target" je cilj za normalan multi-user režim, dok "graphical.target" predstavlja cilj za butovanje u grafičkom okruženju.

  2. Zavisnosti: Svaki target može imati svoje zavisnosti prema drugim servisima i targetima. Ove zavisnosti definišu redosled pokretanja i zaustavljanja servisa i targeta tokom butovanja i rada sistema. Systemd automatski rešava zavisnosti i osigurava da se servisi i targeti pokreću u odgovarajućem redosledu.

  3. Default target: Na svakom sistemu postoji "default.target" koji određuje koji će target biti aktiviran prilikom butovanja. Ovo može biti "multi-user.target" za serverske sisteme ili "graphical.target" za sisteme sa grafičkim okruženjem.

  4. Aktivacija targeta: Možete koristiti komandu systemctl isolate target da trenutno aktivirate određeni target bez potrebe za restartovanjem sistema. Na primer, systemctl isolate graphical.target će prebaciti sistem u grafički režim.

  5. Prikazivanje i upravljanje targetima: Da biste videli listu dostupnih targeta i njihovih trenutnih stanja, koristite systemctl list-units --type=target komandu. Za upravljanje targetima, možete koristiti komande kao što su systemctl enable, systemctl disable, systemctl start i systemctl stop.

Systemd targeti omogućavaju efikasno upravljanje sistemom i servisima tako što omogućavaju precizno definisanje i kontrolu stanja sistema tokom butovanja i rada. Ovo je posebno korisno za sisteme sa različitim zahtevima, kao što su serverski i desktop sistemi.

20 komandi za upravljanje targetima

Evo 20 komandi za upravljanje systemd targetima na Linux sistemu koristeći systemctl komandu:

  1. Prikazivanje svih targeta:

    systemctl list-units --type=target
  2. Prikazivanje informacija o određenom targetu:

    systemctl status target_name
  3. Prikazivanje aktivnog (trenutnog) targeta:

    systemctl list-units --type=target --state=active
  4. Aktivacija određenog targeta:

    systemctl isolate target_name
  5. Prikazivanje zavisnosti targeta:

    systemctl list-dependencies target_name
  6. Prikazivanje ciljnog (default) targeta:

    systemctl get-default
  7. Postavljanje ciljnog (default) targeta:

    sudo systemctl set-default target_name
  8. Aktivacija grafičkog targeta (GUI režim):

    systemctl isolate graphical.target
  9. Aktivacija režima za samo oporavak:

    systemctl isolate rescue.target
  10. Aktivacija multi-user targeta (bez grafičkog okruženja):

    systemctl isolate multi-user.target
  11. Aktivacija network targeta (samo mreža):

    systemctl isolate network.target
  12. Aktivacija emergency targeta (sistem u minimalnom režimu):

    systemctl isolate emergency.target
  13. Prikazivanje stanja grafičkog targeta:

    systemctl is-active graphical.target
  14. Prikazivanje stanja multi-user targeta:

    systemctl is-active multi-user.target
  15. Aktivacija targeta za sistemsku analizu i profilisanje:

    systemctl isolate sysinit.target
  16. Aktivacija poweroff targeta (za isključivanje sistema):

    systemctl isolate poweroff.target
  17. Aktivacija reboot targeta (za ponovno pokretanje sistema):

    systemctl isolate reboot.target
  18. Prikazivanje svih targeta i njihovih stanja:

    systemctl list-units --type=target --all
  19. Prikazivanje detalja o targetu (putanja do konfiguracione datoteke):

    systemctl cat target_name
  20. Prikazivanje loga događaja targeta (journalctl):

    journalctl -u target_name

Napomena: Zamijenite target_name sa stvarnim imenom targeta koji želite da aktivirate, prikažete ili konfigurišete. Ove komande vam omogućavaju kontrolu nad systemd targetima na vašem Linux sistemu.

Kako se konfiguriše SYSTEMD?

Konfiguracija systemd-a se obavlja putem različitih konfiguracionih datoteka i alatki koje se koriste za postavljanje parametara i opcija ovog inicijalnog sistema i sistema za upravljanje servisima. Evo osnovnih koraka za konfiguraciju systemd-a:
  1. Konfiguracione datoteke:

    • Osnovna konfiguracija systemd-a obično se nalazi u direktorijumu /etc/systemd/.
    • Najvažnija konfiguraciona datoteka je /etc/systemd/system.conf, koja sadrži globalne opcije za systemd. Možete je uređivati kao superkorisnik (root).
  2. Kreiranje i uređivanje servisa:

    • Servisi se konfigurišu putem systemd servis fajlova, koji se obično nalaze u direktorijumu /etc/systemd/system/. Svaki servis ima svoju konfiguracionu datoteku sa ekstenzijom .service.
    • Za kreiranje ili uređivanje servisa možete koristiti uređivače teksta kao što su nano ili vim. Primer:
      sudo nano /etc/systemd/system/moj_servis.service
  3. Aktivacija i deaktivacija servisa:

    • Da biste omogućili servis da se pokrene prilikom butovanja, koristite systemctl enable komandu.
    • Da biste onemogućili servis da se pokrene prilikom butovanja, koristite systemctl disable komandu.
    • Primer:
      sudo systemctl enable moj_servis
  4. Startovanje i zaustavljanje servisa:

    • Da biste odmah pokrenuli servis, koristite systemctl start komandu.
    • Da biste zaustavili servis, koristite systemctl stop komandu.
    • Primer:
      sudo systemctl start moj_servis
  5. Pregled statusa servisa:

    • Da biste videli status servisa, koristite systemctl status komandu.
    • Primer:
      systemctl status moj_servis
  6. Ponovno pokretanje i osvežavanje konfiguracije:

    • Da biste ponovo pokrenuli servis, koristite systemctl restart komandu.
    • Da biste osvežili konfiguraciju systemd-a, koristite systemctl daemon-reload komandu.
    • Primer:
      sudo systemctl restart moj_servis
  7. Konfigurisanje boot opcija:

    • Opcije butovanja i ostale globalne konfiguracije mogu se postaviti u /etc/default/grub datoteci za sisteme koji koriste GRUB bootloader. Nakon uređivanja ove datoteke, ažurirajte GRUB konfiguraciju komandom sudo update-grub.

Napomena: Konkretni koraci za konfiguraciju servisa i sistema zavise od vaših potreba i distribucije koju koristite. Pravilno dokumentovanje i poznavanje servisa i njihovih konfiguracija je od suštinskog značaja kako biste uspešno konfigurisali systemd. Preporučljivo je konzultovati dokumentaciju vaše distribucije ili systemd dokumentaciju za detaljnije informacije.

systemd servis fajl

Evo primera systemd servis fajla koji definiše jednostavan servis. Ovo je osnovna datoteka koja se koristi za konfiguraciju servisa pod systemd-om:
[Unit]
Description=My Sample Service
After=network.target

[Service]
ExecStart=/usr/bin/my_service
Type=simple
User=myuser
Group=mygroup
Restart=on-failure

[Install]
WantedBy=multi-user.target

U ovom primeru:

  • [Unit] sekcija sadrži informacije o servisu, uključujući opis servisa (Description) i listu zavisnosti (After).

  • [Service] sekcija definiše kako će servis biti izvršen. Ključne opcije uključuju:

    • ExecStart: Putanja do izvršnog fajla servisa koji treba pokrenuti.
    • Type: Vrsta servisa (u ovom slučaju "simple" što znači da se servis pokreće u glavnom procesu).
    • User i Group: Korisnik i grupa pod kojima će servis raditi.
    • Restart: Definiše kada će se servis restartovati (u ovom slučaju, nakon neuspešnog završetka).
  • [Install] sekcija specificira gde i kada se servis treba pokrenuti, koristeći opciju WantedBy. U ovom slučaju, servis će biti pokrenut kada je dostignut "multi-user.target".

Napomena: Pravi servis fajl će zavisiti od konkretnih potreba vašeg servisa i putanja do izvršnog fajla. Prilagodite ovaj primer prema vašim potrebama i kopirajte datoteku u odgovarajući direktorijum za systemd servis fajlove (često je /etc/systemd/system/). Nakon toga, možete koristiti systemctl komande za upravljanje ovim servisom, kao što su systemctl start myservice, systemctl enable myservice, i slično.

Evo primera systemd servis fajla za SSH (sshd) servis. Ovaj fajl se obično nalazi u direktorijumu /lib/systemd/system/ ili /etc/systemd/system/, zavisno o distribuciji Linux-a. Možete ga koristiti kao primer za konfiguraciju SSH servisa pod systemd-om:

[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.target
Wants=sshd-keygen.target


[Service]
EnvironmentFile=-/etc/default/ssh
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
RuntimeDirectory=sshd
RuntimeDirectoryMode=0755


[Install]
WantedBy=multi-user.target
Alias=sshd.service

Pregled logova servisa

Da biste pregledali logove sa systemd servisa na Linux sistemu, koristite journalctl komandu. Ova komanda omogućava pregled i filtriranje systemd logova. Evo nekoliko osnovnih komandi za pregled logova servisa:

  1. Pregled svih logova systemd servisa:

    journalctl
  2. Pregled logova za određeni servis:

    journalctl -u service_name

    Zamijenite service_name sa imenom servisa za koji želite pregledati logove. Na primer, journalctl -u ssh za pregled logova SSH servisa.

  3. Prikazivanje logova u stvarnom vremenu (live):

    journalctl -f

    Ova komanda će prikazivati nove logove kako stižu.

  4. Prikazivanje logova sa određenim prioritetom (severity):

    journalctl -p priority

    Zamijenite priority sa željenim prioritetom (npr. emerg, alert, crit, err, warning, notice, info, debug).

  5. Prikazivanje logova sa vremenskim rasponom:

    journalctl --since "2023-01-01 00:00:00" --until "2023-01-02 00:00:00"

    Ova komanda prikazuje logove u navedenom vremenskom intervalu. Prilagodite datum i vreme prema vašim potrebama.

  6. Prikazivanje logova sa određenim brojem linija:

    journalctl -n 100

    Ova komanda prikazuje poslednjih 100 linija logova. Možete promeniti broj prema vašim potrebama.

  7. Prikazivanje logova u posebnom formatu:

    journalctl -o json-pretty

    Ova komanda će prikazati logove u JSON formatu za lakšu analizu.

  8. Pregled logova sa straničenjem:

    journalctl | less

    Ova komanda omogućava pregled logova sa straničenjem koristeći less alat.

  9. Pregled logova samo za određeni korisnik:

    journalctl _UID=1000

    Zamijenite 1000 sa UID korisnika za kojeg želite pregledati logove.

  10. Prikazivanje logova sa dodatnim detaljima:

    journalctl -xe

    Ova komanda prikazuje logove sa dodatnim informacijama o problemima ili greškama.

Napomena: Kako bi koristili journalctl, obično morate imati administratorske privilegije, pa je često potrebno koristiti sudo pre komande. Prilagodite komande i opcije prema svojim potrebama i specifičnostima sistema.

No comments:

Post a Comment